lecture 2 interactive proofs in easycrypt
play

Lecture 2 : Interactive Proofs in EasyCrypt July 16th, 2013 The - PowerPoint PPT Presentation

Lecture 2 : Interactive Proofs in EasyCrypt July 16th, 2013 The Ambient Logic EasyCrypt ambient logic is a general higher-order logic. In this talk How define facts about user defined operators How to prove them when automatic techniques


  1. Lecture 2 : Interactive Proofs in EasyCrypt July 16th, 2013

  2. The Ambient Logic EasyCrypt ambient logic is a general higher-order logic. In this talk ◮ How define facts about user defined operators ◮ How to prove them when automatic techniques do not work

  3. Plan The EasyCrypt Core Language 1 Interactive Proofs 2 Tacticals 3 Conclusion 4

  4. Types EasyCrypt is a typed language: ◮ It comes with a set of core types unit, bool, int, real, tuple, lists ... Some of these types are polymorphic (type constructor) ◮ Possibility to create type aliases type α u = α ∗ α type v = int u type w = int list ◮ Possibility to create abstract types type t type α u

  5. Types EasyCrypt is a typed language: ◮ It comes with a set of core types unit, bool, int, real, tuple, lists ... Some of these types are polymorphic (type constructor) ◮ Possibility to create type aliases type α u = α ∗ α type v = int u type w = int list ◮ Possibility to create abstract types type t type α u

  6. Types EasyCrypt is a typed language: ◮ It comes with a set of core types unit, bool, int, real, tuple, lists ... Some of these types are polymorphic (type constructor) ◮ Possibility to create type aliases type α u = α ∗ α type v = int u type w = int list ◮ Possibility to create abstract types type t type α u

  7. Types EasyCrypt is a typed language: ◮ It comes with a set of core types unit, bool, int, real, tuple, lists ... Some of these types are polymorphic (type constructor) ◮ Possibility to create type aliases type α u = α ∗ α type v = int u type w = int list ◮ Possibility to create abstract types type t type α u

  8. Expressions - Functional language EasyCrypt comes with a functional language: ◮ concrete operators: op f1 (b : bool) (x y : int) = b ? (x − y) : (x + y). op f2 (xs : int list) (x : int) = map ( lambda (z : int), z + x) xs. op f3 (xs : ’ a list) = fold ( lambda v _, v + 1) 0 xs. ◮ abstract operators: map : ( α → β ) → α list → β list fold : ( α → β ) → α list → β list

  9. Expressions - Functional language EasyCrypt comes with a functional language: ◮ concrete operators: op f1 (b : bool) (x y : int) = b ? (x − y) : (x + y). op f2 (xs : int list) (x : int) = map ( lambda (z : int), z + x) xs. op f3 (xs : ’ a list) = fold ( lambda v _, v + 1) 0 xs. ◮ abstract operators: map : ( α → β ) → α list → β list fold : ( α → β ) → α list → β list

  10. Expressions - Functional language EasyCrypt comes with a functional language: ◮ concrete operators: op f1 (b : bool) (x y : int) = b ? (x − y) : (x + y). op f2 (xs : int list) (x : int) = map ( lambda (z : int), z + x) xs. op f3 (xs : ’ a list) = fold ( lambda v _, v + 1) 0 xs. ◮ abstract operators: map : ( α → β ) → α list → β list fold : ( α → β ) → α list → β list

  11. Predicates / Formulas ◮ Predicates are boolean operators: op mypred : int → int → bool. ◮ These predicates can be defined: pred mypred (x y : int) = (0 ≤ x) ∧ (0 ≤ y) ∧ (2 ∗ x ≤ y) ◮ Formulas constructors: forall (x : t), φ ( ∀ (x : t), φ ) exists (x : t), φ ( ∃ (x : t), φ ) φ 1 /\ φ 2 ( φ 1 ∧ φ 2 ) φ 1 \/ φ 2 ( φ 1 ∨ φ 2 ) φ 1 => φ 2 ( φ 1 ⇒ φ 2 ) φ 1 <=> φ 2 ( φ 1 ⇔ φ 2 ) ! φ ( ¬ φ ) + dedicated formulas for p(R)HL

  12. Axioms / Lemmas ◮ Formulas for operators axiomatization: op count : ’ a list − > int. axiom count_nil : count [] = 0. axiom count_cons : forall (x : ’ a ) (xs : ’ a list), count (x :: xs) = 1 + (count xs). ◮ Formulas for stating facts: lemma fact (x y : int): x ≤ 0 → y ≤ 0 → 0 ≤ x ∗ y.

  13. Axioms / Lemmas ◮ Formulas for operators axiomatization: op count : ’ a list − > int. axiom count_nil : count [] = 0. axiom count_cons : forall (x : ’ a ) (xs : ’ a list), count (x :: xs) = 1 + (count xs). ◮ Formulas for stating facts: lemma fact (x y : int): x ≤ 0 → y ≤ 0 → 0 ≤ x ∗ y.

  14. Plan The EasyCrypt Core Language 1 Interactive Proofs 2 Tacticals 3 Conclusion 4

  15. Stating a theorem lemma mylemma b1 b2 b3 : (b1 ⇒ b2) ⇒ (b2 ⇒ b3) ⇒ b1 ⇒ b3. proof. ( ∗ proof starts here ∗ )  b 1 : bool   b 2 : bool local hypotheses (context)  b 3 : bool  ( b 1 ⇒ b 2 ) ⇒ ( b 2 ⇒ b 3 ) ⇒ b 1 ⇒ b 3 } goal � �� � ���� assumptions conclusion Progress is done via tactics that allows the simplification , decomposition into subgoals , or the resolution of the goal.

  16. Stating a theorem lemma mylemma b1 b2 b3 : (b1 ⇒ b2) ⇒ (b2 ⇒ b3) ⇒ b1 ⇒ b3. proof. ( ∗ proof starts here ∗ )  b 1 : bool   b 2 : bool local hypotheses (context)  b 3 : bool  ( b 1 ⇒ b 2 ) ⇒ ( b 2 ⇒ b 3 ) ⇒ b 1 ⇒ b 3 } goal � �� � ���� assumptions conclusion Progress is done via tactics that allows the simplification , decomposition into subgoals , or the resolution of the goal.

  17. Stating a theorem lemma mylemma b1 b2 b3 : (b1 ⇒ b2) ⇒ (b2 ⇒ b3) ⇒ b1 ⇒ b3. proof. ( ∗ proof starts here ∗ )  b 1 : bool   b 2 : bool local hypotheses (context)  b 3 : bool  ( b 1 ⇒ b 2 ) ⇒ ( b 2 ⇒ b 3 ) ⇒ b 1 ⇒ b 3 } goal � �� � ���� assumptions conclusion Progress is done via tactics that allows the simplification , decomposition into subgoals , or the resolution of the goal.

  18. Continuing the proof lemma mylemma b1 b2 b3 : ... proof. intros ⇒ hb12. b1 : bool b2 : bool b3 : bool hb12 : b1 ⇒ b 2 (b2 ⇒ b3) ⇒ b1 ⇒ b3

  19. Continuing the proof lemma mylemma b1 b2 b3 : ... proof. intros ⇒ hb12 bh23 hb1. b1 : bool b2 : bool b3 : bool hb12 : b1 ⇒ b2 hb23 : b2 ⇒ b3 hb1 : b1 b3

  20. Continuing the proof lemma mylemma b1 b2 b3 : ... proof. intros ⇒ hb12 bh23 hb1. apply hb23. b1 : bool b2 : bool b3 : bool hb12 : b1 ⇒ b2 hb23 : b2 ⇒ b3 hb1 : b1 b2

  21. Continuing the proof lemma mylemma b1 b2 b3 : ... proof. intros ⇒ hb12 bh23 hb1. apply hb23. apply hb12. b1 : bool b2 : bool b3 : bool hb12 : b1 ⇒ b2 hb23 : b2 ⇒ b3 hb1 : b1 b1

  22. Continuing the proof lemma mylemma b1 b2 b3 : ... proof. intros ⇒ hb12 bh23 hb1. apply hb23. apply hb12. assumption. Proof completed

  23. Continuing the proof lemma mylemma b1 b2 b3 : ... proof. intros ⇒ hb12 bh23 hb1. apply hb23. apply hb12. assumption. qed.

  24. Propositional logic ◮ b1 ⇒ b2 ⇒ b3 As a goal [intros ⇒ b1 b2] As an hypothesis [apply]

  25. Propositional logic ◮ b1 ⇒ b2 ⇒ b3 As a goal [intros ⇒ b1 b2] b1 : bool b2 : bool ֒ → b1 ⇒ b2 ⇒ b3 b3 As an hypothesis [apply]

  26. Propositional logic ◮ b1 ⇒ b2 ⇒ b3 As a goal [intros ⇒ b1 b2] As an hypothesis [apply] h : b1 ⇒ b2 ⇒ b3 ֒ → b3 h : b1 ⇒ b2 ⇒ b3 h : b1 ⇒ b2 ⇒ b3 1. 2. b1 b2

  27. Propositional logic - connectors ◮ Conjunction: a ∧ b As a goal [split] (prove a ∧ b) As an hypothesis [elim ab] (destruct a ∧ b in a and b)

  28. Propositional logic - connectors ◮ Conjunction: a ∧ b As a goal [split] (prove a ∧ b) → ֒ 1. 2. a ∧ b a b As an hypothesis [elim ab] (destruct a ∧ b in a and b)

  29. Propositional logic - connectors ◮ Conjunction: a ∧ b As a goal [split] (prove a ∧ b) → ֒ 1. 2. a ∧ b a b As an hypothesis [elim ab] (destruct a ∧ b in a and b) ab : a ∧ b ֒ → a ⇒ b ⇒ φ φ

  30. Propositional logic - connectors ◮ Disjunction: a ∨ b As a goal As an hypothesis [elim ab] (case analysis on a ∨ b)

  31. Propositional logic - connectors ◮ Disjunction: a ∨ b As a goal [left] (prove a ∨ b by proving a) → ֒ a ∨ b a [right] (prove a ∨ b by proving b) ֒ → a ∨ b b As an hypothesis [elim ab] (case analysis on a ∨ b)

  32. Propositional logic - connectors ◮ Disjunction: a ∨ b As a goal [left] (prove a ∨ b by proving a) → ֒ a ∨ b a [right] (prove a ∨ b by proving b) ֒ → a ∨ b b As an hypothesis [elim ab] (case analysis on a ∨ b) ab : a ∨ b → ֒ 1. 2. φ a ⇒ φ b ⇒ φ

  33. Propositional logic - existential ◮ Existential: exists x : t, φ (x) As a goal [ exists v] (prove goal by giving a witness) As an hypothesis [elim h] (extract a witness)

  34. Propositional logic - existential ◮ Existential: exists x : t, φ (x) As a goal [ exists v] (prove goal by giving a witness) ֒ → exists x : t, φ (x) φ (v) As an hypothesis [elim h] (extract a witness)

  35. Propositional logic - existential ◮ Existential: exists x : t, φ (x) As a goal [ exists v] (prove goal by giving a witness) ֒ → exists x : t, φ (x) φ (v) As an hypothesis [elim h] (extract a witness) h : exists x : t, φ (x) → ֒ φ ’ forall (v : t), φ (v) ⇒ φ ’

  36. Boolean case analysis The tactic case allows to do a case analysis on any formula. a : bool b : bool a ⊕ b = (a ∧ !b) || (!a ∧ b) (case a) leads to a : bool b : bool 1. a ⇒ true ⊕ b = (true ∧ !b) ∨ (!true ∧ b) a : bool b : bool 2. !a ⇒ false ⊕ b = (false ∧ !b) ∨ (!false ∧ b)

  37. Boolean case analysis The tactic case allows to do a case analysis on any formula. a : bool b : bool a ⊕ b = (a ∧ !b) || (!a ∧ b) (case a) leads to a : bool b : bool 1. a ⇒ true ⊕ b = (true ∧ !b) ∨ (!true ∧ b) a : bool b : bool 2. !a ⇒ false ⊕ b = (false ∧ !b) ∨ (!false ∧ b)

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