Academia.eduAcademia.edu

Formal Verification of software

description10 papers
group8 followers
lightbulbAbout this topic
Formal verification of software is a mathematical approach to ensure that a program operates according to its specifications. It involves the use of formal methods, such as model checking and theorem proving, to rigorously analyze software behavior and prove the correctness of algorithms, thereby identifying potential errors and vulnerabilities.
lightbulbAbout this topic
Formal verification of software is a mathematical approach to ensure that a program operates according to its specifications. It involves the use of formal methods, such as model checking and theorem proving, to rigorously analyze software behavior and prove the correctness of algorithms, thereby identifying potential errors and vulnerabilities.

Key research themes

1. How can formal verification enhance the correctness and security of smart contracts and communication protocols?

This theme investigates formal methodologies to ensure the correctness and security of smart contracts, especially in blockchain environments like Ethereum, as well as communication security protocols. The importance lies in preventing vulnerabilities and exploits, such as those seen in TheDAO attack or flaws in cryptographic protocols, by employing rigorous formal verification methods and frameworks that can handle the complexities of untrusted environments and adversarial behaviors.

Key finding: This paper presents a novel framework translating Ethereum smart contracts from Solidity and EVM bytecode into the functional language F, enabling verification of both runtime safety and functional correctness. It addresses... Read more
Key finding: The paper surveys formal methods applied to verify security protocols under various types of network attacks, emphasizing their ability to uncover subtle flaws (e.g., flaws in the Needham-Schroeder protocol). Formal... Read more
Key finding: This survey highlights efforts to bridge the gap between abstract protocol models and real-world implementations by targeting application-level protocol code for automated verification. Key approaches include model extraction... Read more

2. What methods and tool categorizations exist for program verification, and how can they support software engineers in selecting appropriate verification tools?

This theme centers on program verification techniques encompassing model checking, theorem proving, and runtime verification, focusing on tool classifications, comparative analyses, and practical usability for software engineers. It addresses challenges in understanding, selecting, and applying verification tools, aiming to bridge research and practice by providing structured frameworks and data sets cataloging existing verification tools.

Key finding: The authors develop a comprehensive megamodel categorizing nearly 400 program verification tools by different verification levels, input/output formats, and techniques. This taxonomy aids software engineers in selecting and... Read more
Key finding: This work discusses runtime verification as a hybrid approach combining formal methods and testing by monitoring system executions with formalized specifications (e.g., LTL). Focusing on distributed programs, it elucidates... Read more
Key finding: This paper surveys specification languages tailored for runtime verification (RV), emphasizing their expressiveness in monitoring event sequences with data parameters, including relations across time. It analyzes design... Read more
Key finding: The paper presents a methodology to tightly integrate BDD-based propositional mu-calculus model checking and interactive theorem proving (PVS), leveraging complementary strengths of both approaches. This integration enhances... Read more

3. How can model-based engineering and refinement support systematic formal verification and assurance case construction in software-intensive systems?

This theme explores the application of formal methods within model-driven engineering (MDE) and stepwise refinement frameworks to develop correct software and assurance cases. It highlights systematic transformations from abstract static models to executable code, the role of lemmas in enhancing verification expressivity, and the integration of formal verification evidence into structured assurance cases improving traceability and certification efforts.

Key finding: This systematic literature review identifies 18 distinct approaches using formal methods to verify static software models, such as UML class diagrams augmented with OCL constraints. It reveals that support for OCL strongly... Read more
Key finding: The paper proposes an automated mechanism for verifying and applying user-defined lemmas in separation logic to overcome limitations in predicate unfold/fold reasoning. By explicitly specifying auxiliary relations between... Read more
Key finding: This doctoral thesis defines formal concepts for stepwise refinement and implementation of model-oriented specifications, offering a methodological basis for incremental development from formal logical specifications... Read more
Key finding: This work introduces Isabelle/SACM, a framework embedding the SACM assurance case metamodel within the Isabelle proof assistant using its document model and DOF language. It supports hybrid assurance cases combining formal... Read more

All papers in Formal Verification of software

