Documentation

Std.Tactic.BVDecide.Bitblast.BVExpr.Circuit.Lemmas.Const

This module contains the verification of the BitVec constant bitblaster from Impl.Const.

@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go_get_aux {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Std.Sat.AIG α) (c : BitVec w) (curr : Nat) (hcurr : curr ≤ w) (s : aig.RefVec curr) (idx : Nat) (hidx : idx < curr) (hfoo : aig.decls.size ≤ (Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go aig c curr s hcurr).aig.decls.size) :
(Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go aig c curr s hcurr).vec.get idx ⋯ = (s.get idx hidx).cast hfoo
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go_get {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Std.Sat.AIG α) (c : BitVec w) (curr : Nat) (hcurr : curr ≤ w) (s : aig.RefVec curr) (idx : Nat) (hidx : idx < curr) :
(Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go aig c curr s hcurr).vec.get idx ⋯ = (s.get idx hidx).cast ⋯
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go_denote_mem_prefix {α : Type} [Hashable α] [DecidableEq α] {w : Nat} {assign : α → Bool} (aig : Std.Sat.AIG α) (idx : Nat) (hidx : idx ≤ w) (s : aig.RefVec idx) (c : BitVec w) (start : Nat) (hstart : start < aig.decls.size) :
⟦assign, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go aig c idx s hidx).aig, ref := { gate := start, hgate := ⋯ } }⟧ = ⟦assign, { aig := aig, ref := { gate := start, hgate := hstart } }⟧
@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go_denote_eq {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Std.Sat.AIG α) (c : BitVec w) (assign : α → Bool) (curr : Nat) (hcurr : curr ≤ w) (s : aig.RefVec curr) (idx : Nat) (hidx1 : idx < w) :
curr ≤ idx → ⟦assign, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go aig c curr s hcurr).aig, ref := (Std.Tactic.BVDecide.BVExpr.bitblast.blastConst.go aig c curr s hcurr).vec.get idx hidx1 }⟧ = c.getLsbD idx
@[simp]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.denote_blastConst {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Std.Sat.AIG α) (c : BitVec w) (assign : α → Bool) (idx : Nat) (hidx : idx < w) :
⟦assign, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.blastConst aig c).aig, ref := (Std.Tactic.BVDecide.BVExpr.bitblast.blastConst aig c).vec.get idx hidx }⟧ = c.getLsbD idx