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

lecture 2 interactive proofs in easycrypt
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

Lecture 2 : Interactive Proofs in EasyCrypt

July 16th, 2013

slide-2
SLIDE 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

slide-3
SLIDE 3

Plan

1

The EasyCrypt Core Language

2

Interactive Proofs

3

Tacticals

4

Conclusion

slide-4
SLIDE 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

slide-5
SLIDE 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

slide-6
SLIDE 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

slide-7
SLIDE 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

slide-8
SLIDE 8

Expressions - Functional language

EasyCrypt comes with a functional language:

◮ concrete operators:

  • p f1 (b : bool) (x y : int) = b ? (x − y) : (x + y).
  • p f2 (xs : int list) (x : int) = map (lambda (z : int), z + x) xs.
  • p f3 (xs : ’a list)

= fold (lambda v _, v + 1) 0 xs.

◮ abstract operators:

map : (α → β ) → α list → β list fold : (α → β ) → α list → β list

slide-9
SLIDE 9

Expressions - Functional language

EasyCrypt comes with a functional language:

◮ concrete operators:

  • p f1 (b : bool) (x y : int) = b ? (x − y) : (x + y).
  • p f2 (xs : int list) (x : int) = map (lambda (z : int), z + x) xs.
  • p f3 (xs : ’a list)

= fold (lambda v _, v + 1) 0 xs.

◮ abstract operators:

map : (α → β ) → α list → β list fold : (α → β ) → α list → β list

slide-10
SLIDE 10

Expressions - Functional language

EasyCrypt comes with a functional language:

◮ concrete operators:

  • p f1 (b : bool) (x y : int) = b ? (x − y) : (x + y).
  • p f2 (xs : int list) (x : int) = map (lambda (z : int), z + x) xs.
  • p f3 (xs : ’a list)

= fold (lambda v _, v + 1) 0 xs.

◮ abstract operators:

map : (α → β ) → α list → β list fold : (α → β ) → α list → β list

slide-11
SLIDE 11

Predicates / Formulas

◮ Predicates are boolean operators:

  • p 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

slide-12
SLIDE 12

Axioms / Lemmas

◮ Formulas for operators axiomatization:

  • p 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.

slide-13
SLIDE 13

Axioms / Lemmas

◮ Formulas for operators axiomatization:

  • p 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.

slide-14
SLIDE 14

Plan

1

The EasyCrypt Core Language

2

Interactive Proofs

3

Tacticals

4

Conclusion

slide-15
SLIDE 15

Stating a theorem

lemma mylemma b1 b2 b3 : (b1 ⇒ b2) ⇒ (b2 ⇒ b3) ⇒ b1 ⇒ b3.

  • proof. (∗ proof starts here ∗)

b1 : bool b2 : bool b3 : bool

    

local hypotheses (context) (b1 ⇒ b2) ⇒ (b2 ⇒ b3) ⇒ b1 ⇒ b3 } goal

  • assumptions

conclusion Progress is done via tactics that allows the simplification, decomposition into subgoals, or the resolution of the goal.

slide-16
SLIDE 16

Stating a theorem

lemma mylemma b1 b2 b3 : (b1 ⇒ b2) ⇒ (b2 ⇒ b3) ⇒ b1 ⇒ b3.

  • proof. (∗ proof starts here ∗)

b1 : bool b2 : bool b3 : bool

    

local hypotheses (context) (b1 ⇒ b2) ⇒ (b2 ⇒ b3) ⇒ b1 ⇒ b3 } goal

  • assumptions

conclusion Progress is done via tactics that allows the simplification, decomposition into subgoals, or the resolution of the goal.

slide-17
SLIDE 17

Stating a theorem

lemma mylemma b1 b2 b3 : (b1 ⇒ b2) ⇒ (b2 ⇒ b3) ⇒ b1 ⇒ b3.

  • proof. (∗ proof starts here ∗)

b1 : bool b2 : bool b3 : bool

    

