Theorem: LO.FirstOrder.Arith.Model.le_three_iff_eq_zero_or_one_or_two_or_three (Arithmetization/Vorspiel/Lemmata.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
⊢ a ≤ 3 → a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3
Tactic:
intro h
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
h : a ≤ 3
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
h : a ≤ 3
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3
Tactic:
rcases h with (rfl | lt)
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 ⊧ₘ* 𝐏𝐀⁻
b c : M
⊢ 3 = 0 ∨ 3 = 1 ∨ 3 = 2 ∨ 3 = 3

case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt : a < 3
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3

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 ⊧ₘ* 𝐏𝐀⁻
b c : M
⊢ 3 = 0 ∨ 3 = 1 ∨ 3 = 2 ∨ 3 = 3
Tactic:
simp
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 ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt : a < 3
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3
Tactic:
have : a ≤2 := by simpa [←le_iff_lt_succ, ←two_add_one_eq_three] using lt
State after:
case inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt : a < 3
this : a ≤ 2
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3

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 ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt : a < 3
this : a ≤ 2
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3
Tactic:
rcases this with (rfl| lt)
State after:
case inr.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
b c : M
lt : 2 < 3
⊢ 2 = 0 ∨ 2 = 1 ∨ 2 = 2 ∨ 2 = 3

case inr.inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt✝ : a < 3
lt : a < 2
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt : a < 3
⊢ a ≤ 2
Tactic:
simpa [←le_iff_lt_succ, ←two_add_one_eq_three] using lt
State after:
no goals

State before:
case inr.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
b c : M
lt : 2 < 3
⊢ 2 = 0 ∨ 2 = 1 ∨ 2 = 2 ∨ 2 = 3
Tactic:
simp
State after:
no goals

State before:
case inr.inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt✝ : a < 3
lt : a < 2
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3
Tactic:
rcases lt_two_iff_le_one.mp lt with (rfl | lt)
State after:
case inr.inr.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
b c : M
lt✝ : 1 < 3
lt : 1 < 2
⊢ 1 = 0 ∨ 1 = 1 ∨ 1 = 2 ∨ 1 = 3

case inr.inr.inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt✝¹ : a < 3
lt✝ : a < 2
lt : a < 1
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3

State before:
case inr.inr.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
b c : M
lt✝ : 1 < 3
lt : 1 < 2
⊢ 1 = 0 ∨ 1 = 1 ∨ 1 = 2 ∨ 1 = 3
Tactic:
simp
State after:
no goals

State before:
case inr.inr.inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt✝¹ : a < 3
lt✝ : a < 2
lt : a < 1
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3
Tactic:
simp [show a = 0 from by simpa using lt]
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 ⊧ₘ* 𝐏𝐀⁻
a b c : M
lt✝¹ : a < 3
lt✝ : a < 2
lt : a < 1
⊢ a = 0
Tactic:
simpa using lt
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 ⊧ₘ* 𝐏𝐀⁻
a b c : M
⊢ a = 0 ∨ a = 1 ∨ a = 2 ∨ a = 3 → a ≤ 3
Tactic:
rintro (rfl | rfl | rfl | rfl) <;> simp [one_le_two, ←two_add_one_eq_three]
State after:
no goals