improving coq propositional reasoningdisi.unitn.it/~rseba/talksfrocos2009/lescuyer.pdf ·...

41
Motivation and background DPLL and CNF conversions Lazy CNF conversion Results Improving Coq Propositional Reasoning Using a Lazy CNF Conversion St´ ephane Lescuyer Sylvain Conchon Universit´ e Paris-Sud / CNRS / INRIA Saclay – ˆ Ile-de-France FroCoS’09 – Trento – 18/09/2009 ProVal Improving Coq Propositional Reasoning

Upload: others

Post on 22-May-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Improving Coq Propositional ReasoningUsing a Lazy CNF Conversion

Stephane Lescuyer Sylvain Conchon

Universite Paris-Sud / CNRS / INRIA Saclay – Ile-de-France

FroCoS’09 – Trento – 18/09/2009

ProVal Improving Coq Propositional Reasoning

Page 2: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Outline

1 Motivation and background

Verifying an SMT solver : Alt-ErgoProof by reflection

2 DPLL and CNF conversions

Modular DPLLCNF conversions

3 Lazy CNF Conversion

Expandable literalsRealization in Coq

4 Results

BenchmarksSummary

ProVal Improving Coq Propositional Reasoning

Page 3: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Alt-Ergo

Alt-Ergo : an SMT solver dedicated to program verification

http://alt-ergo.lri.fr

Satisfiability Modulo Theories

⇒ linear arithmetic, pairs, AC symbols, bitvectors

dedicated to program verification

⇒ proof obligations from program analysis⇒ Why, Boogie/PL

ProVal Improving Coq Propositional Reasoning

Page 4: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The big picture

We want to verify Alt-Ergo in the Coq proof assistant

The goal is twofold :

1 validating the algorithms at work in Alt-ErgoSAT solver, congruence closure, combination with theories, ...

2 building a certified version of Alt-Ergo that could be used byCoq users directly as a tactic

Two main approaches :

having the solver produce some certificate

implement the solver in the proof assistant and use reflection

ProVal Improving Coq Propositional Reasoning

Page 5: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The big picture

We want to verify Alt-Ergo in the Coq proof assistant

The goal is twofold :

1 validating the algorithms at work in Alt-ErgoSAT solver, congruence closure, combination with theories, ...

2 building a certified version of Alt-Ergo that could be used byCoq users directly as a tactic

Two main approaches :

having the solver produce some certificate

implement the solver in the proof assistant and use reflection

ProVal Improving Coq Propositional Reasoning

Page 6: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

A taste of reflection

Coq is a programming language

based on the Calculus of Inductive Constructions

one can write ML-like programs

efficient virtual machine for evaluation

The conversion rule

deduction modulo evaluation

proving that two expressions are equal ? call the VM !

Theorem fib20 : fib 20 = 10946.Proof. vm compute ; reflexivity. Qed.

ProVal Improving Coq Propositional Reasoning

Page 7: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

A taste of reflection

Coq is a programming language

based on the Calculus of Inductive Constructions

one can write ML-like programs

efficient virtual machine for evaluation

The conversion rule

deduction modulo evaluation

proving that two expressions are equal ? call the VM !

Theorem fib20 : fib 20 = 10946.Proof. vm compute ; reflexivity. Qed.

ProVal Improving Coq Propositional Reasoning

Page 8: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Another taste of reflection

Given a decidable property P on objects of type t :

write a program that decides P :

Definition P dec (x : t) : bool := ...

prove that it actually decides P :

Property P 1 : ∀x, P dec x = true → P x.Property P 2 : ∀x, P dec x = false → ~(P x).

to prove P(a) for any concrete a of type t :

Corollary Pa : P a.Proof. apply P 1 ; vm compute ; reflexivity. Qed.

We apply this method to a full SAT solver.

ProVal Improving Coq Propositional Reasoning

Page 9: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Another taste of reflection

Given a decidable property P on objects of type t :

write a program that decides P :

Definition P dec (x : t) : bool := ...

prove that it actually decides P :

Property P 1 : ∀x, P dec x = true → P x.Property P 2 : ∀x, P dec x = false → ~(P x).

to prove P(a) for any concrete a of type t :

Corollary Pa : P a.Proof. apply P 1 ; vm compute ; reflexivity. Qed.

We apply this method to a full SAT solver.

ProVal Improving Coq Propositional Reasoning

