Sound up-to techniques and Complete abstract domains

Abstract interpretation is a method to automatically find invariants of programs or pieces of code whose semantics is given via least fixed-points. Up-to techniques have been introduced as enhancements of coinduction, an abstract principle to prove properties expressed via greatest fixed-points. While abstract interpretation is always sound by definition, the soundness of up-to techniques needs some ingenuity to be proven. For completeness, the setting is switched: up-to techniques are always complete, while abstract domains are not. In this work we show that, under reasonable assumptions, there is an evident connection between sound up-to techniques and complete abstract domains.

[1]  Chung-Kil Hur,et al.  The power of parameterization in coinductive proof , 2013, POPL.

[2]  Francesco Ranzato,et al.  A Forward-Backward Abstraction Refinement Algorithm , 2008, VMCAI.

[3]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .

[4]  Davide Sangiorgi,et al.  On the bisimulation proof method , 1998, Mathematical Structures in Computer Science.

[5]  Manuel Fähndrich,et al.  Static Contract Checking with Abstract Interpretation , 2010, FoVeOOS.

[6]  Francesco Ranzato,et al.  A New Efficient Simulation Equivalence Algorithm , 2007, 22nd Annual IEEE Symposium on Logic in Computer Science (LICS 2007).

[7]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[8]  S. L. Édel'man Closure operators on a lattice , 1980 .

[9]  Patrick Cousot,et al.  Refining Model Checking by Abstract Interpretation , 2004, Automated Software Engineering.

[10]  Patrick Cousot,et al.  A constructive characterization of the lattices of all retractions, pre-closure, quasi-closure and closure operators on a complete lattice , 1979 .

[11]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[12]  Didier Caucal,et al.  Graphes canoniques de graphes algébriques , 1990, RAIRO Theor. Informatics Appl..

[13]  Francesco Ranzato,et al.  Generalized Strong Preservation by Abstract Interpretation , 2004, J. Log. Comput..

[14]  Roberto Giacobazzi,et al.  Making abstract interpretations complete , 2000, JACM.

[15]  Luca Aceto,et al.  Advanced Topics in Bisimulation and Coinduction , 2012, Cambridge tracts in theoretical computer science.

[16]  Bartek Klin,et al.  Bialgebras for structural operational semantics: An introduction , 2011, Theor. Comput. Sci..

[17]  Patrick Cousot,et al.  Fixpoint-Guided Abstraction Refinements , 2007, SAS.

[18]  CohenJonathan Review of "Introduction to Lattices and Order by B. A. Davey and H. A. Priestley", Cambridge University Press , 2007 .

[19]  Gordon D. Plotkin,et al.  Towards a mathematical operational semantics , 1997, Proceedings of Twelfth Annual IEEE Symposium on Logic in Computer Science.

[20]  Damien Pous,et al.  Coinduction All the Way Up , 2016, 2016 31st Annual ACM/IEEE Symposium on Logic in Computer Science (LICS).

[21]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[22]  Davide Sangiorgi,et al.  Enhancements of the bisimulation proof method , 2012, Advanced Topics in Bisimulation and Coinduction.

[23]  Patrick Cousot,et al.  Partial Completeness of Abstract Fixpoint Checking , 2000, SARA.

[24]  Patrick Cousot,et al.  The ASTREÉ Analyzer , 2005, ESOP.

[25]  John E. Hopcroft,et al.  An n log n algorithm for minimizing states in a finite automaton , 1971 .

[26]  Roberto Giacobazzi,et al.  Analyzing Program Analyses , 2015, POPL.

[27]  Joachim Parrow,et al.  The Largest Respectful Function , 2016, Log. Methods Comput. Sci..

[28]  Damien Pous,et al.  Checking NFA equivalence with bisimulations up to congruence , 2013, POPL.

[29]  Patrick Cousot,et al.  Types as abstract interpretations , 1997, POPL '97.

[30]  Peter W. O'Hearn,et al.  From Categorical Logic to Facebook Engineering , 2015, 2015 30th Annual ACM/IEEE Symposium on Logic in Computer Science.

[31]  Damien Pous,et al.  Complete Lattices and Up-To Techniques , 2007, APLAS.

[32]  J. Hopcroft,et al.  A Linear Algorithm for Testing Equivalence of Finite Automata. , 1971 .

[33]  Xavier Leroy Formal verification of a static analyzer: abstract interpretation in type theory , 2014 .

[34]  Yves Bertot Structural Abstract Interpretation: A Formal Study Using Coq , 2008, LerNet ALFA Summer School.

[35]  Nils Anders Danielsson Up-to techniques using sized types , 2017, Proc. ACM Program. Lang..

[36]  Roberto Giacobazzi,et al.  Incompleteness, Counterexamples, and Refinements in Abstract Model-Checking , 2001, SAS.