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)