Theorem: LO.FirstOrder.Arith.Model.eq_nat_of_lt_nat (Logic/FirstOrder/Arith/PeanoMinus.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
x : M
hx : x < ↑0
⊢ ∃ m, x = ↑m
Tactic:
simp[not_neg] at hx
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 ⊧ₘ* 𝐏𝐀⁻
n : ℕ
x : M
hx : x < ↑(n + 1)
⊢ ∃ m, x = ↑m
Tactic:
have : x ≤ n := by simpa[le_iff_lt_succ] using hx
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
n : ℕ
x : M
hx : x < ↑(n + 1)
this : x ≤ ↑n
⊢ ∃ m, x = ↑m

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
n : ℕ
x : M
hx : x < ↑(n + 1)
this : x ≤ ↑n
⊢ ∃ m, x = ↑m
Tactic:
rcases this with (rfl | hx)
State after:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
n : ℕ
hx : ↑n < ↑(n + 1)
⊢ ∃ m, ↑n = ↑m

case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
n : ℕ
x : M
hx✝ : x < ↑(n + 1)
hx : x < ↑n
⊢ ∃ m, x = ↑m

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
n : ℕ
x : M
hx : x < ↑(n + 1)
⊢ x ≤ ↑n
Tactic:
simpa[le_iff_lt_succ] using hx
State after:
no goals

State before:
case inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
n : ℕ
hx : ↑n < ↑(n + 1)
⊢ ∃ m, ↑n = ↑m
Tactic:
exact ⟨n, rfl⟩
State after:
no goals

State before:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
n : ℕ
x : M
hx✝ : x < ↑(n + 1)
hx : x < ↑n
⊢ ∃ m, x = ↑m
Tactic:
exact eq_nat_of_lt_nat hx
State after:
no goals