HepLean Documentation

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

This module contains the verification of the bitblaster for BitVec.replicate from Impl.Operations.Replicate.

@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastReplicate.go_get_aux {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Std.Sat.AIG α) (n curr : Nat) (hcurr : curr n) (input : aig.RefVec w) (s : aig.RefVec (w * curr)) (idx : Nat) (hidx : idx < w * curr) :
(Std.Tactic.BVDecide.BVExpr.bitblast.blastReplicate.go n input curr hcurr s).get idx = s.get idx hidx
@[irreducible]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.blastReplicate.go_get {α : Type} [Hashable α] [DecidableEq α] {w : Nat} (aig : Std.Sat.AIG α) (n curr : Nat) (hcurr : curr n) (input : aig.RefVec w) (s : aig.RefVec (w * curr)) (idx : Nat) (hidx1 : idx < w * n) :
w * curr idx(Std.Tactic.BVDecide.BVExpr.bitblast.blastReplicate.go n input curr hcurr s).get idx hidx1 = input.get (idx % w)
@[simp]
theorem Std.Tactic.BVDecide.BVExpr.bitblast.denote_blastReplicate {α : Type} [Hashable α] [DecidableEq α] {newWidth : Nat} (aig : Std.Sat.AIG α) (target : Std.Tactic.BVDecide.BVExpr.bitblast.ReplicateTarget aig newWidth) (assign : αBool) (idx : Nat) (hidx : idx < newWidth) :
assign, { aig := (Std.Tactic.BVDecide.BVExpr.bitblast.blastReplicate aig target).aig, ref := (Std.Tactic.BVDecide.BVExpr.bitblast.blastReplicate aig target).vec.get idx hidx } = assign, { aig := aig, ref := target.inner.get (idx % target.w) }