The value of an atom under an Assignment.
- unassigned : AssignValue
- true : AssignValue
- false : AssignValue
Instances For
@[inline]
Equations
Instances For
@[inline]
Equations
Instances For
- assign : HashMap Nat AssignValue
Instances For
Equations
- Std.Tactic.BVDecide.LRAT.Internal.Assignment.empty = { assign := ∅ }
Instances For
@[inline]
Equations
- a.get atom = a.assign.getD atom Std.Tactic.BVDecide.LRAT.Internal.AssignValue.unassigned
Instances For
@[inline]
Instances For
@[inline]
Equations
Instances For
@[simp]
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.get?_insert_of_eq {atom atom' : Nat} {b : Bool} {a : Assignment} (h : atom = atom') :
@[simp]
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.get?_insert_of_ne {atom atom' : Nat} {b : Bool} {a : Assignment} (h : atom ≠ atom') :
@[simp]
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.get_eq_unassigned_iff {atom : Nat} {a : Assignment} :
@[simp]
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.get_eq_true_iff {atom : Nat} {a : Assignment} :
@[simp]
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.get_eq_false_iff {atom : Nat} {a : Assignment} :
@[inline]
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.sat_toCNF_iff {assign : Assignment} (a : Nat → Bool) :
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.not_sat_of_forall_falsified {assign : Assignment} {c : Sat.CNF.Clause Nat} {a : Nat → Bool} (h1 : Sat.CNF.Sat a assign.toCNF) (h2 : ∀ (lit : Sat.Literal Nat), lit ∈ c → assign.get? lit.fst = some !lit.snd) :
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.unit_propagation {assign : Assignment} {c : Sat.CNF.Clause Nat} {unit : Sat.Literal Nat} {a : Nat → Bool} (h1 : Sat.CNF.Sat a assign.toCNF) (h2 : Sat.CNF.Clause.Sat a c) (h3 : ∀ (lit : Sat.Literal Nat), lit ∈ c → lit = unit ∨ assign.get? lit.fst = some !lit.snd) :
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.toCNF_add_entails_toCNF_insert {atom : Nat} {pol : Bool} {assignment : Assignment} :
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.sat_of_ofClause_eq_none {clause : Sat.CNF.Clause Nat} (h : ofClause clause = none) (a : Nat → Bool) :
Sat.CNF.Clause.Sat a clause
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.get_eq_of_ofClause_eq_some {clause : Sat.CNF.Clause Nat} {assignment : Assignment} (h : ofClause clause = some assignment) (lit : Sat.Literal Nat) :
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.isNegationOf_of_ofClause_eq_some {clause : Sat.CNF.Clause Nat} {assignment : Assignment} (h1 : ofClause clause = some assignment) :
assignment.toCNF.IsNegationOf clause
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.entails_clause_of_unsat_of_ofClause_eq_some {clause : Sat.CNF.Clause Nat} {assignment : Assignment} {f : Sat.CNF Nat} (h1 : ofClause clause = some assignment) (h2 : (f ++ assignment.toCNF).Unsat) :
f.EntailsClause clause
def Std.Tactic.BVDecide.LRAT.Internal.Assignment.extendOfClauseWithout (assign : Assignment) (c : Sat.CNF.Clause Nat) (lit : Sat.Literal Nat) :
Extend assign so that it additionally falsifies every literal of c except lit.
Returns none if that is impossible, which happens exactly when assign already satisfies a literal
of c besides lit, or when c contains a variable in both polarities besides lit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.extendOfClauseWithout_spec (assign : Assignment) (clause : Sat.CNF.Clause Nat) (lit : Sat.Literal Nat) :
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.mem_or_get?_eq_iff_of_extendOfClauseWithout_eq_some {a : Assignment} {clause : Sat.CNF.Clause Nat} {lit : Sat.Literal Nat} {newAssign : Assignment} (h : a.extendOfClauseWithout clause lit = some newAssign) (lit' : Sat.Literal Nat) :
theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.entails_clause_of_extendOfClauseWithout_eq_none {a : Assignment} {clause : Sat.CNF.Clause Nat} {lit : Sat.Literal Nat} (h : a.extendOfClauseWithout clause lit = none) :
a.toCNF.EntailsClause (clause.erase lit)