Theorem: LO.FirstOrder.Arith.Model.Exponential.ext_append_of_lt (Arithmetization/ISigmaZero/Exponential/Exp.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
i j : M
hi : PPow2 i
hj : PPow2 j
hij : i < j
X z : M
⊢ ext i (append j X z) = ext i X
Tactic:
have : i^2 ∣ j := Pow2.dvd_of_le hi.pow2.sq hj.pow2 (PPow2.sq_le_of_lt hi hj hij)
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
i j : M
hi : PPow2 i
hj : PPow2 j
hij : i < j
X z : M
this : i ^ 2 ∣ j
⊢ ext i (append j X z) = ext i X

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
i j : M
hi : PPow2 i
hj : PPow2 j
hij : i < j
X z : M
this : i ^ 2 ∣ j
⊢ ext i (append j X z) = ext i X
Tactic:
calc
  ext i (append j X z) = ext i ((X % j) + z * j)       := rfl
  _                    = ext i (X % j)                 := ext_add_of_dvd_sq_right hi.pos (Dvd.dvd.mul_left this z)
  _                    = ext i (j * (X / j) + (X % j)) := by rw [add_comm]; refine Eq.symm <| ext_add_of_dvd_sq_right hi.pos (Dvd.dvd.mul_right this _)
  _                    = ext i X                         := by simp [div_add_mod]
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
i j : M
hi : PPow2 i
hj : PPow2 j
hij : i < j
X z : M
this : i ^ 2 ∣ j
⊢ ext i (X % j) = ext i (j * (X / j) + X % j)
Tactic:
rw [add_comm]
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
i j : M
hi : PPow2 i
hj : PPow2 j
hij : i < j
X z : M
this : i ^ 2 ∣ j
⊢ ext i (X % j) = ext i (X % j + j * (X / j))

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
i j : M
hi : PPow2 i
hj : PPow2 j
hij : i < j
X z : M
this : i ^ 2 ∣ j
⊢ ext i (X % j) = ext i (X % j + j * (X / j))
Tactic:
refine Eq.symm <| ext_add_of_dvd_sq_right hi.pos (Dvd.dvd.mul_right this _)
State after:
no goals

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
i j : M
hi : PPow2 i
hj : PPow2 j
hij : i < j
X z : M
this : i ^ 2 ∣ j
⊢ ext i (j * (X / j) + X % j) = ext i X
Tactic:
simp [div_add_mod]
State after:
no goals