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

tactic: constructor <;> intro h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
⊢ (a + b).IsLimit ↔ b.IsLimit ∨ b = 0 ∧ a.IsLimit
state_after: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
⊢ b.IsLimit ∨ b = 0 ∧ a.IsLimit

case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b.IsLimit ∨ b = 0 ∧ a.IsLimit
⊢ (a + b).IsLimit

tactic: rcases h with (h | ⟨rfl, h⟩)
state_before: case mpr
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b.IsLimit ∨ b = 0 ∧ a.IsLimit
⊢ (a + b).IsLimit
state_after: case mpr.inl
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b.IsLimit
⊢ (a + b).IsLimit

case mpr.inr.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal.{u_4}
h : a.IsLimit
⊢ (a + 0).IsLimit

tactic: by_cases h' : b = 0
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
⊢ b.IsLimit ∨ b = 0 ∧ a.IsLimit
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : b = 0
⊢ b.IsLimit ∨ b = 0 ∧ a.IsLimit

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ b.IsLimit ∨ b = 0 ∧ a.IsLimit

tactic: left
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ b.IsLimit ∨ b = 0 ∧ a.IsLimit
state_after: case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ b.IsLimit

tactic: rw [← add_sub_cancel a b]
state_before: case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ b.IsLimit
state_after: case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ (a + b - a).IsLimit

tactic: apply sub_isLimit h
state_before: case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ (a + b - a).IsLimit
state_after: case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ a < a + b

tactic: suffices a + 0 < a + b by simpa only [add_zero] using this
state_before: case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ a < a + b
state_after: case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ a + 0 < a + b

tactic: rwa [add_lt_add_iff_left, Ordinal.pos_iff_ne_zero]
state_before: case neg.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
⊢ a + 0 < a + b
state_after: no goals

tactic: rw [h', add_zero] at h
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : b = 0
⊢ b.IsLimit ∨ b = 0 ∧ a.IsLimit
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : a.IsLimit
h' : b = 0
⊢ b.IsLimit ∨ b = 0 ∧ a.IsLimit

tactic: right
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : a.IsLimit
h' : b = 0
⊢ b.IsLimit ∨ b = 0 ∧ a.IsLimit
state_after: case pos.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : a.IsLimit
h' : b = 0
⊢ b = 0 ∧ a.IsLimit

tactic: exact ⟨h', h⟩
state_before: case pos.h
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : a.IsLimit
h' : b = 0
⊢ b = 0 ∧ a.IsLimit
state_after: no goals

tactic: simpa only [add_zero] using this
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : (a + b).IsLimit
h' : ¬b = 0
this : a + 0 < a + b
⊢ a < a + b
state_after: no goals

tactic: exact add_isLimit a h
state_before: case mpr.inl
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a b : Ordinal.{u_4}
h : b.IsLimit
⊢ (a + b).IsLimit
state_after: no goals

tactic: simpa only [add_zero]
state_before: case mpr.inr.intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
a : Ordinal.{u_4}
h : a.IsLimit
⊢ (a + 0).IsLimit
state_after: no goals