comparison src/zorn.agda @ 863:f5fc3f5f618f

u<=x to u<x
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 09 Sep 2022 20:20:39 +0900
parents 269467244745
children 06f692bf7a97
comparison
equal deleted inserted replaced
862:269467244745 863:f5fc3f5f618f
256 supu=u : supf u ≡ u 256 supu=u : supf u ≡ u
257 257
258 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y ) 258 data UChain ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y )
259 (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where 259 (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where
260 ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z 260 ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z
261 ch-is-sup : (u : Ordinal) {z : Ordinal } (u≤x : u o≤ x) ( is-sup : ChainP A f mf ay supf u ) 261 ch-is-sup : (u : Ordinal) {z : Ordinal } (u<x : u o< x) ( is-sup : ChainP A f mf ay supf u )
262 ( fc : FClosure A f (supf u) z ) → UChain A f mf ay supf x z 262 ( fc : FClosure A f (supf u) z ) → UChain A f mf ay supf x z
263 263
264 -- data UChain is total 264 -- data UChain is total
265 265
266 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) 266 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal )
412 zc04 : odef (UnionCF A f mf ay supf (supf s)) (supf s) 412 zc04 : odef (UnionCF A f mf ay supf (supf s)) (supf s)
413 zc04 = csupf s≤<z 413 zc04 = csupf s≤<z
414 zc05 : odef (UnionCF A f mf ay supf b) (supf s) 414 zc05 : odef (UnionCF A f mf ay supf b) (supf s)
415 zc05 with zc04 415 zc05 with zc04
416 ... | ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫ 416 ... | ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫
417 ... | ⟪ as , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ as , ch-is-sup u (zc09 u≤x ) is-sup fc ⟫ where 417 ... | ⟪ as , ch-is-sup u u<x is-sup fc ⟫ = ⟪ as , ch-is-sup u (zc09 u<x ) is-sup fc ⟫ where
418 zc06 : supf u ≡ u 418 zc06 : supf u ≡ u
419 zc06 = ChainP.supu=u is-sup 419 zc06 = ChainP.supu=u is-sup
420 zc09 : u o≤ supf s → u o≤ b 420 zc09 : u o< supf s → u o< b
421 zc09 u<s with osuc-≡< (subst (λ k → k o≤ supf s) (sym zc06) u<s) 421 zc09 u<s = ordtrans (supf-inject (subst (λ k → k o< supf s) (sym zc06) u<s)) s<b
422 ... | case1 su=ss = zc08 where
423 zc07 : supf u o≤ supf b
424 zc07 = subst (λ k → k o≤ supf b) (sym su=ss) (supf-mono (o<→≤ s<b) )
425 zc08 : u o≤ b
426 zc08 with osuc-≡< zc07
427 ... | case1 su=sb = ⊥-elim ( o<¬≡ (trans (sym su=ss) su=sb ) ss<sb )
428 ... | case2 lt = o<→≤ (supf-inject lt )
429 ... | case2 lt = o<→≤ (ordtrans (supf-inject lt) s<b)
430 csupf-fc {b} {s} {z1} b<z ss≤sb (fsuc x fc) = subst (λ k → odef (UnionCF A f mf ay supf b) k ) (sym &iso) zc04 where 422 csupf-fc {b} {s} {z1} b<z ss≤sb (fsuc x fc) = subst (λ k → odef (UnionCF A f mf ay supf b) k ) (sym &iso) zc04 where
431 zc04 : odef (UnionCF A f mf ay supf b) (f x) 423 zc04 : odef (UnionCF A f mf ay supf b) (f x)
432 zc04 with subst (λ k → odef (UnionCF A f mf ay supf b) k ) &iso (csupf-fc b<z ss≤sb fc ) 424 zc04 with subst (λ k → odef (UnionCF A f mf ay supf b) k ) &iso (csupf-fc b<z ss≤sb fc )
433 ... | ⟪ as , ch-init fc ⟫ = ⟪ proj2 (mf _ as) , ch-init (fsuc _ fc) ⟫ 425 ... | ⟪ as , ch-init fc ⟫ = ⟪ proj2 (mf _ as) , ch-init (fsuc _ fc) ⟫
434 ... | ⟪ as , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 (mf _ as) , ch-is-sup u u≤x is-sup (fsuc _ fc) ⟫ 426 ... | ⟪ as , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 (mf _ as) , ch-is-sup u u≤x is-sup (fsuc _ fc) ⟫
548 {a b c : Ordinal} → a o≤ b 540 {a b c : Ordinal} → a o≤ b
549 → odef (UnionCF A f mf ay supf a) c → odef (UnionCF A f mf ay supf b) c 541 → odef (UnionCF A f mf ay supf a) c → odef (UnionCF A f mf ay supf b) c
550 chain-mono f mf ay supf {a} {b} {c} a≤b ⟪ ua , ch-init fc ⟫ = 542 chain-mono f mf ay supf {a} {b} {c} a≤b ⟪ ua , ch-init fc ⟫ =
551 ⟪ ua , ch-init fc ⟫ 543 ⟪ ua , ch-init fc ⟫
552 chain-mono f mf ay supf {a} {b} {c} a≤b ⟪ uaa , ch-is-sup ua ua<x is-sup fc ⟫ = 544 chain-mono f mf ay supf {a} {b} {c} a≤b ⟪ uaa , ch-is-sup ua ua<x is-sup fc ⟫ =
553 ⟪ uaa , ch-is-sup ua (ordtrans<-≤ ua<x (osucc a≤b )) is-sup fc ⟫ 545 ⟪ uaa , ch-is-sup ua (ordtrans<-≤ ua<x a≤b ) is-sup fc ⟫
554 546
555 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) ) 547 sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) )
556 (total : IsTotalOrderSet (ZChain.chain zc) ) → SUP A (ZChain.chain zc) 548 (total : IsTotalOrderSet (ZChain.chain zc) ) → SUP A (ZChain.chain zc)
557 sp0 f mf zc total = supP (ZChain.chain zc) (ZChain.chain⊆A zc) total 549 sp0 f mf zc total = supP (ZChain.chain zc) (ZChain.chain⊆A zc) total
558 zc< : {x y z : Ordinal} → {P : Set n} → (x o< y → P) → x o< z → z o< y → P 550 zc< : {x y z : Ordinal} → {P : Set n} → (x o< y → P) → x o< z → z o< y → P
588 HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) b f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) x) ab → 580 HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) b f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) x) ab →
589 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b 581 * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
590 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P 582 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P
591 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 583 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
592 is-max {a} {b} ua b<x ab P a<b | case2 is-sup 584 is-max {a} {b} ua b<x ab P a<b | case2 is-sup
593 = ⟪ ab , ch-is-sup b (o<→≤ b<x) m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where 585 = ⟪ ab , ch-is-sup b b<x m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where
594 b<A : b o< & A 586 b<A : b o< & A
595 b<A = z09 ab 587 b<A = z09 ab
596 m04 : ¬ HasPrev A (UnionCF A f mf ay (ZChain.supf zc) b) b f 588 m04 : ¬ HasPrev A (UnionCF A f mf ay (ZChain.supf zc) b) b f
597 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) 589 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp)
598 ; x=fy = HasPrev.x=fy nhp } ) 590 ; x=fy = HasPrev.x=fy nhp } )
614 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P 606 is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P
615 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 607 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
616 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 ) 608 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 )
617 ... | 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 )) ⟫ 609 ... | 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 )) ⟫
618 ... | case2 y<b = chain-mono1 (osucc b<x) 610 ... | case2 y<b = chain-mono1 (osucc b<x)
619 ⟪ ab , ch-is-sup b (ordtrans o≤-refl <-osuc ) m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where 611 ⟪ ab , ch-is-sup b <-osuc m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl)) ⟫ where
620 m09 : b o< & A 612 m09 : b o< & A
621 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab)) 613 m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
622 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b 614 m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b
623 m07 {z} fc = ZChain.fcy<sup zc m09 fc 615 m07 {z} fc = ZChain.fcy<sup zc m09 fc
624 m08 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b 616 m08 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b
774 ... | case1 eq = case2 eq 766 ... | case1 eq = case2 eq
775 ... | case2 b<x = ⊥-elim ( ¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) 767 ... | case2 b<x = ⊥-elim ( ¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ )
776 768
777 -- if previous chain satisfies maximality, we caan reuse it 769 -- if previous chain satisfies maximality, we caan reuse it
778 -- 770 --
779 -- supf0 px is sup of UnionCF px , supf0 x is sup of UnionCF x 771 -- UninCF supf0 px previous chain u o< px, supf0 px is not included
772 -- UninCF supf0 x supf0 px is included
773 -- supf0 px ≡ px
774 -- supf0 px ≡ supf0 x
780 775
781 no-extension : ( (¬ xSUP (UnionCF A f mf ay supf0 px) x ) ∨ HasPrev A pchain x f) → ZChain A f mf ay x 776 no-extension : ( (¬ xSUP (UnionCF A f mf ay supf0 px) x ) ∨ HasPrev A pchain x f) → ZChain A f mf ay x
782 no-extension P = record { supf = supf0 ; sup = λ lt → STMP.tsup (sup lt ) ; supf-mono = supf-mono ; supf-max = supf-max 777 no-extension P = record { supf = supf0 ; sup = λ lt → STMP.tsup (sup lt ) ; supf-mono = supf-mono ; supf-max = supf-max
783 ; sup=u = sup=u ; supf-is-sup = λ lt → STMP.tsup=sup (sup lt) ; csupf = csupf } where 778 ; sup=u = sup=u ; supf-is-sup = λ lt → STMP.tsup=sup (sup lt) ; csupf = csupf } where
784 pchain0=1 : pchain ≡ pchain1 779 zc10 : {z : Ordinal} → OD.def (od pchain) z → OD.def (od pchain1) z
785 pchain0=1 = ==→o≡ record { eq→ = zc10 ; eq← = zc11 P } where 780 zc10 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫
786 zc10 : {z : Ordinal} → OD.def (od pchain) z → OD.def (od pchain1) z 781 zc10 {z} ⟪ az , ch-is-sup u1 u1<x u1-is-sup fc ⟫ = ⟪ az , ch-is-sup u1 (ordtrans u1<x (pxo<x op)) u1-is-sup fc ⟫
787 zc10 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 782 zc11 : (¬ xSUP (UnionCF A f mf ay supf0 px) x ) ∨ (HasPrev A pchain x f )
788 zc10 {z} ⟪ az , ch-is-sup u1 u1≤x u1-is-sup fc ⟫ = ⟪ az , ch-is-sup u1 (ordtrans u1≤x (osucc (pxo<x op))) u1-is-sup fc ⟫ 783 → {z : Ordinal} → OD.def (od pchain1) z → OD.def (od pchain) z ∨ ( supf0 px ≡ px )
789 zc11 : (¬ xSUP (UnionCF A f mf ay supf0 px) x ) ∨ (HasPrev A pchain x f ) 784 zc11 P {z} ⟪ az , ch-init fc ⟫ = case1 ⟪ az , ch-init fc ⟫
790 → {z : Ordinal} → OD.def (od pchain1) z → OD.def (od pchain) z 785 zc11 P {z} ⟪ az , ch-is-sup u1 u1<x u1-is-sup fc ⟫ with trio< u1 px
791 zc11 P {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 786 ... | tri< u1<px ¬b ¬c = case1 ⟪ az , ch-is-sup u1 u1<px u1-is-sup fc ⟫
792 zc11 P {z} ⟪ az , ch-is-sup u1 u1≤x u1-is-sup fc ⟫ with osuc-≡< u1≤x 787 ... | tri≈ ¬a eq ¬c = case2 (subst (λ k → supf0 k ≡ k) eq s1u=u) where
793 ... | case2 lt = ⟪ az , ch-is-sup u1 u1≤px u1-is-sup fc ⟫ where 788 s1u=u : supf0 u1 ≡ u1
794 u1≤px : u1 o≤ px 789 s1u=u = ChainP.supu=u u1-is-sup
795 u1≤px = (subst (λ k → u1 o< k) (sym (Oprev.oprev=x op)) lt) 790 zc11 (case1 ¬sp=x) {z} ⟪ az , ch-is-sup u1 u1<x u1-is-sup fc ⟫ | tri> ¬a ¬b px<u = ⊥-elim (¬sp=x zcsup) where
796 zc11 (case1 ¬sp=x) {z} ⟪ az , ch-is-sup u1 u1≤x u1-is-sup fc ⟫ | case1 eq = ⊥-elim (¬sp=x zcsup) where 791 eq : u1 ≡ x
797 s1u=x : supf0 u1 ≡ x 792 eq with trio< u1 x
798 s1u=x = trans (ChainP.supu=u u1-is-sup) eq 793 ... | tri< a ¬b ¬c = ⊥-elim ( ¬p<x<op ⟪ px<u , subst (λ k → u1 o< k ) (sym (Oprev.oprev=x op )) a ⟫ )
799 zc13 : osuc px o< osuc u1 794 ... | tri≈ ¬a b ¬c = b
800 zc13 = o≤-refl0 ( trans (Oprev.oprev=x op) (sym eq) ) 795 ... | tri> ¬a ¬b c = ⊥-elim ( o<> u1<x c )
801 x<sup : {w : Ordinal} → odef (UnionCF A f mf ay supf0 px) w → (w ≡ x) ∨ (w << x) 796 s1u=x : supf0 u1 ≡ x
802 x<sup {w} ⟪ az , ch-init {w} fc ⟫ = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x 797 s1u=x = trans (ChainP.supu=u u1-is-sup) eq
798 zc13 : osuc px o< osuc u1
799 zc13 = o≤-refl0 ( trans (Oprev.oprev=x op) (sym eq ) )
800 x<sup : {w : Ordinal} → odef (UnionCF A f mf ay supf0 px) w → (w ≡ x) ∨ (w << x)
801 x<sup {w} ⟪ az , ch-init {w} fc ⟫ = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x
803 ( ChainP.fcy<sup u1-is-sup {w} fc ) 802 ( ChainP.fcy<sup u1-is-sup {w} fc )
804 x<sup {w} ⟪ az , ch-is-sup u u≤x is-sup fc ⟫ with osuc-≡< ( supf-mono (ordtrans u≤x zc13 )) 803 x<sup {w} ⟪ az , ch-is-sup u u<x is-sup fc ⟫ with osuc-≡< ( supf-mono (ordtrans (o<→≤ u<x) zc13 ))
805 ... | case1 eq1 = ⊥-elim ( o<¬≡ zc14 u≤x ) where 804 ... | case1 eq1 = ⊥-elim ( o<¬≡ zc14 (o<→≤ u<x) ) where
806 zc14 : u ≡ osuc px 805 zc14 : u ≡ osuc px
807 zc14 = begin 806 zc14 = begin
808 u ≡⟨ sym ( ChainP.supu=u is-sup) ⟩ 807 u ≡⟨ sym ( ChainP.supu=u is-sup) ⟩
809 supf0 u ≡⟨ eq1 ⟩ 808 supf0 u ≡⟨ eq1 ⟩
810 supf0 u1 ≡⟨ s1u=x ⟩ 809 supf0 u1 ≡⟨ s1u=x ⟩
811 x ≡⟨ sym (Oprev.oprev=x op) ⟩ 810 x ≡⟨ sym (Oprev.oprev=x op) ⟩
812 osuc px ∎ where open ≡-Reasoning 811 osuc px ∎ where open ≡-Reasoning
813 ... | case2 lt = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x ( ChainP.order u1-is-sup lt fc ) 812 ... | case2 lt = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x ( ChainP.order u1-is-sup lt fc )
814 zc12 : supf0 x ≡ u1 813 zc12 : supf0 x ≡ u1
815 zc12 = subst (λ k → supf0 k ≡ u1) eq (ChainP.supu=u u1-is-sup) 814 zc12 = subst (λ k → supf0 k ≡ u1) eq (ChainP.supu=u u1-is-sup)
816 zcsup : xSUP (UnionCF A f mf ay supf0 px) x 815 zcsup : xSUP (UnionCF A f mf ay supf0 px) x
817 zcsup = record { ax = subst (λ k → odef A k) (trans zc12 eq) (supf∈A o≤-refl) 816 zcsup = record { ax = subst (λ k → odef A k) (trans zc12 eq) (supf∈A o≤-refl)
818 ; is-sup = record { x<sup = x<sup } } 817 ; is-sup = record { x<sup = x<sup } }
819 zc11 (case2 hp) {z} ⟪ az , ch-is-sup u1 u1≤x u1-is-sup fc ⟫ | case1 eq = zc20 fc where 818 zc11 (case2 hp) {z} ⟪ az , ch-is-sup u1 u1≤x u1-is-sup fc ⟫ | tri> ¬a ¬b px<u = case1 (zc20 fc ) where
819 eq : u1 ≡ x
820 eq = ?
820 zc20 : {z : Ordinal} → FClosure A f (supf0 u1) z → OD.def (od pchain) z 821 zc20 : {z : Ordinal} → FClosure A f (supf0 u1) z → OD.def (od pchain) z
821 zc20 {z} (init asu su=z ) = zc13 where 822 zc20 {z} (init asu su=z ) = zc13 where
822 zc14 : x ≡ z 823 zc14 : x ≡ z
823 zc14 = begin 824 zc14 = begin
824 x ≡⟨ sym eq ⟩ 825 x ≡⟨ sym eq ⟩
841 zc30 : z ≡ x 842 zc30 : z ≡ x
842 zc30 with osuc-≡< z≤x 843 zc30 with osuc-≡< z≤x
843 ... | case1 eq = eq 844 ... | case1 eq = eq
844 ... | case2 z<x = ⊥-elim (¬p<x<op ⟪ px<z , subst (λ k → z o< k ) (sym (Oprev.oprev=x op)) z<x ⟫ ) 845 ... | case2 z<x = ⊥-elim (¬p<x<op ⟪ px<z , subst (λ k → z o< k ) (sym (Oprev.oprev=x op)) z<x ⟫ )
845 zc34 : {w : HOD} → UnionCF A f mf ay supf0 z ∋ w → (w ≡ SUP.sup zc32) ∨ (w < SUP.sup zc32) 846 zc34 : {w : HOD} → UnionCF A f mf ay supf0 z ∋ w → (w ≡ SUP.sup zc32) ∨ (w < SUP.sup zc32)
846 zc34 {w} lt = SUP.x<sup zc32 (subst (λ k → odef k (& w)) (sym pchain0=1) 847 zc34 {w} lt = SUP.x<sup zc32 ? where
847 (subst (λ k → odef (UnionCF A f mf ay supf0 k) (& w)) zc30 lt )) 848 zc35 : odef (UnionCF A f mf ay supf0 x) (& w)
849 zc35 = subst (λ k → odef (UnionCF A f mf ay supf0 k) (& w)) zc30 lt
848 zc33 : supf0 z ≡ & (SUP.sup zc32) 850 zc33 : supf0 z ≡ & (SUP.sup zc32)
849 zc33 = trans (sym (supfx (o≤-refl0 (sym zc30)))) ( ZChain.supf-is-sup zc o≤-refl ) 851 zc33 = trans (sym (supfx (o≤-refl0 (sym zc30)))) ( ZChain.supf-is-sup zc o≤-refl )
850 sup=u : {b : Ordinal} (ab : odef A b) → 852 sup=u : {b : Ordinal} (ab : odef A b) →
851 b o≤ x → IsSup A (UnionCF A f mf ay supf0 b) ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf0 b) b f ) → supf0 b ≡ b 853 b o≤ x → IsSup A (UnionCF A f mf ay supf0 b) ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf0 b) b f ) → supf0 b ≡ b
852 sup=u {b} ab b≤x is-sup with trio< b px 854 sup=u {b} ab b≤x is-sup with trio< b px
858 ... | case1 eq = sym (eq) 860 ... | case1 eq = sym (eq)
859 ... | case2 b<x = ⊥-elim (¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) 861 ... | case2 b<x = ⊥-elim (¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ )
860 zcsup : xSUP (UnionCF A f mf ay supf0 px) x 862 zcsup : xSUP (UnionCF A f mf ay supf0 px) x
861 zcsup with zc30 863 zcsup with zc30
862 ... | refl = record { ax = ab ; is-sup = record { x<sup = λ {w} lt → 864 ... | refl = record { ax = ab ; is-sup = record { x<sup = λ {w} lt →
863 IsSup.x<sup (proj1 is-sup) (subst (λ k → odef k w) pchain0=1 lt) } } 865 IsSup.x<sup (proj1 is-sup) (zc10 lt)} }
864 zc31 : ( (¬ xSUP (UnionCF A f mf ay supf0 px) x ) ∨ HasPrev A (UnionCF A f mf ay supf0 px) x f) → supf0 b ≡ b 866 zc31 : ( (¬ xSUP (UnionCF A f mf ay supf0 px) x ) ∨ HasPrev A (UnionCF A f mf ay supf0 px) x f) → supf0 b ≡ b
865 zc31 (case1 ¬sp=x) with zc30 867 zc31 (case1 ¬sp=x) with zc30
866 ... | refl = ⊥-elim (¬sp=x zcsup ) 868 ... | refl = ⊥-elim (¬sp=x zcsup )
867 zc31 (case2 hasPrev ) with zc30 869 zc31 (case2 hasPrev ) with zc30
868 ... | refl = ⊥-elim ( proj2 is-sup (subst (λ k → HasPrev A k x f) pchain0=1 hasPrev ) ) 870 ... | refl = ⊥-elim ( proj2 is-sup record { ax = HasPrev.ax hasPrev ; y = HasPrev.y hasPrev
869 871 ; ay = zc10 (HasPrev.ay hasPrev) ; x=fy = HasPrev.x=fy hasPrev } )
870 csupf : {b : Ordinal} → b o≤ x → odef (UnionCF A f mf ay supf0 (supf0 b)) (supf0 b) 872 csupf : {b : Ordinal} → b o≤ x → odef (UnionCF A f mf ay supf0 (supf0 b)) (supf0 b)
871 csupf {b} b≤x with zc04 b≤x 873 csupf {b} b≤x with zc04 b≤x
872 ... | case2 b=x = subst (λ k → odef (UnionCF A f mf ay supf0 k) k) (ZChain.supf-max zc zc05 ) ( ZChain.csupf zc o≤-refl ) where 874 ... | case2 b=x = subst (λ k → odef (UnionCF A f mf ay supf0 k) k) (ZChain.supf-max zc zc05 ) ( ZChain.csupf zc o≤-refl ) where
873 zc05 : px o≤ b 875 zc05 : px o≤ b
874 zc05 = subst (λ k → px o≤ k) (sym b=x) (o<→≤ (pxo<x op) ) 876 zc05 = subst (λ k → px o≤ k) (sym b=x) (o<→≤ (pxo<x op) )
1013 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫ 1015 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫
1014 ... | ⟪ ua1 , ch-is-sup u u≤x is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u≤x is-sup (fsuc _ fc₁) ⟫ 1016 ... | ⟪ ua1 , ch-is-sup u u≤x is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u≤x is-sup (fsuc _ fc₁) ⟫
1015 zc12 (init asu su=z ) = ⟪ subst (λ k → odef A k) su=z asu , ch-is-sup u u≤x ? (init ? ? ) ⟫ 1017 zc12 (init asu su=z ) = ⟪ subst (λ k → odef A k) su=z asu , ch-is-sup u u≤x ? (init ? ? ) ⟫
1016 zc11 : {z : Ordinal} → OD.def (od pchain1) z → OD.def (od pchain) z 1018 zc11 : {z : Ordinal} → OD.def (od pchain1) z → OD.def (od pchain) z
1017 zc11 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 1019 zc11 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫
1018 zc11 {z} ⟪ az , ch-is-sup u u≤x is-sup fc ⟫ = zc13 fc where 1020 zc11 {z} ⟪ az , ch-is-sup u u<x is-sup fc ⟫ = zc13 fc where
1019 zc13 : {z : Ordinal} → FClosure A f (supf1 u) z → odef pchain z 1021 zc13 : {z : Ordinal} → FClosure A f (supf1 u) z → odef pchain z
1020 zc13 (fsuc x fc) with zc13 fc 1022 zc13 (fsuc x fc) with zc13 fc
1021 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫ 1023 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫
1022 ... | ⟪ ua1 , ch-is-sup u u≤x is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u≤x is-sup (fsuc _ fc₁) ⟫ 1024 ... | ⟪ ua1 , ch-is-sup u u<x is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u<x is-sup (fsuc _ fc₁) ⟫
1023 zc13 (init asu su=z ) with trio< u x 1025 zc13 (init asu su=z ) with trio< u x
1024 ... | tri< a ¬b ¬c = ⟪ ? , ch-is-sup u u≤x ? (init ? ? ) ⟫ 1026 ... | tri< a ¬b ¬c = ⟪ ? , ch-is-sup u u<x ? (init ? ? ) ⟫
1025 ... | tri≈ ¬a b ¬c = ? 1027 ... | tri≈ ¬a b ¬c = ?
1026 ... | tri> ¬a ¬b c = ⊥-elim ( o≤> u≤x c ) 1028 ... | tri> ¬a ¬b c = ? -- ⊥-elim ( o≤> u<x c )
1027 sup : {z : Ordinal} → z o≤ x → SUP A (UnionCF A f mf ay supf1 z) 1029 sup : {z : Ordinal} → z o≤ x → SUP A (UnionCF A f mf ay supf1 z)
1028 sup {z} z≤x with trio< z x 1030 sup {z} z≤x with trio< z x
1029 ... | tri< a ¬b ¬c = SUP⊆ ? (ZChain.sup (pzc (osuc z) {!!}) {!!} ) 1031 ... | tri< a ¬b ¬c = SUP⊆ ? (ZChain.sup (pzc (osuc z) {!!}) {!!} )
1030 ... | tri≈ ¬a b ¬c = {!!} 1032 ... | tri≈ ¬a b ¬c = {!!}
1031 ... | tri> ¬a ¬b x<z = ⊥-elim (o<¬≡ refl (ordtrans<-≤ x<z z≤x )) 1033 ... | tri> ¬a ¬b x<z = ⊥-elim (o<¬≡ refl (ordtrans<-≤ x<z z≤x ))