The Trace Modality

We propose the trace modality, a concept to uniformly express a wide range of program verification problems. To demonstrate its usefulness, we formalize several program verification problems in it: Functional Verification, Information Flow Analysis, Temporal Model Checking, Program Synthesis, Correct Compilation, and Program Evolution. To reason about the trace modality, we translate programs and specifications to regular symbolic traces and construct simulation relations on first-order symbolic automata. The idea with this uniform representation is that it helps to identify synergy potential—theoretically and practically—between so far separate verification approaches.

[1]  Eduard Kamburjan Behavioral Program Logic , 2019, TABLEAUX.

[2]  Alan J. Hu,et al.  Checking for Language Inclusion Using Simulation Preorders , 1991, CAV.

[3]  Natarajan Shankar,et al.  Combining Model Checking and Deduction , 2018, Handbook of Model Checking.

[4]  Thomas A. Henzinger,et al.  Computing simulations on finite and infinite graphs , 1995, Proceedings of IEEE 36th Annual Foundations of Computer Science.

[5]  Rupak Majumdar,et al.  Software model checking , 2009, CSUR.

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

[7]  Reiner Hähnle,et al.  Modular, Correct Compilation with Automatic Soundness Proofs , 2018, ISoLA.

[8]  Sumit Gulwani,et al.  From program verification to program synthesis , 2010, POPL '10.

[9]  Xavier Leroy,et al.  Formal verification of a realistic compiler , 2009, CACM.

[10]  Bernhard Beckert,et al.  Deductive Software Verification – The KeY Book , 2016, Lecture Notes in Computer Science.

[11]  Klaus Havelund,et al.  Model Checking Programs , 2004, Automated Software Engineering.

[12]  François Bobot,et al.  Why3: Shepherd Your Herd of Provers , 2011 .

[13]  Hongseok Yang,et al.  Relational separation logic , 2007, Theor. Comput. Sci..

[14]  Reiner Hähnle,et al.  A Theorem Proving Approach to Analysis of Secure Information Flow , 2005, SPC.

[15]  Pedro R. D'Argenio,et al.  Secure information flow by self-composition , 2004, Proceedings. 17th IEEE Computer Security Foundations Workshop, 2004..

[16]  Bor-Yuh Evan Chang,et al.  Boogie: A Modular Reusable Verifier for Object-Oriented Programs , 2005, FMCO.

[17]  Thomas W. Reps,et al.  Precise interprocedural dataflow analysis via graph reachability , 1995, POPL '95.

[18]  Maritta Heisel,et al.  An Interactive Verification System Based on Dynamic Logic , 1986, CADE.

[19]  Ofer Strichman,et al.  Regression verification: proving the equivalence of similar programs , 2013, Softw. Test. Verification Reliab..

[20]  Bernhard Beckert,et al.  Dynamic Logic with Trace Semantics , 2013, CADE.

[21]  Maritta Heisel Formalizing and Implementing Gries' Program Development Method in Dynamic Logic , 1992, Sci. Comput. Program..

[22]  Martin Monperrus,et al.  Automatic Software Repair , 2018, ACM Comput. Surv..

[23]  Gerard J. Holzmann,et al.  The Model Checker SPIN , 1997, IEEE Trans. Software Eng..

[24]  Corina S. Pasareanu,et al.  Verification of Java Programs Using Symbolic Execution and Invariant Generation , 2004, SPIN.

[25]  Reiner Hähnle,et al.  Locally Abstract, Globally Concrete Semantics of Concurrent Programming Languages , 2017, TABLEAUX.

[26]  C. A. R. Hoare,et al.  An axiomatic basis for computer programming , 1969, CACM.

[27]  Jose Meseguer,et al.  Formal Specification and Verification of Java Refactorings , 2006, 2006 Sixth IEEE International Workshop on Source Code Analysis and Manipulation.

[28]  Jerzy Tiuryn,et al.  Dynamic logic , 2001, SIGA.

[29]  Gilles Barthe,et al.  Relational Verification Using Product Programs , 2011, FM.

[30]  Giuseppe De Giacomo,et al.  Linear Temporal Logic and Linear Dynamic Logic on Finite Traces , 2013, IJCAI.