local hypotheses (context) (b1 ⇒ b2) ⇒ (b2 ⇒ b3) ⇒ b1 ⇒ b3 } goal

  • assumptions

conclusion Progress is done via tactics that allows the simplification, decomposition into subgoals, or the resolution of the goal.

slide-18
SLIDE 18

Continuing the proof

lemma mylemma b1 b2 b3 : ... proof. intros⇒ hb12.

b1 : bool b2 : bool b3 : bool hb12 : b1 ⇒ b2 (b2 ⇒ b3) ⇒ b1 ⇒ b3

slide-19
SLIDE 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

slide-20
SLIDE 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

slide-21
SLIDE 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

slide-22
SLIDE 22

Continuing the proof

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

Proof completed

slide-23
SLIDE 23

Continuing the proof

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

slide-24
SLIDE 24

Propositional logic

◮ b1 ⇒ b2 ⇒ b3

As a goal [intros⇒ b1 b2] As an hypothesis [apply]

slide-25
SLIDE 25

Propositional logic

◮ b1 ⇒ b2 ⇒ b3

As a goal [intros⇒ b1 b2] b1 ⇒ b2 ⇒ b3 ֒ → b1 : bool b2 : bool b3 As an hypothesis [apply]

slide-26
SLIDE 26

Propositional logic

◮ b1 ⇒ b2 ⇒ b3

As a goal [intros⇒ b1 b2] As an hypothesis [apply] h : b1 ⇒ b2 ⇒ b3 b3 ֒ →

1.

h : b1 ⇒ b2 ⇒ b3 b1

2.

h : b1 ⇒ b2 ⇒ b3 b2

slide-27
SLIDE 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)

slide-28
SLIDE 28

Propositional logic - connectors

◮ Conjunction: a ∧ b

As a goal [split] (prove a ∧ b) a ∧ b ֒ →

1.

a

2.

b As an hypothesis [elim ab] (destruct a ∧ b in a and b)

slide-29
SLIDE 29

Propositional logic - connectors

◮ Conjunction: a ∧ b

As a goal [split] (prove a ∧ b) a ∧ b ֒ →

1.

a

2.

b As an hypothesis [elim ab] (destruct a ∧ b in a and b) ab : a ∧ b φ ֒ → a ⇒ b ⇒φ

slide-30
SLIDE 30

Propositional logic - connectors

◮ Disjunction: a ∨ b

As a goal As an hypothesis [elim ab] (case analysis on a ∨ b)

slide-31
SLIDE 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)

slide-32
SLIDE 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.

a ⇒φ

2.

b ⇒φ

slide-33
SLIDE 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)

slide-34
SLIDE 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)

slide-35
SLIDE 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) ⇒φ ’

slide-36
SLIDE 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 1. a : bool b : bool a ⇒ true ⊕ b = (true ∧ !b) ∨ (!true ∧ b) 2. a : bool b : bool !a ⇒ false ⊕ b = (false ∧ !b) ∨ (!false ∧ b)

slide-37
SLIDE 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 1. a : bool b : bool a ⇒ true ⊕ b = (true ∧ !b) ∨ (!true ∧ b) 2. a : bool b : bool !a ⇒ false ⊕ b = (false ∧ !b) ∨ (!false ∧ b)

slide-38
SLIDE 38

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 1. a : bool b : bool a ⇒ true ⊕ b = (true ∧ !b) ∨ (!true ∧ b) 2. a : bool b : bool !a ⇒ false ⊕ b = (false ∧ !b) ∨ (!false ∧ b)

slide-39
SLIDE 39

Identification up to computations

EasyCrypt comes with a set of simplification rules. a : bool b : bool false ⊕ b = (false ∧ !b) ∨ (!false ∧ b) simplify leads to a : bool b : bool b = b that can be easily solved by reflexivity.

slide-40
SLIDE 40

Identification up to computations

EasyCrypt comes with a set of simplification rules. a : bool b : bool false ⊕ b = (false ∧ !b) ∨ (!false ∧ b) simplify leads to a : bool b : bool b = b that can be easily solved by reflexivity.

