unfold blastRotateRight
α : Type
inst✝² : BEq α
inst✝¹ : Hashable α
inst✝ : DecidableEq α
w : Nat
aig : AIG α
target : aig.ShiftTarget w
assign : α → Bool
idx✝ : Nat
hidx✝ : idx✝ < w
⊢ ⟦{ aig := (blastRotateRight aig target).aig, ref := (blastRotateRight aig target).stream.getRef idx✝ hidx✝ },
      assign⟧ =
    if hidx2 : idx✝ < w - target.distance % w then
      ⟦{ aig := aig, ref := target.stream.getRef (target.distance % w + idx✝) ⋯ }, assign⟧
    else ⟦{ aig := aig, ref := target.stream.getRef (idx✝ - (w - 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 :=
          (match target with
            | { stream := input, distance := distance } =>
              { aig := aig, stream := blastRotateRight.go input distance 0 ⋯ RefStream.empty }).aig,
        ref :=
          (match target with
                | { stream := input, distance := distance } =>
                  { aig := aig, stream := blastRotateRight.go input distance 0 ⋯ RefStream.empty }).stream.getRef
            idx✝ hidx✝ },
      assign⟧ =
    if hidx2 : idx✝ < w - target.distance % w then
      ⟦{ aig := aig, ref := target.stream.getRef (target.distance % w + idx✝) ⋯ }, assign⟧
    else ⟦{ aig := aig, ref := target.stream.getRef (idx✝ - (w - target.distance % w)) ⋯ }, assign⟧