A Certified Denotational Abstract Interpreter [chapter]

David Cachera, David Pichardie
2010 Lecture Notes in Computer Science  
Interpretation proposes advanced techniques for static analysis of programs that raise specific challenges for machinechecked 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
more » ... rectly 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. Definition pp := word. Inductive op := Add | Sub | Mult. Inductive expr := Const (n:Z) | Unknown | Var (x:var) | Numop (o:op) (e1 e2:expr). Inductive comp := Eq | Lt. Inductive test := | Numcomp (c:comp) (e1 e2:expr) | Not (t:test) | And (t1 t2:test) | Or (t1 t2:test).
doi:10.1007/978-3-642-14052-5_3 fatcat:spqaffa76bfzzkikywdk5ccu7u