Review: forward E { P } { P && E } TF { P && ! E } { P 1 } { P 2 } { P 1 || P 2 } x = E { P } { \exists … }

Slides:



Advertisements
Similar presentations
Automated Theorem Proving Lecture 1. Program verification is undecidable! Given program P and specification S, does P satisfy S?
Advertisements

Completeness and Expressiveness
In this episode of The Verification Corner, Rustan Leino talks about Loop Invariants. He gives a brief summary of the theoretical foundations and shows.
Computer Science CPSC 322 Lecture 25 Top Down Proof Procedure (Ch 5.2.2)
Synthesis, Analysis, and Verification Lecture 04c Lectures: Viktor Kuncak VC Generation for Programs with Data Structures “Beyond Integers”
Semantics Static semantics Dynamic semantics attribute grammars
UIUC CS 497: Section EA Lecture #2 Reasoning in Artificial Intelligence Professor: Eyal Amir Spring Semester 2004.
Reasoning About Code; Hoare Logic, continued
Hoare’s Correctness Triplets Dijkstra’s Predicate Transformers
Rigorous Software Development CSCI-GA Instructor: Thomas Wies Spring 2012 Lecture 11.
ISBN Chapter 3 Describing Syntax and Semantics.
Program Proving Notes Ellen L. Walker.
1 Semantic Description of Programming languages. 2 Static versus Dynamic Semantics n Static Semantics represents legal forms of programs that cannot be.
1/22 Programs : Semantics and Verification Charngki PSWLAB Programs: Semantics and Verification Mordechai Ben-Ari Mathematical Logic for Computer.
CS 355 – Programming Languages
Logic in general Logics are formal languages for representing information such that conclusions can be drawn Syntax defines the sentences in the language.
Plan for today Proof-system search ( ` ) Interpretation search ( ² ) Quantifiers Equality Decision procedures Induction Cross-cutting aspectsMain search.
What’s left in the course. The course in a nutshell Logics Techniques Applications.
Constraint Logic Programming Ryan Kinworthy. Overview Introduction Logic Programming LP as a constraint programming language Constraint Logic Programming.
CPSC 322, Lecture 20Slide 1 Propositional Definite Clause Logic: Syntax, Semantics and Bottom-up Proofs Computer Science cpsc322, Lecture 20 (Textbook.
ESC Java. Static Analysis Spectrum Power Cost Type checking Data-flow analysis Model checking Program verification AutomatedManual ESC.
Proof-system search ( ` ) Interpretation search ( ² ) Main search strategy DPLL Backtracking Incremental SAT Natural deduction Sequents Resolution Main.
Knowledge Representation using First-Order Logic (Part II) Reading: Chapter 8, First lecture slides read: Second lecture slides read:
` ² Q E D I Nelson-Oppen review
Search in the semantic domain. Some definitions atomic formula: smallest formula possible (no sub- formulas) literal: atomic formula or negation of an.
Some administrative stuff Class mailing list: –send to with the command “subscribe”
Administrative stuff On Thursday, we will start class at 11:10, and finish at 11:55 This means that each project will get a 10 minute presentation + 5.
Last time Proof-system search ( ` ) Interpretation search ( ² ) Quantifiers Equality Decision procedures Induction Cross-cutting aspectsMain search strategy.
ESC Java. Static Analysis Spectrum Power Cost Type checking Data-flow analysis Model checking Program verification AutomatedManual ESC.
Logical Agents Chapter 7 Feb 26, Knowledge and Reasoning Knowledge of action outcome enables problem solving –a reflex agent can only find way from.
Review: forward E { P } { P && E } TF { P && ! E } { P 1 } { P 2 } { P 1 || P 2 } x = E { P } { \exists … }
After today Week 9 –Tu: Pat Rondon –Th: Ravi/Nathan Week 10 –Tu: Nathan/Ravi –Th: Class canceled Finals week –Th: Zach, John.
Describing Syntax and Semantics
1 First order theories. 2 Satisfiability The classic SAT problem: given a propositional formula , is  satisfiable ? Example:  Let x 1,x 2 be propositional.
Reading and Writing Mathematical Proofs
1 Program Correctness CIS 375 Bruce R. Maxim UM-Dearborn.
MATH 224 – Discrete Mathematics
1 Inference Rules and Proofs (Z); Program Specification and Verification Inference Rules and Proofs (Z); Program Specification and Verification.
CSE 311 Foundations of Computing I Lecture 8 Proofs and Set Theory Spring
CS 363 Comparative Programming Languages Semantics.
Slide 1 Propositional Definite Clause Logic: Syntax, Semantics and Bottom-up Proofs Jim Little UBC CS 322 – CSP October 20, 2014.
Chapter 1, Part II: Predicate Logic With Question/Answer Animations.
Reading and Writing Mathematical Proofs Spring 2015 Lecture 4: Beyond Basic Induction.
Propositional Calculus CS 270: Mathematical Foundations of Computer Science Jeremy Johnson.
Chapter 5: Sequences, Mathematical Induction, and Recursion 5.5 Application: Correctness of Algorithms 1 [P]rogramming reliability – must be an activity.
Chapter 3 Part II Describing Syntax and Semantics.
Semantics In Text: Chapter 3.
CS6133 Software Specification and Verification
CSE 311 Foundations of Computing I Lecture 9 Proofs and Set Theory Autumn 2012 CSE
Computer Science CPSC 322 Lecture 22 Logical Consequences, Proof Procedures (Ch 5.2.2)
1 First order theories (Chapter 1, Sections 1.4 – 1.5) From the slides for the book “Decision procedures” by D.Kroening and O.Strichman.
CSE Winter 2008 Introduction to Program Verification for-loops; review.
1 Propositional Logic Limits The expressive power of propositional logic is limited. The assumption is that everything can be expressed by simple facts.
CSE 311: Foundations of Computing Fall 2013 Lecture 8: Proofs and Set theory.
First-Order Logic Semantics Reading: Chapter 8, , FOL Syntax and Semantics read: FOL Knowledge Engineering read: FOL.
CS357 Lecture 13: Symbolic model checking without BDDs Alex Aiken David Dill 1.
Logical Agents Chapter 7. Outline Knowledge-based agents Propositional (Boolean) logic Equivalence, validity, satisfiability Inference rules and theorem.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
Section 1.4. Propositional Functions Propositional functions become propositions (and have truth values) when their variables are each replaced by a value.
Knowledge Repn. & Reasoning Lecture #9: Propositional Logic UIUC CS 498: Section EA Professor: Eyal Amir Fall Semester 2005.
Logical Agents. Outline Knowledge-based agents Logic in general - models and entailment Propositional (Boolean) logic Equivalence, validity, satisfiability.
CENG 424-Logic for CS Introduction Based on the Lecture Notes of Konstantin Korovin, Valentin Goranko, Russel and Norvig, and Michael Genesereth.
Propositional Calculus: Boolean Functions and Expressions
Reasoning About Code.
Reasoning about code CSE 331 University of Washington.
Lecture 5 Floyd-Hoare Style Verification
CSE 311: Foundations of Computing
Semantics In Text: Chapter 3.
Search techniques.
Program Verification with Hoare Logic
Presentation transcript:

Review: forward E { P } { P && E } TF { P && ! E } { P 1 } { P 2 } { P 1 || P 2 } x = E { P } { \exists … }

Review: backward E {(E ) P 1 ) && (! E ) P 2 ) } { P 1 } TF { P 2 } { P } x = E {Q[x:=E] } { Q }

ESC Verification algorithm Given function body annotated with pre- condition P and post-condition Q: –Compute wp of Q with respect to functon body –Ask a theorem prover to show that P implies the wp We saw several examples last time But we still haven’t seen how to handle: –loops, functions calls, and pointers

Reasoning About Programs with Loops Loops can be handled using conditionals and joins Consider the while(E) S statement E { P } T F S { Q } { I } { I && E } if(1) P ) I (loop invariant holds initially) and(2) I && ! E ) Q (loop establishes the postcondition) and(3) { I && E } S { I } (loop invariant is preserved) Loop invariant

Loops in the backward direction Given Q, want to find weakest invariant I that will establish (2) and (3), then pick P to be I Finding weakest I is: –Undecidable in theory –Hard in practice E { P } T F S { Q } { I } { I && E } Loop invariant

Loops in the forward direction Given P, want to find strongest invariant I that will establish (1) and (3), then pick Q to be I && E Again, finding I is hard E { P } T F S { Q } { I } { I && E } Loop invariant