Page 10: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

General overview of the tactic

Soundness lemma

∀f. DPLL f = UNSAT → ¬JfK

Rei�cation

¬JfK = Φ

SATUNSAT

Abstract SideCoq Side

DPLL Procedure

formula → result

Proof of Φby re�ection

Abstract Formula

f : formula

Coq Formula

Φ : Prop

Counter

Model

ProVal Improving Coq Propositional Reasoning

Page 11: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

A Modular DPLL procedure

UnitΓ, l ` ∆

Γ ` ∆, lRed

Γ, l ` ∆,C

Γ, l ` ∆, l ∨ CElim

Γ, l ` ∆

Γ, l ` ∆, l ∨ C

ConflictΓ ` ∆, ∅

SplitΓ, l ` ∆ Γ, l ` ∆

Γ ` ∆

Module Type LITERAL.Parameter t : Set.Parameter mk not : t → t.Axiom mk not invol : ∀l, mk not (mk not l) = l....

End LITERAL.Module DPLL (L : LITERAL) ....

ProVal Improving Coq Propositional Reasoning

Page 12: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

A Modular DPLL procedure

UnitΓ, l ` ∆

Γ ` ∆, lRed

Γ, l ` ∆,C

Γ, l ` ∆, l ∨ CElim

Γ, l ` ∆

Γ, l ` ∆, l ∨ C

ConflictΓ ` ∆, ∅

SplitΓ, l ` ∆ Γ, l ` ∆

Γ ` ∆

Module Type LITERAL.Parameter t : Set.Parameter mk not : t → t.Axiom mk not invol : ∀l, mk not (mk not l) = l....

End LITERAL.Module DPLL (L : LITERAL) ....

ProVal Improving Coq Propositional Reasoning

Page 13: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

CNF conversion

A formula needs to be converted into CNF for DPLL

1 De Morgan rulesA ∨ (B ∧ C ) −→ (A ∨ B) ∧ (A ∨ C )

2 Introducing Tseitin variablesA∨(B∧C ) −→ (A∨X )∧(X ∨B)∧(X ∨C )∧(X ∨ B∨ C )

3 Plaisted/GreenbaumA ∨ (B ∧ C ) −→ (A ∨ X ) ∧ (X ∨ B) ∧ (X ∨ C )

4 many more variants...

ProVal Improving Coq Propositional Reasoning

Page 14: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The need for another conversion

Tseitin-style conversions raise issues in SMT solvers

breaks the logical structure of the original formula

the Tseitin variables must be given a valuation

A |= A ∨ (B ∧ C ) should be trivially satisfiablebecause of the conversion, the problem actually becomesboth choices for X must be tried until all the definitionalclauses are eliminatedadditional work and additional terms !

We don’t want to make the formula look harder than it really is.

ProVal Improving Coq Propositional Reasoning

Page 15: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The need for another conversion

Tseitin-style conversions raise issues in SMT solvers

breaks the logical structure of the original formula

the Tseitin variables must be given a valuation

A |= A ∨ (B ∧ C ) should be trivially satisfiablebecause of the conversion, the problem actually becomesboth choices for X must be tried until all the definitionalclauses are eliminatedadditional work and additional terms !

We don’t want to make the formula look harder than it really is.

ProVal Improving Coq Propositional Reasoning

Page 16: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The need for another conversion

Tseitin-style conversions raise issues in SMT solvers

breaks the logical structure of the original formula

the Tseitin variables must be given a valuation

A |= A ∨ (B ∧ C ) should be trivially satisfiablebecause of the conversion, the problem actually becomesboth choices for X must be tried until all the definitionalclauses are eliminatedadditional work and additional terms !

We don’t want to make the formula look harder than it really is.

ProVal Improving Coq Propositional Reasoning

Page 17: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The need for another conversion

Tseitin-style conversions raise issues in SMT solvers

breaks the logical structure of the original formula

the Tseitin variables must be given a valuation

A |= A ∨ (B ∧ C ) should be trivially satisfiable

because of the conversion, the problem actually becomesboth choices for X must be tried until all the definitionalclauses are eliminatedadditional work and additional terms !

We don’t want to make the formula look harder than it really is.

ProVal Improving Coq Propositional Reasoning

Page 18: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The need for another conversion

Tseitin-style conversions raise issues in SMT solvers

breaks the logical structure of the original formula

the Tseitin variables must be given a valuation

