Mechanizing programming logics in higher order logic
Current trends in hardware verification and automated theorem proving
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Formal certification of a compiler back-end or: programming a compiler with a proof assistant
Conference record of the 33rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
The trace partitioning abstract domain
ACM Transactions on Programming Languages and Systems (TOPLAS) - Special Issue ESOP'05
Building Certified Static Analysers by Modular Construction of Well-founded Lattices
Electronic Notes in Theoretical Computer Science (ENTCS)
TPHOLs '08 Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics
Structural Abstract Interpretation: A Formal Study Using Coq
Language Engineering and Rigorous Software Development
Some Domain Theory and Denotational Semantics in Coq
TPHOLs '09 Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics
ESOP'05 Proceedings of the 14th European conference on Programming Languages and Systems
Teaching semantics with a proof assistant: no more LSD trip proofs
VMCAI'12 Proceedings of the 13th international conference on Verification, Model Checking, and Abstract Interpretation
FOPARA'11 Proceedings of the Second international conference on Foundational and Practical Aspects of Resource Analysis
Proofs you can believe in: proving equivalences between Prolog semantics in Coq
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.00 |
Abstract Interpretation proposes advanced techniques for static analysis of programs that raise specific challenges for machine-checked soundness proofs. Most classical dataflow analysis techniques iterate operators on lattices without infinite ascending chains. In contrast, abstract interpreters are looking for fixpoints in infinite lattices where widening and narrowing are used for accelerating the convergence. Smart iteration strategies are crucial when using such accelerating operators because they directly impact the precision of the analysis diagnostic. In this paper, we show how we manage to program and prove correct in Coq an abstract interpreter that uses iteration strategies based on program syntax. A key component of the formalization is the introduction of an intermediate semantics based on a generic least-fixpoint operator on complete lattices and allows us to decompose the soundness proof in an elegant manner.