Theorem: LO.FirstOrder.Arith.Model.Pow2.elim' (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
p : M
⊢ Pow2 p ↔ p = 1 ∨ 1 < p ∧ ∃ q, p = 2 * q ∧ Pow2 q
Tactic:
by_cases hp : 1 < p <;> simp [hp]
State after:
case pos
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
p : M
hp : 1 < p
⊢ Pow2 p ↔ p = 1 ∨ ∃ q, p = 2 * q ∧ Pow2 q

case neg
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
p : M
hp : ¬1 < p
⊢ Pow2 p ↔ p = 1

State before:
case pos
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
p : M
hp : 1 < p
⊢ Pow2 p ↔ p = 1 ∨ ∃ q, p = 2 * q ∧ Pow2 q
Tactic:
exact Pow2.elim
State after:
no goals

State before:
case neg
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
p : M
hp : ¬1 < p
⊢ Pow2 p ↔ p = 1
Tactic:
have : p = 0 ∨ p = 1 := le_one_iff_eq_zero_or_one.mp (show p ≤ 1 from by simpa using hp)
State after:
case neg
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
p : M
hp : ¬1 < p
this : p = 0 ∨ p = 1
⊢ Pow2 p ↔ p = 1

State before:
case neg
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈open
p : M
hp : ¬1 < p
this : p = 0 ∨ p = 1
⊢ Pow2 p ↔ p = 1
Tactic:
rcases this with (rfl | rfl) <;> simp
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
p : M
hp : ¬1 < p
⊢ p ≤ 1
Tactic:
simpa using hp
State after:
no goals