On collecting semantics for program analysis

Abstract Reasoning on a complex system in the abstract interpretation theory starts with a formal description of the system behavior specified by a collecting semantics. We take the common point of view that a collecting semantics is a very precise semantics from which other abstractions may be derived. We elaborate on both the concepts of precision and derivability, and introduce a notion of adequacy which tell us when a collecting semantics is a good choice for a given family of abstractions. We instantiate this approach to the case of first-order functional programs by considering three common collecting semantics and some abstract properties of functions. We study their relative precision and give a constructive characterization of the classes of abstractions which are adequate for the collecting semantics.

[1]  Alan Mycroft,et al.  The Theory and Practice of Transforming Call-by-need into Call-by-value , 1980, Symposium on Programming.

[2]  Roland Carl Backhouse,et al.  Safety of abstract interpretations for free, via logical relations and Galois connections , 2004, Sci. Comput. Program..

[3]  Gianluca Amato,et al.  Inferring linear invariants with parallelotopes , 2017, Sci. Comput. Program..

[4]  Samson Abramsky,et al.  Abstract Interpretation, Logical Relations and Kan Extensions , 1990, J. Log. Comput..

[5]  Maurizio Gabbrielli,et al.  The s-Semantics Approach: Theory and Applications , 1994, J. Log. Program..

[6]  Prakash Panangaden,et al.  A category theoretic formalism for abstract interpretation , 1984 .

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

[8]  Gianluca Amato,et al.  A Taxonomy of Program Analyses , 2018, ICTCS.

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

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

[11]  Roberto Giacobazzi "Optimal" Collecting Semantics for Analysis in a Hierarchy of Logic Program Semantics , 1995, STACS.

[12]  Giorgio Levi,et al.  A Theory of Observables for Logic Programs , 2001, Inf. Comput..

[13]  Nicolas Halbwachs,et al.  Automatic discovery of linear restraints among variables of a program , 1978, POPL.

[14]  Philip Wadler,et al.  Projections for strictness analysis , 1987, FPCA.

[15]  Maurizio Parton,et al.  A Tool Which Mines Partial Execution Traces to Improve Static Analysis , 2010, RV.

[16]  Radhia Cousot,et al.  Higher-order abstract interpretation (and application to comportment analysis generalizing strictness, termination, projection and PER analysis of functional languages) , 1994, Proceedings of 1994 IEEE International Conference on Computer Languages (ICCL'94).

[17]  Giuseppe Longo,et al.  Categories, types and structures - an introduction to category theory for the working computer scientist , 1991, Foundations of computing.

[18]  Gianluca Amato,et al.  Observational Completeness on Abstract Interpretation , 2009, WoLLIC.

[19]  Patrick Cousot,et al.  Temporal abstract interpretation , 2000, POPL '00.

[20]  Karthikeyan Sankaralingam,et al.  Idempotent code generation: Implementation, analysis, and evaluation , 2013, Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO).

[21]  Patrick Cousot,et al.  Abstract interpretation: past, present and future , 2014, CSL-LICS.

[22]  Patrick Cousot,et al.  Abstract Interpretation Frameworks , 1992, J. Log. Comput..

[23]  Patrick Cousot,et al.  Static determination of dynamic properties of programs , 1976 .

[24]  Gianluca Amato,et al.  Random: R-Based Analyzer for Numerical Domains , 2012, LPAR.

[25]  Patrick Cousot Constructive design of a hierarchy of semantics of a transition system by abstract interpretation , 2002, Theor. Comput. Sci..

[26]  Gianluca Amato,et al.  Numerical static analysis with Soot , 2013, SOAP '13.

[27]  Arnaud Venet,et al.  Abstract Cofibered Domains: Application to the Alias Analysis of Untyped Programs , 1996, SAS.