A |= A ∨ (B ∧ C ) should be trivially satisfiablebecause of the conversion, the problem actually becomesA |= (A ∨ X ) ∧ (X ∨ B) ∧ (X ∨ C ) ∧ (X ∨ B ∨ C )

both choices for X must be tried until all the definitionalclauses are eliminatedadditional work and additional terms !

We don’t want to make the formula look harder than it really is.

ProVal Improving Coq Propositional Reasoning

Page 19: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The need for another conversion

Tseitin-style conversions raise issues in SMT solvers

breaks the logical structure of the original formula

the Tseitin variables must be given a valuation

A |= A ∨ (B ∧ C ) should be trivially satisfiablebecause of the conversion, the problem actually becomesA |= (X ∨ B) ∧ (X ∨ C ) ∧ (X ∨ B ∨ C )

both choices for X must be tried until all the definitionalclauses are eliminatedadditional work and additional terms !

We don’t want to make the formula look harder than it really is.

ProVal Improving Coq Propositional Reasoning

Page 20: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The need for another conversion

Tseitin-style conversions raise issues in SMT solvers

breaks the logical structure of the original formula

the Tseitin variables must be given a valuation

A |= A ∨ (B ∧ C ) should be trivially satisfiablebecause of the conversion, the problem actually becomesA |= (X ∨ B) ∧ (X ∨ C ) ∧ (X ∨ B ∨ C )both choices for X must be tried until all the definitionalclauses are eliminated

additional work and additional terms !

We don’t want to make the formula look harder than it really is.

ProVal Improving Coq Propositional Reasoning

Page 21: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The need for another conversion

Tseitin-style conversions raise issues in SMT solvers

breaks the logical structure of the original formula

the Tseitin variables must be given a valuation

A |= A ∨ (B ∧ C ) should be trivially satisfiablebecause of the conversion, the problem actually becomesA |= (X ∨ B) ∧ (X ∨ C ) ∧ (X ∨ B ∨ C )both choices for X must be tried until all the definitionalclauses are eliminatedadditional work and additional terms !

We don’t want to make the formula look harder than it really is.

ProVal Improving Coq Propositional Reasoning

Page 22: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

The need for another conversion

Tseitin-style conversions raise issues in SMT solvers

breaks the logical structure of the original formula

the Tseitin variables must be given a valuation

A |= A ∨ (B ∧ C ) should be trivially satisfiablebecause of the conversion, the problem actually becomesA |= (X ∨ B) ∧ (X ∨ C ) ∧ (X ∨ B ∨ C )both choices for X must be tried until all the definitionalclauses are eliminatedadditional work and additional terms !

We don’t want to make the formula look harder than it really is.

ProVal Improving Coq Propositional Reasoning

Page 23: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Lazy CNF conversion

Solution used in Simplify :

separate definitional clauses from other clauses

only add them when needed

“relevancy propagation” in Z3

Detlefs, Nelson, et al. (2005)

...introducing lazy CNF into Simplify avoided such a host ofperformance problems that [..] it converted a prover that didn’twork in one that did.

Our idea : Tseitin variables should be the formulas they represent !

ProVal Improving Coq Propositional Reasoning

Page 24: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Lazy CNF conversion

Solution used in Simplify :

separate definitional clauses from other clauses

only add them when needed

“relevancy propagation” in Z3

Detlefs, Nelson, et al. (2005)

...introducing lazy CNF into Simplify avoided such a host ofperformance problems that [..] it converted a prover that didn’twork in one that did.

Our idea : Tseitin variables should be the formulas they represent !

ProVal Improving Coq Propositional Reasoning

Page 25: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Lazy CNF conversion

Solution used in Simplify :

separate definitional clauses from other clauses

only add them when needed

“relevancy propagation” in Z3

Detlefs, Nelson, et al. (2005)

...introducing lazy CNF into Simplify avoided such a host ofperformance problems that [..] it converted a prover that didn’twork in one that did.

Our idea : Tseitin variables should be the formulas they represent !

ProVal Improving Coq Propositional Reasoning

Page 26: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Expandable literals

Expandable literals are literals that can represent any formulas.

such a literal can be a regular literal l ;

or a proxy for a non-atomic formula F : F

Expansion of a proxy literal returns a CNF of literals

For instance, A ∨ (D ∧ C ) can return

{{A, C}, {D, C}} → full CNF