slide-41
SLIDE 41

Identification up to computations

Computations include

◮ functions applications reduction ◮ operators body inlining ◮ logical operators tautology (a ∧ false → false)

Terms that are equal up to computations are considered as identical a : bool b : bool !a ⇒ false ⊕ b = (false ∧ !b) ∨ (!false ∧ b) can be directly solved by reflexivity.

slide-42
SLIDE 42

Rewrite - replace equals by equals

The tactic rewrite replaces a subterm a of the goal by an equal one b. It takes a proof of a = b or a ⇔ b. rewrite h h : a = b P a ֒ → h : a = b P b

slide-43
SLIDE 43

Rewrite - replace equals by equals

The tactic rewrite replaces a subterm a of the goal by an equal one b. It takes a proof of a = b or a ⇔ b. rewrite h h : a = b P a ֒ → h : a = b P b

slide-44
SLIDE 44

Rewrite - replace equals by equals

rewrite comes in different flavor:

◮ rewrite −h : from right to left ◮ rewrite mh where m is a multiplier

? as many times as possible ! as many times as possible, at least one n? at most n times n! exactly n times

◮ rewrite {o}h where o is a sequence of positive integers

Rewrites the oth occurrences only.

slide-45
SLIDE 45

Rewrite - replace equals by equals

rewrite comes in different flavor:

◮ rewrite −h : from right to left ◮ rewrite mh where m is a multiplier

? as many times as possible ! as many times as possible, at least one n? at most n times n! exactly n times

◮ rewrite {o}h where o is a sequence of positive integers

Rewrites the oth occurrences only.

slide-46
SLIDE 46

Rewrite - replace equals by equals

rewrite comes in different flavor:

◮ rewrite −h : from right to left ◮ rewrite mh where m is a multiplier

? as many times as possible ! as many times as possible, at least one n? at most n times n! exactly n times

◮ rewrite {o}h where o is a sequence of positive integers

Rewrites the oth occurrences only.

slide-47
SLIDE 47

Rewrite - replace equals by equals

rewrite comes in different flavor:

◮ rewrite −h : from right to left ◮ rewrite mh where m is a multiplier

? as many times as possible ! as many times as possible, at least one n? at most n times n! exactly n times

◮ rewrite {o}h where o is a sequence of positive integers

Rewrites the oth occurrences only.

slide-48
SLIDE 48

Rewrite - replace equals by equals

2 ∗ (a + b) = (b + a) + (a + b)

◮ rewrite {2}addnC

2 ∗ (a + b) = (b + a) + (b + a)

◮ rewrite (addnC b a)

2 ∗ (a + b) = (a + b) + (a + b)

◮ rewrite −!addnA

2 ∗ (a + b) = b + (a + (a + b))

slide-49
SLIDE 49

Rewrite - replace equals by equals

2 ∗ (a + b) = (b + a) + (a + b)

◮ rewrite {2}addnC

2 ∗ (a + b) = (b + a) + (b + a)

◮ rewrite (addnC b a)

2 ∗ (a + b) = (a + b) + (a + b)

◮ rewrite −!addnA

2 ∗ (a + b) = b + (a + (a + b))

slide-50
SLIDE 50

Rewrite - replace equals by equals

2 ∗ (a + b) = (b + a) + (a + b)

◮ rewrite {2}addnC

2 ∗ (a + b) = (b + a) + (b + a)

◮ rewrite (addnC b a)

2 ∗ (a + b) = (a + b) + (a + b)

◮ rewrite −!addnA

2 ∗ (a + b) = b + (a + (a + b))

slide-51
SLIDE 51

Rewrite - replace equals by equals

2 ∗ (a + b) = (b + a) + (a + b)

◮ rewrite {2}addnC

2 ∗ (a + b) = (b + a) + (b + a)

◮ rewrite (addnC b a)

2 ∗ (a + b) = (a + b) + (a + b)

◮ rewrite −!addnA