Loop Example Let’s verify { x ==8 && y ==16 } while(x > 0) { x --; y -= 2; } { y==0 } –Is this true ? –We must find an appropriate invariant I Try one that holds initially x == 8 && y == 16 Try one that holds at the end y == 0 x > 0 { x == 8 && y == 16 } T F x --; y -= 2 { y == 0 } { I } { I && x > 0 }

Loop Example (II) Guess the invariant y == 2*x Must check –Initial: x == 8 && y == 16 ) y == 2*x –Preservation: y == 2*x && x > 0 ) y – 2 = 2*(x – 1) –Final: y == 2*x && x <= 0 ) y == 0 x > 0 { x == 8 && y == 16 } T F x --; y -= 2 { y == 0 } { y == 2*x } { y == 2*x && x > 0 }

Loop Example (III) Guess the invariant y == 2*x && x >= 0 Must check –Initial: x == 8 && y == 16 ) y == 2*x && x >= 0 –Preservation: y == 2*x && x >= 0 && x > 0 ) y – 2 = 2*(x – 1) && x – 1 >= 0 –Final: y == 2*x && x >= 0 && x <= 0 ) y == 0 x > 0 { x == 8 && y == 16 } T F x --; y -= 2 { y == 0 } { y == 2*x && x >= 0} { y == 2*x && x >= 0 && x > 0 }

Functions Consider a binary search function bsearch int bsearch(int a[], int p) { { sorted(a) } … { r == -1 || (r >= 0 && r < a.length && a[r] == p) } return res; } The precondition and postconditon are the function specification –Also called a contract Postcondition Precondition

Function Calls Consider a call to function F(int in) –With return variable out –With precondition Pre, postcondition Post Rule for function call: y = F(E) { P } if P ) Pre[in:=E] } { Q } and Post[out := y, in := E] ) Q

Function Call Example Consider the call { sorted(array) } y = bsearch(array, 5) if( y != -1) { { array[ y ] == 5 } Show Post[r := y, a := array, p := 5] ) array[y] == 5 –Need to know y != -1 ! Show sorted[array] ) Pre[a := array]

Function Calls: backward y = F(E) { Q } Consider a call to function F(int in) –With return variable out –With precondition Pre, postcondition Post

Function Calls: backward y = F(E) { Q } Consider a call to function F(int in) –With return variable out –With precondition Pre, postcondition Post

Pointers and aliasing x = *y + 1 { ??? } { x == 5 }

Pointers and aliasing x = *y + 1 { *y == 4 } { x == 5 } Regular rule worked in this case!

Example where regular rule doesn’t work x = *y + 1

Example where regular rule doesn’t work x = *y + 1 { ??? } { x == *y + 1 }

Example where regular rule doesn’t work x = *y + 1 { y != &x Æ x == *y + 1 } { x == *y + 1 }

Pointer stores *x = y + 1 { ??? } { y == 5 }

Pointer stores *x = y + 1 { (x == &y ) y + 1 == 5) Æ (x != &y ) y == 5) } { y == 5 }

One solution Perform case analysis based on all the possible alias relationships between the LHS of the assignment and part of the postcondition Can use a static pointer analysis to prune some cases out However, exponentially many cases in the pointer analysis, which leads to large formulas. eg, how many cases here: *x = *y + a { *z == *v + b }

