comparison src/zorn.agda @ 988:9a85233384f7

is-max and supf b = supf x
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 14 Nov 2022 07:35:18 +0900
parents c8c60a05b39b
children ce713b5db3f3
comparison
equal deleted inserted replaced
987:c8c60a05b39b 988:9a85233384f7
522 522
523 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 523 record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
524 {y : Ordinal} (ay : odef A y) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where 524 {y : Ordinal} (ay : odef A y) (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where
525 supf = ZChain.supf zc 525 supf = ZChain.supf zc
526 field 526 field
527 is-max : {a b : Ordinal } → (ca : odef (UnionCF A f mf ay supf z) a ) → supf b o< supf z → (ab : odef A b) 527 is-max : {a b : Ordinal } → (ca : odef (UnionCF A f mf ay supf z) a ) → b o< z → (ab : odef A b)
528 → HasPrev A (UnionCF A f mf ay supf z) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab 528 → HasPrev A (UnionCF A f mf ay supf z) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab
529 → * a < * b → odef ((UnionCF A f mf ay supf z)) b 529 → * a < * b → odef ((UnionCF A f mf ay supf z)) b
530 order : {b s z1 : Ordinal} → b o< & A → supf s o< supf b → FClosure A f (supf s) z1 → (z1 ≡ supf b) ∨ (z1 << supf b) 530 order : {b s z1 : Ordinal} → b o< & A → supf s o< supf b → FClosure A f (supf s) z1 → (z1 ≡ supf b) ∨ (z1 << supf b)
531 531
532 record Maximal ( A : HOD ) : Set (Level.suc n) where 532 record Maximal ( A : HOD ) : Set (Level.suc n) where
643 -- supf is fixed for z ≡ & A , we can prove order and is-max 643 -- supf is fixed for z ≡ & A , we can prove order and is-max
644 -- 644 --
645 645
646 SZ1 : ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) 646 SZ1 : ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)
647 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x 647 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x
648 SZ1 f mf {y} ay zc x = zc1 x where 648 SZ1 f mf {y} ay zc x = TransFinite { λ x → ZChain1 A f mf ay zc x } zc1 x where
649 chain-mono1 : {a b c : Ordinal} → a o≤ b 649 chain-mono1 : {a b c : Ordinal} → a o≤ b
650 → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c 650 → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c
651 chain-mono1 {a} {b} {c} a≤b = chain-mono f mf ay (ZChain.supf zc) (ZChain.supf-mono zc) a≤b 651 chain-mono1 {a} {b} {c} a≤b = chain-mono f mf ay (ZChain.supf zc) (ZChain.supf-mono zc) a≤b
652 is-max-hp : (x : Ordinal) {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → (ab : odef A b) 652 is-max-hp : (x : Ordinal) {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → (ab : odef A b)
653 → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) f b 653 → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) f b
690 zc04 : (z1 ≡ supf b) ∨ (z1 << supf b) 690 zc04 : (z1 ≡ supf b) ∨ (z1 << supf b)
691 zc04 with zc00 691 zc04 with zc00
692 ... | case1 eq = case1 (subst₂ (λ j k → j ≡ k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z)) ) eq ) 692 ... | case1 eq = case1 (subst₂ (λ j k → j ≡ k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z)) ) eq )
693 ... | case2 lt = case2 (subst₂ (λ j k → j < * k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z) )) lt ) 693 ... | case2 lt = case2 (subst₂ (λ j k → j < * k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z) )) lt )
694 694
695 zc1 : (x : Ordinal) → ZChain1 A f mf ay zc x 695 zc1 : (x : Ordinal) → ((y : Ordinal) → y o< x → ZChain1 A f mf ay zc y) → ZChain1 A f mf ay zc x
696 zc1 x with Oprev-p x -- prev is not used now.... 696 zc1 x prev with Oprev-p x
697 ... | yes op = record { is-max = is-max ; order = order } where 697 ... | yes op = record { is-max = is-max ; order = order } where
698 px = Oprev.oprev op 698 px = Oprev.oprev op
699 zc-b<x : {b : Ordinal } → ZChain.supf zc b o< ZChain.supf zc x → b o< osuc px 699 zc-b<x : {b : Ordinal } → ZChain.supf zc b o< ZChain.supf zc x → b o< osuc px
700 zc-b<x {b} lt = subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) (ZChain.supf-inject zc lt ) 700 zc-b<x {b} lt = subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) (ZChain.supf-inject zc lt )
701 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a → 701 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a →
702 ZChain.supf zc b o< ZChain.supf zc x → (ab : odef A b) → 702 b o< x → (ab : odef A b) →
703 HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab → 703 HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab →
704 * a < * b → odef (UnionCF A f mf ay supf x) b 704 * a < * b → odef (UnionCF A f mf ay supf x) b
705 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P 705 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P
706 is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b 706 is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b
707 is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup 707 is-max {a} {b} ua b<x ab P a<b | case2 is-sup
708 = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where 708 = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where
709 b<A : b o< & A 709 b<A : b o< & A
710 b<A = z09 ab 710 b<A = z09 ab
711 b<x : b o< x 711 sb<sx : supf b o< supf x
712 b<x = ZChain.supf-inject zc sb<sx 712 sb<sx = ?
713 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b 713 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b
714 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = 714 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay =
715 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) ; x=fy = HasPrev.x=fy nhp } ) 715 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) ; x=fy = HasPrev.x=fy nhp } )
716 m05 : ZChain.supf zc b ≡ b 716 m05 : ZChain.supf zc b ≡ b
717 m05 = ZChain.sup=u zc ab (o<→≤ (z09 ab) ) ⟪ record { x≤sup = λ {z} uz → IsSUP.x≤sup (proj2 is-sup) uz } , m04 ⟫ 717 m05 = ZChain.sup=u zc ab (o<→≤ (z09 ab) ) ⟪ record { x≤sup = λ {z} uz → IsSUP.x≤sup (proj2 is-sup) uz } , m04 ⟫
718 m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b 718 m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b
719 m08 {z} fcz = ZChain.fcy<sup zc (o<→≤ b<A) fcz 719 m08 {z} fcz = ZChain.fcy<sup zc (o<→≤ b<A) fcz
720 m09 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b 720 m09 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b
721 → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b
722 m09 {s} {z} s<b fcz = order b<A s<b fcz
723 m06 : ChainP A f mf ay supf b
724 m06 = record { fcy<sup = m08 ; order = m09 ; supu=u = m05 }
725 ... | no lim = record { is-max = is-max ; order = order } where
726 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a →
727 b o< x → (ab : odef A b) →
728 HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab →
729 * a < * b → odef (UnionCF A f mf ay supf x) b
730 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P
731 is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b
732 is-max {a} {b} ua b<x ab P a<b | case2 is-sup with IsSUP.x≤sup (proj2 is-sup) (init-uchain A f mf ay )
733 ... | case1 b=y = ⟪ subst (λ k → odef A k ) b=y ay , ch-init (subst (λ k → FClosure A f y k ) b=y (init ay refl )) ⟫
734 ... | case2 y<b = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where
735 m09 : b o< & A
736 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
737 sb<sx : supf b o< supf x
738 sb<sx = ?
739 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b
740 m07 {z} fc = ZChain.fcy<sup zc (o<→≤ m09) fc
741 m08 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b
721 → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b 742 → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b
722 m09 {s} {z} s<b fcz = order b<A s<b fcz 743 m08 {s} {z1} s<b fc = order m09 s<b fc
723 m06 : ChainP A f mf ay supf b 744 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b
724 m06 = record { fcy<sup = m08 ; order = m09 ; supu=u = m05 } 745 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay =
725 ... | no lim = record { is-max = is-max ; order = order } where 746 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp)
726 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a → 747 ; x=fy = HasPrev.x=fy nhp } )
727 ZChain.supf zc b o< ZChain.supf zc x → (ab : odef A b) → 748 m05 : ZChain.supf zc b ≡ b
728 HasPrev A (UnionCF A f mf ay supf x) f b ∨ IsSUP A (UnionCF A f mf ay supf b) ab → 749 m05 = ZChain.sup=u zc ab (o<→≤ m09) ⟪ record { x≤sup = λ lt → IsSUP.x≤sup (proj2 is-sup) lt } , m04 ⟫ -- ZChain on x
729 * a < * b → odef (UnionCF A f mf ay supf x) b 750 m06 : ChainP A f mf ay supf b
730 is-max {a} {b} ua sb<sx ab P a<b with ODC.or-exclude O P 751 m06 = record { fcy<sup = m07 ; order = m08 ; supu=u = m05 }
731 is-max {a} {b} ua sb<sx ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b
732 is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup with IsSUP.x≤sup (proj2 is-sup) (init-uchain A f mf ay )
733 ... | case1 b=y = ⟪ subst (λ k → odef A k ) b=y ay , ch-init (subst (λ k → FClosure A f y k ) b=y (init ay refl )) ⟫
734 ... | case2 y<b = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where
735 m09 : b o< & A
736 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
737 b<x : b o< x
738 b<x = ZChain.supf-inject zc sb<sx
739 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b
740 m07 {z} fc = ZChain.fcy<sup zc (o<→≤ m09) fc
741 m08 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b
742 → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b
743 m08 {s} {z1} s<b fc = order m09 s<b fc
744 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b
745 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay =
746 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp)
747 ; x=fy = HasPrev.x=fy nhp } )
748 m05 : ZChain.supf zc b ≡ b
749 m05 = ZChain.sup=u zc ab (o<→≤ m09) ⟪ record { x≤sup = λ lt → IsSUP.x≤sup (proj2 is-sup) lt } , m04 ⟫ -- ZChain on x
750 m06 : ChainP A f mf ay supf b
751 m06 = record { fcy<sup = m07 ; order = m08 ; supu=u = m05 }
752 752
753 uchain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → HOD 753 uchain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → HOD
754 uchain f mf {y} ay = record { od = record { def = λ x → FClosure A f y x } ; odmax = & A ; <odmax = 754 uchain f mf {y} ay = record { od = record { def = λ x → FClosure A f y x } ; odmax = & A ; <odmax =
755 λ {z} cz → subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) (A∋fc y f mf cz ))) } 755 λ {z} cz → subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) (A∋fc y f mf cz ))) }
756 756
1329 → MinSUP A (UnionCF A f mf ay (ZChain.supf zc) x) 1329 → MinSUP A (UnionCF A f mf ay (ZChain.supf zc) x)
1330 msp0 f mf {x} ay zc = minsupP (UnionCF A f mf ay (ZChain.supf zc) x) (ZChain.chain⊆A zc) (ZChain.f-total zc) 1330 msp0 f mf {x} ay zc = minsupP (UnionCF A f mf ay (ZChain.supf zc) x) (ZChain.chain⊆A zc) (ZChain.f-total zc)
1331 1331
1332 fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) ) 1332 fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) )
1333 → (sp1 : MinSUP A (ZChain.chain zc)) 1333 → (sp1 : MinSUP A (ZChain.chain zc))
1334 → (ssp<as : ZChain.supf zc (MinSUP.sup sp1) o< ZChain.supf zc (& A))
1335 → f (MinSUP.sup sp1) ≡ MinSUP.sup sp1 1334 → f (MinSUP.sup sp1) ≡ MinSUP.sup sp1
1336 fixpoint f mf zc sp1 ssp<as = z14 where 1335 fixpoint f mf zc sp1 = z14 where
1337 chain = ZChain.chain zc 1336 chain = ZChain.chain zc
1338 supf = ZChain.supf zc 1337 supf = ZChain.supf zc
1339 sp : Ordinal 1338 sp : Ordinal
1340 sp = MinSUP.sup sp1 1339 sp = MinSUP.sup sp1
1341 asp : odef A sp 1340 asp : odef A sp
1342 asp = MinSUP.asm sp1 1341 asp = MinSUP.asm sp1
1343 z10 : {a b : Ordinal } → (ca : odef chain a ) → supf b o< supf (& A) → (ab : odef A b ) 1342 z10 : {a b : Ordinal } → (ca : odef chain a ) → b o< (& A) → (ab : odef A b )
1344 → HasPrev A chain f b ∨ IsSUP A (UnionCF A f mf as0 (ZChain.supf zc) b) ab 1343 → HasPrev A chain f b ∨ IsSUP A (UnionCF A f mf as0 (ZChain.supf zc) b) ab
1345 → * a < * b → odef chain b 1344 → * a < * b → odef chain b
1346 z10 = ZChain1.is-max (SZ1 f mf as0 zc (& A) ) 1345 z10 = ZChain1.is-max (SZ1 f mf as0 zc (& A) )
1347 z22 : sp o< & A 1346 z22 : sp o< & A
1348 z22 = z09 asp 1347 z22 = z09 asp
1349 z12 : odef chain sp 1348 z12 : odef chain sp
1350 z12 with o≡? (& s) sp 1349 z12 with o≡? (& s) sp
1351 ... | yes eq = subst (λ k → odef chain k) eq ( ZChain.chain∋init zc ) 1350 ... | yes eq = subst (λ k → odef chain k) eq ( ZChain.chain∋init zc )
1352 ... | no ne = ZChain1.is-max (SZ1 f mf as0 zc (& A)) {& s} {sp} ( ZChain.chain∋init zc ) ssp<as asp (case2 z19 ) z13 where 1351 ... | no ne = ZChain1.is-max (SZ1 f mf as0 zc (& A)) {& s} {sp} ( ZChain.chain∋init zc ) (z09 asp) asp (case2 z19 ) z13 where
1353 z13 : * (& s) < * sp 1352 z13 : * (& s) < * sp
1354 z13 with MinSUP.x≤sup sp1 ( ZChain.chain∋init zc ) 1353 z13 with MinSUP.x≤sup sp1 ( ZChain.chain∋init zc )
1355 ... | case1 eq = ⊥-elim ( ne eq ) 1354 ... | case1 eq = ⊥-elim ( ne eq )
1356 ... | case2 lt = lt 1355 ... | case2 lt = lt
1357 z19 : IsSUP A (UnionCF A f mf as0 (ZChain.supf zc) sp) asp 1356 z19 : IsSUP A (UnionCF A f mf as0 (ZChain.supf zc) sp) asp
1396 1395
1397 z04 : (nmx : ¬ Maximal A ) → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)) → ⊥ 1396 z04 : (nmx : ¬ Maximal A ) → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)) → ⊥
1398 z04 nmx zc = <-irr0 {* (cf nmx c)} {* c} 1397 z04 nmx zc = <-irr0 {* (cf nmx c)} {* c}
1399 (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (MinSUP.asm msp1 )))) 1398 (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (MinSUP.asm msp1 ))))
1400 (subst (λ k → odef A k) (sym &iso) (MinSUP.asm msp1) ) 1399 (subst (λ k → odef A k) (sym &iso) (MinSUP.asm msp1) )
1401 (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc msp1 ss<sa ))) -- x ≡ f x ̄ 1400 (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc msp1 ))) -- x ≡ f x ̄
1402 (proj1 (cf-is-<-monotonic nmx c (MinSUP.asm msp1 ))) where -- x < f x 1401 (proj1 (cf-is-<-monotonic nmx c (MinSUP.asm msp1 ))) where -- x < f x
1403 1402
1404 supf = ZChain.supf zc 1403 supf = ZChain.supf zc
1405 msp1 : MinSUP A (ZChain.chain zc) 1404 msp1 : MinSUP A (ZChain.chain zc)
1406 msp1 = msp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc 1405 msp1 = msp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc
1407 c : Ordinal 1406 c : Ordinal
1408 c = MinSUP.sup msp1 1407 c = MinSUP.sup msp1
1409 c<A : c o< & A
1410 c<A = ∈∧P→o< ⟪ MinSUP.asm msp1 , lift true ⟫
1411 asc : odef A (supf c)
1412 asc = ZChain.asupf zc
1413
1414 spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc )
1415 spd = ysup (cf nmx) (cf-is-≤-monotonic nmx) asc
1416 d = MinSUP.sup spd
1417 d<A : d o< & A
1418 d<A = ∈∧P→o< ⟪ MinSUP.asm spd , lift true ⟫
1419 msup : MinSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf d)
1420 msup = ZChain.minsup zc (o<→≤ d<A)
1421 sd=ms : supf d ≡ MinSUP.sup ( ZChain.minsup zc (o<→≤ d<A) )
1422 sd=ms = ZChain.supf-is-minsup zc (o<→≤ d<A)
1423
1424 sc<<d : {mc : Ordinal } → (asc : odef A (supf mc)) → (spd : MinSUP A (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc ))
1425 → supf mc << MinSUP.sup spd
1426 sc<<d {mc} asc spd with MinSUP.x≤sup spd (init asc refl)
1427 ... | case1 eq = ?
1428 ... | case2 lt = ?
1429
1430 ss<sa : supf c o< supf (& A)
1431 ss<sa with osuc-≡< ( ZChain.supf-mono zc (o<→≤ c<A))
1432 ... | case2 sc<sa = sc<sa
1433 ... | case1 sc=sa = ⊥-elim ( nmx record { maximal = * d ; as = subst (λ k → odef A k) (sym &iso) (MinSUP.asm spd)
1434 ; ¬maximal<x = λ {x} ax → subst₂ (λ j k → ¬ ( j < k)) refl *iso (zc10 sc=sa ax) } ) where
1435 zc10 : supf c ≡ supf (& A) → {x : Ordinal } → odef A x → ¬ ( d << x )
1436 zc10 = ? where
1437 zc11 : {z : Ordinal } → odef (ZChain.chain zc) z → supf z o< supf (& A)
1438 zc11 = ?
1439 sc≤c : c o≤ supf c
1440 sc≤c = MinSUP.minsup msp1 ? ?
1441 sc=c : supf c ≡ c
1442 sc=c = ?
1443 d≤c : c o≤ d
1444 d≤c = MinSUP.minsup msp1 ? ?
1445 -- supf x o≤ supf c → supf x ≡ supf c ∨ supf x o< supf c
1446 -- c << x → x is sup of chain or x = f ( .. ( f c ))
1447 -- c o≤ x (by minimulity)
1448 -- odef chain z → supf z o< supf (& A) ≡ supf c → supf c is sup of chain, by minimulity c o≤ supf c
1449 -- supf c o≤ supf (supf c) o≤ supf x o≤ supf (& A)
1450 -- supf c ≡ supf (supf c) ≡ supf x ≡ supf (& A) means supf of FClosure of (supf c) is Maximal
1451 1408
1452 zorn00 : Maximal A 1409 zorn00 : Maximal A
1453 zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM 1410 zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM
1454 ... | no not = record { maximal = ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; as = zorn01 ; ¬maximal<x = zorn02 } where 1411 ... | no not = record { maximal = ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; as = zorn01 ; ¬maximal<x = zorn02 } where
1455 -- yes we have the maximal 1412 -- yes we have the maximal