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

Proof steps:
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
⊢ o.derivBFamily f = enumOrd (⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi))
state_after: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
⊢ StrictMono (o.derivBFamily f) ∧ Set.range (o.derivBFamily f) = ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi)
tactic: rw [← eq_enumOrd _ (fp_bfamily_unbounded.{u, v} H)]
state_before: o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
⊢ StrictMono (o.derivBFamily f) ∧ Set.range (o.derivBFamily f) = ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi)
state_after: case right
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
⊢ Set.range (o.derivBFamily f) = ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi)
tactic: use (derivBFamily_isNormal f).strictMono
state_before: case right
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
⊢ Set.range (o.derivBFamily f) = ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi)
state_after: case right
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
⊢ (∀ (a : Ordinal.{max u v}), o.derivBFamily f a ∈ ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi)) ∧
    ∀ b ∈ ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi), ∃ a, o.derivBFamily f a = b
tactic: rw [Set.range_eq_iff]
state_before: case right
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
⊢ (∀ (a : Ordinal.{max u v}), o.derivBFamily f a ∈ ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi)) ∧
    ∀ b ∈ ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi), ∃ a, o.derivBFamily f a = b
state_after: case right
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
ha : a ∈ ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi)
⊢ ∃ a_1, o.derivBFamily f a_1 = a
tactic: refine ⟨fun a => Set.mem_iInter₂.2 fun i hi => derivBFamily_fp (H i hi) a, fun a ha => ?_⟩
state_before: case right
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
ha : a ∈ ⋂ i, ⋂ (hi : i < o), fixedPoints (f i hi)
⊢ ∃ a_1, o.derivBFamily f a_1 = a
state_after: case right
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
ha : ∀ (i : Ordinal.{u}) (j : i < o), a ∈ fixedPoints (f i j)
⊢ ∃ a_1, o.derivBFamily f a_1 = a
tactic: rw [Set.mem_iInter₂] at ha
state_before: case right
o : Ordinal.{u}
f : (b : Ordinal.{u}) → b < o → Ordinal.{max u v} → Ordinal.{max u v}
H : ∀ (i : Ordinal.{u}) (hi : i < o), IsNormal (f i hi)
a : Ordinal.{max u v}
ha : ∀ (i : Ordinal.{u}) (j : i < o), a ∈ fixedPoints (f i j)
⊢ ∃ a_1, o.derivBFamily f a_1 = a
state_after: no goals
tactic: rwa [← fp_iff_derivBFamily H]