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