intros
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
w : Nat
aig : AIG α
target : aig.ShiftTarget w
assign : α → Bool
⊢ ∀ (idx : Nat) (hidx : idx < w),
    ⟦{ aig := (blastRotateLeft aig target).aig, ref := (blastRotateLeft aig target).stream.getRef idx hidx }, assign⟧ =
      if hidx2 : idx < target.distance % w then
        ⟦{ aig := aig, ref := target.stream.getRef (w - target.distance % w + idx) ⋯ }, assign⟧
      else ⟦{ aig := aig, ref := target.stream.getRef (idx - target.distance % w) ⋯ }, assign⟧
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
w : Nat
aig : AIG α
target : aig.ShiftTarget w
assign : α → Bool
idx✝ : Nat
hidx✝ : idx✝ < w
⊢ ⟦{ aig := (blastRotateLeft aig target).aig, ref := (blastRotateLeft aig target).stream.getRef idx✝ hidx✝ }, assign⟧ =
    if hidx2 : idx✝ < target.distance % w then
      ⟦{ aig := aig, ref := target.stream.getRef (w - target.distance % w + idx✝) ⋯ }, assign⟧
    else ⟦{ aig := aig, ref := target.stream.getRef (idx✝ - target.distance % w) ⋯ }, assign⟧