Kopitiam – a unified IDE for developing formally verified Java programs

We present Kopitiam, an Eclipse plugin for certifying full functional correctness of Java programs using higher-order separation logic. Kopitiam extends the Eclipse Java IDE with an interactive environment for program verification, powered by the general-purpose proof assistant Coq. Moreover, Kopitiam includes a development environment for Coq theories, where users can define program models, and prove theorems required for the program verification.

[1]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[2]  Christoph Weidenbach,et al.  SPASS Version 3.5 , 2009, CADE.

[3]  Peter W. O'Hearn,et al.  Smallfoot: Modular Automatic Assertion Checking with Separation Logic , 2005, FMCO.

[4]  Lars Birkedal,et al.  Higher-Order Separation Logic in Isabelle/HOLCF , 2008, MFPS.

[5]  David R. Cok,et al.  ESC/Java2: Uniting ESC/Java and JML Progress and Issues in Building and Using ESC/Java2, Including a Case Study Involving the Use of the Tool to Verify Portions of an Internet Voting Tally System , 2005 .

[6]  Matthew J. Parkinson,et al.  jStar: towards practical verification for java , 2008, OOPSLA.

[7]  Lars Birkedal,et al.  BI Hyperdoctrines and Higher-Order Separation Logic , 2005, ESOP.

[8]  Lars Birkedal,et al.  Charge! - A Framework for Higher-Order Separation Logic in Coq , 2012, ITP.

[9]  Adam Chlipala,et al.  Mostly-automated verification of low-level programs in computational separation logic , 2011, PLDI '11.

[10]  Lawrence C. Paulson,et al.  Extending Sledgehammer with SMT Solvers , 2011, CADE.

[11]  Frank Piessens,et al.  The Belgian Electronic Identity Card: a Verification Case Study , 2011, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[12]  Frank Piessens,et al.  VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java , 2011, NASA Formal Methods.

[13]  Wojciech Mostowski,et al.  Fully Verified Java Card API Reference Implementation , 2007, VERIFY.

[14]  Peter W. O'Hearn,et al.  Space Invading Systems Code , 2009, LOPSTR.

[15]  Michael Norrish,et al.  seL4: formal verification of an OS kernel , 2009, SOSP '09.

[16]  Lars Birkedal,et al.  Verifying Object-Oriented Programs with Higher-Order Separation Logic in Coq , 2011, ITP.

[17]  Martin Hofmann,et al.  MOBIUS: Mobility, Ubiquity, Security , 2006, TGC.

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

[19]  Lars Birkedal,et al.  Formalized Verification of Snapshotable Trees: Separation and Sharing , 2012, VSTTE.

[20]  K. Rustan M. Leino,et al.  The Spec# Programming System: Challenges and Directions , 2005, VSTTE.

[21]  Bernhard Beckert,et al.  The KeY tool , 2005, Software & Systems Modeling.

[22]  M. Gordon,et al.  Introduction to HOL: a theorem proving environment for higher order logic , 1993 .

[23]  Gavin M. Bierman,et al.  Separation logic and abstraction , 2005, POPL '05.

[24]  Norbert Schirmer,et al.  A Verification Environment for Sequential Imperative Programs in Isabelle/HOL , 2005, LPAR.

[25]  Samin Ishtiaq,et al.  SLAyer: Memory Safety for Systems-Level Code , 2011, CAV.

[26]  Tobias Nipkow,et al.  A Proof Assistant for Higher-Order Logic , 2002 .

[27]  Julien Charles,et al.  A Lightweight Theorem Prover Interface for Eclipse , 2008 .

[28]  Bart Jacobs,et al.  The LOOP Compiler for Java and JML , 2001, TACAS.

[29]  Gavin M. Bierman,et al.  Separation logic, abstraction and inheritance , 2008, POPL '08.

[30]  Viktor Kuncak,et al.  An overview of the Jahob analysis system: project goals and current status , 2006, Proceedings 20th IEEE International Parallel & Distributed Processing Symposium.

[31]  Hannes Mehnert Kopitiam: Modular Incremental Interactive Full Functional Static Verification of Java Code , 2011, NASA Formal Methods.

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

[33]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.