Automated Flaw Detection in Algebraic Specifications

In interactive theorem proving practice a significant amount of time is spent on unsuccessful proof attempts of wrong conjectures. An automatic method that reveals them by generating finite counter examples would offer an extremely valuable support for a proof engineer by saving his time and effort. In practice, such counter examples tend to be small, so usually there is no need to search for big instances. Most definitions of functions or predicates on infinite structures do not preserve the semantics if a transition to arbitrary finite substructures is made. We propose constraints which guarantee a correct axiomatization on finite structures and present an approach which uses the Alloy Analyzer to generate finite instances of theories in the theorem prover KIV. It is evaluated on the library of basic data types as well as on some challenging case studies in KIV. The technique is implemented using the Kodkod constraint solver which is a successor of Alloy.

[1]  Gerhard Schellhorn,et al.  Completeness of fair ASM refinement , 2011, Sci. Comput. Program..

[2]  Wolfgang Reif,et al.  Interactive correctness proofs for software modules using KIV , 1995, COMPASS '95 Proceedings of the Tenth Annual Conference on Computer Assurance Systems Integrity, Software Safety and Process Security'.

[3]  John Harrison,et al.  Inductive Definitions: Automation and Application , 1995, TPHOLs.

[4]  Peter D. Mosses,et al.  Casl Reference Manual: The Complete Documentation Of The Common Algebraic Specification Language (LECTURE NOTES IN COMPUTER SCIENCE) , 2004 .

[5]  Maurice Herlihy,et al.  A Lazy Concurrent List-Based Set Algorithm , 2005, OPODIS.

[6]  Kurt Stenzel,et al.  Structured Specifications and Interactive Proofs with KIV , 1998 .

[7]  Emina Torlak,et al.  Kodkod: A Relational Model Finder , 2007, TACAS.

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

[9]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 2 , 1990, EATCS Monographs on Theoretical Computer Science.

[10]  Alexander Knapp,et al.  Interactive Verification of UML State Machines , 2004, ICFEM.

[11]  Yde Venema,et al.  Dynamic Logic by David Harel, Dexter Kozen and Jerzy Tiuryn. The MIT Press, Cambridge, Massachusetts. Hardback: ISBN 0–262–08289–6, $50, xv + 459 pages , 2002, Theory and Practice of Logic Programming.

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

[13]  Patrick Brézillon,et al.  Lecture Notes in Artificial Intelligence , 1999 .

[14]  Hartmut Ehrig,et al.  Algebraic Techniques in Software Development: A Review of Progress up to the Mid Nineties , 2001, Current Trends in Theoretical Computer Science.

[15]  Hartmut Ehrig,et al.  Fundamentals of Algebraic Specification 1 , 1985, EATCS Monographs on Theoretical Computer Science.

[16]  Kurt Stenzel A Formally Verified Calculus for Full Java Card , 2004, AMAST.

[17]  Frank van Harmelen,et al.  Extensions to the Rippling-Out Tactic for Guiding Inductive Proofs , 1990, CADE.

[18]  Tahina Ramananandro,et al.  Mondex, an electronic purse: specification and refinement checks with the Alloy model-finding method , 2007, Formal Aspects of Computing.

[19]  Lawrence C. Paulson,et al.  Automation for interactive proof: First prototype , 2006, Inf. Comput..

[20]  Wilfredo Torres-Pomales,et al.  Diagnosing a Failed Proof in Fault-Tolerance: A Disproving Challenge Problem , 2006 .

[21]  K. Claessen,et al.  New Techniques that Improve MACE-style Finite Model Finding , 2007 .

[22]  Lawrence Charles Paulson,et al.  Isabelle: A Generic Theorem Prover , 1994 .

[23]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[24]  Wolfgang Reif,et al.  Flaw Detection in Formal Specifications , 2001, IJCAR.

[25]  Daniel Jackson,et al.  Automating first-order relational logic , 2000, SIGSOFT '00/FSE-8.

[26]  Bernhard Beckert,et al.  Integrating Automated and Interactive Theorem Proving , 1998 .

[27]  Tjark Weber,et al.  SAT-based finite model generation for higher-order logic , 2008 .

[28]  Andriy Dunets,et al.  Bounded Relational Analysis of Free Data Types , 2008, TAP.

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

[30]  Wolfgang Reif,et al.  Interactive Verification of Concurrent Systems using Symbolic Execution , 2010, LPAR Workshops.

[31]  Lawrence C. Paulson,et al.  Isabelle - A Generic Theorem Prover (with a contribution by T. Nipkow) , 1994, Lecture Notes in Computer Science.

[32]  William McCune,et al.  Mace4 Reference Manual and Guide , 2003, ArXiv.

[33]  Andriy Dunets,et al.  Automating Algebraic Specifications of Non-freely Generated Data Types , 2008, ATVA.

[34]  Wolfgang Reif,et al.  Verifying Concurrent Systems with Symbolic Execution , 2002, J. Log. Comput..

[35]  Viktor Kuncak,et al.  Relational analysis of algebraic datatypes , 2005, ESEC/FSE-13.

[36]  Hantao Zhang,et al.  SEM: a System for Enumerating Models , 1995, IJCAI.

[37]  Timothy L. Harris,et al.  A Pragmatic Implementation of Non-blocking Linked-Lists , 2001, DISC.

[38]  Wolfgang Reif,et al.  Korrektheit von Spezifikationen und generischen Moduln , 1991 .

[39]  Wolfgang Ahrendt,et al.  Deductive Search for Errors in Free Data Type Specifications Using Model Generation , 2002, CADE.

[40]  W. Reif,et al.  Theorem Proving in Large Theories , 1998 .

[41]  Sharad Malik,et al.  Chaff: engineering an efficient SAT solver , 2001, Proceedings of the 38th Design Automation Conference (IEEE Cat. No.01CH37232).

[42]  Wolfgang Ahrendt,et al.  The WAM Case Study: Verifying Compiler Correctness for Prolog with KIV , 1998 .

[43]  John K. Slaney,et al.  FINDER: Finite Domain Enumerator - System Description , 1994, CADE.

[44]  Natarajan Shankar,et al.  PVS: A Prototype Verification System , 1992, CADE.