Theorem: LO.FirstOrder.Arith.Model.Pow2.of_dvd (Arithmetization/ISigmaZero/Exponential/Pow2.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
⊢ Pow2 a → Pow2 b
Tactic:
intro ha
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
⊢ Pow2 b

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
⊢ Pow2 b
Tactic:
have : 0 < b := by
  by_contra e
  have : a = 0 := by simpa [show b = 0 from by simpa using e] using h
  rcases this with rfl
  simpa using ha.pos
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
this : 0 < b
⊢ Pow2 b

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
this : 0 < b
⊢ Pow2 b
Tactic:
exact ⟨this, fun r hr ltr hb ↦
  ha.dvd (show r ≤ a from le_trans hr (le_of_dvd ha.pos h)) ltr (dvd_trans hb h)⟩
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 ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
⊢ 0 < b
Tactic:
by_contra e
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
e : ¬0 < b
⊢ False

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
e : ¬0 < b
⊢ False
Tactic:
have : a = 0 := by simpa [show b = 0 from by simpa using e] using h
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
e : ¬0 < b
this : a = 0
⊢ False

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
e : ¬0 < b
this : a = 0
⊢ False
Tactic:
rcases this with rfl
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
b : M
e : ¬0 < b
h : b ∣ 0
ha : Pow2 0
⊢ False

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
b : M
e : ¬0 < b
h : b ∣ 0
ha : Pow2 0
⊢ False
Tactic:
simpa using ha.pos
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 ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
e : ¬0 < b
⊢ a = 0
Tactic:
simpa [show b = 0 from by simpa using e] using h
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 ⊧ₘ* 𝐈open
a b : M
h : b ∣ a
ha : Pow2 a
e : ¬0 < b
⊢ b = 0
Tactic:
simpa using e
State after:
no goals