Mercurial > hg > Members > kono > Proof > ZF-in-agda
comparison src/zorn.agda @ 900:ac4daa43ef2a
roll back to u<x
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 07 Oct 2022 17:13:41 +0900 |
parents | 37a09244cebd |
children | 6146d75131f5 |
comparison
equal
deleted
inserted
replaced
899:37a09244cebd | 900:ac4daa43ef2a |
---|---|
260 supu=u : supf u ≡ u | 260 supu=u : supf u ≡ u |
261 | 261 |
262 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y ) | 262 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y ) |
263 (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where | 263 (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where |
264 ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z | 264 ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z |
265 ch-is-sup : (u : Ordinal) {z : Ordinal } (u≤x : supf u o≤ supf x) ( is-sup : ChainP A f mf ay supf u ) | 265 ch-is-sup : (u : Ordinal) {z : Ordinal } (u≤x : u o< x) ( is-sup : ChainP A f mf ay supf u ) |
266 ( fc : FClosure A f (supf u) z ) → UChain A f mf ay supf x z | 266 ( fc : FClosure A f (supf u) z ) → UChain A f mf ay supf x z |
267 | 267 |
268 -- | 268 -- |
269 -- f (f ( ... (sup y))) f (f ( ... (sup z1))) | 269 -- f (f ( ... (sup y))) f (f ( ... (sup z1))) |
270 -- / | / | | 270 -- / | / | |
569 cf-is-<-monotonic nmx x ax = ⟪ proj2 (is-cf nmx ax ) , proj1 (is-cf nmx ax ) ⟫ | 569 cf-is-<-monotonic nmx x ax = ⟪ proj2 (is-cf nmx ax ) , proj1 (is-cf nmx ax ) ⟫ |
570 cf-is-≤-monotonic : (nmx : ¬ Maximal A ) → ≤-monotonic-f A ( cf nmx ) | 570 cf-is-≤-monotonic : (nmx : ¬ Maximal A ) → ≤-monotonic-f A ( cf nmx ) |
571 cf-is-≤-monotonic nmx x ax = ⟪ case2 (proj1 ( cf-is-<-monotonic nmx x ax )) , proj2 ( cf-is-<-monotonic nmx x ax ) ⟫ | 571 cf-is-≤-monotonic nmx x ax = ⟪ case2 (proj1 ( cf-is-<-monotonic nmx x ax )) , proj2 ( cf-is-<-monotonic nmx x ax ) ⟫ |
572 | 572 |
573 chain-mono : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) | 573 chain-mono : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) |
574 {a b c : Ordinal} → supf a o≤ supf b | 574 {a b c : Ordinal} → a o≤ b |
575 → odef (UnionCF A f mf ay supf a) c → odef (UnionCF A f mf ay supf b) c | 575 → odef (UnionCF A f mf ay supf a) c → odef (UnionCF A f mf ay supf b) c |
576 chain-mono f mf ay supf {a} {b} {c} a≤b ⟪ ua , ch-init fc ⟫ = | 576 chain-mono f mf ay supf {a} {b} {c} a≤b ⟪ ua , ch-init fc ⟫ = |
577 ⟪ ua , ch-init fc ⟫ | 577 ⟪ ua , ch-init fc ⟫ |
578 chain-mono f mf ay supf {a} {b} {c} a≤b ⟪ uaa , ch-is-sup ua ua<x is-sup fc ⟫ = | 578 chain-mono f mf ay supf {a} {b} {c} a≤b ⟪ uaa , ch-is-sup ua ua<x is-sup fc ⟫ = |
579 ⟪ uaa , ch-is-sup ua (OrdTrans ua<x a≤b ) is-sup fc ⟫ | 579 ⟪ uaa , ch-is-sup ua (ordtrans<-≤ ua<x a≤b ) is-sup fc ⟫ |
580 | 580 |
581 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {x y : Ordinal} (ay : odef A y) | 581 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {x y : Ordinal} (ay : odef A y) |
582 (zc : ZChain A f mf ay x ) → SUP A (ZChain.chain zc) | 582 (zc : ZChain A f mf ay x ) → SUP A (ZChain.chain zc) |
583 sp0 f mf ay zc = supP (ZChain.chain zc) (ZChain.chain⊆A zc) ztotal where | 583 sp0 f mf ay zc = supP (ZChain.chain zc) (ZChain.chain⊆A zc) ztotal where |
584 ztotal : IsTotalOrderSet (ZChain.chain zc) | 584 ztotal : IsTotalOrderSet (ZChain.chain zc) |
585 ztotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where | 585 ztotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where |
586 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) | 586 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) |
587 uz01 = chain-total A f mf ay (ZChain.supf zc) ( (proj2 ca)) ( (proj2 cb)) | 587 uz01 = chain-total A f mf ay (ZChain.supf zc) ( (proj2 ca)) ( (proj2 cb)) |
588 | 588 |
589 | |
590 -- | 589 -- |
591 -- Second TransFinite Pass for maximality | 590 -- Second TransFinite Pass for maximality |
592 -- | 591 -- |
593 | 592 |
594 SZ1 : ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) | 593 SZ1 : ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) |
595 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x | 594 {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → ZChain1 A f mf ay zc x |
596 SZ1 f mf {y} ay zc x = TransFinite { λ x → ZChain1 A f mf ay zc x } zc1 x where | 595 SZ1 f mf {y} ay zc x = TransFinite { λ x → ZChain1 A f mf ay zc x } zc1 x where |
597 chain-mono1 : {a b c : Ordinal} → (ZChain.supf zc a) o≤ (ZChain.supf zc b) | 596 chain-mono1 : {a b c : Ordinal} → a o≤ b |
598 → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c | 597 → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c |
599 chain-mono1 {a} {b} {c} a≤b = chain-mono f mf ay (ZChain.supf zc) a≤b | 598 chain-mono1 {a} {b} {c} a≤b = chain-mono f mf ay (ZChain.supf zc) a≤b |
600 is-max-hp : (x : Ordinal) {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → | 599 is-max-hp : (x : Ordinal) {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → |
601 b o< x → (ab : odef A b) → | 600 b o< x → (ab : odef A b) → |
602 HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) b f → | 601 HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) b f → |
617 zc04 : odef (UnionCF A f mf ay supf (& A)) (supf s) | 616 zc04 : odef (UnionCF A f mf ay supf (& A)) (supf s) |
618 zc04 = ZChain.csupf zc (z09 (ZChain.asupf zc)) | 617 zc04 = ZChain.csupf zc (z09 (ZChain.asupf zc)) |
619 zc05 : odef (UnionCF A f mf ay supf b) (supf s) | 618 zc05 : odef (UnionCF A f mf ay supf b) (supf s) |
620 zc05 with zc04 | 619 zc05 with zc04 |
621 ... | ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫ | 620 ... | ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫ |
622 ... | ⟪ as , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ as , ch-is-sup u (o<→≤ zc08) is-sup fc ⟫ where | 621 ... | ⟪ as , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ as , ch-is-sup u (ZChain.supf-inject zc zc08) is-sup fc ⟫ where |
623 zc07 : FClosure A f (supf u) (supf s) -- supf u ≤ supf s → supf u o≤ supf s | 622 zc07 : FClosure A f (supf u) (supf s) -- supf u ≤ supf s → supf u o≤ supf s |
624 zc07 = fc | 623 zc07 = fc |
625 zc06 : supf u ≡ u | 624 zc06 : supf u ≡ u |
626 zc06 = ChainP.supu=u is-sup | 625 zc06 = ChainP.supu=u is-sup |
627 zc08 : supf u o< supf b | 626 zc08 : supf u o< supf b |
640 zc04 with zc00 | 639 zc04 with zc00 |
641 ... | case1 eq = case1 (subst₂ (λ j k → j ≡ k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z)) ) eq ) | 640 ... | case1 eq = case1 (subst₂ (λ j k → j ≡ k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z)) ) eq ) |
642 ... | case2 lt = case2 (subst₂ (λ j k → j < * k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z) )) lt ) | 641 ... | case2 lt = case2 (subst₂ (λ j k → j < * k ) refl (sym (ZChain.supf-is-minsup zc (o<→≤ b<z) )) lt ) |
643 | 642 |
644 zc1 : (x : Ordinal) → ((y₁ : Ordinal) → y₁ o< x → ZChain1 A f mf ay zc y₁) → ZChain1 A f mf ay zc x | 643 zc1 : (x : Ordinal) → ((y₁ : Ordinal) → y₁ o< x → ZChain1 A f mf ay zc y₁) → ZChain1 A f mf ay zc x |
645 zc1 x prev with Oprev-p x | 644 zc1 x prev with Oprev-p x -- prev is not used now.... |
646 ... | yes op = record { is-max = is-max } where | 645 ... | yes op = record { is-max = is-max } where |
647 px = Oprev.oprev op | 646 px = Oprev.oprev op |
648 zc-b<x : {b : Ordinal } → b o< x → b o< osuc px | 647 zc-b<x : {b : Ordinal } → b o< x → b o< osuc px |
649 zc-b<x {b} lt = subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) lt | 648 zc-b<x {b} lt = subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) lt |
650 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a → | 649 is-max : {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a → |
652 HasPrev A (UnionCF A f mf ay supf x) b f ∨ IsSup A (UnionCF A f mf ay supf x) ab → | 651 HasPrev A (UnionCF A f mf ay supf x) b f ∨ IsSup A (UnionCF A f mf ay supf x) ab → |
653 * a < * b → odef (UnionCF A f mf ay supf x) b | 652 * a < * b → odef (UnionCF A f mf ay supf x) b |
654 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P | 653 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P |
655 is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua b<x ab has-prev a<b | 654 is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua b<x ab has-prev a<b |
656 is-max {a} {b} ua b<x ab P a<b | case2 is-sup | 655 is-max {a} {b} ua b<x ab P a<b | case2 is-sup |
657 = ⟪ ab , ch-is-sup b sb≤sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where | 656 = ⟪ ab , ch-is-sup b b<x m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where |
658 b<A : b o< & A | 657 b<A : b o< & A |
659 b<A = z09 ab | 658 b<A = z09 ab |
660 sb≤sx : supf b o≤ supf x | 659 sb≤sx : supf b o≤ supf x |
661 sb≤sx = ZChain.supf-mono zc (o<→≤ b<x ) | 660 sb≤sx = ZChain.supf-mono zc (o<→≤ b<x ) |
661 sb<sx : supf b o< supf x | |
662 sb<sx with osuc-≡< sb≤sx | |
663 ... | case2 lt = lt | |
664 ... | case1 sb=sx = ? where | |
665 -- b ≡ x | |
666 -- b o< px → a < * b → odef (UnionCF A f mf ay supf px) b | |
662 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) b f | 667 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) b f |
663 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = | 668 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = |
664 chain-mono1 sb≤sx (HasPrev.ay nhp) | 669 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) ; x=fy = HasPrev.x=fy nhp } ) |
665 ; x=fy = HasPrev.x=fy nhp } ) | |
666 m05 : ZChain.supf zc b ≡ b | 670 m05 : ZChain.supf zc b ≡ b |
667 m05 = ZChain.sup=u zc ab (o<→≤ (z09 ab) ) | 671 m05 = ZChain.sup=u zc ab (o<→≤ (z09 ab) ) |
668 ⟪ record { x<sup = λ {z} uz → IsSup.x<sup (proj2 is-sup) (chain-mono1 sb≤sx uz) } , m04 ⟫ | 672 ⟪ record { x<sup = λ {z} uz → IsSup.x<sup (proj2 is-sup) (chain-mono1 (o<→≤ b<x) uz) } , m04 ⟫ |
669 m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b | 673 m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b |
670 m08 {z} fcz = ZChain.fcy<sup zc (o<→≤ b<A) fcz | 674 m08 {z} fcz = ZChain.fcy<sup zc (o<→≤ b<A) fcz |
671 m09 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b | 675 m09 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b |
672 → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b | 676 → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b |
673 m09 {s} {z} s<b fcz = order b<A s<b fcz | 677 m09 {s} {z} s<b fcz = order b<A s<b fcz |
680 * a < * b → odef (UnionCF A f mf ay supf x) b | 684 * a < * b → odef (UnionCF A f mf ay supf x) b |
681 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P | 685 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P |
682 is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua b<x ab has-prev a<b | 686 is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua b<x ab has-prev a<b |
683 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 ) | 687 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 ) |
684 ... | 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 )) ⟫ | 688 ... | 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 )) ⟫ |
685 ... | case2 y<b = ⟪ ab , ch-is-sup b sb≤sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where | 689 ... | case2 y<b = ⟪ ab , ch-is-sup b b<x m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where |
686 sb≤sx : supf b o≤ supf x | 690 sb≤sx : supf b o≤ supf x |
687 sb≤sx = ZChain.supf-mono zc (o<→≤ b<x ) | 691 sb≤sx = ZChain.supf-mono zc (o<→≤ b<x ) |
692 sb<sx : supf b o< supf x | |
693 sb<sx = ? | |
688 m09 : b o< & A | 694 m09 : b o< & A |
689 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab)) | 695 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab)) |
690 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b | 696 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b |
691 m07 {z} fc = ZChain.fcy<sup zc (o<→≤ m09) fc | 697 m07 {z} fc = ZChain.fcy<sup zc (o<→≤ m09) fc |
692 m08 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b | 698 m08 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b |
693 → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b | 699 → FClosure A f (ZChain.supf zc s) z1 → z1 <= ZChain.supf zc b |
694 m08 {s} {z1} s<b fc = order m09 s<b fc | 700 m08 {s} {z1} s<b fc = order m09 s<b fc |
695 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) b f | 701 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) b f |
696 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = | 702 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = |
697 chain-mono1 sb≤sx (HasPrev.ay nhp) | 703 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) |
698 ; x=fy = HasPrev.x=fy nhp } ) | 704 ; x=fy = HasPrev.x=fy nhp } ) |
699 m05 : ZChain.supf zc b ≡ b | 705 m05 : ZChain.supf zc b ≡ b |
700 m05 = ZChain.sup=u zc ab (o<→≤ m09) | 706 m05 = ZChain.sup=u zc ab (o<→≤ m09) |
701 ⟪ record { x<sup = λ lt → IsSup.x<sup (proj2 is-sup) (chain-mono1 sb≤sx lt )} , m04 ⟫ -- ZChain on x | 707 ⟪ record { x<sup = λ lt → IsSup.x<sup (proj2 is-sup) (chain-mono1 (o<→≤ b<x) lt )} , m04 ⟫ -- ZChain on x |
702 m06 : ChainP A f mf ay supf b | 708 m06 : ChainP A f mf ay supf b |
703 m06 = record { fcy<sup = m07 ; order = m08 ; supu=u = m05 } | 709 m06 = record { fcy<sup = m07 ; order = m08 ; supu=u = m05 } |
704 | 710 |
705 --- | 711 --- |
706 --- the maximum chain has fix point of any ≤-monotonic function | 712 --- the maximum chain has fix point of any ≤-monotonic function |
833 ... | tri> ¬a ¬b px<b with osuc-≡< b≤x | 839 ... | tri> ¬a ¬b px<b with osuc-≡< b≤x |
834 ... | case1 eq = case2 eq | 840 ... | case1 eq = case2 eq |
835 ... | case2 b<x = ⊥-elim ( ¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) | 841 ... | case2 b<x = ⊥-elim ( ¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) |
836 | 842 |
837 zc4 : ZChain A f mf ay x --- supf px ≤ supf x | 843 zc4 : ZChain A f mf ay x --- supf px ≤ supf x |
838 zc4 with osuc-≡< ? | 844 zc4 with trio< x (supf0 px) |
839 ... | case1 sfpx=px = record { supf = supf1 ; sup=u = ? ; asupf = asupf1 ; supf-mono = supf-mono1 ; supf-< = supf-<1 | 845 ... | tri> ¬a ¬b c = record { supf = supf0 ; sup=u = ? ; asupf = ? ; supf-mono = ? ; supf-< = ? |
840 ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; csupf = ? } where | 846 ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; csupf = ? } where |
841 | 847 ... | tri≈ ¬a b ¬c = ? where |
848 -- ... | case1 sfpx=px = record { supf = supf1 ; sup=u = ? ; asupf = asupf1 ; supf-mono = supf-mono1 ; supf-< = supf-<1 | |
849 -- ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; csupf = ? } where | |
850 | |
842 -- we are going to determine (supf x), which is not specified in previous zc | 851 -- we are going to determine (supf x), which is not specified in previous zc |
843 -- case1 : supf px ≡ px | 852 -- case1 : supf px ≡ px |
844 -- supf px is MinSUP of previous chain , supf x ≡ MinSUP of Union of UChain and FClosure px | 853 -- supf px is MinSUP of previous chain , supf x ≡ MinSUP of Union of UChain and FClosure px |
854 sfpx=px = ? | |
845 | 855 |
846 pchainpx : HOD | 856 pchainpx : HOD |
847 pchainpx = record { od = record { def = λ z → (odef A z ∧ UChain A f mf ay supf0 px z ) ∨ FClosure A f px z } ; odmax = & A ; <odmax = zc00 } where | 857 pchainpx = record { od = record { def = λ z → (odef A z ∧ UChain A f mf ay supf0 px z ) ∨ FClosure A f px z } ; odmax = & A ; <odmax = zc00 } where |
848 zc00 : {z : Ordinal } → (odef A z ∧ UChain A f mf ay supf0 px z ) ∨ FClosure A f px z → z o< & A | 858 zc00 : {z : Ordinal } → (odef A z ∧ UChain A f mf ay supf0 px z ) ∨ FClosure A f px z → z o< & A |
849 zc00 {z} (case1 lt) = z07 lt | 859 zc00 {z} (case1 lt) = z07 lt |
925 supf-mono1 {z} {w} z≤w | tri> ¬a ¬b c with trio< z px | 935 supf-mono1 {z} {w} z≤w | tri> ¬a ¬b c with trio< z px |
926 ... | tri< a ¬b ¬c = zc19 where | 936 ... | tri< a ¬b ¬c = zc19 where |
927 zc21 : MinSUP A (UnionCF A f mf ay supf0 z) | 937 zc21 : MinSUP A (UnionCF A f mf ay supf0 z) |
928 zc21 = ZChain.minsup zc (o<→≤ a) | 938 zc21 = ZChain.minsup zc (o<→≤ a) |
929 zc24 : {x₁ : Ordinal} → odef (UnionCF A f mf ay supf0 z) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1) | 939 zc24 : {x₁ : Ordinal} → odef (UnionCF A f mf ay supf0 z) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1) |
930 zc24 {x₁} ux = MinSUP.x<sup sup1 (case1 (chain-mono f mf ay supf0 (ZChain.supf-mono zc (o<→≤ a)) ux)) | 940 zc24 {x₁} ux = MinSUP.x<sup sup1 (case1 (chain-mono f mf ay supf0 (o<→≤ a) ux)) |
931 zc19 : supf0 z o≤ sp1 | 941 zc19 : supf0 z o≤ sp1 |
932 zc19 = subst (λ k → k o≤ sp1) (sym (ZChain.supf-is-minsup zc (o<→≤ a))) ( MinSUP.minsup zc21 (MinSUP.asm sup1) zc24 ) | 942 zc19 = subst (λ k → k o≤ sp1) (sym (ZChain.supf-is-minsup zc (o<→≤ a))) ( MinSUP.minsup zc21 (MinSUP.asm sup1) zc24 ) |
933 ... | tri≈ ¬a b ¬c = zc18 where | 943 ... | tri≈ ¬a b ¬c = zc18 where |
934 zc21 : MinSUP A (UnionCF A f mf ay supf0 z) | 944 zc21 : MinSUP A (UnionCF A f mf ay supf0 z) |
935 zc21 = ZChain.minsup zc (o≤-refl0 b) | 945 zc21 = ZChain.minsup zc (o≤-refl0 b) |
938 MinSUP.sup zc21 ≡⟨ sym (ZChain.supf-is-minsup zc (o≤-refl0 b)) ⟩ | 948 MinSUP.sup zc21 ≡⟨ sym (ZChain.supf-is-minsup zc (o≤-refl0 b)) ⟩ |
939 supf0 z ≡⟨ cong supf0 b ⟩ | 949 supf0 z ≡⟨ cong supf0 b ⟩ |
940 supf0 px ≡⟨ sym sfpx=px ⟩ | 950 supf0 px ≡⟨ sym sfpx=px ⟩ |
941 px ∎ where open ≡-Reasoning | 951 px ∎ where open ≡-Reasoning |
942 zc24 : {x₁ : Ordinal} → odef (UnionCF A f mf ay supf0 z) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1) | 952 zc24 : {x₁ : Ordinal} → odef (UnionCF A f mf ay supf0 z) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1) |
943 zc24 {x₁} ux = MinSUP.x<sup sup1 (case1 (chain-mono f mf ay supf0 (ZChain.supf-mono zc (o≤-refl0 b)) ux)) | 953 zc24 {x₁} ux = MinSUP.x<sup sup1 (case1 (chain-mono f mf ay supf0 ? ux)) |
944 zc18 : px o≤ sp1 -- supf0 z ≡ px | 954 zc18 : px o≤ sp1 -- supf0 z ≡ px |
945 zc18 = subst (λ k → k o≤ sp1) zc20 ( MinSUP.minsup zc21 (MinSUP.asm sup1) zc24 ) | 955 zc18 = subst (λ k → k o≤ sp1) zc20 ( MinSUP.minsup zc21 (MinSUP.asm sup1) zc24 ) |
946 ... | tri> ¬a ¬b c = o≤-refl | 956 ... | tri> ¬a ¬b c = o≤-refl |
947 | 957 |
948 supf-<1 : {z0 z1 : Ordinal} → supf1 z0 o< supf1 z1 → supf1 z0 << supf1 z1 | 958 supf-<1 : {z0 z1 : Ordinal} → supf1 z0 o< supf1 z1 → supf1 z0 << supf1 z1 |
1118 zc21 = ZChain.supf-inject zc (subst (λ k → k o< supf0 z1) sfpx=px c ) | 1128 zc21 = ZChain.supf-inject zc (subst (λ k → k o< supf0 z1) sfpx=px c ) |
1119 zc22 : z1 o< x -- c : px o< supf0 z1 | 1129 zc22 : z1 o< x -- c : px o< supf0 z1 |
1120 zc22 = supf-inject0 supf-mono1 (ordtrans<-≤ sz1<x ? ) | 1130 zc22 = supf-inject0 supf-mono1 (ordtrans<-≤ sz1<x ? ) |
1121 -- c : px ≡ spuf0 px o< supf0 z1 , px o< z1 o≤ supf1 z1 o< x | 1131 -- c : px ≡ spuf0 px o< supf0 z1 , px o< z1 o≤ supf1 z1 o< x |
1122 | 1132 |
1123 ... | case2 px<spfx = ? where | 1133 ... | tri< a ¬b ¬c = ? where |
1124 | 1134 |
1125 -- case2 : px o< supf px | 1135 -- case2 : px o< supf px |
1126 -- supf px is not MinSUP of previous chain , supf x ≡ supf px | 1136 -- supf px is not MinSUP of previous chain , supf x ≡ supf px |
1127 | 1137 |
1128 -- record { supf = supf0 ; asupf = ZChain.asupf zc ; sup = λ lt → STMP.tsup (sup lt ) ; supf-mono = supf-mono | 1138 -- record { supf = supf0 ; asupf = ZChain.asupf zc ; sup = λ lt → STMP.tsup (sup lt ) ; supf-mono = supf-mono |