Daily activities of our society, such as online banking or (semi-)autonomous driving, are routinely run by software.
This software is growing in size and functionalities, but its reliability is hardly improving.
We are getting used to the fact that software is error-prone and insecure.
One cannot hope to fully eliminate the presence of software errors in computer systems – there are theoretical
results showing the hardness and limitations of such a task. However, one can try to minimize the presence
of such errors. Moreover, depending on the application and software domain, software errors can be identified
and corrected during software development, before public releases of software products.
The objective of our SYMCAR project is to advance the state-of-the-art in identifying
and correcting software errors by designing and using new methods based on automated reasoning and symbolic computation.
Our project automates program analysis by automating the generation and proving of program properties
that prevent programmers introducing errors during software development.
The work in our project is structure within the following two project parts (PP):
- (PP1) Automatic generation of program properties;
- (PP2) Reasoning with both theories and quantifiers.
Our project designs new ways to generate and prove program properties by relying on our symbol elimination method.
Our work proposes symbol elimination as the new kind of fully automatic approach to generating and
proving first-order properties. Various methods in program analysis, such as quantifier elimination, Groebner basis computation and Craig interpolation,
can be viewed as special instances of symbol elimination.
Results of our project are implemented in various open-source packages, including Amber, Aligator, Absynth, Mora, Rapid and Vampire.
Our experimental results show that our techniques outperform state-of-the-art methods in program analysis and automated reasoning.