Theorem: Ordinal.IsNormal.eq_iff_zero_and_succ
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp [h]
state_before: α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
h : f = g
⊢ f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)

tactic: apply a.limitRecOn
state_before: α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
x✝ : f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
h₁ : f 0 = g 0
h₂ : ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
a : Ordinal
⊢ f a = g a

tactic: assumption'
state_before: case H₁
α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
x✝ : f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
h₁ : f 0 = g 0
h₂ : ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
a : Ordinal
⊢ f 0 = g 0

case H₂
α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
x✝ : f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
h₁ : f 0 = g 0
h₂ : ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
a : Ordinal
⊢ ∀ (o : Ordinal), f o = g o → f (succ o) = g (succ o)

case H₃
α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
x✝ : f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
h₁ : f 0 = g 0
h₂ : ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
a : Ordinal
⊢ ∀ (o : Ordinal), IsLimit o → (∀ (o' : Ordinal), o' < o → f o' = g o') → f o = g o

tactic: intro o ho H
state_before: case H₃
α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
x✝ : f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
h₁ : f 0 = g 0
h₂ : ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
a : Ordinal
⊢ ∀ (o : Ordinal), IsLimit o → (∀ (o' : Ordinal), o' < o → f o' = g o') → f o = g o

tactic: rw [← IsNormal.bsup_eq.{u, u} hf ho, ← IsNormal.bsup_eq.{u, u} hg ho]
state_before: case H₃
α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
x✝ : f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
h₁ : f 0 = g 0
h₂ : ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
a o : Ordinal
ho : IsLimit o
H : ∀ (o' : Ordinal), o' < o → f o' = g o'
⊢ f o = g o

tactic: congr
state_before: case H₃
α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
x✝ : f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
h₁ : f 0 = g 0
h₂ : ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
a o : Ordinal
ho : IsLimit o
H : ∀ (o' : Ordinal), o' < o → f o' = g o'
⊢ (Ordinal.bsup o fun x x_1 => f x) = Ordinal.bsup o fun x x_1 => g x

tactic: ext (b hb)
state_before: case H₃.e_f
α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
x✝ : f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
h₁ : f 0 = g 0
h₂ : ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
a o : Ordinal
ho : IsLimit o
H : ∀ (o' : Ordinal), o' < o → f o' = g o'
⊢ (fun x x_1 => f x) = fun x x_1 => g x

tactic: exact H b hb
state_before: case H₃.e_f.h.h
α : Type ?u.371664
β : Type ?u.371667
γ : Type ?u.371670
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
f g : Ordinal → Ordinal
hf : IsNormal f
hg : IsNormal g
x✝ : f 0 = g 0 ∧ ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
h₁ : f 0 = g 0
h₂ : ∀ (a : Ordinal), f a = g a → f (succ a) = g (succ a)
a o : Ordinal
ho : IsLimit o
H : ∀ (o' : Ordinal), o' < o → f o' = g o'
b : Ordinal
hb : b < o
⊢ f b = g b