Mercurial > hg > Members > kono > Proof > ZF-in-agda
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 |