34
Introduction Inductive Proofs Automation Conclusion Inductive Theorem Proving Automated Reasoning Petros Papapanagiotou [email protected] 11 October 2012 Petros Papapanagiotou Inductive Theorem Proving

Inductive Theorem Proving

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion

Inductive Theorem ProvingAutomated Reasoning

Petros [email protected]

11 October 2012

Petros Papapanagiotou Inductive Theorem Proving

Page 2: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion General Induction

Theorem Proving

Proof Assistants:Formalise theories and prove properties.Ensure soundness and correctness.Interactive vs. AutomatedDecision procedures, model elimination, rewriting,counterexamples,...

eg.Interactive: Isabelle, Coq, HOL Light, HOL4, ...Automated: ACL2, IsaPlanner, SAT solvers, ...

Petros Papapanagiotou Inductive Theorem Proving

Page 3: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion General Induction

Induction

Inductive datatypes are everywhere!Mathematics (eg. arithmetic)Hardware & software models...

Petros Papapanagiotou Inductive Theorem Proving

Page 4: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

InductionNatural Numbers

Definition (Natural Numbers)

0, Suc n

Example

Suc 0 = 1

Suc (Suc 0) = 2

Suc (Suc (Suc 0) = 3

Induction principle

P(0) ∀n. P(n) ⇒ P(Suc n)

∀n. P(n)

Petros Papapanagiotou Inductive Theorem Proving

Page 5: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

InductionNatural Numbers

Definition (Natural Numbers)

0, Suc n

Example

Suc 0 = 1

Suc (Suc 0) = 2

Suc (Suc (Suc 0) = 3

Induction principle

P(0) ∀n. P(n) ⇒ P(Suc n)

∀n. P(n)

Petros Papapanagiotou Inductive Theorem Proving

Page 6: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

InductionNatural Numbers

Definition (Natural Numbers)

0, Suc n

Example

Suc 0 = 1

Suc (Suc 0) = 2

Suc (Suc (Suc 0) = 3

Induction principle

P(0) ∀n. P(n) ⇒ P(Suc n)

∀n. P(n)

Petros Papapanagiotou Inductive Theorem Proving

Page 7: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

InductionLists

Definition (Lists)

[ ], h # t

Example

1 # [ ] = [1]

1 # (2 # [ ]) = [1, 2]

1 # (2 # (3 # [ ])) = [1, 2, 3]

Induction principle

P([ ]) ∀h.∀l. P(l) ⇒ P(h # l)∀l. P(l)

Petros Papapanagiotou Inductive Theorem Proving

Page 8: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

InductionLists

Definition (Lists)

[ ], h # t

Example

1 # [ ] = [1]

1 # (2 # [ ]) = [1, 2]

1 # (2 # (3 # [ ])) = [1, 2, 3]

Induction principle

P([ ]) ∀h.∀l. P(l) ⇒ P(h # l)∀l. P(l)

Petros Papapanagiotou Inductive Theorem Proving

Page 9: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

InductionLists

Definition (Lists)

[ ], h # t

Example

1 # [ ] = [1]

1 # (2 # [ ]) = [1, 2]

1 # (2 # (3 # [ ])) = [1, 2, 3]

Induction principle

P([ ]) ∀h.∀l. P(l) ⇒ P(h # l)∀l. P(l)

Petros Papapanagiotou Inductive Theorem Proving

Page 10: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

InductionBinary Partition Trees

Definition (Partition)Empty , Filled , Branch partition1 partition2

Example

Branch Empty (Branch Filled Filled)

Induction principle (partition.induct)

P(Empty) P(Filled) ∀p1 p2. P(p1) ∧ P(p2) ⇒ P(Branch p1 p2)

∀partition. P(partition)

Petros Papapanagiotou Inductive Theorem Proving

Page 11: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

InductionBinary Partition Trees

Definition (Partition)Empty , Filled , Branch partition1 partition2

Example

Branch Empty (Branch Filled Filled)

Induction principle (partition.induct)

P(Empty) P(Filled) ∀p1 p2. P(p1) ∧ P(p2) ⇒ P(Branch p1 p2)

∀partition. P(partition)

Petros Papapanagiotou Inductive Theorem Proving

Page 12: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

InductionBinary Partition Trees

Definition (Partition)Empty , Filled , Branch partition1 partition2

Example

Branch Empty (Branch Filled Filled)

Induction principle (partition.induct)

P(Empty) P(Filled) ∀p1 p2. P(p1) ∧ P(p2) ⇒ P(Branch p1 p2)

∀partition. P(partition)

Petros Papapanagiotou Inductive Theorem Proving

Page 13: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsGenerally

Symbolic evaluation (rewriting).Axioms - definitionsRewrite rules

Fertilization (use induction hypothesis).

Petros Papapanagiotou Inductive Theorem Proving

Page 14: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsSimple Example: List Append

Definition (List Append @)1 ∀l. [ ] @ l = l2 ∀h.∀t .∀l. (h # t) @ l = h # (t @ l)

Example ([1; 2] @ [3] = [1; 2; 3])

(1 # (2 # [ ])) @ (3 # [ ])) =1 # ((2 # [ ]) @ (3 # [ ])) =1 # (2 # ([ ] @ (3 # [ ]))) =1 # (2 # (3 # [ ]))

Petros Papapanagiotou Inductive Theorem Proving

Page 15: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsSimple Example: List Append

Definition (List Append @)1 ∀l. [ ] @ l = l2 ∀h.∀t .∀l. (h # t) @ l = h # (t @ l)

Theorem (Associativity of Append)

∀k .∀l.∀m. k @ (l @ m) = (k @ l) @ m

Base Case.

` [ ] @ (l @ m) = ([ ] @ l) @ m1⇐⇒ l @ m = ([ ] @ l) @ m1⇐⇒ l @ m = l @ m

refl⇐⇒ true

Petros Papapanagiotou Inductive Theorem Proving

Page 16: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsSimple Example: List Append

Definition (List Append @)1 ∀l. [ ] @ l = l2 ∀h.∀t .∀l. (h # t) @ l = h # (t @ l)

Step Case.

k @ (l @ m) = (k @ l) @ m` (h # k) @ (l @ m) = ((h # k) @ l) @ m

2⇐⇒ h # (k @ (l @ m)) = (h # (k @ l)) @ m2⇐⇒ h # (k @ (l @ m)) = h # ((k @ l) @ m)

repl⇐⇒ h = h ∧ k @ (l @ m) = (k @ l) @ mIH⇐⇒ h = hrefl⇐⇒ true

Petros Papapanagiotou Inductive Theorem Proving

Page 17: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsSimple Example 2: Idempotence of Union

Definition (Partition Union @@)3 Empty @@ q = q4 Filled @@ q = Filled5 p @@ Empty = p6 p @@ Filled = Filled7 (Branch l1 r1) @@ (Branch l2 r2) =

Branch (l1 @@ l2) (r1 @@ r2)

Theorem (Idempotence of union)

∀p. p @@ p = p

Petros Papapanagiotou Inductive Theorem Proving

Page 18: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsSimple Example 2: Idempotence of Union

Definition (Partition Union @@)3 Empty @@ q = q4 Filled @@ q = Filled5 p @@ Empty = p6 p @@ Filled = Filled7 (Branch l1 r1) @@ (Branch l2 r2) =

Branch (l1 @@ l2) (r1 @@ r2)

Theorem (Idempotence of union)

∀p. p @@ p = p

Petros Papapanagiotou Inductive Theorem Proving

Page 19: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsSimple Example 2: Idempotence of Union

Definition (Partition Union @@)3 Empty @@ q = q4 Filled @@ q = Filled7 (Branch l1 r1) @@ (Branch l2 r2) =

Branch (l1 @@ l2) (r1 @@ r2)

Base Case 1.` Empty @@ Empty = Empty

3⇐⇒ Empty = Emptyrefl⇐⇒ true

Petros Papapanagiotou Inductive Theorem Proving

Page 20: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsSimple Example 2: Idempotence of Union

Definition (Partition Union @@)3 Empty @@ q = q4 Filled @@ q = Filled7 (Branch l1 r1) @@ (Branch l2 r2) =

Branch (l1 @@ l2) (r1 @@ r2)

Base Case 2.` Filled @@ Filled = Filled

4⇐⇒ Filled = Filledrefl⇐⇒ true

Petros Papapanagiotou Inductive Theorem Proving

Page 21: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsSimple Example 2: Idempotence of union

Definition (Partition Union @@)3 Empty @@ q = q4 Filled @@ q = Filled7 (Branch l1 r1) @@ (Branch l2 r2) =

Branch (l1 @@ l2) (r1 @@ r2)

Step Case.

p1 @@ p1 = p1 ∧ p2 @@ p2 = p2` (Branch p1 p2) @@ (Branch p1 p2) = Branch p1 p2

7⇐⇒ Branch (p1 @@ p1) (p2 @@ p2) = Branch p1 p2IH⇐⇒ Branch p1 p2 = Branch p1 p2refl⇐⇒ true

Petros Papapanagiotou Inductive Theorem Proving

Page 22: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Automation

Is rewriting and fertilization enough?No! Because:

Incompleteness (Godel)Undecidability of Halting Problem (Turing)Failure of Cut Elimination (Kreisel)

Cut Rule

A, Γ ` ∆ Γ ` AΓ ` ∆

Petros Papapanagiotou Inductive Theorem Proving

Page 23: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsBlocking Example

Definition (List Reverse rev )8 rev [ ] = [ ]

9 ∀h.∀t .rev (h # t) = rev t @ (h # [ ])

Theorem (Reverse of reverse)

∀l.rev (rev l) = l

Base Case.

` rev (rev [ ]) = [ ]8⇐⇒ rev [ ] = [ ]8⇐⇒ [ ] = [ ]

refl⇐⇒ true

Petros Papapanagiotou Inductive Theorem Proving

Page 24: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsBlocking Example

Definition (List Reverse rev )8 rev [ ] = [ ]

9 ∀h.∀t .rev (h # t) = rev t @ (h # [ ])

Theorem (Reverse of reverse)

∀l.rev (rev l) = l

Step Case.

rev (rev l) = l` rev (rev (h # l)) = h # l

9⇐⇒ rev (rev l @(h # [ ])) = h # lNow what??

Petros Papapanagiotou Inductive Theorem Proving

Page 25: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Inductive ProofsBlocking Example

Step Case.

rev (rev l) = l` rev (rev (h # l)) = h # l

9⇐⇒ rev (rev l @(h # [ ])) = h # lNow what??

Example (Possible Solutions)

Lemma: ∀l.∀m. rev (l @ m) = rev m @ rev l

Weak fertilization:IH⇐⇒ rev (rev l @(h # [ ])) = h # (rev (rev l))

Generalisation: rev (l ′ @ (h # [ ])) = h # (rev l ′)

Petros Papapanagiotou Inductive Theorem Proving

Page 26: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion Numbers Lists Trees On paper Issues Demo

Demo

Petros Papapanagiotou Inductive Theorem Proving

Page 27: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion General Waterfall Model Demo

Automating Inductive Proofs

Over 20 years of work by Boyer, Moore, Kaufmann

The “Waterfall Model”

Evolved into ACL2Used in industrial applications:

Hardware verification: AMD ProcessorsSoftware verification: Java bytecode

Implemented for HOL88/90 by Boulton

Reconstructed for HOL Light by Papapanagiotou

Petros Papapanagiotou Inductive Theorem Proving

Page 28: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion General Waterfall Model Demo

Waterfall of heuristics

1 Pour clauses recursively from the top.2 Apply heuristics as the clauses trickle down.

Some get proven (evaporate).Some get simplified or split ⇒ Pour again from the topSome reach the bottom.

3 Form a pool of unproven clauses.4 Apply induction and pour base case and step case from the

top.

Petros Papapanagiotou Inductive Theorem Proving

Page 29: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion General Waterfall Model Demo

The Waterfall ModelWaterfall of heuristics

Petros Papapanagiotou Inductive Theorem Proving

Page 30: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion General Waterfall Model Demo

Waterfall of heuristics

Petros Papapanagiotou Inductive Theorem Proving

Page 31: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion General Waterfall Model Demo

Heuristics (HOL Light version)

1 Tautology heuristic2 Clausal form heuristic3 Setify heuristic (p ∨ p ⇔ p)4 Substitution heuristic (inequalities: x 6= a ∨ P x ⇔ P a)5 Equality heuristic (fertilization)6 Simplification heuristic (rewriting)7 Generalization heuristic8 Irrelevance heuristic

Petros Papapanagiotou Inductive Theorem Proving

Page 32: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion General Waterfall Model Demo

Demo

Petros Papapanagiotou Inductive Theorem Proving

Page 33: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion

Conclusion

Inductive ProofsAppear very often in formal verification and automatedreasoning tasks.Are hard to automate.

So farAdvanced automated provers (ACL2, IsaPlanner, etc)Advanced techniques (Rippling, Decision Procedures, etc)Still require fair amount of user interaction.

Still work onMore advanced heuristics

Better generalizationCounterexample checkingProductive use of failure (Isaplanner)More decision procedures...

Termination heuristics

Petros Papapanagiotou Inductive Theorem Proving

Page 34: Inductive Theorem Proving

Introduction Inductive Proofs Automation Conclusion

Questions?

Petros Papapanagiotou Inductive Theorem Proving