Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 1400:1c7b0a040d9c
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 28 Jun 2023 14:02:57 +0900 |
parents | 59346935f8a4 |
children | 34f72406fcfd |
files | src/cardinal.agda |
diffstat | 1 files changed, 144 insertions(+), 141 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cardinal.agda Wed Jun 28 08:56:28 2023 +0900 +++ b/src/cardinal.agda Wed Jun 28 14:02:57 2023 +0900 @@ -122,166 +122,169 @@ Bernstein : {a b : Ordinal } → Injection a b → Injection b a → OrdBijection a b -Bernstein {a} {b} iab iba = be00 where - be05 : {a b : Ordinal } → a o< b → Injection a b → Injection b a → ⊥ - be05 {a} {b} a<b iab iba = TransFinite0 {λ x → (b : Ordinal) → x o< b → Injection x b → Injection b x → ⊥ } - ind a b a<b iab iba where - ind :(x : Ordinal) → - ((y : Ordinal) → y o< x → (b : Ordinal) → y o< b → Injection y b → Injection b y → ⊥ ) → - (b : Ordinal) → x o< b → Injection x b → Injection b x → ⊥ - ind a prev b x<b (f @ record { i→ = fab ; iB = b∋fab ; inject = fab-inject }) - ( g @ record { i→ = fba ; iB = a∋fba ; inject = fba-inject })= ? where - - gf : Injection a a - gf = record { i→ = λ x ax → fba (fab x ax) (b∋fab x ax) ; iB = λ x ax → a∋fba _ (b∋fab x ax) - ; inject = λ x y ax ay eq → fab-inject _ _ ax ay ( fba-inject _ _ (b∋fab _ ax) (b∋fab _ ay) eq) } +Bernstein {a} {b} (f @ record { i→ = fab ; iB = b∋fab ; inject = fab-inject }) ( g @ record { i→ = fba ; iB = a∋fba ; inject = fba-inject }) + = record { fun← = ? + ; fun→ = ? + ; funB = ? + ; funA = ? + ; fiso← = ? + ; fiso→ = ? } + where + gf : Injection a a + gf = record { i→ = λ x ax → fba (fab x ax) (b∋fab x ax) ; iB = λ x ax → a∋fba _ (b∋fab x ax) + ; inject = λ x y ax ay eq → fab-inject _ _ ax ay ( fba-inject _ _ (b∋fab _ ax) (b∋fab _ ay) eq) } - data gfImage : (i : ℕ) (x : Ordinal) → Set n where - a-g : {x : Ordinal} → (ax : odef (* a) x ) → (¬ib : ¬ ( IsImage b a g x )) → gfImage 0 x - next-gf : {x y : Ordinal} → {i : ℕ} → (gfiy : gfImage i y )→ (ix : IsImage a a gf x) → gfImage (suc i) x + data gfImage : (i : ℕ) (x : Ordinal) → Set n where + a-g : {x : Ordinal} → (ax : odef (* a) x ) → (¬ib : ¬ ( IsImage b a g x )) → gfImage 0 x + next-gf : {x : Ordinal} → {i : ℕ} → (ix : IsImage a a gf x) → (gfiy : gfImage i (IsImage.y ix) ) → gfImage (suc i) x - a∋gfImage : (i : ℕ) → {x : Ordinal } → gfImage i x → odef (* a) x - a∋gfImage 0 {x} (a-g ax ¬ib) = ax - a∋gfImage (suc i) {x} (next-gf lt record { y = y ; ay = ay ; x=fy = x=fy }) = subst (λ k → odef (* a) k ) (sym x=fy) (a∋fba _ (b∋fab y ay) ) + a∋gfImage : (i : ℕ) → {x : Ordinal } → gfImage i x → odef (* a) x + a∋gfImage 0 {x} (a-g ax ¬ib) = ax + a∋gfImage (suc i) {x} (next-gf record { y = y ; ay = ay ; x=fy = x=fy } lt ) = subst (λ k → odef (* a) k ) (sym x=fy) (a∋fba _ (b∋fab y ay) ) - C : ℕ → HOD -- Image {& (C i)} {a} (gf i) does not work - C i = record { od = record { def = gfImage i } ; odmax = & (* a) ; <odmax = λ lt → odef< (a∋gfImage i lt) } + C : ℕ → HOD -- Image {& (C i)} {a} (gf i) does not work + C i = record { od = record { def = gfImage i } ; odmax = & (* a) ; <odmax = λ lt → odef< (a∋gfImage i lt) } - record CN (x : Ordinal) : Set n where - field - i : ℕ - gfix : gfImage i x + record CN (x : Ordinal) : Set n where + field + i : ℕ + gfix : gfImage i x - UC : HOD - UC = record { od = record { def = λ x → CN x } ; odmax = & (* a) ; <odmax = λ lt → odef< (a∋gfImage (CN.i lt) (CN.gfix lt)) } + UC : HOD + UC = record { od = record { def = λ x → CN x } ; odmax = & (* a) ; <odmax = λ lt → odef< (a∋gfImage (CN.i lt) (CN.gfix lt)) } - b-UC : HOD - b-UC = record { od = record { def = λ x → odef (* b) x ∧ (¬ CN x) } ; odmax = & (* b) ; <odmax = λ lt → odef< (proj1 lt) } - - -- UC ⊆ * a - -- f : UC → Image f UC is injection - -- g : Image f UC → UC is injection + b-UC : HOD + b-UC = record { od = record { def = λ x → odef (* b) x ∧ (¬ CN x) } ; odmax = & (* b) ; <odmax = λ lt → odef< (proj1 lt) } + + -- UC ⊆ * a + -- f : UC → Image f UC is injection + -- g : Image f UC → UC is injection - UC⊆a : * (& UC) ⊆ * a - UC⊆a {x} lt = a∋gfImage (CN.i be02) (CN.gfix be02) where - be02 : CN x - be02 = subst (λ k → odef k x) *iso lt + UC⊆a : * (& UC) ⊆ * a + UC⊆a {x} lt = a∋gfImage (CN.i be02) (CN.gfix be02) where + be02 : CN x + be02 = subst (λ k → odef k x) *iso lt - b-UC⊆b : * (& b-UC) ⊆ * b - b-UC⊆b {x} lt = proj1 ( subst (λ k → odef k x) *iso lt ) + b-UC⊆b : * (& b-UC) ⊆ * b + b-UC⊆b {x} lt = proj1 ( subst (λ k → odef k x) *iso lt ) - open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ ) - - fab-refl : {x : Ordinal } → {ax ax1 : odef (* a) x} → fab x ax ≡ fab x ax1 - fab-refl {x} {ax} {ax1} = cong (λ k → fab x k) ( HE.≅-to-≡ ( ∋-irr {* a} ax ax1 )) + open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ ) - fba-refl : {x : Ordinal } → {bx bx1 : odef (* b) x} → fba x bx ≡ fba x bx1 - fba-refl {x} {bx} {bx1} = cong (λ k → fba x k) ( HE.≅-to-≡ ( ∋-irr {* b} bx bx1 )) + fab-eq : {x y : Ordinal } → {ax : odef (* a) x} {ax1 : odef (* a) y} → x ≡ y → fab x ax ≡ fab y ax1 + fab-eq {x} {x} {ax} {ax1} refl = cong (λ k → fab x k) ( HE.≅-to-≡ ( ∋-irr {* a} ax ax1 )) - fab-eq : {x y : Ordinal } → {ax : odef (* a) x} {ax1 : odef (* a) y} → x ≡ y → fab x ax ≡ fab y ax1 - fab-eq {x} {x} {ax} {ax1} refl = cong (λ k → fab x k) ( HE.≅-to-≡ ( ∋-irr {* a} ax ax1 )) - - fba-eq : {x y : Ordinal } → {bx : odef (* b) x} {bx1 : odef (* b) y} → x ≡ y → fba x bx ≡ fba y bx1 - fba-eq {x} {x} {bx} {bx1} refl = cong (λ k → fba x k) ( HE.≅-to-≡ ( ∋-irr {* b} bx bx1 )) + fba-eq : {x y : Ordinal } → {bx : odef (* b) x} {bx1 : odef (* b) y} → x ≡ y → fba x bx ≡ fba y bx1 + fba-eq {x} {x} {bx} {bx1} refl = cong (λ k → fba x k) ( HE.≅-to-≡ ( ∋-irr {* b} bx bx1 )) - be10 : Injection (& b-UC) (& (Image (& b-UC) {a} (Injection-⊆ b-UC⊆b g) )) - be10 = record { i→ = be12 ; iB = be13 ; inject = be14 } where - be12 : (x : Ordinal) → odef (* (& b-UC)) x → Ordinal - be12 x lt = i→ g x (proj1 be02) where - be02 : odef (* b) x ∧ ( ¬ CN x ) - be02 = subst (λ k → odef k x) *iso lt - be13 : (x : Ordinal) (lt : odef (* (& b-UC)) x) → odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) (be12 x lt) - be13 x lt = subst (λ k → odef k (be12 x lt)) (sym *iso) record { y = x ; ay = subst (λ k → odef k x) (sym *iso) be02 ; x=fy = fba-refl } where - be02 : odef (* b) x ∧ ( ¬ CN x ) - be02 = subst (λ k → odef k x) *iso lt - be14 : (x y : Ordinal) (ltx : odef (* (& b-UC)) x) (lty : odef (* (& b-UC)) y) → be12 x ltx ≡ be12 y lty → x ≡ y - be14 x y ltx lty eq = inject g _ _ (proj1 (subst (λ k → odef k x) *iso ltx)) (proj1 (subst (λ k → odef k y) *iso lty)) eq + be10 : Injection (& b-UC) (& (Image (& b-UC) {a} (Injection-⊆ b-UC⊆b g) )) + be10 = record { i→ = be12 ; iB = be13 ; inject = be14 } where + be12 : (x : Ordinal) → odef (* (& b-UC)) x → Ordinal + be12 x lt = i→ g x (proj1 be02) where + be02 : odef (* b) x ∧ ( ¬ CN x ) + be02 = subst (λ k → odef k x) *iso lt + be13 : (x : Ordinal) (lt : odef (* (& b-UC)) x) → odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) (be12 x lt) + be13 x lt = subst (λ k → odef k (be12 x lt)) (sym *iso) record { y = x ; ay = subst (λ k → odef k x) (sym *iso) be02 ; x=fy = fba-eq refl } where + be02 : odef (* b) x ∧ ( ¬ CN x ) + be02 = subst (λ k → odef k x) *iso lt + be14 : (x y : Ordinal) (ltx : odef (* (& b-UC)) x) (lty : odef (* (& b-UC)) y) → be12 x ltx ≡ be12 y lty → x ≡ y + be14 x y ltx lty eq = inject g _ _ (proj1 (subst (λ k → odef k x) *iso ltx)) (proj1 (subst (λ k → odef k y) *iso lty)) eq - be11 : Injection (& (Image (& b-UC) {a} (Injection-⊆ b-UC⊆b g) )) (& b-UC) - be11 = record { i→ = be13 ; iB = be14 ; inject = be15 } where - be13 : (x : Ordinal) → odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x → Ordinal - be13 x lt with subst (λ k → odef k x) *iso lt - ... | record { y = y ; ay = ay ; x=fy = x=fy } = y -- g⁻¹ x=fy : x ≡ fba y (proj1 (subst (λ k → OD.def (od k) y) *iso ay)) - be14 : (x : Ordinal) (lt : odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x) → odef (* (& b-UC)) (be13 x lt) - be14 x lt with subst (λ k → odef k x) *iso lt - ... | record { y = y ; ay = ay ; x=fy = x=fy } = ay - be15 : (x y : Ordinal) (ltx : odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x) - (lty : odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) y) → - be13 x ltx ≡ be13 y lty → x ≡ y - be15 x y ltx lty eq with subst (λ k → odef k x) *iso ltx | subst (λ k → odef k y) *iso lty - ... | record { y = ix ; ay = aix ; x=fy = x=fix } | record { y = iy ; ay = aiy ; x=fy = x=fiy } - = trans x=fix (trans ( fba-eq eq ) (sym x=fiy ) ) - - b-UC-iso0 : (x : Ordinal ) → (cx : odef (* (& b-UC)) x ) → i→ be11 ( i→ be10 x cx ) (iB be10 x cx) ≡ x - b-UC-iso0 x cx with subst (λ k → odef k ( i→ be10 x cx ) ) *iso (iB be10 x cx) - ... | record { y = y ; ay = ay ; x=fy = x=fy } = inject g _ _ (proj1 be03) (proj1 be02) (sym x=fy) where - be02 : odef (* b) x ∧ ( ¬ CN x ) - be02 = subst (λ k → odef k x) *iso cx - be03 : odef (* b) y ∧ ( ¬ CN y ) - be03 = subst (λ k → odef k y) *iso ay + be11 : Injection (& (Image (& b-UC) {a} (Injection-⊆ b-UC⊆b g) )) (& b-UC) + be11 = record { i→ = be13 ; iB = be14 ; inject = be15 } where + be13 : (x : Ordinal) → odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x → Ordinal + be13 x lt with subst (λ k → odef k x) *iso lt + ... | record { y = y ; ay = ay ; x=fy = x=fy } = y -- g⁻¹ x=fy : x ≡ fba y (proj1 (subst (λ k → OD.def (od k) y) *iso ay)) + be14 : (x : Ordinal) (lt : odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x) → odef (* (& b-UC)) (be13 x lt) + be14 x lt with subst (λ k → odef k x) *iso lt + ... | record { y = y ; ay = ay ; x=fy = x=fy } = ay + be15 : (x y : Ordinal) (ltx : odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x) + (lty : odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) y) → + be13 x ltx ≡ be13 y lty → x ≡ y + be15 x y ltx lty eq with subst (λ k → odef k x) *iso ltx | subst (λ k → odef k y) *iso lty + ... | record { y = ix ; ay = aix ; x=fy = x=fix } | record { y = iy ; ay = aiy ; x=fy = x=fiy } + = trans x=fix (trans ( fba-eq eq ) (sym x=fiy ) ) + + b-UC-iso0 : (x : Ordinal ) → (cx : odef (* (& b-UC)) x ) → i→ be11 ( i→ be10 x cx ) (iB be10 x cx) ≡ x + b-UC-iso0 x cx with subst (λ k → odef k ( i→ be10 x cx ) ) *iso (iB be10 x cx) + ... | record { y = y ; ay = ay ; x=fy = x=fy } = inject g _ _ (proj1 be03) (proj1 be02) (sym x=fy) where + be02 : odef (* b) x ∧ ( ¬ CN x ) + be02 = subst (λ k → odef k x) *iso cx + be03 : odef (* b) y ∧ ( ¬ CN y ) + be03 = subst (λ k → odef k y) *iso ay - b-UC-iso1 : (x : Ordinal ) → (cx : odef (* (& (Image (& b-UC) {a} (Injection-⊆ b-UC⊆b g)))) x ) → i→ be10 ( i→ be11 x cx ) (iB be11 x cx) ≡ x - b-UC-iso1 x cx with subst (λ k → odef k x ) *iso cx - ... | record { y = y ; ay = ay ; x=fy = x=fy } = sym x=fy + b-UC-iso1 : (x : Ordinal ) → (cx : odef (* (& (Image (& b-UC) {a} (Injection-⊆ b-UC⊆b g)))) x ) → i→ be10 ( i→ be11 x cx ) (iB be11 x cx) ≡ x + b-UC-iso1 x cx with subst (λ k → odef k x ) *iso cx + ... | record { y = y ; ay = ay ; x=fy = x=fy } = sym x=fy - -- C n → f (C n) - fU : (x : Ordinal) → ( odef (* (& UC)) x) → Ordinal - fU x lt = be03 where - be02 : CN x - be02 = subst (λ k → odef k x) *iso lt - be03 : Ordinal - be03 with CN.i be02 | CN.gfix be02 - ... | zero | a-g {x} ax ¬ib = fab x ax - ... | suc i | next-gf gfiy record { y = y ; ay = ay ; x=fy = x=fy } - = fab x (subst (λ k → odef (* a) k) (sym x=fy) (a∋fba _ (b∋fab y ay) )) + -- C n → f (C n) + fU : (x : Ordinal) → ( odef (* (& UC)) x) → Ordinal + fU x lt = be03 where + be02 : CN x + be02 = subst (λ k → odef k x) *iso lt + be03 : Ordinal + be03 with CN.i be02 | CN.gfix be02 + ... | zero | a-g {x} ax ¬ib = fab x ax + ... | suc i | next-gf record { y = y ; ay = ay ; x=fy = x=fy } gfiy + = fab x (subst (λ k → odef (* a) k) (sym x=fy) (a∋fba _ (b∋fab y ay) )) - -- f (C n) → g (f (C n) ) ≡ C (suc i) - Uf : (x : Ordinal) → odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) x → Ordinal - Uf x lt with subst (λ k → odef k x ) *iso lt - ... | record { y = y ; ay = ay ; x=fy = x=fy } = y + -- f (C n) → g (f (C n) ) ≡ C (suc i) + Uf : (x : Ordinal) → odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) x → Ordinal + Uf x lt with subst (λ k → odef k x ) *iso lt + ... | record { y = y ; ay = ay ; x=fy = x=fy } = y - be04 : {x : Ordinal } → (cx : odef (* (& UC)) x) → odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) (fU x cx) - be04 {x} cx = subst (λ k → odef k (fU x cx) ) (sym *iso) be06 where - be02 : CN x - be02 = subst (λ k → odef k x) *iso cx - be06 : odef (Image (& UC) (Injection-⊆ UC⊆a f)) (fU x cx) - be06 with CN.i be02 | CN.gfix be02 - ... | zero | a-g ax ¬ib = record { y = x ; ay = subst (λ k → odef k x) (sym *iso) be02 ; x=fy = fab-refl } - ... | suc i | next-gf gfiy record { y = y ; ay = ay ; x=fy = x=fy } - = record { y = x ; ay = subst (λ k → odef k x) (sym *iso) be02 ; x=fy = fab-refl } + be04 : {x : Ordinal } → (cx : odef (* (& UC)) x) → odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) (fU x cx) + be04 {x} cx = subst (λ k → odef k (fU x cx) ) (sym *iso) be06 where + be02 : CN x + be02 = subst (λ k → odef k x) *iso cx + be06 : odef (Image (& UC) (Injection-⊆ UC⊆a f)) (fU x cx) + be06 with CN.i be02 | CN.gfix be02 + ... | zero | a-g ax ¬ib = record { y = x ; ay = subst (λ k → odef k x) (sym *iso) be02 ; x=fy = fab-eq refl } + ... | suc i | next-gf record { y = y ; ay = ay ; x=fy = x=fy } gfiy + = record { y = x ; ay = subst (λ k → odef k x) (sym *iso) be02 ; x=fy = fab-eq refl } + + UC-iso0 : (x : Ordinal ) → (cx : odef (* (& UC)) x ) → Uf ( fU x cx ) (be04 cx) ≡ x + UC-iso0 x cx = be03 where + be02 : CN x + be02 = subst (λ k → odef k x) *iso cx + be03 : Uf ( fU x cx ) (be04 cx) ≡ x + be03 with CN.i be02 | CN.gfix be02 | be04 cx + ... | zero | a-g ax ¬ib | cb with subst (λ k → odef k _ ) *iso cb | inspect (fU x) cx + ... | record { y = y ; ay = ay ; x=fy = x=fy } | record { eq = refl } = sym ( inject f _ _ ax (UC⊆a ay) x=fy ) + be03 | suc i | next-gf record { y = x1 ; ay = ax1 ; x=fy = x=fx1 } s | cb with + subst (λ k → odef k (fab x (subst (odef (* a)) (sym x=fx1) (a∋fba (fab x1 ax1) (b∋fab x1 ax1)))) ) *iso cb + ... | record { y = y ; ay = ay ; x=fy = x=fy } = sym ( inject f _ _ ax (UC⊆a ay) x=fy ) where + ax : odef (* a) x + ax = subst (λ k → odef (* a) k ) (sym x=fx1) ( a∋fba _ (b∋fab x1 ax1) ) - UC-iso0 : (x : Ordinal ) → (cx : odef (* (& UC)) x ) → Uf ( fU x cx ) (be04 cx) ≡ x - UC-iso0 x cx = be03 where - be02 : CN x - be02 = subst (λ k → odef k x) *iso cx - be03 : Uf ( fU x cx ) (be04 cx) ≡ x - be03 with CN.i be02 | CN.gfix be02 | be04 cx - ... | zero | a-g ax ¬ib | cb with subst (λ k → odef k _ ) *iso cb | inspect (fU x) cx - ... | record { y = y ; ay = ay ; x=fy = x=fy } | record { eq = refl } = sym ( inject f _ _ ax (UC⊆a ay) x=fy ) - be03 | suc i | next-gf s record { y = x1 ; ay = ax1 ; x=fy = x=fx1 } | cb with - subst (λ k → odef k (fab x (subst (odef (* a)) (sym x=fx1) (a∋fba (fab x1 ax1) (b∋fab x1 ax1)))) ) *iso cb - ... | record { y = y ; ay = ay ; x=fy = x=fy } = sym ( inject f _ _ ax (UC⊆a ay) x=fy ) where - ax : odef (* a) x - ax = subst (λ k → odef (* a) k ) (sym x=fx1) ( a∋fba _ (b∋fab x1 ax1) ) + be08 : {x : Ordinal } → (cx : odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) x) → odef (* (& UC)) (Uf x cx) + be08 {x} cx with subst (λ k → odef k x) *iso cx + ... | record { y = y ; ay = ay ; x=fy = x=fy } = ay + + UC-iso1 : (x : Ordinal ) → (cx : odef (* (& (Image (& UC) {b} (Injection-⊆ UC⊆a f)))) x ) → fU ( Uf x cx ) (be08 cx) ≡ x + UC-iso1 x cx = be14 where + be14 : fU ( Uf x cx ) (be08 cx) ≡ x + be14 with subst (λ k → odef k x) *iso cx + ... | record { y = y ; ay = ay ; x=fy = x=fy } with CN.i (subst (λ k → OD.def (od k) y) *iso ay) | CN.gfix (subst (λ k → OD.def (od k) y) *iso ay) + ... | 0 | a-g ax ¬ib = sym x=fy + ... | (suc i) | next-gf t ix = sym x=fy - be08 : {x : Ordinal } → (cx : odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) x) → odef (* (& UC)) (Uf x cx) - be08 {x} cx with subst (λ k → odef k x) *iso cx - ... | record { y = y ; ay = ay ; x=fy = x=fy } = ay - - UC-iso1 : (x : Ordinal ) → (cx : odef (* (& (Image (& UC) {b} (Injection-⊆ UC⊆a f)))) x ) → fU ( Uf x cx ) (be08 cx) ≡ x - UC-iso1 x cx = be14 where - be14 : fU ( Uf x cx ) (be08 cx) ≡ x - be14 with subst (λ k → odef k x) *iso cx - ... | record { y = y ; ay = ay ; x=fy = x=fy } with CN.i (subst (λ k → OD.def (od k) y) *iso ay) | CN.gfix (subst (λ k → OD.def (od k) y) *iso ay) - ... | 0 | a-g ax ¬ib = sym x=fy - ... | (suc i) | next-gf t ix = sym x=fy - - - be00 : OrdBijection a b - be00 with trio< a b - ... | tri< a ¬b ¬c = ⊥-elim ( be05 a iab iba ) - ... | tri≈ ¬a b ¬c = ordbij-refl b - ... | tri> ¬a ¬b c = ⊥-elim ( be05 c iba iab ) + Img∨ : (x : Ordinal) → odef (* b) x → odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) x ∨ odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x + Img∨ x bx = be20 where + be20 : odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) x ∨ odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x + be20 with ∨L\X {* a} {UC} (a∋fba x bx) + ... | case1 uc = case1 (subst (λ k → odef k x) (sym *iso) be21 ) where + be21 : odef (Image (& UC) (Injection-⊆ UC⊆a f)) x + be21 with CN.i uc | CN.gfix uc + ... | 0 | a-g ax ¬ib = ⊥-elim (¬ib record { y = x ; ay = bx ; x=fy = refl } ) + ... | suc i | next-gf {x1} {y1} record { y = y ; ay = ay ; x=fy = x=fy } t + = record { y = y ; ay = subst (λ k → odef k y) (sym *iso) be25 ; x=fy = trans be24 (fab-eq refl) } where + be24 : x ≡ fab y ay + be24 = inject g _ _ bx (b∋fab y ay) x=fy + be25 : odef UC y + be25 = record { i = i ; gfix = t } + be20 | case2 ⟪ agx , ncn ⟫ = case2 (subst (λ k → odef k x) (sym *iso) be21 ) where + be21 : odef (Image (& b-UC) (Injection-⊆ b-UC⊆b g)) x + be21 = record { y = ? ; ay = ? ; x=fy = ? } _c<_ : ( A B : HOD ) → Set n A c< B = ¬ ( Injection (& A) (& B) )