HepLean Documentation

Std.Tactic.BVDecide.Bitblast.BVExpr.Circuit.Lemmas.Operations.Extract

This module contains the verification of the BitVec.extract bitblaster from Impl.Operations.Extract.

@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastExtract.go_get_aux {α : Type} [Hashable α] [DecidableEq α] {w newWidth : Nat} (aig : Std.Sat.AIG α) (input : aig.RefVec w) (lo curr : Nat) (hcurr : curr newWidth) (falseRef : aig.Ref) (s : aig.RefVec curr) (idx : Nat) (hidx1 : idx < curr) :
(Std.Tactic.BVDecide.BVExpr.bitblast.blastExtract.go input lo falseRef curr hcurr s).get idx = s.get idx hidx1
@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastExtract.go_get {α : Type} [Hashable α] [DecidableEq α] {w newWidth : Nat} (aig : Std.Sat.AIG α) (input : aig.RefVec w) (lo curr : Nat) (hcurr : curr newWidth) (falseRef : aig.Ref) (s : aig.RefVec curr) (idx : Nat) (hidx1 : idx < newWidth) :
curr idx(Std.Tactic.BVDecide.BVExpr.bitblast.blastExtract.go input lo falseRef curr hcurr s).get idx hidx1 = input.getD (lo + idx) falseRef
@[simp]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.denote_blastExtract {α : Type} [Hashable α] [DecidableEq α] {newWidth : Nat} (aig : Std.Sat.AIG α) (target : Std.Tactic.BVDecide.BVExpr.bitblast.ExtractTarget aig newWidth) (assign : αBool) (idx : Nat) (hidx : idx < newWidth) :
assign, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.blastExtract aig target).aig, ref := (Std.Tactic.BVDecide.BVExpr.bitblast.blastExtract aig target).vec.get idx hidx } = if h : target.start + idx < target.w then assign, { aig := aig, ref := target.vec.get (target.start + idx) h } else false