Theorem: Ordinal.isLimit_add_iff
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: constructor <;> intro h
state_before: α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
⊢ IsLimit (a + b) ↔ IsLimit b ∨ b = 0 ∧ IsLimit a

tactic: rcases h with (h | ⟨rfl, h⟩)
state_before: case mpr
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit b ∨ b = 0 ∧ IsLimit a
⊢ IsLimit (a + b)

tactic: exact add_isLimit a h
state_before: case mpr.inl
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit b
⊢ IsLimit (a + b)

case mpr.inr.intro
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal
h : IsLimit a
⊢ IsLimit (a + 0)

tactic: simpa only [add_zero]
state_before: case mpr.inr.intro
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal
h : IsLimit a
⊢ IsLimit (a + 0)

tactic: by_cases h' : b = 0
state_before: case mp
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit (a + b)
⊢ IsLimit b ∨ b = 0 ∧ IsLimit a

tactic: left
state_before: case neg
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit (a + b)
h' : ¬b = 0
⊢ IsLimit b ∨ b = 0 ∧ IsLimit a

tactic: rw [← add_sub_cancel a b]
state_before: case neg.h
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit (a + b)
h' : ¬b = 0
⊢ IsLimit b

tactic: apply sub_isLimit h
state_before: case neg.h
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit (a + b)
h' : ¬b = 0
⊢ IsLimit (a + b - a)

tactic: suffices : a + 0 < a + b
state_before: case neg.h
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit (a + b)
h' : ¬b = 0
⊢ a < a + b

tactic: simpa only [add_zero] using this
state_before: case neg.h
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit (a + b)
h' : ¬b = 0
this : a + 0 < a + b
⊢ a < a + b

case this
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit (a + b)
h' : ¬b = 0
⊢ a + 0 < a + b

tactic: rwa [add_lt_add_iff_left, Ordinal.pos_iff_ne_zero]
state_before: case this
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit (a + b)
h' : ¬b = 0
⊢ a + 0 < a + b

tactic: rw [h', add_zero] at h
state_before: case pos
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit (a + b)
h' : b = 0
⊢ IsLimit b ∨ b = 0 ∧ IsLimit a

tactic: right
state_before: case pos
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit a
h' : b = 0
⊢ IsLimit b ∨ b = 0 ∧ IsLimit a

tactic: exact ⟨h', h⟩
state_before: case pos.h
α : Type ?u.248176
β : Type ?u.248179
γ : Type ?u.248182
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal
h : IsLimit a
h' : b = 0
⊢ b = 0 ∧ IsLimit a