This module contains the verification of the BitVec
expressions (BVExpr
) bitblaster from
Impl.Expr
.
@[reducible, inline]
abbrev
Std.Tactic.BVDecide.BVExpr.Cache.Inv
(assign : Assignment)
(aig : Sat.AIG BVBit)
(cache : Cache aig)
:
Equations
- One or more equations did not get rendered due to their size.
theorem
Std.Tactic.BVDecide.BVExpr.Cache.Inv_cast
{aig1 : Sat.AIG BVBit}
{assign : Assignment}
{aig2 : Sat.AIG BVBit}
(cache : Cache aig1)
(hpref : Sat.AIG.IsPrefix aig1.decls aig2.decls)
(hinv : Inv assign aig1 cache)
:
theorem
Std.Tactic.BVDecide.BVExpr.Cache.Inv_insert
{aig : Sat.AIG BVBit}
{w : Nat}
{assign : Assignment}
(cache : Cache aig)
(expr : BVExpr w)
(refs : aig.RefVec w)
(hinv : Inv assign aig cache)
(hrefs :
∀ (idx : Nat) (hidx : idx < w),
⟦assign.toAIGAssignment, { aig := aig, ref := refs.get idx hidx }⟧ = (eval assign expr).getLsbD idx)
:
@[irreducible]
@[irreducible]
theorem
Std.Tactic.BVDecide.BVExpr.bitblast.goCache_denote_eq
{w : Nat}
(aig : Sat.AIG BVBit)
(expr : BVExpr w)
(assign : Assignment)
(cache : Cache aig)
(hinv : Cache.Inv assign aig cache)
(idx : Nat)
(hidx : idx < w)
:
@[irreducible]
theorem
Std.Tactic.BVDecide.BVExpr.bitblast.go_denote_eq
{w : Nat}
(aig : Sat.AIG BVBit)
(expr : BVExpr w)
(assign : Assignment)
(cache : Cache aig)
(hinv : Cache.Inv assign aig cache)
(idx : Nat)
(hidx : idx < w)
: