Theorem: LO.FirstOrder.Arith.Model.union_graph (Arithmetization/ISigmaOne/HFS/Basic.lean)

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
⊢ u = s ∪ t → ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
Tactic:
rintro rfl
State after:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
s t : M
⊢ ∀ x < s ∪ t + s + t, x ∈ s ∪ t ↔ x ∈ s ∨ x ∈ t

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
s t : M
⊢ ∀ x < s ∪ t + s + t, x ∈ s ∪ t ↔ x ∈ s ∨ x ∈ t
Tactic:
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 ⊧ₘ* 𝐈𝚺₁
u s t : M
⊢ (∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t) → u = s ∪ t
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 ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
⊢ u = s ∪ t

State before:
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
⊢ u = s ∪ t
Tactic:
apply mem_ext
State after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
⊢ ∀ (i : M), i ∈ u ↔ i ∈ s ∪ t

State before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
⊢ ∀ (i : M), i ∈ u ↔ i ∈ s ∪ t
Tactic:
intro x
State after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
⊢ x ∈ u ↔ x ∈ s ∪ t

State before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
⊢ x ∈ u ↔ x ∈ s ∪ t
Tactic:
simp
State after:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
⊢ x ∈ u ↔ x ∈ s ∨ x ∈ t

State before:
case h
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
⊢ x ∈ u ↔ x ∈ s ∨ x ∈ t
Tactic:
constructor
State after:
case h.mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
⊢ x ∈ u → x ∈ s ∨ x ∈ t

case h.mpr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
⊢ x ∈ s ∨ x ∈ t → x ∈ u

State before:
case h.mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
⊢ x ∈ u → x ∈ s ∨ x ∈ t
Tactic:
intro hx
State after:
case h.mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
hx : x ∈ u
⊢ x ∈ s ∨ x ∈ t

State before:
case h.mp
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
hx : x ∈ u
⊢ x ∈ s ∨ x ∈ t
Tactic:
exact h x (lt_of_lt_of_le (lt_of_mem hx) (by simp [add_assoc])) |>.mp 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 ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
hx : x ∈ u
⊢ u ≤ u + s + t
Tactic:
simp [add_assoc]
State after:
no goals

State before:
case h.mpr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
⊢ x ∈ s ∨ x ∈ t → x ∈ u
Tactic:
rintro (hx | hx)
State after:
case h.mpr.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
hx : x ∈ s
⊢ x ∈ u

case h.mpr.inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
hx : x ∈ t
⊢ x ∈ u

State before:
case h.mpr.inl
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
hx : x ∈ s
⊢ x ∈ u
Tactic:
exact h x (lt_of_lt_of_le (lt_of_mem hx) (by simp )) |>.mpr (Or.inl 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 ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
hx : x ∈ s
⊢ s ≤ u + s + t
Tactic:
simp
State after:
no goals

State before:
case h.mpr.inr
M : Type u_1
inst✝⁵ : Zero M
inst✝⁴ : One M
inst✝³ : Add M
inst✝² : Mul M
inst✝¹ : LT M
inst✝ : M ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
hx : x ∈ t
⊢ x ∈ u
Tactic:
exact h x (lt_of_lt_of_le (lt_of_mem hx) (by simp )) |>.mpr (Or.inr 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 ⊧ₘ* 𝐈𝚺₁
u s t : M
h : ∀ x < u + s + t, x ∈ u ↔ x ∈ s ∨ x ∈ t
x : M
hx : x ∈ t
⊢ t ≤ u + s + t
Tactic:
simp
State after:
no goals