2 ∗ (a + b) = b + (a + (a + b))

slide-52
SLIDE 52

Logical cut

The tactic cut: φ allows to do a forward chaining h: ... φ ’ ֒ →

1.

h: ... φ

2.

h: ... φ ⇒φ ’ It is possible to give a name to the new goal (cut my: φ ) h: ... φ ’ ֒ →

1.

h: ... φ

2.

h: ... my: φ φ ’

slide-53
SLIDE 53

Logical cut

The tactic cut: φ allows to do a forward chaining h: ... φ ’ ֒ →

1.

h: ... φ

2.

h: ... φ ⇒φ ’ It is possible to give a name to the new goal (cut my: φ ) h: ... φ ’ ֒ →

1.

h: ... φ

2.

h: ... my: φ φ ’

slide-54
SLIDE 54

Induction

An induction principle for a type t is any formula of the form: ∀(p : t → bool), φ1→ ... →φn, ∀(x : t), psi1(x) → ... → psin(x) → p x For example, for natural numbers: forall (p : int → t), p 0 ⇒ (forall (x : int), 0 ≤ x ⇒ p x ⇒ p (x + 1)) ⇒ forall (x : int), 0 ≤ x ⇒ p x

slide-55
SLIDE 55

Induction

An induction principle for a type t is any formula of the form: ∀(p : t → bool), φ1→ ... →φn, ∀(x : t), psi1(x) → ... → psin(x) → p x For example, for natural numbers: forall (p : int → t), p 0 ⇒ (forall (x : int), 0 ≤ x ⇒ p x ⇒ p (x + 1)) ⇒ forall (x : int), 0 ≤ x ⇒ p x

slide-56
SLIDE 56

Induction

Applying the induction principle via apply can be cumbersome. The tactic elimT eases the applications of such principles. P: int → bool 0 ≤ x ⇒ P x ֒ → elimT ind x

1.

P : int → bool P 0

2.

P : int → bool ∀(x : int), 0 ≤ x → P x → P (x+1)

slide-57
SLIDE 57

Induction

Applying the induction principle via apply can be cumbersome. The tactic elimT eases the applications of such principles. P: int → bool 0 ≤ x ⇒ P x ֒ → elimT ind x

1.

P : int → bool P 0

2.

P : int → bool ∀(x : int), 0 ≤ x → P x → P (x+1)

slide-58
SLIDE 58

Automation

EasyCrypt comes with some automation tactics:

◮ progress break the goal by repetead applications of the

introduction based tactics (split, intros, ...)

◮ trivial: same as progress, but try to close subgoals. ◮ smt: try to solve the goal calling external SMT solvers.

slide-59
SLIDE 59

Plan

1

The EasyCrypt Core Language

2

Interactive Proofs

3

Tacticals

4

Conclusion

slide-60
SLIDE 60

Tacticals

Tacticals are operators on tactics.

slide-61
SLIDE 61

Tacticals

Tacticals are operators on tactics.

◮ t1; t2

apply t1 and then t2 on all generated subgoals

◮ t; [t1|...|tn]

apply t and then each of the ti to the ith subgoal

◮ do t

repeat t as much as possible, at least one time this tactic takes the same multiplier of rewrite do! t, do? t, do n! e, do n? t

◮ try t

try to apply t, or nothing if t cannot by applied

◮ by t1; ...; tn

apply t1; ...; tn and then try to close all the subgoals via

  • trivial. fail if all the subgoals cannot be solved.
slide-62
SLIDE 62

Tacticals

Tacticals are operators on tactics.

◮ t1; t2

apply t1 and then t2 on all generated subgoals

◮ t; [t1|...|tn]

apply t and then each of the ti to the ith subgoal

◮ do t

repeat t as much as possible, at least one time this tactic takes the same multiplier of rewrite do! t, do? t, do n! e, do n? t

◮ try t

try to apply t, or nothing if t cannot by applied

◮ by t1; ...; tn

apply t1; ...; tn and then try to close all the subgoals via

  • trivial. fail if all the subgoals cannot be solved.