SysML diagrams are significant medium using for supporting software lifecycle management. The existing TBFV method is designed for error detection with full automation efficiency, only for code. For verifying the correctness of SysML... more
The use of general descriptive names, registered names, trademarks, etc. in this publication does not imply, even in the absence of a specific statement, that such names are exempt from the relevant protective laws and regulations and... more
This work presents a mechanically verified implementation of an algorithm for deciding the (in-)equivalence of Kleene algebra with tests (KAT) terms. This mechanization was carried out in the Coq proof assistant. The algorithm decides KAT... more
Kleene algebra [1],(KA) normally called the algebra of regular events, is an algebraic system that axiomatically captures properties of several important structures arising in Computer Science, and has been applied in several contexts... more
Kleene algebra (KA) is an algebraic system that captures properties of several important structures arising in Computer Science like automata and formal languages, among others. In this paper we present a formalization of regular... more
Synchronous Kleene algebra (SKA) is a decidable framework that combines Kleene algebra (KA) with a synchrony model of concurrency. Elements of SKA can be seen as processes taking place within a fixed discrete time frame and that, at each... more
This paper presents a mechanically verified implementation of an algorithm for deciding the equivalence of Kleene algebra terms within the Coq proof assistant. The algorithm decides equivalence of two given regular expressions through an... more
This paper presents a mechanically verified implementation of an algorithm for deciding the equivalence of Kleene algebra terms within the Coq proof assistant. The algorithm decides equivalence of two given regular expressions through an... more
In this paper we present a mechanically verified implementation of an algorithm for deciding regular expression (in-)equivalence within the Coq proof assistant. This algorithm is a version of a functional algorithm proposed by Almeida et... more
In this article we describe an implementation of Kleene algebra with tests (KAT) in the Coq theorem prover. KAT is an equational system that has been successfully applied in program verification and, in particular, it subsumes the... more
In this paper we present a mechanically verified implementation of an algorithm for deciding regular expression (in-)equivalence within the Coq proof assistant. This algorithm is a version of a functional algorithm proposed by Almeida et... more
The partial derivative automaton (A pd) is usually smaller than other non-deterministic finite automata constructed from a regular expression, and it can be seen as a quotient of the Glushkov automaton (Apos). By estimating the number of... more
In this paper we present a mechanically verified implementation of an algorithm for deciding regular expression (in-)equivalence within the Coq proof assistant. This algorithm is a version of a functional algorithm proposed by Almeida et... more
There have been studies that analyse and apply input space partitioning by categorising them into classes such as equivalence partitioning, boundary value testing, category partitions, domain testing, classification trees, etc. This paper... more
Extended regular expressions (with complement and intersection) are used in many applications due to their succinctness. In particular, regular expressions extended with intersection only (also called semi-extended) can already be... more
Synchronous Kleene algebra (SKA) is a decidable framework that combines Kleene algebra (KA) with a synchrony model of concurrency. Elements of SKA can be seen as processes taking place within a fixed discrete time frame and that, at each... more
The partial derivative automaton (A pd ) is usually smaller than other non-deterministic finite automata constructed from a regular expression, and it can be seen as a quotient of the Glushkov automaton (Apos). By estimating the number of... more
In this article we describe an implementation of Kleene algebra with tests (KAT) in the Coq theorem prover. KAT is an equational system that has been successfully applied in program verification and, in particular, it subsumes the... more
Para os meus pais David e Maria Clara e para a Ana... v vi I am particularly indebted to José Carlos Bacelar Almeida who was always available to discuss with me several technical issues related to Coq. I also thank Ricardo Almeida for our... more
This paper presents a mechanically verified implementation of an algorithm for deciding the equivalence of Kleene algebra terms within the Coq proof assistant. The algorithm decides equivalence of two given regular expressions through an... more
In this article we describe an implementation of Kleene algebra with tests (KAT) in the Coq theorem prover. KAT is an equational system that has been successfully applied in program verification and, in particular, it subsumes the... more
There have been studies that analyse and apply input space partitioning by categorising them into classes such as equivalence partitioning, boundary value testing, category partitions, domain testing, classification trees, etc. This paper... more
Text editors represent one of the fundamental tools that writers use - software developers, book authors, mathematicians. A text editor must work as intended in that it should allow the users to do their job. We start by introducing a... more
Kleene algebra [1], (KA) normally called the algebra of regular events, is an algebraic system that axiomatically captures properties of several important structures arising in Computer Science, and has been applied in several contexts... more
This paper presents a mechanically verified implementation of an algorithm for deciding the equivalence of Kleene algebra terms within the Coq proof assistant. The algorithm decides equivalence of two given regular expressions through an... more
In this paper we present a mechanically verified implementation of an algorithm for deciding regular expression (in-)equivalence within the Coq proof assistant. This algorithm is a version of a functional algorithm proposed by Almeida et... more
Antimirov and Mosses presented a rewrite system for deciding the equivalence of two (extended) regular expressions and argued that this method could lead to a better average-case algorithm than those based on the comparison of the... more
Text editors represent one of the fundamental tools that writers use - software developers, book authors, mathematicians. A text editor must work as intended in that it should allow the users to do their job. We start by introducing a... more
Antimirov and Mosses proposed a rewrite system for deciding the equivalence of two (extended) regular expressions. In this paper we present a functional approach to that method, prove its correctness, and give some experimental... more
Antimirov and Mosses proposed a rewrite system for deciding the equivalence of two (extended) regular expressions. In this paper we present a functional approach to that method, prove its correctness, and give some experimental... more
This work presents a mechanically verified implementation of an algorithm for deciding regular expression (in-)equivalence within the Coq proof assistant. This algorithm decides regular expression equivalence through an iterated process... more
Abstract This work presents a mechanically verified implementation of an algorithm for deciding the (in-) equivalence of Kleene algebra with tests (KAT) terms. This mechanization was carried out in the Coq proof assistant. The algorithm... more
Download research papers for free!