Abstract Interpretation (AI) has been introduced in the late 70s as a general theory to approximate the possible behaviors of computer programs. AI has since evolved into a very general theory to describe and compare formal semantics of programs and systems. AI introduces a formal notion of approximation, and rules to develop and design static program analyzers. Such analyzers run fully automatically (without user intervention), directly on the source code (not a model developed separately), and reason at an abstract level that forgets about irrelevant details to achieve an efficient analysis. AI provides mathematical tools to design abstractions that are sound by construction: Despite unavoidable loss of precision (incompleteness) caused by abstractions, analysis results are always trustworthy. AI promotes the design of reusable analysis building blocks, so-called abstract domains, and gives a principled, practical, and scalable framework for static analysis design.
Designing new static analyses is challenging and involves both theoretical research and software engineering: It requires the study of new abstract domains, tied to an application context (as there does not exist an all-purpose abstraction), and the design of efficient tools, finding the appropriate balance between cost and precision. Indeed, various developments in the last two decades have demonstrated that static analysis by AI works well also in practice. We have seen the emergence of commercially-available AI-based static analysis tools. Automation and efficiency make AI-based static analysis very attractive in such contexts. Moreover, soundness is also mandated by official documents (e.g., DO-333 in avionics). Nevertheless, early results on reachability analysis and a focus on embedded critical software (which have a simpler structure than typical consumer software) may propagate the false idea that AI is limited to detecting run-time errors in embedded code, while it is in fact far more general.
Now that AI has demonstrated its strengths in certain application domains, it is time to plan the future of AI, in particular, to widen its field of use beyond safety and static languages, and to bridge the gap between current theoretical results and practical applications by identifying key challenges, such as at targeting new languages, new classes of properties, and scalability to very large systems. Hence, the seminar aims at collecting new ideas and new perspectives on the potential of AI in order to pave the way for new applications of AI.
The objectives of this Dagstuhl Seminar are to:
- Bring together static analysis specialists from academia and industry to cover a wide spectrum from pure Abstract Interpretation (AI) theory to industrial tools.
- Discuss the current state of AI theory and applications, recent advances and roadblocks.
- Reconcile theoretical results and practical needs.
- Evaluate the most promising directions to drive forward fundamental research in AI and to push theoretic advances into practical tools.
- Take action to spread awareness of AI in universities, engineering schools, and in industry.
- Logic in Computer Science
- Programming Languages
- Software Engineering
- Abstract Interpretation
- Abstract domains
- Static program Analysis
- Program verification
- Program semantics