Documentation

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

This module contains the verification of the BitVec expressions (BVExpr) bitblaster from Impl.Expr.

theorem Std.Tactic.BVDecide.BVExpr.bitblast.go_denote_mem_prefix {w : Nat} (aig : Std.Sat.AIG Std.Tactic.BVDecide.BVBit) (expr : Std.Tactic.BVDecide.BVExpr w) (assign : Std.Tactic.BVDecide.BVExpr.Assignment) (start : Nat) (hstart : start < aig.decls.size) :
assign.toAIGAssignment, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.go aig expr).val.aig, ref := { gate := start, hgate := } } = assign.toAIGAssignment, { aig := aig, ref := { gate := start, hgate := hstart } }
theorem Std.Tactic.BVDecide.BVExpr.bitblast.go_denote_eq {w : Nat} (aig : Std.Sat.AIG Std.Tactic.BVDecide.BVBit) (expr : Std.Tactic.BVDecide.BVExpr w) (assign : Std.Tactic.BVDecide.BVExpr.Assignment) (idx : Nat) (hidx : idx < w) :
assign.toAIGAssignment, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.go aig expr).val.aig, ref := (Std.Tactic.BVDecide.BVExpr.bitblast.go aig expr).val.vec.get idx hidx } = (Std.Tactic.BVDecide.BVExpr.eval assign expr).getLsbD idx
@[simp]
theorem Std.Tactic.BVDecide.BVExpr.denote_bitblast {w : Nat} (aig : Std.Sat.AIG Std.Tactic.BVDecide.BVBit) (expr : Std.Tactic.BVDecide.BVExpr w) (assign : Std.Tactic.BVDecide.BVExpr.Assignment) (idx : Nat) (hidx : idx < w) :
assign.toAIGAssignment, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast aig expr).aig, ref := (Std.Tactic.BVDecide.BVExpr.bitblast aig expr).vec.get idx hidx } = (Std.Tactic.BVDecide.BVExpr.eval assign expr).getLsbD idx