Course announcement Software Reliability Methods –Spring 06, Tu Th 9:30am-11:00am –Instructors: Ingolf Krueger, Ranjit Jhala, Sorin Lerner Topics: –Model.

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.
Inference Rules Universal Instantiation Existential Generalization
Rigorous Software Development CSCI-GA Instructor: Thomas Wies Spring 2012 Lecture 11.
Inference and Reasoning. Basic Idea Given a set of statements, does a new statement logically follow from this. For example If an animal has wings and.
Recursive Definitions and Structural Induction
Copyright © Cengage Learning. All rights reserved.
1 Semantic Description of Programming languages. 2 Static versus Dynamic Semantics n Static Semantics represents legal forms of programs that cannot be.
Induction and recursion
Formal Logic Proof Methods Direct Proof / Natural Deduction Conditional Proof (Implication Introduction) Reductio ad Absurdum Resolution Refutation.
1 Introduction to Computability Theory Lecture12: Reductions Prof. Amos Israeli.
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.
Last time Proof-system search ( ` ) Interpretation search ( ² ) Quantifiers Equality Decision procedures Induction Cross-cutting aspectsMain search strategy.
Proof-system search ( ` ) Interpretation search ( ² ) Main search strategy DPLL Backtracking Incremental SAT Natural deduction Sequents Resolution Main.
` ² Q E D I Nelson-Oppen review
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.
Natural deduction  ` A  ` B  ` A Æ B  ` A  ` A Æ B  ` B  ` B  ` A ) B  ` A  ` A ) B  ` B  ` A ÆIÆI ÆE1ÆE1 ÆE2ÆE2 Assume )I)I.
Review: forward E { P } { P && E } TF { P && ! E } { P 1 } { P 2 } { P 1 || P 2 } x = E { P } { \exists … }
Normal forms for Context-Free Grammars
Review: forward E { P } { P && E } TF { P && ! E } { P 1 } { P 2 } { P 1 || P 2 } x = E { P } { \exists … }
Plan for the rest of the quarter TuesdayThursday Week 7ResolutionProof carrying code Week 8No class (Sorin in DC for workshop) Predicate abstraction (Mystery.
After today Week 9 –Tu: Pat Rondon –Th: Ravi/Nathan Week 10 –Tu: Nathan/Ravi –Th: Class canceled Finals week –Th: Zach, John.
Lesson 6. Refinement of the Operator Model This page describes formally how we refine Figure 2.5 into a more detailed model so that we can connect it.
Course eval results More applications Last question –Luging: 0.5 –Curling: 1.5 –Figure skating: 2 –Ice fishing: 6.5 –Foosball: 0.5.
Going back to techniques Proof-system search ( ` ) Interpretation search ( ² ) Quantifiers Equality Decision procedures Induction Cross-cutting aspectsMain.
Induction and recursion
Chapter 4: A Universal Program 1. Coding programs Example : For our programs P we have variables that are arranged in a certain order: Y 1 X 1 Z 1 X 2.
Equational Reasoning Math Foundations of Computer Science.
What it is? Why is it a legitimate proof method? How to use it?
Methods of Proof & Proof Strategies
Induction and recursion
The ACL2 Proof Assistant Formal Methods Jeremy Johnson.
Reading and Writing Mathematical Proofs
1 Program Correctness CIS 375 Bruce R. Maxim UM-Dearborn.
1 Inference Rules and Proofs (Z); Program Specification and Verification Inference Rules and Proofs (Z); Program Specification and Verification.
1 Sections 1.5 & 3.1 Methods of Proof / Proof Strategy.
Reading and Writing Mathematical Proofs Spring 2015 Lecture 4: Beyond Basic Induction.
Theory of Computation, Feodor F. Dragan, Kent State University 1 TheoryofComputation Spring, 2015 (Feodor F. Dragan) Department of Computer Science Kent.
Copyright © Zeph Grunschlag, Induction Zeph Grunschlag.
Automated Reasoning Early AI explored how to automated several reasoning tasks – these were solved by what we might call weak problem solving methods as.
Section 3.3: Mathematical Induction Mathematical induction is a proof technique that can be used to prove theorems of the form:  n  Z +,P(n) We have.
CS 103 Discrete Structures Lecture 13 Induction and Recursion (1)
Foundations of Discrete Mathematics Chapters 5 By Dr. Dalia M. Gil, Ph.D.
© Copyright 2008 STI INNSBRUCK Intelligent Systems Propositional Logic.
1 INFO 2950 Prof. Carla Gomes Module Induction Rosen, Chapter 4.
Advanced Formal Methods Lecture 4: Isabelle – Types and Terms Mads Dam KTH/CSC Course 2D1453, Some material from Paulson.
Mathematical Induction Section 5.1. Climbing an Infinite Ladder Suppose we have an infinite ladder: 1.We can reach the first rung of the ladder. 2.If.
Static Techniques for V&V. Hierarchy of V&V techniques Static Analysis V&V Dynamic Techniques Model Checking Simulation Symbolic Execution Testing Informal.
1 Propositional Logic Limits The expressive power of propositional logic is limited. The assumption is that everything can be expressed by simple facts.
Copyright © Zeph Grunschlag, Induction Zeph Grunschlag.
CS357 Lecture 13: Symbolic model checking without BDDs Alex Aiken David Dill 1.
CompSci 102 Discrete Math for Computer Science March 13, 2012 Prof. Rodger Slides modified from Rosen.
Logical Agents Chapter 7. Outline Knowledge-based agents Propositional (Boolean) logic Equivalence, validity, satisfiability Inference rules and theorem.
Chapter 5. Section 5.1 Climbing an Infinite Ladder Suppose we have an infinite ladder: 1.We can reach the first rung of the ladder. 2.If we can reach.
CSC3315 (Spring 2009)1 CSC 3315 Languages & Compilers Hamid Harroud School of Science and Engineering, Akhawayn University
Section 1.7. Section Summary Mathematical Proofs Forms of Theorems Direct Proofs Indirect Proofs Proof of the Contrapositive Proof by Contradiction.
Section Recursion 2  Recursion – defining an object (or function, algorithm, etc.) in terms of itself.  Recursion can be used to define sequences.
Chapter 1 Logic and proofs
Logical Agents. Outline Knowledge-based agents Logic in general - models and entailment Propositional (Boolean) logic Equivalence, validity, satisfiability.
Reasoning About Code.
Reasoning about code CSE 331 University of Washington.
Chapter 3 The Real Numbers.
Induction and recursion
Induction and recursion
MA/CSSE 474 More Math Review Theory of Computation
Search techniques.
Presentation transcript:

Course announcement Software Reliability Methods –Spring 06, Tu Th 9:30am-11:00am –Instructors: Ingolf Krueger, Ranjit Jhala, Sorin Lerner Topics: –Model checking –Program analysis –Type systems –Theorem proving

Administrative stuff On Tuesday –very brief overview of loop invariant inference –constructive logic –conclusion A week from today –final project presentations –from 11 to 11:50 (because of prospective student lunch, which I have to attend)

Inductionless induction Technique introduced by Musser in 1980 for proving properties of inductive structures Latter became known as inductionless induction, because it allows one to prove, without using induction, properties that look as though they would require induction

Inductionless induction The general idea is to prove statements by consistency checking –add the statement to be proven as an axiom to the base theory, and see if the resulting theory is consistent. –If it is, then conclude that the statement holds; if it doesn’t, then conclude that the statement doesn’t hold This approach is not sound in general, but it works in restricted cases

Inductionless induction Musser showed that this approach works for equality theories in the following sense: –if (1) A is a set of equality axioms about some abstract data type, one is which are booleans (with true and false) –(2) these abstract data types are fully specified by A (exact definition not important here, but essentially this guarantees a certain form of modularity between the defined types) –(3) A [ {t 1 = t 2 } is consisten, then A ² t 1 = t 2 so why are we seeing this today with rewrite systems, and not next class, with induction?

Use Knuth-Bendix Show that A [ { t 1 = t 2 } consistent or inconsistent using the Knuth-Bendix completion procedure Suppose A has already been converted to a canonical rewrite system (using Knuth-Bendix, for example), and that A has been shown to fully specify the abstract data types it mentions (there are automatic ways of doing this) To attempt to prove t 1 = t 2, one adds either t 1 ! t 2 or t 2 ! t 1 to the system, and then we run Knuth-Bendix

Three possible outcomes If the completion procedure finishes with a rewrite system that does not contain the rule true ! false, then t 1 = t 2 is entailed by A If the completion procedure finishes with a rewrite system that contains the rule true ! false, then t 1 = t 2 is not entailed by A If the completion procedure fails or runs forever, nothing can be concluded

Example Types: –x : character, s : string, s’ : string –null : string (empty string) –s::x : string (s with character x added at the end) –x::s : string (s with character x added to the front) –s + s’ : string (concatentation of s and s’) –isNull(s) : boolean

Example Axioms (axioms for booleans not shown) (s = s) = true (null = s::x) = false (s::x = null) = false (s::x = s’::x’) = (x = x’) and (s = s’) x::null = null::x x::(s::x’) = (x::s)::x’ null + s = s (s::x’) + s’ = s + (x’::s’) isnull(null) = true isnull(s::x) = false

Example Show: s + (s’::x) = (s+s’)::x One would usually prove this by induction on the size of s Using inductionless induction: –add s + (s’::x) ! (s+s’)::x as a rewrite rule –Knuth-Bendix doesn’t add any new rules (trust me…) –So s + (s’::x) = (s+s’)::x holds

Example Try to show: s :: null = null Add s :: null ! null Critical pair with: (s::x = null) ! false

Example Try to show: s :: null = null Add s :: null ! null Critical pair with: (s::x = null) ! false In this case, Knuth-Bendix derives true ! false: s + null = null does not hold

Going back to techniques Proof-system search ( ` ) Interpretation search ( ² ) Quantifiers Equality Decision procedures Induction Cross-cutting aspectsMain search strategy E-graph Rewrite rules Communication between decision procedures and between prover and decision procedures DPLL Backtracking Incremental SAT Matching Natural deduction Sequents Tactics & Tacticals Resolution Today

Induction Is just another way of proving universal quantifiers Important technique for proving properties of inductively defined structures, such as recursive data structures, recursive programs, and derivations

Principle of induction Induction over natural numbers P(0) 8 i:Nat P(i) ) P(i+1) 8 i:Nat. P(i)

Principle of induction More generally: well-founded induction Well founded order: for every non-empty subset, there is a minimal element (an element such that no other element is smaller than it) Equivalently: there are no infinite descending chains [ 8 i < j. P(i)] ) P(j) (<, N) is a well-founded order 8 i:N. P(i)

Principle of induction Structural induction: well-founded induction where the induction is done on the structure of (usually syntactic) structure of elements of N

Automating induction Automating induction is hard –not many theorem provers do it automatically Difficulties –determine when to apply induction –determine what variables to apply induction on –derive a strong enough hypothesis

Induction in ACL2 Similarity between recursive definitions and induction A recursive function calls itself with arguments that are “smaller” (by some measure) than the original arguments A proof of P(x) by induction consists of proving P(x) by assuming that P holds for terms “smaller” (by some measure) than x

Induction in ACL2 ACL2 proves theorems about recursive functions, and so the similarity mentioned leads to a scheme for applying induction Suppose that a formula P to be proven contains a call to a function f that is defined recursively, and suppose each recursive call drives down the measure Then we can apply induction on the structure of the recursive definition of f

Simple example (sum N) = (IF (<= N 0) 0 (sum (- N 1))) (defthm (IMPLIES (>= N 0) (= (sum N) (/ (* N (+ N 1)) 2))))

Two parts First part: identify possible measures –done when a recursive function is defined Second part: apply induction during a proof –use the analysis done during the first part to guide the application

Identifying measures Suppose we have (f x 1 … x n ) = body, where the body contains recursive calls to f. We are looking for a measure function m that satisfies the following: –for every sub-term of the form (f y 1 … y n ), we must have (r (m y 1 … y n ) (m x 1 … x n )) –where r is a well-founded relation

Example (funny-fact n i) = (IF (<= n 0) 1 (IF (= i 0) (* n (funny-fact (- n 1) i)) (IF (> i 0) (* n (funny-fact (- n i) i)) (* n (funny-fact (+ n i) i))))))

Refine: identifying measures Suppose we have (f x 1 … x n ) = body, where the body contains recursive calls to f. We are looking for a measure function m that satisfies the following: –for every sub-term of the form (f y 1 … y n ), we must have: (IMPLIES (AND t 1 … t k ) (r (m y 1 … y n ) (m x 1 … x n ))) –where r is a well-founded relation

Build the “machine” for a function casetestrecursive calls 1 (funny-fact (- n 1) i) 2 (funny-fact (- n i) i) 3 (funny-fact (+ n i) i) (funny-fact n i) = (IF (<= n 0) 1 (IF (= i 0) (* n (funny-fact (- n 1) i)) (IF (> i 0) (* n (funny-fact (- n i) i)) (* n (funny-fact (+ n i) i))))))

Build the “machine” for a function casetestrecursive calls 1 (AND (NOT (<= n 0)) (= i 0)) (funny-fact (- n 1) i) 2 (AND (NOT (<= n 0)) (NOT (= i 0) (> i 0)) (funny-fact (- n i) i) 3 (AND (NOT (<= n 0)) (NOT (= i 0) (NOT (> i 0) (< i 0)) (funny-fact (+ n i) i) (funny-fact n i) = (IF (<= n 0) 1 (IF (= i 0) (* n (funny-fact (- n 1) i)) (IF (> i 0) (* n (funny-fact (- n i) i)) (* n (funny-fact (+ n i) i))))))

Use machine to test measure For example, for case 3: (IMPLIES (AND (NOT (<= n 0)) (NOT (= i 0) (NOT (> i 0) (< i 0)) (< (+ n i) n))

How do you guess measure? Rely on lemmas that have been labeled with the “induction” hint These so-called induction lemmas state under what conditions certain measures decrease For example: (IMPLIES (is-cons-cell X) (< (length (cdr X) (length X)))

How do you guess measure? Suppose we have a function append: (append L1 L2) = (IF (is-cons-cell L1) (cons (car L1) (append (cdr L1) L2)) L2)) (IMPLIES (is-cons-cell X) (< (length (cdr X) (length X))) casetestrecursive calls 1

How do you guess measure? Suppose we have a function append: (append L1 L2) = (IF (is-cons-cell L1) (cons (car L1) (append (cdr L1) L2)) L2)) (IMPLIES (is-cons-cell X) (< (length (cdr X) (length X))) casetestrecursive calls 1 (is-cons-cell L1)(append (cdr L1) L2)) Table and induction lemma immediately point out that length works as the measure and < works as the order

Another example (ACK M N) = (IF (= M 0) (+ N 1) (IF (= N 0) (ACK (- M 1) 1) (ACK (- M 1) (ACK M (- N 1))))) casetestrecursive calls 1 2

Another example (ACK M N) = (IF (= M 0) (+ N 1) (IF (= N 0) (ACK (- M 1) 1) (ACK (- M 1) (ACK M (- N 1))))) casetestrecursive calls 1 (AND (NOT (= M 0)) (= N 0)) (ACK (- M 1) 1) 2 (AND (NOT (= M 0)) (NOT (= N 0))) (ACK (- M 1) (ACK M (- N 1))) (ACK M (- N 1)) Measure?

Another example Lexicographical order of (M, N) (LEX-< (cons (- M 1) N) (cons M N)) (LEX-< (cons (- M 1) (ACK...)) (cons M N)) (LEX-< (cons M (- N 1)) (cons M N))

First part summary When the function is defined, try to find measure Use induction lemmas to guide search Also allow programmer to provide the measure Once a measure has been found, the function is “admitted” As a side benefit, guarantees termination

Second part: applying induction Suppose term (f t 1 … t n ) appears in the goal G Assume t 1 … t n are all variables –if they are not, things get more complicated Assume “machine” for f looks like this: casetestrecursive calls 1 q1q1 r r 1 h1 2 q2q2 r r 2 h2 … …… k qkqk r k 1... r k hk Also, assume  i h is subst such that  i h applied to (f t 1 … t n ) gives r i h

Second part: applying induction casetestrecursive calls 1 q1q1 r r 1 h1 2 q2q2 r r 2 h2 … …… k qkqk r k 1... r k hk Also, assume  i h is subst such that  i h applied to (f t 1 … t n ) gives r i h Goal G with sub-term (f t 1 … t n )

Second part: applying induction casetestrecursive calls 1 q1q1 r r 1 h1 2 q2q2 r r 2 h2 … …… k qkqk r k 1... r k hk Also, assume  i h is subst such that  i h applied to (f t 1 … t n ) gives r i h Goal G with sub-term (f t 1 … t n )

Simple example from before (sum N) = (IF (<= N 0) 0 (sum (- N 1))) (defthm (IMPLIES (>= N 0) (= (sum N) (/ (* N (+ N 1)) 2)))) casetestrecursive calls 1 == G

Simple example from before (sum N) = (IF (<= N 0) 0 (sum (- N 1))) (defthm (IMPLIES (>= N 0) (= (sum N) (/ (* N (+ N 1)) 2)))) casetestrecursive calls 1 (NOT (= N 0)) (sum (- N 1))) (IMPLIES (AND G[N ! (- N 1)] (NOT (= N 0))) G)  = [ N ! (- N 1) ] (IMPLIES (= N 0) G) G

Strengthening It is often advantageous, and sometimes even necessary to strengthen a conjecture before attempting an inductive proof ACL2 does this with a generalization process, which runs before induction is applied Tries to replace certain non-variable terms by fresh variables, which are implicitly universally quantified

Strengthening example Suppose we want to prove (all free vars universally quantified): (append (reverse A) nil) = (reverse A) This conjecture is generalized –by replacing (reverse A) with L (append L nil) = L

Strengthening gone wrong The problem with generalization is that the generalized conjecture may be “too strong” –and in fact may not hold even though the original conjecture did! Example: (= (sum (fib N)) (/ (* (fib N) (+ (fib N) 1)) 2))))

Strengthening gone wrong The problem with generalization is that the generalized conjecture may be “too strong” –and in fact may not hold even though the original conjecture did! Example: (= (sum (fib N)) (/ (* (fib N) (+ (fib N) 1)) 2)))) Generalize: (= (sum M) (/ (* M (+ M 1)) 2)))) This does not hold! We need to know that M is positive!

Strengthening fixed The generalization process constrains the newly introduced variables using theorems that have been labeled “generalize” by the user In the previous case, the following theorem could be used: (>= (fib N) 0) Once this theorem has been proven and labeled “generalize”, subsequent generalizations of (fib N) to M will include the hypothesis (>= M 0). –Generalized conjecture in example becomes: (IMPLIES (>= M 0) (= (sum M) (/ (* M (+ M 1)) 2))))

Induction in ACL2: summary The three difficulties, again When to apply induction –as a last resort What variables to apply induction on –analyze function at definition time to find decreasing measures How to strengthen induction hypothesis –replace certain terms with fresh vars

Similar ideas, but elsewhere Using recursive definitions to drive the application of induction appears in other theorem provers, for example Twelf Twelf is a theorem prover based on the LF logical framework, which can be used to encode logics, programming languages, and deductive systems Properties of such systems can then be proven by induction

Natural deduction  ` A  ` B  ` A Æ B  ` A  ` A Æ B  ` B  ` B  ` A ) B  ` A  ` A ) B  ` B  ` A ÆIÆI ÆE1ÆE1 ÆE2ÆE2 Assume )I)I )E)E  ` A  ` A Ç B ÇI1ÇI1  ` B  ` A Ç B ÇI2ÇI2  ` C ÇEÇE  ` C  ` C

Proving properties of derivations Say we want to prove a property: –for every derivation D, P(D) holds

Proving properties of derivations Say we want to prove a property: –for every derivation D, P(D) holds

Twelf Twelf can performs these kinds of proofs automatically The application of induction is interspersed with case splitting and the backward application of Twelf’s sequent inference rules