rw [
  Nat.mod_eq_of_lt (trans (Nat.le_add_right (toNat b) (toNat c)) h),
  Nat.mod_eq_of_lt (trans (Nat.le_add_left (toNat c) (toNat b)) h),
  Nat.mod_eq_of_lt (trans h (Nat.exp_lt_pow _ (by decide))),
  Nat.mod_eq_of_lt h,
  Nat.mod_mul_mod,
  Nat.mul_assoc (toNat a),
  Nat.pow_add
]
case a
α : Type
inst✝¹ : (n : Nat) → OfNat α n
inst✝ : UInt α
a b c : α
h : toNat b + toNat c < length α
⊢ toNat a * 2 ^ (toNat b % length α) % 2 ^ length α * 2 ^ (toNat c % length α) % 2 ^ length α =
    toNat a * 2 ^ ((toNat b + toNat c) % 2 ^ length α % length α) % 2 ^ length α
no goals