Automated Verification of Relational While-Programs

Software verification is essential for safety-critical systems. In this paper, we illustrate that some verification tasks can be done fully automatically. We show how to automatically verify imperative programs for relation-based discrete structures by combining relation algebra and the well-known assertion-based verification method with automated theorem proving. We present two examples in detail: a relational program for determining the reflexive-transitive closure and a topological sorting algorithm. We also treat the automatic verification of the equivalence of common-logical and relation-algebraic specifications.

[1]  Jim Davies,et al.  Science of Computer Programming , 2014 .

[2]  Georg Struth,et al.  Automated Reasoning in Kleene Algebra , 2007, CADE.

[3]  Ewa Orlowska,et al.  Correspondence Results for Relational Proof Systems with Application to the Lambek Calculus , 2002, Stud Logica.

[4]  W. J. Thron,et al.  Encyclopedia of Mathematics and its Applications. , 1982 .

[5]  Gunther Schmidt,et al.  RALF - A Relation-Algebraic Formula Manipulation System and Proof Checker , 1993, AMAST.

[6]  Rudolf Berghammer,et al.  Relational depth-first-search with applications , 2001, Inf. Sci..

[7]  Wolfram Kahl,et al.  Calculational Relation-Algebraic Proofs in Isabelle/Isar , 2003, RelMiCS.

[8]  A. Tarski,et al.  A Formalization Of Set Theory Without Variables , 1987 .

[9]  Gunther Schmidt,et al.  Relational Mathematics , 2010, Encyclopedia of Mathematics and its Applications.

[10]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[11]  Simon Foster,et al.  Automated Engineering of Relational and Algebraic Methods in Isabelle/HOL - (Invited Tutorial) , 2011, RAMiCS.

[12]  W. Bibel,et al.  Automated deduction : a basis for applications , 1998 .

[13]  Johann Schumann,et al.  Automated Theorem Proving in Software Engineering , 2001, Springer Berlin Heidelberg.

[14]  Georg Struth,et al.  On Automating the Calculus of Relations , 2008, IJCAR.

[15]  Alfred Tarski,et al.  Distributive and Modular Laws in the Arithmetic of Relation Algebras , 1953 .

[16]  David von Oheimb,et al.  RALL: Machine-Supported Proofs for Relation Algebra , 1997, CADE.

[17]  Edsger W. Dijkstra,et al.  Guarded commands, nondeterminacy and formal derivation of programs , 1975, Commun. ACM.

[18]  Carsten Sinz System Description: ARA - An Automatic Theorem Prover for Relation Algebras , 2000, CADE.

[19]  Rudolf Berghammer,et al.  Applying relation algebra and RelView to solve problems on orders and lattices , 2008, Acta Informatica.

[20]  Sebastian Fischer,et al.  Simple Rectangle-Based Functional Programs for Computing Reflexive-Transitive Closures , 2012, RAMICS.

[21]  A. B. Kahn,et al.  Topological sorting of large networks , 1962, CACM.

[22]  Christoph Weidenbach System Description: Spass Version 1.0.0 , 1999, CADE.

[23]  Rudolf Berghammer,et al.  Deriving relational programs for computing kernels by reconstructing a proof of Richardson's theorem , 2000, Sci. Comput. Program..

[24]  Han-Hing Dang,et al.  First-Order Theorem Prover Evaluation w . r . t . Relation-and Kleene Algebra , 2013 .

[25]  Markus Müller-Olm,et al.  Computing polynomial program invariants , 2004, Inf. Process. Lett..

[26]  Laura Kovács,et al.  Invariant Generation for P-Solvable Loops with Assignments , 2008, CSR.

[27]  Alfred Tarski,et al.  Relational selves as self-affirmational resources , 2008 .

[28]  Georg Struth,et al.  On Automated Program Construction and Verification , 2010, MPC.

[29]  Rudolf Berghammer Combining Relational Calculus and the Dijkstra-Gries Method for Deriving Relational Programs , 1999, Inf. Sci..

[30]  Gunther Schmidt,et al.  Relations and Graphs: Discrete Mathematics for Computer Scientists , 1993 .