Abstract programs contain schematic placeholders representing potentially infinitely many concrete programs. They naturally occur in multiple areas of computer science concerned with correctness: rule-based compilation and optimization, code refactoring and other source-to-source transformations, program synthesis, Correctness-by-Construction, and more. Mechanized correctness arguments about abstract programs are frequently conducted in interactive environments. While this permits expressing arbitrary properties quantifying over programs, substantial effort has to be invested to prove them manually by writing proof scripts. Existing approaches to proving abstract program properties automatically, on the other hand, lack expressiveness. Freq...
We introduce Gillian, a platform for developing symbolic analysis tools for programming languages. H...
Refactoring is a software development strategy that characteristically alters the syntactic structur...
Current techniques for validating and verifying program changes often consider the entire program, e...
Abstract programs contain schematic placeholders representing potentially infinitely many concrete p...
This dissertation explores the use of abstraction in two areas of automated reasoning: verification ...
Symbolic execution is one of the most popular techniques used for analyzing programs. It has been us...
Refactoring is an important Software Engineering technique for improving the structure of a program...
Software has become ubiquitous and its impact is still increasing. The more software is created, th...
There are multiple challenges in designing a static verification system for an existing programming ...
Abstract interpretation is a static analysis framework for sound over-approximation of all possible ...
International audienceWe propose a language-independent symbolic execution framework for languages e...
Unification and antiunification are essential algorithms used by symbolic execution engines and veri...
We present a fully abstract weakest precondition calculus and its integration with symbolic executio...
Modern-day imperative programming languages such as C++, C# and Java offer protection facilities suc...
Symbolic execution is a powerful, systematic program analysis approach that has received much visibi...
We introduce Gillian, a platform for developing symbolic analysis tools for programming languages. H...
Refactoring is a software development strategy that characteristically alters the syntactic structur...
Current techniques for validating and verifying program changes often consider the entire program, e...
Abstract programs contain schematic placeholders representing potentially infinitely many concrete p...
This dissertation explores the use of abstraction in two areas of automated reasoning: verification ...
Symbolic execution is one of the most popular techniques used for analyzing programs. It has been us...
Refactoring is an important Software Engineering technique for improving the structure of a program...
Software has become ubiquitous and its impact is still increasing. The more software is created, th...
There are multiple challenges in designing a static verification system for an existing programming ...
Abstract interpretation is a static analysis framework for sound over-approximation of all possible ...
International audienceWe propose a language-independent symbolic execution framework for languages e...
Unification and antiunification are essential algorithms used by symbolic execution engines and veri...
We present a fully abstract weakest precondition calculus and its integration with symbolic executio...
Modern-day imperative programming languages such as C++, C# and Java offer protection facilities suc...
Symbolic execution is a powerful, systematic program analysis approach that has received much visibi...
We introduce Gillian, a platform for developing symbolic analysis tools for programming languages. H...
Refactoring is a software development strategy that characteristically alters the syntactic structur...
Current techniques for validating and verifying program changes often consider the entire program, e...