Documentation

Std.Sat.AIG.Relabel

theorem Std.Sat.AIG.Decl.relabel_comp {α : Type} {β : Type} {γ : Type} (decl : Std.Sat.AIG.Decl α) (g : αβ) (h : βγ) :
theorem Std.Sat.AIG.Decl.relabel_const {α : Type} {β : Type} {idx : Nat} {b : Bool} {decls : Array (Std.Sat.AIG.Decl α)} {r : αβ} {hidx : idx < decls.size} (h : Std.Sat.AIG.Decl.relabel r decls[idx] = Std.Sat.AIG.Decl.const b) :
theorem Std.Sat.AIG.Decl.relabel_atom {α : Type} {β : Type} {idx : Nat} {a : β} {decls : Array (Std.Sat.AIG.Decl α)} {r : αβ} {hidx : idx < decls.size} (h : Std.Sat.AIG.Decl.relabel r decls[idx] = Std.Sat.AIG.Decl.atom a) :
∃ (x : α), decls[idx] = Std.Sat.AIG.Decl.atom x a = r x
theorem Std.Sat.AIG.Decl.relabel_gate {α : Type} {β : Type} {idx : Nat} {lhs : Nat} {rhs : Nat} {linv : Bool} {rinv : Bool} {decls : Array (Std.Sat.AIG.Decl α)} {r : αβ} {hidx : idx < decls.size} (h : Std.Sat.AIG.Decl.relabel r decls[idx] = Std.Sat.AIG.Decl.gate lhs rhs linv rinv) :
decls[idx] = Std.Sat.AIG.Decl.gate lhs rhs linv rinv
def Std.Sat.AIG.relabel {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] (r : αβ) (aig : Std.Sat.AIG α) :
Equations
Instances For
    @[simp]
    theorem Std.Sat.AIG.relabel_size_eq_size {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] {aig : Std.Sat.AIG α} {r : αβ} :
    (Std.Sat.AIG.relabel r aig).decls.size = aig.decls.size
    theorem Std.Sat.AIG.relabel_const {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] {idx : Nat} {b : Bool} {aig : Std.Sat.AIG α} {r : αβ} {hidx : idx < (Std.Sat.AIG.relabel r aig).decls.size} (h : (Std.Sat.AIG.relabel r aig).decls[idx] = Std.Sat.AIG.Decl.const b) :
    aig.decls[idx] = Std.Sat.AIG.Decl.const b
    theorem Std.Sat.AIG.relabel_atom {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] {idx : Nat} {a : β} {aig : Std.Sat.AIG α} {r : αβ} {hidx : idx < (Std.Sat.AIG.relabel r aig).decls.size} (h : (Std.Sat.AIG.relabel r aig).decls[idx] = Std.Sat.AIG.Decl.atom a) :
    ∃ (x : α), aig.decls[idx] = Std.Sat.AIG.Decl.atom x a = r x
    theorem Std.Sat.AIG.relabel_gate {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] {idx : Nat} {lhs : Nat} {rhs : Nat} {linv : Bool} {rinv : Bool} {aig : Std.Sat.AIG α} {r : αβ} {hidx : idx < (Std.Sat.AIG.relabel r aig).decls.size} (h : (Std.Sat.AIG.relabel r aig).decls[idx] = Std.Sat.AIG.Decl.gate lhs rhs linv rinv) :
    aig.decls[idx] = Std.Sat.AIG.Decl.gate lhs rhs linv rinv
    @[simp, irreducible]
    theorem Std.Sat.AIG.denote_relabel {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] (aig : Std.Sat.AIG α) (r : αβ) (start : Nat) {hidx : start < (Std.Sat.AIG.relabel r aig).decls.size} (assign : βBool) :
    assign, { aig := Std.Sat.AIG.relabel r aig, ref := { gate := start, hgate := hidx } } = assign r, { aig := aig, ref := { gate := start, hgate := } }
    theorem Std.Sat.AIG.unsat_relabel {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] {idx : Nat} {aig : Std.Sat.AIG α} (r : αβ) {hidx : idx < aig.decls.size} :
    aig.UnsatAt idx hidx(Std.Sat.AIG.relabel r aig).UnsatAt idx
    theorem Std.Sat.AIG.relabel_unsat_iff {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] {idx : Nat} [Nonempty α] {aig : Std.Sat.AIG α} {r : αβ} {hidx1 : idx < (Std.Sat.AIG.relabel r aig).decls.size} {hidx2 : idx < aig.decls.size} (hinj : ∀ (x y : α), x aigy aigr x = r yx = y) :
    (Std.Sat.AIG.relabel r aig).UnsatAt idx hidx1 aig.UnsatAt idx hidx2
    Equations
    Instances For
      @[simp]
      theorem Std.Sat.AIG.Entrypoint.relabel_size_eq {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] {entry : Std.Sat.AIG.Entrypoint α} {r : αβ} :
      (Std.Sat.AIG.Entrypoint.relabel r entry).aig.decls.size = entry.aig.decls.size
      theorem Std.Sat.AIG.Entrypoint.relabel_unsat_iff {α : Type} [Hashable α] [DecidableEq α] {β : Type} [Hashable β] [DecidableEq β] [Nonempty α] {entry : Std.Sat.AIG.Entrypoint α} {r : αβ} (hinj : ∀ (x y : α), x entry.aigy entry.aigr x = r yx = y) :
      (Std.Sat.AIG.Entrypoint.relabel r entry).Unsat entry.Unsat