slide-63
SLIDE 63

Tacticals

Tacticals are operators on tactics.

◮ t1; t2

apply t1 and then t2 on all generated subgoals

◮ t; [t1|...|tn]

apply t and then each of the ti to the ith subgoal

◮ do t

repeat t as much as possible, at least one time this tactic takes the same multiplier of rewrite do! t, do? t, do n! e, do n? t

◮ try t

try to apply t, or nothing if t cannot by applied

◮ by t1; ...; tn

apply t1; ...; tn and then try to close all the subgoals via

  • trivial. fail if all the subgoals cannot be solved.
slide-64
SLIDE 64

Tacticals

Tacticals are operators on tactics.

◮ t1; t2

apply t1 and then t2 on all generated subgoals

◮ t; [t1|...|tn]

apply t and then each of the ti to the ith subgoal

◮ do t

repeat t as much as possible, at least one time this tactic takes the same multiplier of rewrite do! t, do? t, do n! e, do n? t

◮ try t

try to apply t, or nothing if t cannot by applied

◮ by t1; ...; tn

apply t1; ...; tn and then try to close all the subgoals via

  • trivial. fail if all the subgoals cannot be solved.
slide-65
SLIDE 65

Tacticals

Tacticals are operators on tactics.

◮ t1; t2

apply t1 and then t2 on all generated subgoals

◮ t; [t1|...|tn]

apply t and then each of the ti to the ith subgoal

◮ do t

repeat t as much as possible, at least one time this tactic takes the same multiplier of rewrite do! t, do? t, do n! e, do n? t

◮ try t

try to apply t, or nothing if t cannot by applied

◮ by t1; ...; tn

apply t1; ...; tn and then try to close all the subgoals via

  • trivial. fail if all the subgoals cannot be solved.
slide-66
SLIDE 66

Tacticals

Tacticals are operators on tactics.

◮ t1; first t2

apply t1 and then t2 on the first subgoal

◮ t1; last t2

apply t1 and then t2 on the last subgoal

◮ variants: t1; first n t2, t1; last n t2 ◮ t; first n last

apply t and then shift the n first goals to the end

slide-67
SLIDE 67

Tacticals

Tacticals are operators on tactics.

◮ t1; first t2

apply t1 and then t2 on the first subgoal

◮ t1; last t2

apply t1 and then t2 on the last subgoal

◮ variants: t1; first n t2, t1; last n t2 ◮ t; first n last

apply t and then shift the n first goals to the end

slide-68
SLIDE 68

Tacticals - Intros

Tacticals are operators on tactics.

◮ t ⇒ ip1 ... ipn

apply t and then execute the introduction of ip1 ... ipn

t⇒ x introduce a name / an hypothesis t⇒ [ip1|...ipn] execute ipi on the ith subgoal + do a case analysis if not done by t t⇒ → introduce an equational hypothesis and rewrite it t⇒ {h} clear the hypothesis h t⇒ // execute trivial

slide-69
SLIDE 69

Tacticals - Intros

Tacticals are operators on tactics.

◮ t ⇒ ip1 ... ipn

apply t and then execute the introduction of ip1 ... ipn

t⇒ x introduce a name / an hypothesis t⇒ [ip1|...ipn] execute ipi on the ith subgoal + do a case analysis if not done by t t⇒ → introduce an equational hypothesis and rewrite it t⇒ {h} clear the hypothesis h t⇒ // execute trivial

slide-70
SLIDE 70

Plan

1

The EasyCrypt Core Language

2

Interactive Proofs

3

Tacticals

4

Conclusion

slide-71
SLIDE 71

trade-off between interactive / automatic proof

◮ EasyCrypt has now two kinds of tactics

low-level, interactive ones the SMT hammer

The difficulty is to find the right trade-off between the two.

SMT goal resolution success can be very unstable SMT can be very good in solving large or numerous problems generated by p(R)HL judgments

◮ qed does not mark the end of the proof.