{{A, D ∧ C }} → one layer only

⇒ on-the-fly incremental CNF conversion

ProVal Improving Coq Propositional Reasoning

Page 27: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Expandable literals

Expandable literals are literals that can represent any formulas.

such a literal can be a regular literal l ;

or a proxy for a non-atomic formula F : F

Expansion of a proxy literal returns a CNF of literals

For instance, A ∨ (D ∧ C ) can return

{{A, C}, {D, C}} → full CNF

{{A, D ∧ C }} → one layer only

⇒ on-the-fly incremental CNF conversion

ProVal Improving Coq Propositional Reasoning

Page 28: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Expandable literals

Expandable literals are literals that can represent any formulas.

such a literal can be a regular literal l ;

or a proxy for a non-atomic formula F : F

Expansion of a proxy literal returns a CNF of literals

For instance, A ∨ (D ∧ C ) can return

{{A, C}, {D, C}} → full CNF

{{A, D ∧ C }} → one layer only

⇒ on-the-fly incremental CNF conversion

ProVal Improving Coq Propositional Reasoning

Page 29: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Changing DPLL

UnitΓ, l ` ∆

expl

Γ ` ∆, lRed

Γ, l ` ∆,C

Γ, l ` ∆, l ∨ C

ElimΓ, l ` ∆

Γ, l ` ∆, l ∨ CConflict

Γ ` ∆, ∅

SplitΓ, l ` ∆ Γ, l ` ∆

Γ ` ∆

Φ unsatisfiable ⇔ ∅ ` ∆Φ

ProVal Improving Coq Propositional Reasoning

Page 30: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Changing DPLL

UnitΓ, l ` ∆, expand(l)

Γ ` ∆, lRed

Γ, l ` ∆,C

Γ, l ` ∆, l ∨ C

ElimΓ, l ` ∆

Γ, l ` ∆, l ∨ CConflict

Γ ` ∆, ∅

SplitΓ, l ` ∆, expand(l) Γ, l ` ∆, expand(l)

Γ ` ∆

Φ unsatisfiable ⇔ ∅ ` Φ

ProVal Improving Coq Propositional Reasoning

Page 31: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Changing DPLL

UnitΓ, l ` ∆, expand(l)

Γ ` ∆, lRed

Γ, l ` ∆,C

Γ, l ` ∆, l ∨ C

ElimΓ, l ` ∆

Γ, l ` ∆, l ∨ CConflict

Γ ` ∆, ∅

SplitΓ, l ` ∆, expand(l) Γ, l ` ∆, expand(l)

Γ ` ∆

