apply Nat.lt_of_lt_of_le
case h2
w idx w✝ : Nat
op : BVUnOp
expr : BVExpr w✝
ih :
  ∀ (aig : AIG BVBit) (h1 : idx < aig.decls.size) (h2 : idx < (go aig expr).val.aig.decls.size),
    (go aig expr).val.aig.decls[idx] = aig.decls[idx]
aig : AIG BVBit
h1 : idx < aig.decls.size
n✝ : Nat
h2 : idx < (go aig (un (BVUnOp.rotateLeft n✝) expr)).val.aig.decls.size
⊢ idx < (go aig expr).val.aig.decls.size
case h2.a
w idx w✝ : Nat
op : BVUnOp
expr : BVExpr w✝
ih :
  ∀ (aig : AIG BVBit) (h1 : idx < aig.decls.size) (h2 : idx < (go aig expr).val.aig.decls.size),
    (go aig expr).val.aig.decls[idx] = aig.decls[idx]
aig : AIG BVBit
h1 : idx < aig.decls.size
n✝ : Nat
h2 : idx < (go aig (un (BVUnOp.rotateLeft n✝) expr)).val.aig.decls.size
⊢ idx < ?h2.m

case h2.a
w idx w✝ : Nat
op : BVUnOp
expr : BVExpr w✝
ih :
  ∀ (aig : AIG BVBit) (h1 : idx < aig.decls.size) (h2 : idx < (go aig expr).val.aig.decls.size),
    (go aig expr).val.aig.decls[idx] = aig.decls[idx]
aig : AIG BVBit
h1 : idx < aig.decls.size
n✝ : Nat
h2 : idx < (go aig (un (BVUnOp.rotateLeft n✝) expr)).val.aig.decls.size
⊢ ?h2.m ≤ (go aig expr).val.aig.decls.size

case h2.m
w idx w✝ : Nat
op : BVUnOp
expr : BVExpr w✝
ih :
  ∀ (aig : AIG BVBit) (h1 : idx < aig.decls.size) (h2 : idx < (go aig expr).val.aig.decls.size),
    (go aig expr).val.aig.decls[idx] = aig.decls[idx]
aig : AIG BVBit
h1 : idx < aig.decls.size
n✝ : Nat
h2 : idx < (go aig (un (BVUnOp.rotateLeft n✝) expr)).val.aig.decls.size
⊢ Nat