Documentation

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

This module contains the verification of the bitblaster for symbolic BitVec values from Impl.Var.

@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.go_get_aux {w : Nat} (aig : Sat.AIG BVBit) (a curr : Nat) (hcurr : curr w) (s : aig.RefVec curr) (idx : Nat) (hidx : idx < curr) (hfoo : aig.decls.size (go aig w a curr s hcurr).aig.decls.size) :
(go aig w a curr s hcurr).vec.get idx = (s.get idx hidx).cast hfoo
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.go_get {w : Nat} (aig : Sat.AIG BVBit) (a curr : Nat) (hcurr : curr w) (s : aig.RefVec curr) (idx : Nat) (hidx : idx < curr) :
(go aig w a curr s hcurr).vec.get idx = (s.get idx hidx).cast
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.go_denote_mem_prefix {assign : BVBitBool} {w : Nat} (aig : Sat.AIG BVBit) (idx : Nat) (hidx : idx w) (s : aig.RefVec idx) (a start : Nat) (hstart : start < aig.decls.size) :
assign, { aig := (go aig w a idx s hidx).aig, ref := { gate := start, hgate := } } = assign, { aig := aig, ref := { gate := start, hgate := hstart } }
@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.go_denote_eq {w : Nat} (aig : Sat.AIG BVBit) (a : Nat) (assign : Assignment) (curr : Nat) (hcurr : curr w) (s : aig.RefVec curr) (idx : Nat) (hidx1 : idx < w) :
curr idxassign.toAIGAssignment, { aig := (go aig w a curr s hcurr).aig, ref := (go aig w a curr s hcurr).vec.get idx hidx1 } = (eval assign (var a)).getLsbD idx
@[simp]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.denote_blastVar {w : Nat} (aig : Sat.AIG BVBit) (var : BVVar w) (assign : Assignment) (idx : Nat) (hidx : idx < w) :
assign.toAIGAssignment, { aig := (blastVar aig var).aig, ref := (blastVar aig var).vec.get idx hidx } = (eval assign (Std.Tactic.BVDecide.BVExpr.var var.ident)).getLsbD idx