Φ unsatisfiable ⇔ ∅ ` Φ

adding proxies to the partial model is not mandatory

helps taking advantage of sharing : φ ∨ ¬φ

ProVal Improving Coq Propositional Reasoning

Page 32: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Defining expandable literals in Coq

Inductive t : Set :=| Proxy (pos neg : list (list t))| L (a : atom) (b : bool).

Negation can be computed in constant time.

Definition mk not (l : t) : t :=match l with| Proxy pos neg ⇒ Proxy neg pos| L a b ⇒ L a (negb b)end.

⇒ To convince Coq, one requires invariants on the structure...

ProVal Improving Coq Propositional Reasoning

Page 33: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Defining expandable literals in Coq

Inductive t : Set :=| Proxy (pos neg : list (list t))| L (a : atom) (b : bool).

Negation can be computed in constant time.

Definition mk not (l : t) : t :=match l with| Proxy pos neg ⇒ Proxy neg pos| L a b ⇒ L a (negb b)end.

⇒ To convince Coq, one requires invariants on the structure...

ProVal Improving Coq Propositional Reasoning

Page 34: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Defining expandable literals in Coq

Inductive t : Set :=| Proxy (pos neg : list (list t))| L (a : atom) (b : bool).

Negation can be computed in constant time.

Definition mk not (l : t) : t :=match l with| Proxy pos neg ⇒ Proxy neg pos| L a b ⇒ L a (negb b)end.

⇒ To convince Coq, one requires invariants on the structure...

ProVal Improving Coq Propositional Reasoning

Page 35: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Add invariants with dependent types

We want the pos and neg to really be the negation of one another.

N ((n∨

i=1

xi ) ∧ C ) =n∧

i=1

∧D∈N (C)

(xi ∨ D)

⇒ Proxy pos neg is well-formed if :

N (neg) = pos, N (pos) = neg, ∀l ∈ pos, l is well-formed

Definition t : Type := {l | wf lit l}.Property wf mk not : ∀l, wf lit l → wf lit (mk not l).Proof. ..... Qed.Definition mk not (l : t) : t := ... (* uses wf mk not *)

ProVal Improving Coq Propositional Reasoning

Page 36: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Add invariants with dependent types

We want the pos and neg to really be the negation of one another.

N ((n∨

i=1

xi ) ∧ C ) =n∧

i=1

∧D∈N (C)

(xi ∨ D)

⇒ Proxy pos neg is well-formed if :

N (neg) = pos, N (pos) = neg, ∀l ∈ pos, l is well-formed

Definition t : Type := {l | wf lit l}.

Definition t : Type := {l | wf lit l}.Property wf mk not : ∀l, wf lit l → wf lit (mk not l).Proof. ..... Qed.Definition mk not (l : t) : t := ... (* uses wf mk not *)

ProVal Improving Coq Propositional Reasoning

Page 37: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Add invariants with dependent types

We want the pos and neg to really be the negation of one another.

N ((n∨

i=1

xi ) ∧ C ) =n∧

i=1

∧D∈N (C)

(xi ∨ D)

⇒ Proxy pos neg is well-formed if :

N (neg) = pos, N (pos) = neg, ∀l ∈ pos, l is well-formed

Definition t : Type := {l | wf lit l}.Property wf mk not : ∀l, wf lit l → wf lit (mk not l).Proof. ..... Qed.Definition mk not (l : t) : t := ... (* uses wf mk not *)

ProVal Improving Coq Propositional Reasoning

Page 38: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Translation for logical connectives

Proxy pos neg

X ≡ F ∨ G {F ∨ G} {F}{G}X ≡ F ∧ G {F}{G} {F ∨ G}X ≡ (F → G ) {F ∨ G} {F}{G}X ≡ (F1 ∨ . . . ∨ Fn) {F1 ∨ . . . ∨ Fn} {F1} . . . {Fn}X ≡ (F1 ∧ . . . ∧ Fn) {F1} . . . {Fn} {F1 ∨ . . . ∨ Fn}

F ↔ G is treated as a conjunction or a disjunction

ProVal Improving Coq Propositional Reasoning

Page 39: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Benchmarks

tauto CNFC CNFA Tseitin Tseitin2 Lazy LazyNhole3 – 0.72 0.06 0.24 0.21 0.06 0.05hole4 – 3.1 0.23 3.5 6.8 0.32 0.21hole5 – 10 2.7 80 – 1.9 1.8deb5 83 – 0.04 0.15 0.10 0.09 0.03deb10 – – 0.10 0.68 0.43 0.66 0.09deb20 – – 0.35 4.5 2.5 7.5 0.35equiv2 0.03 – 0.06 1.5 1.0 0.02 0.02equiv5 61 – – – – 0.44 0.42franzen10 0.25 16 0.05 0.05 0.03 0.02 0.02franzen50 – – 0.40 1.4 0.80 0.34 0.35schwicht20 0.48 – 0.12 0.43 0.23 0.10 0.10schwicht50 8.8 – 0.60 4.3 2.2 0.57 0.7partage – – – 13 19 0.04 0.06partage2 – – – – – 0.12 0.11

ProVal Improving Coq Propositional Reasoning

Page 40: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

Results

Our contribution

a tactic for propositional fragment of Coq

outperforms existing tactic by orders of magnitude

validates the lazy CNF conversion of our SMT solver

improves on standard CNF conversion techniques

intuitionnistic tactic using classical techniques

solves the issue of “predicate definitions”p(x1, . . . , xn) ≡ φ(x1, . . . , xn)⇒ should p be unfolded or not ?

ProVal Improving Coq Propositional Reasoning

Page 41: Improving Coq Propositional Reasoningdisi.unitn.it/~rseba/TalksFrocos2009/lescuyer.pdf · 2009-09-22 · Improving Coq Propositional Reasoning Using a Lazy CNF Conversion ... Coq

Motivation and background DPLL and CNF conversions Lazy CNF conversion Results

For the daring souls

The whole development is documented and browsable at :

http://www.lri.fr/~lescuyer/unsat

Follow the checkmarks X !

Thank You

ProVal Improving Coq Propositional Reasoning