Another solution Up until now the program state has been implicit. Let’s make the program state explicit... A predicate is a function from program states to booleans. So for wp(S, Q), we have: –Q(  ) returns true if Q holds in  –wp(S, Q)(  ) returns true if wp(S, Q) holds in 

New formulation of wp Suppose step(S,  ) returns the program state resuling from executing S starting in program state . Then we can express wp as follows: wp(S, Q)(  ) =

New formulation of wp Suppose step(S,  ) returns the program state resuling from executing S starting in program state . Then we can express wp as follows: wp(S, Q)(  ) = Q(step(S,  ))

Example in Simplify syntax From previous slide: wp(S, Q)(  ) = Q(step(S,  )) *x = y + 1 { y == 5 } Q is: step(S,  ) is: wp(S, Q) is:

Example in Simplify syntax From previous slide: wp(S, Q)(  ) = Q(step(S,  )) *x = y + 1 { y == 5 } Q is: (EQ (select s y) 5) step(S,  ) is: (store s (select s x) (+ (select s y) 1)) wp(S, Q) is: (EQ (select (store s (select s x) (+ (select s y) 1)) y) 5)

ESC/Java summary Very general verification framework –Based on pre- and post-conditions Generate VC from code –Instead of modelling the semantics of the code inside the theorem prover Loops and procedures require user annotations –But can try to infer these

Search techniques

The map Techniques Main search strategy Cross- cutting aspects Classical Non- classical Logics Applications lecture 2, 3 RhodiumESC/Java Predicate abstraction later in quarter lecture 5 Today we start techniques lecture 4 PCC later in quarter

Techniques in more detail Techniques Main search strategy Cross- cutting aspects

Techniques in more detail Cross-cutting aspectsMain search strategy

Techniques in more detail Theorem proving is all about searching Categorization based on the search domain: –interpretation domain –proof-system domain Main search strategy Proof-system search ( ` ) Interpretation search ( ² )

Techniques in more detail Cross-cutting aspects Quantifiers Equality Decision procedures Induction Equality... –common predicate symbol Quantifiers... –need good heuristics Induction... –for proving properties of recursive structures Decision procedures... –useful for decidable subsets of the logic

Techniques in more detail Proof-system search ( ` ) Interpretation search ( ² ) Quantifiers Equality Decision procedures Induction Cross-cutting aspectsMain search strategy ` ² Q E D I

Searching At the core of theorem proving is a search problem In this course, we will categorize the core search algorithms based on what they search over –proof domain: search in the proof space, to find a proof –semantic domain: search in the “interpretation” domain, to make sure that there is no way of making the formula false Before we dive in, let’s go back to some basic logic ` ² Q E D I

Logics Suppose we have some logic –for example, propositional logic –or first-order logic ` ² Q E D I

The two statements ` `   ²  set of formulas one formula “entails, or models”“is provable from ” In all worlds where the formulas in  hold,  holds  is provable from assumptions  SemanticSyntactic ` ² Q E D I

Interpretations Intuitively, an interpretation I represents the “world” in which you evaluate a formula Provides the necessary information to evaluate formulas The structure of I depends on the logic Interpretations are also sometimes called models ` ² Q E D I

Interpretations in PROP Given a formula A Æ B, what do we need to evaluate it? We need to know the truth values of A and B In general, we need to know the truth values of all propositional variables in the formula Note that the logical connectives are built in, we don’t have to say what Æ means ` ² Q E D I

Interpretations in FOL Given a formula: 8 x. P(f(x)) ) P(g(x)), what do we need to know to evaluate it? We need to know how the function symbol f and predicate symbol P operate In general, need to know how all function symbols and predicate symbols operate Here again, logical connectives are built-in, so we don’t have to say how ) operates. ` ² Q E D I

More formally, for PROP An interpretation I for propositional logic is a map (function) from variables to booleans –So, for a variable A, I (A) is the truth value of A ` ² Q E D I

