DPLL in Coq Zhuang Zhong
Overview Previous work Stålmarck algorithm and Binary Decision Diagram Produce traces of proof Reconstruct proof term This work Formalization of DPLL algorithm Good use of module type Proof by reflexivity
Decision Procedure 1. Make a conjunction F of all the Hypotheses 2. Convert F to CNF form 3. Convert F to f with respect to abstract model (reify) (FClause (COr (CLit (Left_idx (Left_idx End_idx), true)) (COr (CLit (Right_idx End_idx, false)) (CLit (Left_idx End_idx, false))))) (FClause (COr (CLit (Left_idx (Left_idx End_idx), true)) (COr (CLit (Right_idx End_idx, false)) (CLit (Left_idx End_idx, false)))))
Decision Procedure cont. 4. Measure possible steps about the formula 5. Compute proof_search( |- (make f))= Unsat 6. If equal, then proof complete 7. Else, it will print the counter model 8. The whole procedure is wrap by a tactic unsat.
Model Semantics of the abstract formula Definition model := {M : F.L.t -> Prop | wf_model M}. Definition sat_clause (M : model) (C : F.LSet.t) := exists l, M l /\ F.LSet.In l C. Definition sat_goal (M : model) (D : F.CSet.t) := forall C, F.CSet.In C D -> sat_clause M C. Definition submodel (G : F.LSet.t) (M : model) := forall l, F.LSet.In l G -> (M l /\ ~F.LSet.In (F.L.mk_not l) G). Definition incompatible (G : F.LSet.t) (D : F.CSet.t) := forall (M : model), submodel G M -> ~sat_goal M D.
Interpretation Variable Use varmap (Require Import Quote) Varmap is quite like a binary tree index*bool -> lookup index varmap Formula Inductive type formula reify_formula Formula varmap Generate sequent
Modularity Module Type & Module Module Type is a signature Module can be parameterized with other module and instantiated to match a certain module type In this work Module Types LITERAL, CNF Module LProp, CNFProp… Advantage High level abstraction Eg. Different prop, different pick method
Example A /\ (C \/ ~B /\ (~D -> ~A)) -> B /\ ~A -> D /\ D /\ ~ A. E -> F /\ (A -> A) \/ ~B \/ ~C /\ D -> C \/ ~C /\ ~(B \/ F) -> D \/ ~E.
Conclusion Develop a tactic in Coq like omega, ring… What can be done: Optimization Combine with other decision procedure Congruence, linear arithmetic… Next week Decision procedures above Read more about this work