α : Type ?u.97233
β : Type ?u.97236
γ : Type ?u.97239
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
C : Ordinal → Sort u_2
o : Ordinal
H₁ : C 0
H₂ : (o : Ordinal) → C o → C (succ o)
H₃ : (o : Ordinal) → IsLimit o → ((o' : Ordinal) → o' < o → C o') → C o
h : IsLimit o
⊢ (H₃ o (_ : o ≠ 0 ∧ ∀ (a : Ordinal), a < o → succ a < o) fun y x =>
      WellFounded.fix lt_wf
        (fun o IH =>
          if o0 : o = 0 then Eq.mpr (_ : C o = C 0) H₁
          else
            if h : ∃ a, o = succ a then
              Eq.mpr (_ : C o = C (succ (pred o))) (H₂ (pred o) (IH (pred o) (_ : pred o < o)))
            else H₃ o (_ : o ≠ 0 ∧ ∀ (a : Ordinal), a < o → succ a < o) IH)
        y) =
    H₃ o h fun x _h => limitRecOn x H₁ H₂ H₃
α : Type ?u.97233
β : Type ?u.97236
γ : Type ?u.97239
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
C : Ordinal → Sort u_2
o : Ordinal
H₁ : C 0
H₂ : (o : Ordinal) → C o → C (succ o)
H₃ : (o : Ordinal) → IsLimit o → ((o' : Ordinal) → o' < o → C o') → C o
h : IsLimit o
⊢ limitRecOn o H₁ H₂ H₃ = H₃ o h fun x _h => limitRecOn x H₁ H₂ H₃
rw [limitRecOn, lt_wf.fix_eq, dif_neg h.1, dif_neg (not_succ_of_isLimit h)]
no goals
α : Type ?u.97233
β : Type ?u.97236
γ : Type ?u.97239
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
C : Ordinal → Sort u_2
o : Ordinal
H₁ : C 0
H₂ : (o : Ordinal) → C o → C (succ o)
H₃ : (o : Ordinal) → IsLimit o → ((o' : Ordinal) → o' < o → C o') → C o
h : IsLimit o
⊢ (H₃ o (_ : o ≠ 0 ∧ ∀ (a : Ordinal), a < o → succ a < o) fun y x =>
      WellFounded.fix lt_wf
        (fun o IH =>
          if o0 : o = 0 then Eq.mpr (_ : C o = C 0) H₁
          else
            if h : ∃ a, o = succ a then
              Eq.mpr (_ : C o = C (succ (pred o))) (H₂ (pred o) (IH (pred o) (_ : pred o < o)))
            else H₃ o (_ : o ≠ 0 ∧ ∀ (a : Ordinal), a < o → succ a < o) IH)
        y) =
    H₃ o h fun x _h => limitRecOn x H₁ H₂ H₃
rfl