Documentation

Std.Tactic.BVDecide.LRAT.Internal.Assignment

The value of an atom under an Assignment.

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') :
      (a.insert atom b).get? atom' = some b
      @[simp]
      theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.get?_insert_of_ne {atom atom' : Nat} {b : Bool} {a : Assignment} (h : atom atom') :
      (a.insert atom b).get? atom' = a.get? atom'
      @[inline]
      Equations
      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 : NatBool) :
          Sat.CNF.Sat a assign.toCNF ∀ (atom : Nat) (pol : Bool), assign.get? atom = some pola atom = pol
          theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.unit_propagation {assign : Assignment} {c : Sat.CNF.Clause Nat} {unit : Sat.Literal Nat} {a : NatBool} (h1 : Sat.CNF.Sat a assign.toCNF) (h2 : Sat.CNF.Clause.Sat a c) (h3 : ∀ (lit : Sat.Literal Nat), lit clit = unit assign.get? lit.fst = some !lit.snd) :
          a unit.fst = unit.snd
          theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.toCNF_add_entails_toCNF_insert {atom : Nat} {pol : Bool} {assignment : Assignment} :
          (assignment.toCNF.add (Sat.CNF.Clause.unit atom pol)).Entails (assignment.insert atom pol).toCNF
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem Std.Tactic.BVDecide.LRAT.Internal.Assignment.ofClause_spec (clause : Sat.CNF.Clause Nat) :
            match ofClause clause with | none => (atom : Nat), (pol : Bool), (atom, pol) clause (atom, !pol) clause | some assignment => ∀ (lit : Sat.Literal Nat), lit clause assignment.get? lit.fst = some !lit.snd
            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) :
            lit clause assignment.get? lit.fst = some !lit.snd

            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) :
              match assign.extendOfClauseWithout clause lit with | none => assign.toCNF.EntailsClause (clause.erase lit) | some newAssign => ∀ (lit' : Sat.Literal Nat), lit' clause lit' lit assign.get? lit'.fst = some !lit'.snd newAssign.get? lit'.fst = some !lit'.snd
              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) :
              lit' clause lit' lit a.get? lit'.fst = some !lit'.snd newAssign.get? lit'.fst = some !lit'.snd