Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 975:1e88cce74699
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Nov 2022 11:26:59 +0900 |
parents | 9bfe54cd9fb9 |
children | 8fe873f0c88e |
files | src/zorn.agda |
diffstat | 1 files changed, 49 insertions(+), 232 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Mon Nov 07 22:01:54 2022 +0900 +++ b/src/zorn.agda Tue Nov 08 11:26:59 2022 +0900 @@ -418,7 +418,7 @@ minsup : {x : Ordinal } → x o≤ z → MinSUP A (UnionCF A f mf ay supf x) supf-is-minsup : {x : Ordinal } → (x≤z : x o≤ z) → supf x ≡ MinSUP.sup ( minsup x≤z ) - csupf : {b : Ordinal } → supf b o< z → odef (UnionCF A f mf ay supf z) (supf b) -- supf z is not an element of this chain + csupf : {b : Ordinal } → supf b o< supf z → odef (UnionCF A f mf ay supf z) (supf b) -- supf z is not an element of this chain chain : HOD chain = UnionCF A f mf ay supf z @@ -666,7 +666,7 @@ s<z : s o< & A s<z = ordtrans s<b b<z zc04 : odef (UnionCF A f mf ay supf (& A)) (supf s) - zc04 = ZChain.csupf zc (z09 (ZChain.asupf zc)) + zc04 = ZChain.csupf zc (ordtrans<-≤ ss<sb (ZChain.supf-mono zc (o<→≤ b<z) )) zc05 : odef (UnionCF A f mf ay supf b) (supf s) zc05 with zc04 ... | ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫ @@ -896,7 +896,7 @@ zc41 : ZChain A f mf ay x zc41 with zc43 x zc41 | (case2 sp≤x ) = record { supf = supf1 ; sup=u = ? ; asupf = ? ; supf-mono = supf1-mono ; supf-< = ? - ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; csupf = csupf1 } where + ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; csupf = ? } where -- supf0 px is included in the chain of sp1 -- supf0 px ≡ px ∧ supf0 px o< sp1 → ( UnionCF A f mf ay supf0 px ∪ FClosure (supf0 px) ) ≡ UnionCF supf1 x -- else UnionCF A f mf ay supf0 px ≡ UnionCF supf1 x @@ -1006,7 +1006,7 @@ ... | tri< sf0px<px ¬b ¬c = cp3 ( subst ( λ k → FClosure A f k z) (trans (trans (sf1=sf0 u<x0) eq) (ZChain.supfmax zc px<x) ) fc) where cp3 : {z : Ordinal } → FClosure A f (supf0 px) z → odef (UnionCF A f mf ay supf0 x) z - cp3 (init uz refl) = chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o<→≤ px<x) (ZChain.csupf zc sf0px<px) + cp3 (init uz refl) = chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o<→≤ px<x) (ZChain.csupf zc ?) -- sf0px<px) cp3 (fsuc uz fc) = ZChain.f-next zc (cp3 fc) ... | tri≈ ¬a b ¬c = ⊥-elim (ne b) ... | tri> ¬a ¬b px<sf0px = ⊥-elim (¬p<x<op ⟪ cp5 , cp4 ⟫ ) where @@ -1127,7 +1127,7 @@ zc17 : {s : Ordinal} {z1 : Ordinal} → supf1 s o< supf1 px → FClosure A f (supf1 s) z1 → (z1 ≡ supf1 px) ∨ (z1 << supf1 px) zc17 {s} {z1} ss<spx fc = subst (λ k → (z1 ≡ k) ∨ (z1 << k )) mins-is-spx - (MinSUP.x≤sup mins (csupf17 (fcup fc (o<→≤ s<px) )) ) where + (MinSUP.x≤sup mins (zc28 (fcup fc (o<→≤ s<px) )) ) where mins : MinSUP A (UnionCF A f mf ay supf0 px) mins = ZChain.minsup zc o≤-refl mins-is-spx : MinSUP.sup mins ≡ supf1 px @@ -1136,9 +1136,9 @@ s<px = supf-inject0 supf1-mono ss<spx sf<px : supf0 s o< px sf<px = subst₂ (λ j k → j o< k ) (sf1=sf0 (o<→≤ s<px)) (trans (sf1=sf0 o≤-refl) (sfpx=px)) ss<spx - csupf17 : {z1 : Ordinal } → FClosure A f (supf0 s) z1 → odef (UnionCF A f mf ay supf0 px) z1 - csupf17 (init as refl ) = ZChain.csupf zc sf<px - csupf17 (fsuc x fc) = ZChain.f-next zc (csupf17 fc) + zc28 : {z1 : Ordinal } → FClosure A f (supf0 s) z1 → odef (UnionCF A f mf ay supf0 px) z1 + zc28 (init as refl ) = ZChain.csupf zc ? -- sf<px + zc28 (fsuc x fc) = ZChain.f-next zc (zc28 fc) record STMP {z : Ordinal} (z≤x : z o≤ x ) : Set (Level.suc n) where @@ -1181,63 +1181,13 @@ fcy<sup {z} fc with trio< z1 px ... | tri< a ¬b ¬c = ZChain.fcy<sup zc (o<→≤ a) fc ... | tri≈ ¬a b ¬c = ZChain.fcy<sup zc (o≤-refl0 b) fc - ... | tri> ¬a ¬b c = MinSUP.x≤sup sup1 (case1 ⟪ A∋fc _ fc , ch-init fc ⟫) + ... | tri> ¬a ¬b c = MinSUP.x≤sup sup1 (case1 ⟪ A∋fc _ f mf fc , ch-init fc ⟫) order : {s w : Ordinal} → (lt : supf1 s o< supf1 z1) → FClosure A f (supf1 s ) w → (w ≡ supf1 z1 ) ∨ ( w << supf1 z1 ) - order {s} {z1} lt fc with trio< z1 px - ... | tri< a ¬b ¬c = ? + order {s} {w} lt fc with trio< z1 px + ... | tri< a ¬b ¬c = subst (λ k → w <= k ) ? ( MinSUP.x≤sup (ZChain.minsup zc ?) ? ) ... | tri≈ ¬a b ¬c = ? - ... | tri> ¬a ¬b c = MinSUP.x≤sup sup1 ? + ... | tri> ¬a ¬b c = <=-trans ( MinSUP.x≤sup sup1 ?) ? - csupf1 : {z1 : Ordinal } → supf1 z1 o< x → odef (UnionCF A f mf ay supf1 x) (supf1 z1) - csupf1 {z1} sz1<x = csupf2 where - -- z1 o< px → supf1 z1 ≡ supf0 z1 - -- z1 ≡ px , supf0 px o< px .. px o< z1, x o≤ z1 ... supf1 z1 ≡ sp1 - -- z1 ≡ px , supf0 px ≡ px - psz1≤px : supf1 z1 o≤ px - psz1≤px = subst (λ k → supf1 z1 o< k ) (sym opx=x) sz1<x - csupf2 : odef (UnionCF A f mf ay supf1 x) (supf1 z1) - csupf2 with 3cases - ... | case2 (case2 p) with trio< z1 px | inspect supf1 z1 - ... | tri< a ¬b ¬c | record { eq = eq1 } with osuc-≡< psz1≤px - ... | case2 lt = zc12 (proj1 p) (proj2 p) (case1 cs03) where - cs03 : odef (UnionCF A f mf ay supf0 px) (supf0 z1) - cs03 = ZChain.csupf zc (subst (λ k → k o< px) (sf1=sf0 (o<→≤ a)) lt ) - ... | case1 sfz=px with osuc-≡< ( supf1-mono (o<→≤ a) ) - ... | case1 sfz=sfpx = zc12 (proj1 p) (proj2 p) (case2 (init (ZChain.asupf zc) cs04 )) where - cs04 : supf0 px ≡ supf0 z1 - cs04 = begin - supf0 px ≡⟨ sym (sf1=sf0 o≤-refl) ⟩ - supf1 px ≡⟨ sym sfz=sfpx ⟩ - supf1 z1 ≡⟨ sf1=sf0 (o<→≤ a) ⟩ - supf0 z1 ∎ where open ≡-Reasoning - ... | case2 sfz<sfpx = ⊥-elim ( ¬p<x<op ⟪ cs05 , cs06 ⟫ ) where - --- supf1 z1 ≡ px , z1 o< px , px ≡ supf0 z1 o< supf0 px o< x - cs05 : px o< supf0 px - cs05 = subst₂ ( λ j k → j o< k ) sfz=px (sf1=sf0 o≤-refl ) sfz<sfpx - cs06 : supf0 px o< osuc px - cs06 = subst₂ (λ j k → j o< k ) (sym (proj1 p)) (sym opx=x) px<x - csupf2 | case2 (case2 p) | tri≈ ¬a b ¬c | record { eq = eq1 } = zc12 (proj1 p) (proj2 p) - (case2 (init (ZChain.asupf zc) (cong supf0 (sym b)))) - csupf2 | case2 (case2 p) | tri> ¬a ¬b px<z1 | record { eq = eq1 } = ⊥-elim ( ¬p<x<op ⟪ cs08 , cs09 ⟫ ) where - cs08 : px o< sp1 - cs08 = subst (λ k → k o< sp1 ) (proj1 p) (proj2 p ) - cs09 : sp1 o< osuc px - cs09 = subst ( λ k → sp1 o< k ) (sym (Oprev.oprev=x op)) sz1<x - csupf2 | case2 (case1 p) with trio< (supf0 px) sp1 -- ¬ (supf0 px o< sp1 -- sp1 o≤ spuf0 px) - ... | tri< a ¬b ¬c = ⊥-elim (p a) - ... | tri≈ ¬a b ¬c = ? - ... | tri> ¬a ¬b c = ⊥-elim ( o≤> sfpx≤sp1 c ) - csupf2 | case1 p with trio< (supf0 px) px -- ¬ (supf0 px ≡ px ) - ... | tri< sf0px<px ¬b ¬c = ? where - cs10 : odef (UnionCF A f mf ay supf0 px) (supf0 px) - cs10 = ZChain.csupf zc sf0px<px - ... | tri≈ ¬a b ¬c = ⊥-elim (p b) - ... | tri> ¬a ¬b px<sf0px = ? where - cs11 : px o< z1 → odef (UnionCF A f mf ay supf1 x) (supf1 z1) - cs11 px<z1 = ⊥-elim ( ¬p<x<op ⟪ px<sf0px , subst₂ (λ j k → j o< k ) refl (sym (Oprev.oprev=x op)) - (ordtrans≤-< (subst (λ k → supf0 px o< k) (cong osuc (sym (sf1=sp1 px<z1 ))) sfpx≤sp1 ) sz1<x) ⟫ ) - cs12 : z1 o≤ px → odef (UnionCF A f mf ay supf1 x) (supf1 z1) - cs12 = ? zc41 | (case1 x<sp ) = record { supf = supf0 ; sup=u = ? ; asupf = ? ; supf-mono = ? ; supf-< = ? @@ -1591,35 +1541,44 @@ -- z04 : (nmx : ¬ Maximal A ) → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)) → ⊥ - z04 nmx zc = <-irr0 {* (cf nmx c)} {* c} - (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (MinSUP.asm msp1 )))) - (subst (λ k → odef A k) (sym &iso) (MinSUP.asm msp1) ) - (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc msp1 ss<sa ))) -- x ≡ f x ̄ - (proj1 (cf-is-<-monotonic nmx c (MinSUP.asm msp1 ))) where -- x < f x + z04 nmx zc = <-irr0 {* (cf nmx a)} {* a} + (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (MinSUP.asm asup )))) + (subst (λ k → odef A k) (sym &iso) (MinSUP.asm asup) ) + (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc asup sa<sa ))) -- x ≡ f x ̄ + (proj1 (cf-is-<-monotonic nmx a (MinSUP.asm asup ))) where -- x < f x supf = ZChain.supf zc - msp1 : MinSUP A (ZChain.chain zc) - msp1 = msp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc + asup : MinSUP A (ZChain.chain zc) + asup = msp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc + a : Ordinal + a = MinSUP.sup asup + a<A : a o< & A + a<A = ∈∧P→o< ⟪ MinSUP.asm asup , lift true ⟫ + + csup : MinSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf a) + csup = ZChain.minsup zc (o<→≤ a<A) c : Ordinal - c = MinSUP.sup msp1 - mc = c - mc<A : mc o< & A - mc<A = ∈∧P→o< ⟪ MinSUP.asm msp1 , lift true ⟫ - c=mc : c ≡ mc - c=mc = refl - z20 : mc << cf nmx mc - z20 = proj1 (cf-is-<-monotonic nmx mc (MinSUP.asm msp1) ) - asc : odef A (supf mc) - asc = ZChain.asupf zc - spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc ) - spd = ysup (cf nmx) (cf-is-≤-monotonic nmx) asc - d = MinSUP.sup spd + c = MinSUP.sup csup + ac : odef A c + ac = ? + sfc=c : supf a ≡ c + sfc=c = ZChain.supf-is-minsup zc (o<→≤ a<A) + c<A : c o< & A + c<A = ∈∧P→o< ⟪ MinSUP.asm csup , lift true ⟫ + + dsup : MinSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf c) + dsup = ZChain.minsup zc (o<→≤ c<A) + d : Ordinal + d = MinSUP.sup dsup + ad : odef A d + ad = ? + sfc=d : supf c ≡ d + sfc=d = ZChain.supf-is-minsup zc (o<→≤ c<A) d<A : d o< & A - d<A = ∈∧P→o< ⟪ MinSUP.asm spd , lift true ⟫ - msup : MinSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf d) - msup = ZChain.minsup zc (o<→≤ d<A) - sd=ms : supf d ≡ MinSUP.sup ( ZChain.minsup zc (o<→≤ d<A) ) - sd=ms = ZChain.supf-is-minsup zc (o<→≤ d<A) + d<A = ∈∧P→o< ⟪ MinSUP.asm dsup , lift true ⟫ + + zc40 : uchain (cf nmx) (cf-is-≤-monotonic nmx) ac ⊆' UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf d + zc40 = ? sc<<d : {mc : Ordinal } → (asc : odef A (supf mc)) → (spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc )) → supf mc << MinSUP.sup spd @@ -1644,152 +1603,10 @@ ... | case1 eq1 = case1 (cong (*) (trans (cong (cf nmx) (sym eq)) eq1) ) ... | case2 lt = case2 (subst (λ k → * k < * d1 ) (cong (cf nmx) eq) lt) - fsc<<d : {mc z : Ordinal } → (asc : odef A (supf mc)) → (spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc )) - → (fc : FClosure A (cf nmx) (supf mc) z) → z << MinSUP.sup spd - fsc<<d {mc} {z} asc spd fc = z25 where - d1 : Ordinal - d1 = MinSUP.sup spd -- supf d1 ≡ d - z24 : (z ≡ d1) ∨ ( z << d1 ) - z24 = MinSUP.x≤sup spd fc - -- - -- f ( f .. ( supf mc ) <= d1 - -- f d1 <= d1 - -- - z25 : z << d1 - z25 with z24 - ... | case2 lt = lt - ... | case1 eq = ⊥-elim ( <-irr z29 (proj1 (cf-is-<-monotonic nmx d1 (MinSUP.asm spd)) ) ) where - -- supf mc ≡ d1 - z32 : ((cf nmx z) ≡ d1) ∨ ( (cf nmx z) << d1 ) - z32 = MinSUP.x≤sup spd (fsuc _ fc) - z29 : (* (cf nmx d1) ≡ * d1) ∨ (* (cf nmx d1) < * d1) - z29 with z32 - ... | case1 eq1 = case1 (cong (*) (trans (cong (cf nmx) (sym eq)) eq1) ) - ... | case2 lt = case2 (subst (λ k → * k < * d1 ) (cong (cf nmx) eq) lt) - - smc<<d : supf mc << d - smc<<d = sc<<d asc spd - - sz<<c : {z : Ordinal } → z o< & A → supf z <= mc - sz<<c z<A = MinSUP.x≤sup msp1 (ZChain.csupf zc (z09 (ZChain.asupf zc) )) - - sc=c : supf mc ≡ mc - sc=c = ZChain.sup=u zc (MinSUP.asm msp1) (o<→≤ (∈∧P→o< ⟪ MinSUP.asm msp1 , lift true ⟫ )) ⟪ is-sup , not-hasprev ⟫ where - not-hasprev : ¬ HasPrev A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) (cf nmx) mc - not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-init fc ⟫ ; x=fy = x=fy } = ⊥-elim ( <-irr z31 z30 ) where - z30 : * mc < * (cf nmx mc) - z30 = proj1 (cf-is-<-monotonic nmx mc (MinSUP.asm msp1)) - z31 : ( * (cf nmx mc) ≡ * mc ) ∨ ( * (cf nmx mc) < * mc ) - z31 = <=to≤ ( MinSUP.x≤sup msp1 (subst (λ k → odef (ZChain.chain zc) (cf nmx k)) (sym x=fy) - ⟪ proj2 (cf-is-≤-monotonic nmx _ (proj2 (cf-is-≤-monotonic nmx _ ua1 ) )) , ch-init (fsuc _ (fsuc _ fc)) ⟫ )) - not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-is-sup u u<x is-sup1 fc ⟫; x=fy = x=fy } = ⊥-elim ( <-irr z48 z32 ) where - z30 : * mc < * (cf nmx mc) - z30 = proj1 (cf-is-<-monotonic nmx mc (MinSUP.asm msp1)) - z31 : ( supf mc ≡ mc ) ∨ ( * (supf mc) < * mc ) - z31 = MinSUP.x≤sup msp1 (ZChain.csupf zc (z09 (ZChain.asupf zc) )) - z32 : * (supf mc) < * (cf nmx (cf nmx y)) - z32 = ftrans<=-< z31 (subst (λ k → * mc < * k ) (cong (cf nmx) x=fy) z30 ) - z48 : ( * (cf nmx (cf nmx y)) ≡ * (supf mc)) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) ) - z48 = <=to≤ (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A u<x (fsuc _ ( fsuc _ fc ))) - is-sup : IsSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) (MinSUP.asm msp1) - is-sup = record { x≤sup = λ zy → MinSUP.x≤sup msp1 (chain-mono (cf nmx) (cf-is-≤-monotonic nmx) as0 supf (ZChain.supf-mono zc) (o<→≤ mc<A) zy ) } - + -- supf a ≡ c o< d ≡ supf c o≤ supf (& A) - not-hasprev : ¬ HasPrev A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf d) (cf nmx) d - not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-init fc ⟫ ; x=fy = x=fy } = ⊥-elim ( <-irr z31 z30 ) where - z30 : * d < * (cf nmx d) - z30 = proj1 (cf-is-<-monotonic nmx d (MinSUP.asm spd)) - z32 : ( cf nmx (cf nmx y) ≡ supf mc ) ∨ ( * (cf nmx (cf nmx y)) < * (supf mc) ) - z32 = ZChain.fcy<sup zc (o<→≤ mc<A) (fsuc _ (fsuc _ fc)) - z31 : ( * (cf nmx d) ≡ * d ) ∨ ( * (cf nmx d) < * d ) - z31 = case2 ( subst (λ k → * (cf nmx k) < * d ) (sym x=fy) ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) )) - not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-is-sup u u<x is-sup1 fc ⟫; x=fy = x=fy } = ⊥-elim ( <-irr z46 z30 ) where - z45 : (* (cf nmx (cf nmx y)) ≡ * d) ∨ (* (cf nmx (cf nmx y)) < * d) → (* (cf nmx d) ≡ * d) ∨ (* (cf nmx d) < * d) - z45 p = subst (λ k → (* (cf nmx k) ≡ * d) ∨ (* (cf nmx k) < * d)) (sym x=fy) p - z48 : supf mc << d - z48 = sc<<d {mc} asc spd - z53 : supf u o< supf (& A) - z53 = ordtrans<-≤ u<x (ZChain.supf-mono zc (o<→≤ d<A) ) - z52 : ( u ≡ mc ) ∨ ( u << mc ) - z52 = MinSUP.x≤sup msp1 ⟪ subst (λ k → odef A k ) (ChainP.supu=u is-sup1) (A∋fcs _ _ (cf-is-≤-monotonic nmx) fc) - , ch-is-sup u z53 is-sup1 (init (ZChain.asupf zc) (ChainP.supu=u is-sup1)) ⟫ - z51 : supf u o≤ supf mc - z51 = or z52 (λ le → o≤-refl0 (z56 le) ) z57 where - z56 : u ≡ mc → supf u ≡ supf mc - z56 eq = cong supf eq - z57 : u << mc → supf u o≤ supf mc - z57 lt = ZChain.supf-<= zc (case2 z58) where - z58 : supf u << supf mc -- supf u o< supf d -- supf u << supf d - z58 = subst₂ ( λ j k → j << k ) (sym (ChainP.supu=u is-sup1)) (sym sc=c) lt - z49 : supf u o< supf mc → (cf nmx (cf nmx y) ≡ supf mc) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) ) - z49 su<smc = ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A su<smc (fsuc _ ( fsuc _ fc )) - z50 : (cf nmx (cf nmx y) ≡ supf d) ∨ (* (cf nmx (cf nmx y)) < * (supf d) ) - z50 = ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) d<A u<x (fsuc _ ( fsuc _ fc )) - z47 : {mc d1 : Ordinal } {asc : odef A (supf mc)} (spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc )) - → (cf nmx (cf nmx y) ≡ supf mc) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) ) → supf mc << d1 - → * (cf nmx (cf nmx y)) < * d1 - z47 {mc} {d1} {asc} spd (case1 eq) smc<d = subst (λ k → k < * d1 ) (sym (cong (*) eq)) smc<d - z47 {mc} {d1} {asc} spd (case2 lt) smc<d = IsStrictPartialOrder.trans PO lt smc<d - z30 : * d < * (cf nmx d) - z30 = proj1 (cf-is-<-monotonic nmx d (MinSUP.asm spd)) - z46 : (* (cf nmx d) ≡ * d) ∨ (* (cf nmx d) < * d) - z46 = or (osuc-≡< z51) z55 z54 where - z55 : supf u ≡ supf mc → (* (cf nmx d) ≡ * d) ∨ (* (cf nmx d) < * d) - z55 eq = <=to≤ (MinSUP.x≤sup spd ( subst₂ (λ j k → FClosure A (cf nmx) j (cf nmx k) ) eq (sym x=fy ) (fsuc _ (fsuc _ fc)) ) ) - z54 : supf u o< supf mc → (* (cf nmx d) ≡ * d) ∨ (* (cf nmx d) < * d) - z54 lt = z45 (case2 (z47 {mc} {d} {asc} spd (z49 lt) z48 )) - -- z46 with osuc-≡< z51 - -- ... | case1 eq = MinSUP.x≤sup spd ( subst₂ (λ j k → FClosure A (cf nmx) j k ) (trans (ChainP.supu=u is-sup1) eq) refl fc ) - -- ... | case2 lt = z45 (case2 (z47 {mc} {d} {asc} spd (z49 lt) z48 )) - - is-sup : IsSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) (MinSUP.asm spd) - is-sup = record { x≤sup = z22 } where - z23 : {z : Ordinal } → odef (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc) z → (z ≡ MinSUP.sup spd) ∨ (z << MinSUP.sup spd) - z23 lt = MinSUP.x≤sup spd lt - z22 : {y : Ordinal} → odef (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) y → - (y ≡ MinSUP.sup spd) ∨ (y << MinSUP.sup spd) - z22 {a} ⟪ aa , ch-init fc ⟫ = case2 ( ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) )) where - z32 : ( a ≡ supf mc ) ∨ ( * a < * (supf mc) ) - z32 = ZChain.fcy<sup zc (o<→≤ mc<A) fc - z22 {a} ⟪ aa , ch-is-sup u u<x is-sup1 fc ⟫ = tri u (supf mc) - z60 z61 ( λ sc<u → ⊥-elim ( o≤> ( subst (λ k → k o≤ supf mc) (ChainP.supu=u is-sup1) z51) sc<u )) where - z53 : supf u o< supf (& A) - z53 = ordtrans<-≤ u<x (ZChain.supf-mono zc (o<→≤ d<A) ) - z52 : ( u ≡ mc ) ∨ ( u << mc ) - z52 = MinSUP.x≤sup msp1 ⟪ subst (λ k → odef A k ) (ChainP.supu=u is-sup1) (A∋fcs _ _ (cf-is-≤-monotonic nmx) fc) - , ch-is-sup u z53 is-sup1 (init (ZChain.asupf zc) (ChainP.supu=u is-sup1)) ⟫ - z56 : u ≡ mc → supf u ≡ supf mc - z56 eq = cong supf eq - z57 : u << mc → supf u o≤ supf mc - z57 lt = ZChain.supf-<= zc (case2 z58) where - z58 : supf u << supf mc -- supf u o< supf d -- supf u << supf d - z58 = subst₂ ( λ j k → j << k ) (sym (ChainP.supu=u is-sup1)) (sym sc=c) lt - z51 : supf u o≤ supf mc - z51 = or z52 (λ le → o≤-refl0 (z56 le) ) z57 - z60 : u o< supf mc → (a ≡ d ) ∨ ( * a < * d ) - z60 u<smc = case2 ( ftrans<=-< (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A - (subst (λ k → k o< supf mc) (sym (ChainP.supu=u is-sup1)) u<smc) fc ) smc<<d ) - z61 : u ≡ supf mc → (a ≡ d ) ∨ ( * a < * d ) - z61 u=sc = case2 (fsc<<d {mc} asc spd (subst (λ k → FClosure A (cf nmx) k a) (trans (ChainP.supu=u is-sup1) u=sc) fc ) ) - -- u<x : ZChain.supf zc u o< ZChain.supf zc d - -- supf u o< spuf c → order - - sd=d : supf d ≡ d - sd=d = ZChain.sup=u zc (MinSUP.asm spd) (o<→≤ d<A) ⟪ is-sup , not-hasprev ⟫ - - sc<sd : {mc d : Ordinal } → supf mc << supf d → supf mc o< supf d - sc<sd {mc} {d} sc<<sd with osuc-≡< ( ZChain.supf-<= zc (case2 sc<<sd ) ) - ... | case1 eq = ⊥-elim ( <-irr (case1 (cong (*) (sym eq) )) sc<<sd ) - ... | case2 lt = lt - - sms<sa : supf mc o< supf (& A) - sms<sa with osuc-≡< ( ZChain.supf-mono zc (o<→≤ ( ∈∧P→o< ⟪ MinSUP.asm msp1 , lift true ⟫) )) - ... | case2 lt = lt - ... | case1 eq = ⊥-elim ( o<¬≡ eq ( ordtrans<-≤ (sc<sd (subst (λ k → supf mc << k ) (sym sd=d) (sc<<d {mc} asc spd)) ) - ( ZChain.supf-mono zc (o<→≤ d<A )))) - - ss<sa : supf c o< supf (& A) - ss<sa = subst (λ k → supf k o< supf (& A)) (sym c=mc) sms<sa + sa<sa : supf a o< supf (& A) + sa<sa = ? zorn00 : Maximal A zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM