have hsqj : √j < i^2 := lt_of_mul_lt_mul_left (a := 2) (by calc
  2 * √j ≤ (√j)^2  := two_mul_le_sq
                          (one_lt_iff_two_le.mp <| one_lt_sq_iff.mp <| by
                            rw [ej]; exact lt_trans _ _ _ one_lt_two lt2)
  _      ≤ j       := by simp
  _      ≤ m + i^2 := hj
  _      < 2 * i^2 := by simp [two_mul, hmi])
case mpr.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
i : M
ppi : PPow2 i
m : M
hm : m < 2 * i
sppm : SPPow2 m
hi : LenBit i m
j : M
hj : j ≤ m + i ^ 2
pj : Pow2 j
lt2 : 2 < j
hsqi : i < i ^ 2
hmi : m < i ^ 2
ej : (√j) ^ 2 = j
lb : LenBit (√j) (m + i ^ 2)
⊢ j = i ^ 2 ∨ LenBit j m
case mpr.intro
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚫₀
i : M
ppi : PPow2 i
m : M
hm : m < 2 * i
sppm : SPPow2 m
hi : LenBit i m
j : M
hj : j ≤ m + i ^ 2
pj : Pow2 j
lt2 : 2 < j
hsqi : i < i ^ 2
hmi : m < i ^ 2
ej : (√j) ^ 2 = j
lb : LenBit (√j) (m + i ^ 2)
hsqj : √j < i ^ 2
⊢ j = i ^ 2 ∨ LenBit j m