More formally, for FOL An interpretation for first-order logic is a quadruple (D, Var, Fun, Pred) D is a set of objects in the world Var is a map from variables to elements of D –So Var(x) is the object that variable x represents ` ² Q E D I

More formally, for FOL Fun is a map from function symbols to math functions –Fun(f) is the math function that the name f represents –For example, in the interpretation of LEQ(Plus(4,5), 10), we could have D is the set of integers Fun(4) = 4, Fun(5) = 5, Fun(10) = 10, Fun(Plus) = + But, we could also have Fun(Plus) = - –If f is an n-ary function symbol, then Fun(f) has type D n ! D ` ² Q E D I

More formally, for FOL Pred is a map from predicate symbols to math functions –Pred(P) is the math function that the name P represents –For example, in the interpretation of LEQ(Plus(4,5), 10) we could have Pred(LEQ) = <= –If P is an n-ary predicate, then Pred(P) has type D n ! bool ` ² Q E D I

Putting interpretations to use We write «  ¬ I to denote what  evaluates to under interpretation I In PROP – «  ¬ I = I (A) – « :  ¬ I = true iff «  ¬ I is not true – «  1 Æ  2 ¬ I = true iff «  1 ¬ I and «  2 ¬ I are true – «  1 Ç  2 ¬ I = true iff «  1 ¬ I or «  2 ¬ I is true –etc. ` ² Q E D I

In FOL « x ¬ I = Var(x), where I = (D, Var, Fun, Pred) « f(t 1, …, t n ) ¬ I = Fun(f)( « t 1 ¬ I, …, « t n ¬ I ), where I = (D, Var, Fun, Pred) « P(t 1, …, t n ) ¬ I = Pred(P)( « t 1 ¬ I, …, « t n ¬ I ), where I = (D, Var, Fun, Pred) Rules for PROP logical connectives are the same ` ² Q E D I

Quantifiers « 8 x.  ¬ (D, Var, Fun, Pred) = true iff forall o 2 D «  ¬ (D, Var[x := o], Fun, Pred) = true « 9 x.  ¬ (D, Var, Fun, Pred) = true iff there is some o 2 D for which «  ¬ (D, Var[x := o], Fun, Pred) = true ` ² Q E D I

Semantic entailment We write  ² , where  = {  1, …  n }, if for all interpretations I : –(Forall i from 1 to n «  i  ¬ I = true) implies «  ¬ I = true For example –{ A ) B, B ) C} ² A ) C –{ } ² ( 8 x. (P(x) Æ Q(x))), ( 8 x. P(x) Æ 8 x. Q(x)) We write ²  if { } ²  –we say that  is a theorem ` ² Q E D I

Search in the semantic domain To check that ² , iterate over all interpretations I and make sure that «  ¬ I = true For propositional logic, this amounts to building a truth table –expensive, but can do better, for example using DPLL For first-order logic, there are infinitely many interpretations –but, by cleverly enumerating over Herbrand’s universe, we can get a semi-algorithm ` ² Q E D I

Provability  `  This judgement says that  is provable from  Inference rules tell us how we can derive this judgement These inference rules are completely syntactic ` ² Q E D I

Some inference rules  ` A  ` B  ` A Æ B  ` A  ` A Æ B  ` B ` ² Q E D I  ` B  ` A ) B  ` A  ` A ) B  ` B  ` A ÆIÆI ÆE1ÆE1 ÆE2ÆE2 Assume )I)I )E)E

A sample derivation B Æ A  ` A Æ B B Æ A  ` A B Æ A  ` B Æ A B Æ A  ` B B Æ A  ` B Æ A Assume ÆE1ÆE1 ÆE2ÆE2 ÆIÆI ` ² Q E D I

Link between ² and ` Soundness:  `  implies  ²  Completeness:  ²  implies  `  Virtually all inference systems are sound Therefore, to establish  ² , all one needs to do is find a derivation of  `  Can do this by searching in the space of proofs –forward, backward or in both direction ` ² Q E D I

Next class DPLL Herbrand’s universe Davis-Putnam paper Explicating proofs paper