deductive verification of java programs
play

Deductive Verification of Java programs Introduction with Algebraic - PowerPoint PPT Presentation

Krakatoa Deductive Verification of Java programs Introduction with Algebraic Modeling and Multi-Prover Overview of Krakatoa Algebraic models Backend: the Why/Krakatoa platform Conclusions Claude March e Christine Paulin Jean-Christophe


  1. Krakatoa Deductive Verification of Java programs Introduction with Algebraic Modeling and Multi-Prover Overview of Krakatoa Algebraic models Backend: the Why/Krakatoa platform Conclusions Claude March´ e Christine Paulin Jean-Christophe Filliˆ atre Nicolas Rousset Xavier Urbain ProVal project - http://proval.lri.fr INRIA-Futurs & Universit´ e Paris-Sud 11 Orsay, France January 20th, 2007

  2. Krakatoa Outline Introduction Overview of Krakatoa Introduction 1 Algebraic models Context Conclusions JML: Introductory example Overview of Krakatoa 2 Demo Platform overview Why intermediate language Contributions 3 Algebraic models Principles Example Demo Conclusions 4

  3. Krakatoa Outline Introduction Context JML: Introductory example Introduction 1 Overview of Context Krakatoa JML: Introductory example Algebraic models Conclusions Overview of Krakatoa 2 Demo Platform overview Why intermediate language Contributions 3 Algebraic models Principles Example Demo Conclusions 4

  4. Krakatoa Context Introduction Context JML: Introductory example Overview of Krakatoa Algebraic models • ProVal research group develops tools for Deduction Conclusions Verification of Java and C source code • Requirements: specified as annotations in the source • For Java (Card): specifications given in JML (Java Modeling Language) � Krakatoa tool • For C: home-made specification language � Caduceus tool • Generation of Verification Conditions , to be discharged by theorem provers • Originality: common platform for C and Java

  5. Krakatoa JML toy example Introduction Context JML: Introductory example Overview of • JML class invariants Krakatoa Algebraic models • JML method behaviors: pre- and post-conditions Conclusions class Purse { int balance; //@ invariant balance >= 0; /*@ normal_behavior @ requires s >= 0; @ assigns balance; @ ensures balance == \old(balance)+s; @*/ public void credit(int s) { balance += s; }

  6. Krakatoa Toy example (cont.) Introduction Context JML: Introductory example Overview of Krakatoa • JML exceptional behaviors Algebraic models Conclusions /*@ behavior @ requires s >= 0; @ assigns balance; @ ensures s <= \old(balance) && @ balance == \old(balance) - s; @ signals (NoCreditException) @ s > \old(balance) && @ balance == \old(balance); @*/ public void withdraw(int s) throws NoCreditException { if (balance >= s) balance -= s; else throw new NoCreditException(); }

  7. Krakatoa JML tools Introduction Context JML: Introductory example Overview of Krakatoa Algebraic models Conclusions • Runtime assertion checking : JML RAC • Static verification : • ESC/Java • Several others: LOOP , Jack, KeY, Jive, Bogor. . . Krakatoa • Common goal: prove advanced functional behaviors • Why so many tools ? hard problems, many challenges: http://www.cs.ru.nl/ ∼ woj/esfws06/ • Other tools: testing, symbolic execution. . .

  8. Krakatoa Outline Introduction Overview of Krakatoa Introduction 1 Demo Platform overview Context Why intermediate language JML: Introductory example Contributions Algebraic models Overview of Krakatoa 2 Conclusions Demo Platform overview Why intermediate language Contributions 3 Algebraic models Principles Example Demo Conclusions 4

  9. Krakatoa Demo: toy example (cont.) Introduction Overview of Krakatoa Demo Platform overview Why intermediate • A buggy example language Contributions Algebraic models /*@ normal_behavior Conclusions @ requires p1.balance == 100; @ ensures \result == 150; @*/ public static int test(Purse p1, Purse p2) { p1.credit(50); p2.withdraw(100); return p1.balance; } Demo

  10. Krakatoa Remarks Introduction Overview of Krakatoa Demo Platform overview Why intermediate language Contributions • Krakatoa generates VCs for both Algebraic models Conclusions • Safety properties : no NullPointerException, no ArrayIndexOutOfBounds, no DivisionByZero • Method calls: precondition is satisfied • Methods post-conditions are valid • Class invariants are preserved (beware: challenging issues) • Modular Approach : • for each method call: only its specification is seen

  11. Krakatoa Platform Architecture Introduction Overview of Krakatoa Demo Platform overview Annotated programs Why intermediate language Java+JML Contributions Annotated C Algebraic models Conclusions Krakatoa Caduceus Why provers Coq,PVS,Isabelle. . . Simplify, CVS-lite, haRVey, Ergo SMT provers (Yices. . . )

  12. Krakatoa Platform characteristics Introduction Overview of Krakatoa Demo Platform overview Why intermediate language Contributions Algebraic models • Shared intermediate language : Why language Conclusions • Only one VCG (Verification Condition Generator) : Why tool • Several provers as output: • allows both • automatic proving and • interactive proof contruction for discharging VCs

  13. Krakatoa Why tool Introduction Overview of Krakatoa Demo Platform overview • Multi-prover output Why intermediate language • Why language : Contributions • programming language: a WHILE language, tailored to VC Algebraic models generation generation, with Conclusions • limited side-effects: only mutable variables • no data types • basic control statements + throw, try/catch • program = set of functions, annotated with pre- and post-conditions • specification language: multi-sorted (polymorphic) first-order logic , with built-in arithmetic • VC generation based on a Weakest Precondition calculus , incorporating exceptional post-conditions , and computation of effects over mutable variables .

  14. Krakatoa Why as intermediate language Introduction Overview of Krakatoa Demo Platform overview Why intermediate language Contributions • Common approach to Java and C: Algebraic models translation into Why programs Conclusions • Why specification language used both for • translation of input annotations • modeling Java objects (resp. C pointers/structures) and heap memory. • Modeling in Why: algebraic specifications • introducing functions and predicates • stating axioms

  15. Krakatoa Heap memory model Introduction Overview of Principle: Burstall-Bornat ‘component-as-array’ model Krakatoa Demo Platform overview Java Why Why intermediate language balance := upd (balance,this, balance += s; Contributions Algebraic models acc (balance,this)+s) Conclusions • Each Java field becomes a Why mutable variable of type ‘functional array’ • acc ( f , o ) denotes f at index o → encodes o . f • upd ( f , o , v ) denotes functional update • Theory of arrays: acc ( upd ( f , o , v ) , o ) = v o � = o ′ → acc ( upd ( f , o , v ) , o ′ ) = acc ( f , o ′ )

  16. Krakatoa Heap memory model in Introduction Krakatoa Overview of Krakatoa Demo Platform overview Why intermediate language Contributions Algebraic models • Similar encoding for Java arrays Conclusions • Objects hierarchy modeled by a predicate instanceof with axioms. • • A theory for modeling assigns clauses [TPHOLs’05] • Approximately 500 lines of Why specifications, + additional axioms generated on-the-fly for each Java program

  17. Krakatoa Java: contributions Introduction Overview of Krakatoa Demo Platform overview Why intermediate language • Krakatoa tool publicly available Contributions Algebraic models • A specific modeling of Java/JML, in particular for assigns Conclusions clauses [TPHOLs’05] • Java Card transactions [SEFM’06] • on-the-fly generation of interpretation of beginTransaction() , commitTransaction() . . . • Case studies: • PSE applet provided by Axalto [AMAST’04] • Demoney Applet provided by Trusted Logic

  18. Krakatoa C programs: contributions Introduction Overview of Krakatoa Demo Platform overview Why intermediate language Contributions • Caduceus tool publicly available Algebraic models • An original modeling of heap memory and pointer arithmetic Conclusions [ICFEM’04] • Original support of floating-point programs [ARITH’07] • Case studies: • Schorr-Waite graph-marking algorithm [SEFM’05], • Avionics embedded code provided by Dassault aviation company � A original analysis of memory separation [submitted]

  19. Krakatoa Outline Introduction Overview of Krakatoa Introduction 1 Algebraic models Context Principles Example JML: Introductory example Demo Conclusions Overview of Krakatoa 2 Demo Platform overview Why intermediate language Contributions 3 Algebraic models Principles Example Demo Conclusions 4

  20. Krakatoa Design choices Introduction Overview of Krakatoa Algebraic models Principles Example Demo • Krakatoa, 2003: Conclusions • ad-hoc interpretation of pure methods • Underlying Why logic: • multi-sorted first order logic • one may declare sorts, logical functions, predicates, axioms. • Idea: • use this logic for describing models of programs • � algebraic specifications of models

  21. Krakatoa Design choices Introduction Overview of Krakatoa Algebraic models Principles Example Demo • Caduceus, 2004: Conclusions • allow first-order modeling at C source level • used for: • linked-list in-place reversal in C [Filliˆ atre & March´ e, ICFEM 2004] • Schorr-Waite graph traversal in C [Hubert & March´ e, SEFM 2005] • Krakatoa, 2006: • allow first-order modeling similarly • but JML models are OO, not algebraic • so Krakatoa now diverges from JML : allows algebraic models (recent work, still in progress)

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend