{-# OPTIONS --safe --warning=error --without-K #-} open import LogicalFormulae open import Orders.WellFounded.Definition open import Orders.WellFounded.Induction open import Orders.Partial.Definition open import Orders.Total.Definition open import Functions open import Agda.Primitive using (Level; lzero; lsuc; _⊔_) module Ordinals where record Ordinal {a b : _} : Set (lsuc a ⊔ lsuc b) where field A : Set a _<_ : Rel {a} {b} A wf : WellFounded _<_ succSet : {a b : _} → (o : Ordinal {a} {b}) → Set a succSet o = True || Ordinal.A o succComp : {a b : _} → (o : Ordinal {a} {b}) → Rel (succSet o) succComp o (inl record {}) y = False' succComp o (inr x) (inl record {}) = True' succComp o (inr x) (inr y) = Ordinal._<_ o x y private lemma' : {a b : _} → {o : Ordinal {a} {b}} → (x : Ordinal.A o) → Accessible (Ordinal._<_ o) x → Accessible (succComp o) (inr x) lemma' {o = o} = rec (Ordinal.wf o) _ ans where open Ordinal o ans : (x : A) → ((y : A) → y < x → Accessible _<_ y → Accessible (succComp o) (inr y)) → Accessible _<_ x → Accessible (succComp o) (inr x) ans x induction (access f) = access u where u : (y : succSet o) → succComp o y (inr x) → Accessible (succComp o) y u (inr y) y