Theorem: Ordinal.derivFamily_fp
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: induction' o using limitRecOn with o _ o l IH
state_before: ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
⊢ f i (derivFamily f o) = derivFamily f o
state_after: case H₁
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
⊢ f i (derivFamily f 0) = derivFamily f 0

case H₂
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
a✝ : f i (derivFamily f o) = derivFamily f o
⊢ f i (derivFamily f (succ o)) = derivFamily f (succ o)

case H₃
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
l : o.IsLimit
IH : ∀ o' < o, f i (derivFamily f o') = derivFamily f o'
⊢ f i (derivFamily f o) = derivFamily f o

tactic: rw [derivFamily_zero]
state_before: case H₁
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
⊢ f i (derivFamily f 0) = derivFamily f 0
state_after: case H₁
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
⊢ f i (nfpFamily f 0) = nfpFamily f 0

tactic: exact nfpFamily_fp H 0
state_before: case H₁
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
⊢ f i (nfpFamily f 0) = nfpFamily f 0
state_after: no goals

tactic: rw [derivFamily_succ]
state_before: case H₂
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
a✝ : f i (derivFamily f o) = derivFamily f o
⊢ f i (derivFamily f (succ o)) = derivFamily f (succ o)
state_after: case H₂
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
a✝ : f i (derivFamily f o) = derivFamily f o
⊢ f i (nfpFamily f (succ (derivFamily f o))) = nfpFamily f (succ (derivFamily f o))

tactic: exact nfpFamily_fp H _
state_before: case H₂
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
a✝ : f i (derivFamily f o) = derivFamily f o
⊢ f i (nfpFamily f (succ (derivFamily f o))) = nfpFamily f (succ (derivFamily f o))
state_after: no goals

tactic: rw [derivFamily_limit _ l,
  IsNormal.bsup.{max u v, u, max u v} H (fun a _ => derivFamily f a) l.1]
state_before: case H₃
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
l : o.IsLimit
IH : ∀ o' < o, f i (derivFamily f o') = derivFamily f o'
⊢ f i (derivFamily f o) = derivFamily f o
state_after: case H₃
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
l : o.IsLimit
IH : ∀ o' < o, f i (derivFamily f o') = derivFamily f o'
⊢ (o.bsup fun a h => f i (derivFamily f a)) = o.bsup fun a x => derivFamily f a

tactic: refine eq_of_forall_ge_iff fun c => ?_
state_before: case H₃
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
l : o.IsLimit
IH : ∀ o' < o, f i (derivFamily f o') = derivFamily f o'
⊢ (o.bsup fun a h => f i (derivFamily f a)) = o.bsup fun a x => derivFamily f a
state_after: case H₃
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
l : o.IsLimit
IH : ∀ o' < o, f i (derivFamily f o') = derivFamily f o'
c : Ordinal.{max u v}
⊢ (o.bsup fun a h => f i (derivFamily f a)) ≤ c ↔ (o.bsup fun a x => derivFamily f a) ≤ c

tactic: simp (config := { contextual := true }) only [bsup_le_iff, IH]
state_before: case H₃
ι : Type u
f : ι → Ordinal.{max u v} → Ordinal.{max u v}
i : ι
H : IsNormal (f i)
o : Ordinal.{max u v}
l : o.IsLimit
IH : ∀ o' < o, f i (derivFamily f o') = derivFamily f o'
c : Ordinal.{max u v}
⊢ (o.bsup fun a h => f i (derivFamily f a)) ≤ c ↔ (o.bsup fun a x => derivFamily f a) ≤ c
state_after: no goals