Documentation

Std.Sat.CNF.Redundancy

Formalizations of clause redundancy properties.

theorem Std.Sat.CNF.entails_clause_of_forall_sat {α : Type u_1} {f : CNF α} {c : Clause α} (h : ∀ (a : αBool), Clause.Sat a c) :

We may add any tautological clause

theorem Std.Sat.CNF.entails_clause_of_unsat_of_forall_not_sat {α : Type u_1} {c : Clause α} {f2 f1 : CNF α} (h1 : ∀ (a : αBool), ¬Sat a f1Clause.Sat a c) (h2 : (f2 ++ f1).Unsat) :
theorem Std.Sat.CNF.entails_clause_of_unsat_of_isNegationOf {α✝ : Type u_1} {f1 : CNF α✝} {c : Clause α✝} {f2 : CNF α✝} (h1 : f1.IsNegationOf c) (h2 : (f2 ++ f1).Unsat) :

This is known as the AT or RUP property.

theorem Std.Sat.CNF.exists_sat_add_of_rat {α : Type u_1} [BEq α] [LawfulBEq α] {f : CNF α} {c : Clause α} {l : Literal α} (h1 : l c) (h2 : ∀ (c' : Clause α), c' fl.negate c'f.EntailsClause (c ++ c'.erase l.negate)) (a : αBool) :
Sat a f (a' : αBool), Sat a' (f.add c)

This is known as the RAT property. It's a formalization of Proposition 1 from "Inprocessing Rules" by Matti Järvisalo, Marijn Heule, and Armin Biere (https://cca.informatik.uni-freiburg.de/papers/JarvisaloHeuleBiere-IJCAR12.pdf)