HepLean 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 : Std.Sat.AIG Std.Tactic.BVDecide.BVBit) (a : Nat) (curr : Nat) (hcurr : curr w) (s : aig.RefVec curr) (idx : Nat) (hidx : idx < curr) (hfoo : aig.decls.size (Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.go aig w a curr s hcurr).aig.decls.size) :
(Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.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 : Std.Sat.AIG Std.Tactic.BVDecide.BVBit) (a : Nat) (curr : Nat) (hcurr : curr w) (s : aig.RefVec curr) (idx : Nat) (hidx : idx < curr) :
(Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.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 : Std.Tactic.BVDecide.BVBitBool} {w : Nat} (aig : Std.Sat.AIG Std.Tactic.BVDecide.BVBit) (idx : Nat) (hidx : idx w) (s : aig.RefVec idx) (a : Nat) (start : Nat) (hstart : start < aig.decls.size) :
assign, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.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 : Std.Sat.AIG Std.Tactic.BVDecide.BVBit) (a : Nat) (assign : Std.Tactic.BVDecide.BVExpr.Assignment) (curr : Nat) (hcurr : curr w) (s : aig.RefVec curr) (idx : Nat) (hidx1 : idx < w) :
curr idxassign.toAIGAssignment, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.go aig w a curr s hcurr).aig, ref := (Std.Tactic.BVDecide.BVExpr.bitblast.blastVar.go aig w a curr s hcurr).vec.get idx hidx1 } = (Std.Tactic.BVDecide.BVExpr.eval assign (Std.Tactic.BVDecide.BVExpr.var a)).getLsbD idx