comparison src/zorn.agda @ 804:2d84411a636e

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 11 Aug 2022 14:07:57 +0900
parents 7c6612b753b9
children 9d97134d0a93
comparison
equal deleted inserted replaced
803:7c6612b753b9 804:2d84411a636e
236 x<sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x ) 236 x<sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x )
237 237
238 record SUP ( A B : HOD ) : Set (Level.suc n) where 238 record SUP ( A B : HOD ) : Set (Level.suc n) where
239 field 239 field
240 sup : HOD 240 sup : HOD
241 A∋maximal : A ∋ sup 241 as : A ∋ sup
242 x<sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup ) -- B is Total, use positive 242 x<sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup ) -- B is Total, use positive
243 243
244 -- 244 --
245 -- sup and its fclosure is in a chain HOD 245 -- sup and its fclosure is in a chain HOD
246 -- chain HOD is sorted by sup as Ordinal and <-ordered 246 -- chain HOD is sorted by sup as Ordinal and <-ordered
326 → * a < * b → odef ((UnionCF A f mf ay (ZChain.supf zc) z)) b 326 → * a < * b → odef ((UnionCF A f mf ay (ZChain.supf zc) z)) b
327 327
328 record Maximal ( A : HOD ) : Set (Level.suc n) where 328 record Maximal ( A : HOD ) : Set (Level.suc n) where
329 field 329 field
330 maximal : HOD 330 maximal : HOD
331 A∋maximal : A ∋ maximal 331 as : A ∋ maximal
332 ¬maximal<x : {x : HOD} → A ∋ x → ¬ maximal < x -- A is Partial, use negative 332 ¬maximal<x : {x : HOD} → A ∋ x → ¬ maximal < x -- A is Partial, use negative
333 333
334 -- data UChain is total 334 -- data UChain is total
335 335
336 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) 336 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal )
430 no-maximum : HasMaximal =h= od∅ → (x : Ordinal) → odef A x ∧ ((m : Ordinal) → odef A m → odef A x ∧ (¬ (* x < * m) )) → ⊥ 430 no-maximum : HasMaximal =h= od∅ → (x : Ordinal) → odef A x ∧ ((m : Ordinal) → odef A m → odef A x ∧ (¬ (* x < * m) )) → ⊥
431 no-maximum nomx x P = ¬x<0 (eq→ nomx {x} ⟪ proj1 P , (λ m ma p → proj2 ( proj2 P m ma ) p ) ⟫ ) 431 no-maximum nomx x P = ¬x<0 (eq→ nomx {x} ⟪ proj1 P , (λ m ma p → proj2 ( proj2 P m ma ) p ) ⟫ )
432 Gtx : { x : HOD} → A ∋ x → HOD 432 Gtx : { x : HOD} → A ∋ x → HOD
433 Gtx {x} ax = record { od = record { def = λ y → odef A y ∧ (x < (* y)) } ; odmax = & A ; <odmax = z07 } 433 Gtx {x} ax = record { od = record { def = λ y → odef A y ∧ (x < (* y)) } ; odmax = & A ; <odmax = z07 }
434 z08 : ¬ Maximal A → HasMaximal =h= od∅ 434 z08 : ¬ Maximal A → HasMaximal =h= od∅
435 z08 nmx = record { eq→ = λ {x} lt → ⊥-elim ( nmx record {maximal = * x ; A∋maximal = subst (λ k → odef A k) (sym &iso) (proj1 lt) 435 z08 nmx = record { eq→ = λ {x} lt → ⊥-elim ( nmx record {maximal = * x ; as = subst (λ k → odef A k) (sym &iso) (proj1 lt)
436 ; ¬maximal<x = λ {y} ay → subst (λ k → ¬ (* x < k)) *iso (proj2 lt (& y) ay) } ) ; eq← = λ {y} lt → ⊥-elim ( ¬x<0 lt )} 436 ; ¬maximal<x = λ {y} ay → subst (λ k → ¬ (* x < k)) *iso (proj2 lt (& y) ay) } ) ; eq← = λ {y} lt → ⊥-elim ( ¬x<0 lt )}
437 x-is-maximal : ¬ Maximal A → {x : Ordinal} → (ax : odef A x) → & (Gtx (subst (λ k → odef A k ) (sym &iso) ax)) ≡ o∅ → (m : Ordinal) → odef A m → odef A x ∧ (¬ (* x < * m)) 437 x-is-maximal : ¬ Maximal A → {x : Ordinal} → (ax : odef A x) → & (Gtx (subst (λ k → odef A k ) (sym &iso) ax)) ≡ o∅ → (m : Ordinal) → odef A m → odef A x ∧ (¬ (* x < * m))
438 x-is-maximal nmx {x} ax nogt m am = ⟪ subst (λ k → odef A k) &iso (subst (λ k → odef A k ) (sym &iso) ax) , ¬x<m ⟫ where 438 x-is-maximal nmx {x} ax nogt m am = ⟪ subst (λ k → odef A k) &iso (subst (λ k → odef A k ) (sym &iso) ax) , ¬x<m ⟫ where
439 ¬x<m : ¬ (* x < * m) 439 ¬x<m : ¬ (* x < * m)
440 ¬x<m x<m = ∅< {Gtx (subst (λ k → odef A k ) (sym &iso) ax)} {* m} ⟪ subst (λ k → odef A k) (sym &iso) am , subst (λ k → * x < k ) (cong (*) (sym &iso)) x<m ⟫ (≡o∅→=od∅ nogt) 440 ¬x<m x<m = ∅< {Gtx (subst (λ k → odef A k ) (sym &iso) ax)} {* m} ⟪ subst (λ k → odef A k) (sym &iso) am , subst (λ k → * x < k ) (cong (*) (sym &iso)) x<m ⟫ (≡o∅→=od∅ nogt)
557 z10 : {a b : Ordinal } → (ca : odef chain a ) → b o< & A → (ab : odef A b ) 557 z10 : {a b : Ordinal } → (ca : odef chain a ) → b o< & A → (ab : odef A b )
558 → HasPrev A chain ab f ∨ IsSup A chain {b} ab -- (supO chain (ZChain.chain⊆A zc) (ZChain.f-total zc) ≡ b ) 558 → HasPrev A chain ab f ∨ IsSup A chain {b} ab -- (supO chain (ZChain.chain⊆A zc) (ZChain.f-total zc) ≡ b )
559 → * a < * b → odef chain b 559 → * a < * b → odef chain b
560 z10 = ZChain1.is-max (SZ1 f mf as0 zc (& A) ) 560 z10 = ZChain1.is-max (SZ1 f mf as0 zc (& A) )
561 z11 : & (SUP.sup sp1) o< & A 561 z11 : & (SUP.sup sp1) o< & A
562 z11 = c<→o< ( SUP.A∋maximal sp1) 562 z11 = c<→o< ( SUP.as sp1)
563 z12 : odef chain (& (SUP.sup sp1)) 563 z12 : odef chain (& (SUP.sup sp1))
564 z12 with o≡? (& s) (& (SUP.sup sp1)) 564 z12 with o≡? (& s) (& (SUP.sup sp1))
565 ... | yes eq = subst (λ k → odef chain k) eq ( ZChain.chain∋init zc ) 565 ... | yes eq = subst (λ k → odef chain k) eq ( ZChain.chain∋init zc )
566 ... | no ne = z10 {& s} {& (SUP.sup sp1)} ( ZChain.chain∋init zc ) z11 (SUP.A∋maximal sp1) 566 ... | no ne = z10 {& s} {& (SUP.sup sp1)} ( ZChain.chain∋init zc ) z11 (SUP.as sp1)
567 (case2 z19 ) z13 where 567 (case2 z19 ) z13 where
568 z13 : * (& s) < * (& (SUP.sup sp1)) 568 z13 : * (& s) < * (& (SUP.sup sp1))
569 z13 with SUP.x<sup sp1 ( ZChain.chain∋init zc ) 569 z13 with SUP.x<sup sp1 ( ZChain.chain∋init zc )
570 ... | case1 eq = ⊥-elim ( ne (cong (&) eq) ) 570 ... | case1 eq = ⊥-elim ( ne (cong (&) eq) )
571 ... | case2 lt = subst₂ (λ j k → j < k ) (sym *iso) (sym *iso) lt 571 ... | case2 lt = subst₂ (λ j k → j < k ) (sym *iso) (sym *iso) lt
572 z19 : IsSup A chain {& (SUP.sup sp1)} (SUP.A∋maximal sp1) 572 z19 : IsSup A chain {& (SUP.sup sp1)} (SUP.as sp1)
573 z19 = record { x<sup = z20 } where 573 z19 = record { x<sup = z20 } where
574 z20 : {y : Ordinal} → odef chain y → (y ≡ & (SUP.sup sp1)) ∨ (y << & (SUP.sup sp1)) 574 z20 : {y : Ordinal} → odef chain y → (y ≡ & (SUP.sup sp1)) ∨ (y << & (SUP.sup sp1))
575 z20 {y} zy with SUP.x<sup sp1 (subst (λ k → odef chain k ) (sym &iso) zy) 575 z20 {y} zy with SUP.x<sup sp1 (subst (λ k → odef chain k ) (sym &iso) zy)
576 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p )) 576 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p ))
577 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p ) 577 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p )
578 -- λ {y} zy → subst (λ k → (y ≡ & k ) ∨ (y << & k)) ? (SUP.x<sup sp1 ? ) } 578 -- λ {y} zy → subst (λ k → (y ≡ & k ) ∨ (y << & k)) ? (SUP.x<sup sp1 ? ) }
579 z14 : f (& (SUP.sup (sp0 f mf zc total ))) ≡ & (SUP.sup (sp0 f mf zc total )) 579 z14 : f (& (SUP.sup (sp0 f mf zc total ))) ≡ & (SUP.sup (sp0 f mf zc total ))
580 z14 with total (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) z12 580 z14 with total (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) z12
581 ... | tri< a ¬b ¬c = ⊥-elim z16 where 581 ... | tri< a ¬b ¬c = ⊥-elim z16 where
582 z16 : ⊥ 582 z16 : ⊥
583 z16 with proj1 (mf (& ( SUP.sup sp1)) ( SUP.A∋maximal sp1 )) 583 z16 with proj1 (mf (& ( SUP.sup sp1)) ( SUP.as sp1 ))
584 ... | case1 eq = ⊥-elim (¬b (subst₂ (λ j k → j ≡ k ) refl *iso (sym eq) )) 584 ... | case1 eq = ⊥-elim (¬b (subst₂ (λ j k → j ≡ k ) refl *iso (sym eq) ))
585 ... | case2 lt = ⊥-elim (¬c (subst₂ (λ j k → k < j ) refl *iso lt )) 585 ... | case2 lt = ⊥-elim (¬c (subst₂ (λ j k → k < j ) refl *iso lt ))
586 ... | tri≈ ¬a b ¬c = subst ( λ k → k ≡ & (SUP.sup sp1) ) &iso ( cong (&) b ) 586 ... | tri≈ ¬a b ¬c = subst ( λ k → k ≡ & (SUP.sup sp1) ) &iso ( cong (&) b )
587 ... | tri> ¬a ¬b c = ⊥-elim z17 where 587 ... | tri> ¬a ¬b c = ⊥-elim z17 where
588 z15 : (* (f ( & ( SUP.sup sp1 ))) ≡ SUP.sup sp1) ∨ (* (f ( & ( SUP.sup sp1 ))) < SUP.sup sp1) 588 z15 : (* (f ( & ( SUP.sup sp1 ))) ≡ SUP.sup sp1) ∨ (* (f ( & ( SUP.sup sp1 ))) < SUP.sup sp1)
598 -- ¬ Maximal create cf which is a <-monotonic function by axiom of choice. This contradicts fix point of ZChain 598 -- ¬ Maximal create cf which is a <-monotonic function by axiom of choice. This contradicts fix point of ZChain
599 -- 599 --
600 z04 : (nmx : ¬ Maximal A ) 600 z04 : (nmx : ¬ Maximal A )
601 → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)) 601 → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A))
602 → IsTotalOrderSet (ZChain.chain zc) → ⊥ 602 → IsTotalOrderSet (ZChain.chain zc) → ⊥
603 z04 nmx zc total = <-irr0 {* (cf nmx c)} {* c} (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (SUP.A∋maximal sp1 )))) 603 z04 nmx zc total = <-irr0 {* (cf nmx c)} {* c} (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (SUP.as sp1 ))))
604 (subst (λ k → odef A (& k)) (sym *iso) (SUP.A∋maximal sp1) ) 604 (subst (λ k → odef A (& k)) (sym *iso) (SUP.as sp1) )
605 (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc total ))) -- x ≡ f x ̄ 605 (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc total ))) -- x ≡ f x ̄
606 (proj1 (cf-is-<-monotonic nmx c (SUP.A∋maximal sp1 ))) where -- x < f x 606 (proj1 (cf-is-<-monotonic nmx c (SUP.as sp1 ))) where -- x < f x
607 sp1 : SUP A (ZChain.chain zc) 607 sp1 : SUP A (ZChain.chain zc)
608 sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) zc total 608 sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) zc total
609 c = & (SUP.sup sp1) 609 c = & (SUP.sup sp1)
610 610
611 uchain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → HOD 611 uchain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → HOD
620 620
621 ysup : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) 621 ysup : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y)
622 → SUP A (uchain f mf ay) 622 → SUP A (uchain f mf ay)
623 ysup f mf {y} ay = supP (uchain f mf ay) (λ lt → A∋fc y f mf lt) (utotal f mf ay) 623 ysup f mf {y} ay = supP (uchain f mf ay) (λ lt → A∋fc y f mf lt) (utotal f mf ay)
624 624
625 initChain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → ZChain A f mf ay o∅
626 initChain f mf {y} ay = record { supf = isupf ; chain⊆A = λ lt → proj1 lt ; chain∋init = cy ; sup = {!!} ; supf-is-sup = {!!}
627 ; initial = isy ; f-next = inext ; f-total = itotal ; sup=u = λ _ b<0 → ? ; csupf = {!!} } where
628 spi = & (SUP.sup (ysup f mf ay))
629 isupf : Ordinal → Ordinal
630 isupf z = spi
631 sp = ysup f mf ay
632 asi = SUP.A∋maximal sp
633 cy : odef (UnionCF A f mf ay isupf o∅) y
634 cy = ⟪ ay , ch-init (init ay refl) ⟫
635 y<sup : * y ≤ SUP.sup (ysup f mf ay)
636 y<sup = SUP.x<sup (ysup f mf ay) (subst (λ k → FClosure A f y k ) (sym &iso) (init ay refl))
637 sup : {x : Ordinal} → x o< o∅ → SUP A (UnionCF A f mf ay isupf x)
638 sup {x} lt = ⊥-elim ( ¬x<0 lt )
639 isy : {z : Ordinal } → odef (UnionCF A f mf ay isupf o∅) z → * y ≤ * z
640 isy {z} ⟪ az , uz ⟫ with uz
641 ... | ch-init fc = s≤fc y f mf fc
642 ... | ch-is-sup u u≤x is-sup fc = ≤-ftrans (subst (λ k → * y ≤ k) (sym *iso) y<sup) (s≤fc (& (SUP.sup (ysup f mf ay))) f mf fc )
643 inext : {a : Ordinal} → odef (UnionCF A f mf ay isupf o∅) a → odef (UnionCF A f mf ay isupf o∅) (f a)
644 inext {a} ua with (proj2 ua)
645 ... | ch-init fc = ⟪ proj2 (mf _ (proj1 ua)) , ch-init (fsuc _ fc ) ⟫
646 ... | ch-is-sup u u≤x is-sup fc = ⟪ proj2 (mf _ (proj1 ua)) , ch-is-sup u u≤x is-sup (fsuc _ fc) ⟫
647 itotal : IsTotalOrderSet (UnionCF A f mf ay isupf o∅)
648 itotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where
649 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
650 uz01 = chain-total A f mf ay isupf (proj2 ca) (proj2 cb)
651 csupf : {z : Ordinal} → z o≤ o∅ → odef (UnionCF A f mf ay isupf z ) (isupf z)
652 csupf {z} z≤0 = ⟪ asi , ch-is-sup o∅ o∅≤z uz02 (init asi refl) ⟫ where
653 uz03 : {z : Ordinal } → FClosure A f y z → (z ≡ isupf spi) ∨ (z << isupf spi)
654 uz03 {z} fc with SUP.x<sup sp (subst (λ k → FClosure A f y k ) (sym &iso) fc )
655 ... | case1 eq = case1 ( begin
656 z ≡⟨ sym &iso ⟩
657 & (* z) ≡⟨ cong (&) eq ⟩
658 spi ∎ ) where open ≡-Reasoning
659 ... | case2 lt = case2 (subst (λ k → * z < k ) (sym *iso) lt )
660 uz04 : {sup1 z1 : Ordinal} → isupf sup1 o< isupf spi → FClosure A f (isupf sup1) z1 → (z1 ≡ isupf spi) ∨ (z1 << isupf spi)
661 uz04 {s} {z} s<spi fcz = ⊥-elim ( o<¬≡ refl s<spi )
662 uz02 : ChainP A f mf ay isupf o∅
663 uz02 = record { fcy<sup = uz03 ; order = λ {s} {z} → {!!} ; supu=u = {!!} }
664
665 SUP⊆ : { B C : HOD } → B ⊆' C → SUP A C → SUP A B 625 SUP⊆ : { B C : HOD } → B ⊆' C → SUP A C → SUP A B
666 SUP⊆ {B} {C} B⊆C sup = record { sup = SUP.sup sup ; A∋maximal = SUP.A∋maximal sup ; x<sup = λ lt → SUP.x<sup sup (B⊆C lt) } 626 SUP⊆ {B} {C} B⊆C sup = record { sup = SUP.sup sup ; as = SUP.as sup ; x<sup = λ lt → SUP.x<sup sup (B⊆C lt) }
667 627
668 -- 628 --
669 -- create all ZChains under o< x 629 -- create all ZChains under o< x
670 -- 630 --
671 631
730 pnext1 {a} ⟪ aa , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 (mf a aa) , ch-is-sup u u≤x is-sup (fsuc _ fc ) ⟫ 690 pnext1 {a} ⟪ aa , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 (mf a aa) , ch-is-sup u u≤x is-sup (fsuc _ fc ) ⟫
731 691
732 -- if previous chain satisfies maximality, we caan reuse it 692 -- if previous chain satisfies maximality, we caan reuse it
733 -- 693 --
734 -- supf0 px is sup of UnionCF px , supf0 x is sup of UnionCF x 694 -- supf0 px is sup of UnionCF px , supf0 x is sup of UnionCF x
735 no-extension : ¬ sp1 ≡ x → ZChain A f mf ay x 695 no-extension : ¬ sp1 ≡ supf1 x → ZChain A f mf ay x
736 no-extension ¬sp=x = record { supf = supf1 ; sup = sup 696 no-extension ¬sp=x = record { supf = supf1 ; sup = sup
737 ; initial = pinit1 ; chain∋init = pcy1 ; sup=u = sup=u ; supf-is-sup = {!!} ; csupf = {!!} 697 ; initial = pinit1 ; chain∋init = pcy1 ; sup=u = sup=u ; supf-is-sup = {!!} ; csupf = csupf
738 ; chain⊆A = λ lt → proj1 lt ; f-next = pnext1 ; f-total = {!!} } where 698 ; chain⊆A = λ lt → proj1 lt ; f-next = pnext1 ; f-total = ptotal1 } where
739 UnionCF⊆ : {z : Ordinal } → z o≤ x → UnionCF A f mf ay supf1 z ⊆' UnionCF A f mf ay supf0 x 699 UnionCF⊆ : {z : Ordinal } → z o≤ x → UnionCF A f mf ay supf1 z ⊆' UnionCF A f mf ay supf0 x
740 UnionCF⊆ {z} z≤x ⟪ au , ch-init fc ⟫ = ⟪ au , ch-init fc ⟫ 700 UnionCF⊆ {z} z≤x ⟪ au , ch-init fc ⟫ = ⟪ au , ch-init fc ⟫
741 UnionCF⊆ {z} z≤x ⟪ au , ch-is-sup u1 u1≤x u1-is-sup (init au1 refl) ⟫ = ⟪ au , ch-is-sup u1 ? ? (init ? ?) ⟫ 701 UnionCF⊆ {z} z≤x ⟪ au , ch-is-sup u1 u1≤z record { fcy<sup = fc<s ; order = o1 ; supu=u = sp=u } (init au1 refl) ⟫ = zc30 where
742 UnionCF⊆ {z} z≤x ⟪ au , ch-is-sup u1 u1≤x u1-is-sup (fsuc xp fcu1) ⟫ with 702 zc30 : odef (UnionCF A f mf ay supf0 x) (supf1 u1 )
743 UnionCF⊆ {z} z≤x ⟪ A∋fc _ f mf fcu1 , ch-is-sup u1 u1≤x u1-is-sup fcu1 ⟫ 703 zc30 with trio< u1 px
704 ... | tri< a ¬b ¬c = ⟪ au , ch-is-sup u1 (OrdTrans u1≤z z≤x) ? (init au1 refl) ⟫
705 ... | tri≈ ¬a b ¬c = ⟪ au , ch-is-sup u1 (OrdTrans u1≤z z≤x) ? (init au1 refl) ⟫
706 ... | tri> ¬a ¬b px<u1 = ? where
707 zc31 : u1 ≡ x
708 zc31 with trio< u1 x
709 ... | tri< a ¬b ¬c = ⊥-elim (¬p<x<op ⟪ px<u1 , subst (λ k → u1 o< k) (sym (Oprev.oprev=x op)) a ⟫ )
710 ... | tri≈ ¬a b ¬c = b
711 ... | tri> ¬a ¬b c = ⊥-elim (¬p<x<op ⟪ c , ordtrans≤-< u1≤z z≤x ⟫ )
712 UnionCF⊆ {z} z≤x ⟪ au , ch-is-sup u1 u1≤z u1-is-sup (fsuc xp fcu1) ⟫ with
713 UnionCF⊆ {z} z≤x ⟪ A∋fc _ f mf fcu1 , ch-is-sup u1 u1≤z u1-is-sup fcu1 ⟫
714 ... | ⟪ aa , ch-init fc ⟫ = ⟪ proj2 ( mf _ aa ) , ch-init (fsuc _ fc) ⟫
715 ... | ⟪ aa , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 ( mf _ aa ) , ch-is-sup u u≤x is-sup (fsuc _ fc) ⟫
716 UnionCF⊆R : {z : Ordinal } → z o≤ x → UnionCF A f mf ay supf0 z ⊆' UnionCF A f mf ay supf1 x
717 UnionCF⊆R {z} z≤x ⟪ au , ch-init fc ⟫ = ⟪ au , ch-init fc ⟫
718 UnionCF⊆R {z} z≤x ⟪ au , ch-is-sup u1 u1≤z u1-is-sup (init au1 refl) ⟫
719 = ⟪ au , ch-is-sup u1 (OrdTrans u1≤z z≤x) ? (init ? ?) ⟫
720 UnionCF⊆R {z} z≤x ⟪ au , ch-is-sup u1 u1≤z u1-is-sup (fsuc xp fcu1) ⟫ with
721 UnionCF⊆R {z} z≤x ⟪ A∋fc _ f mf fcu1 , ch-is-sup u1 u1≤z u1-is-sup fcu1 ⟫
744 ... | ⟪ aa , ch-init fc ⟫ = ⟪ proj2 ( mf _ aa ) , ch-init (fsuc _ fc) ⟫ 722 ... | ⟪ aa , ch-init fc ⟫ = ⟪ proj2 ( mf _ aa ) , ch-init (fsuc _ fc) ⟫
745 ... | ⟪ aa , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 ( mf _ aa ) , ch-is-sup u u≤x is-sup (fsuc _ fc) ⟫ 723 ... | ⟪ aa , ch-is-sup u u≤x is-sup fc ⟫ = ⟪ proj2 ( mf _ aa ) , ch-is-sup u u≤x is-sup (fsuc _ fc) ⟫
746 sup : {z : Ordinal} → z o≤ x → SUP A (UnionCF A f mf ay supf1 z) 724 sup : {z : Ordinal} → z o≤ x → SUP A (UnionCF A f mf ay supf1 z)
747 sup {z} z≤x with trio< z px 725 sup {z} z≤x with trio< z px
748 ... | tri< a ¬b ¬c = SUP⊆ (UnionCF⊆ ? ) (ZChain.sup zc ? ) 726 ... | tri< a ¬b ¬c = SUP⊆ (UnionCF⊆ ? ) (ZChain.sup zc ? )
753 sup=u {b} ab b<x is-sup with trio< b px 731 sup=u {b} ab b<x is-sup with trio< b px
754 ... | tri< a ¬b ¬c = ? where 732 ... | tri< a ¬b ¬c = ? where
755 zc11 = ZChain.sup=u zc ab ? ? 733 zc11 = ZChain.sup=u zc ab ? ?
756 ... | tri≈ ¬a b ¬c = ? 734 ... | tri≈ ¬a b ¬c = ?
757 ... | tri> ¬a ¬b c = ? 735 ... | tri> ¬a ¬b c = ?
758 736 ptotal1 : IsTotalOrderSet pchain1
737 ptotal1 {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where
738 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
739 uz01 = chain-total A f mf ay supf1 ( (proj2 ca)) ( (proj2 cb))
740 csupf : {b : Ordinal} → b o≤ x → odef (UnionCF A f mf ay supf1 b) (supf1 b)
741 csupf {b} b≤x with trio< b px | inspect supf1 b
742 ... | tri< a ¬b ¬c | record { eq = eq1 } = ⟪ ? , ? ⟫
743 ... | tri≈ ¬a b ¬c | record { eq = eq1 } = ⟪ ? , ? ⟫
744 ... | tri> ¬a ¬b px<b | record { eq = eq1 } = ⊥-elim ( ¬sp=x (subst (λ k → sp1 ≡ supf1 k ) (sym zc30) (sym eq1) )) where
745 -- px< b ≤ x
746 -- b ≡ x, supf x ≡ sp1 , ¬ x ≡ sp1
747 zc30 : x ≡ b
748 zc30 with osuc-≡< b≤x
749 ... | case1 eq = sym (eq)
750 ... | case2 b<x = ⊥-elim (¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ )
759 zc4 : ZChain A f mf ay x 751 zc4 : ZChain A f mf ay x
760 zc4 with ODC.∋-p O A (* x) 752 zc4 with ODC.∋-p O A (* x)
761 ... | no noax = no-extension {!!} -- ¬ A ∋ p, just skip 753 ... | no noax = no-extension {!!} -- ¬ A ∋ p, just skip
762 ... | yes ax with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc ) ax f ) 754 ... | yes ax with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc ) ax f )
763 -- we have to check adding x preserve is-max ZChain A y f mf x 755 -- we have to check adding x preserve is-max ZChain A y f mf x
764 ... | case1 pr = no-extension {!!} -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next 756 ... | case1 pr = no-extension {!!} -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next
765 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc ) ax ) 757 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc ) ax )
766 ... | case1 is-sup = -- x is a sup of zc 758 ... | case1 is-sup = -- x is a sup of zc
767 record { supf = psupf1 ; chain⊆A = {!!} ; f-next = {!!} ; f-total = {!!} ; csupf = {!!} ; sup=u = {!!} 759 record { supf = psupf1 ; chain⊆A = {!!} ; f-next = {!!} ; f-total = {!!} ; csupf = csupf ; sup=u = {!!}
768 ; initial = {!!} ; chain∋init = {!!} ; sup = {!!} ; supf-is-sup = {!!} } where 760 ; initial = {!!} ; chain∋init = {!!} ; sup = {!!} ; supf-is-sup = {!!} } where
769 supx : SUP A (UnionCF A f mf ay supf0 x) 761 supx : SUP A (UnionCF A f mf ay supf0 x)
770 supx = record { sup = * x ; A∋maximal = subst (λ k → odef A k ) {!!} ax ; x<sup = {!!} } 762 supx = record { sup = * x ; as = subst (λ k → odef A k ) {!!} ax ; x<sup = {!!} }
771 spx = & (SUP.sup supx ) 763 spx = & (SUP.sup supx )
772 x=spx : x ≡ spx 764 x=spx : x ≡ spx
773 x=spx = {!!} 765 x=spx = {!!}
774 psupf1 : Ordinal → Ordinal 766 psupf1 : Ordinal → Ordinal
775 psupf1 z with trio< z x 767 psupf1 z with trio< z x
776 ... | tri< a ¬b ¬c = ZChain.supf zc z 768 ... | tri< a ¬b ¬c = ZChain.supf zc z
777 ... | tri≈ ¬a b ¬c = x 769 ... | tri≈ ¬a b ¬c = x
778 ... | tri> ¬a ¬b c = x 770 ... | tri> ¬a ¬b c = x
771 csupf : {b : Ordinal} → b o≤ x → odef (UnionCF A f mf ay psupf1 b) (psupf1 b)
772 csupf {b} b≤x with trio< b px | inspect psupf1 b
773 ... | tri< a ¬b ¬c | record { eq = eq1 } = ⟪ ? , ? ⟫
774 ... | tri≈ ¬a b ¬c | record { eq = eq1 } = ⟪ ? , ? ⟫
775 ... | tri> ¬a ¬b c | record { eq = eq1 } = ? where -- b ≡ x, supf x ≡ sp
776 zc30 : x ≡ b
777 zc30 with trio< x b
778 ... | tri< a ¬b ¬c = ?
779 ... | tri≈ ¬a b ¬c = b
780 ... | tri> ¬a ¬b c = ?
779 781
780 ... | case2 ¬x=sup = no-extension {!!} -- px is not f y' nor sup of former ZChain from y -- no extention 782 ... | case2 ¬x=sup = no-extension {!!} -- px is not f y' nor sup of former ZChain from y -- no extention
781 783
782 ... | no lim = zc5 where 784 ... | no lim = zc5 where
783 785
877 sup=u {b} ab b<x is-sup with trio< b x 879 sup=u {b} ab b<x is-sup with trio< b x
878 ... | tri< a ¬b ¬c = ZChain.sup=u (pzc (osuc b) (ob<x lim a)) ab ? record { x<sup = {!!} } 880 ... | tri< a ¬b ¬c = ZChain.sup=u (pzc (osuc b) (ob<x lim a)) ab ? record { x<sup = {!!} }
879 ... | tri≈ ¬a b ¬c = {!!} 881 ... | tri≈ ¬a b ¬c = {!!}
880 ... | tri> ¬a ¬b c = {!!} 882 ... | tri> ¬a ¬b c = {!!}
881 csupf : {z : Ordinal} → z o≤ x → odef (UnionCF A f mf ay supf1 z) (supf1 z) 883 csupf : {z : Ordinal} → z o≤ x → odef (UnionCF A f mf ay supf1 z) (supf1 z)
882 csupf {z} z<x with trio< z x 884 csupf {z} z≤x with trio< z x
883 ... | tri< a ¬b ¬c = zc9 where 885 ... | tri< a ¬b ¬c = zc9 where
884 zc9 : odef (UnionCF A f mf ay supf1 z) (ZChain.supf (pzc (osuc z) (ob<x lim a)) z) 886 zc9 : odef (UnionCF A f mf ay supf1 z) (ZChain.supf (pzc (osuc z) (ob<x lim a)) z)
885 zc9 = {!!} 887 zc9 = {!!}
886 zc8 : odef (UnionCF A f mf ay (supfu a) z) (ZChain.supf (pzc (osuc z) (ob<x lim a)) z) 888 zc8 : odef (UnionCF A f mf ay (supfu a) z) (ZChain.supf (pzc (osuc z) (ob<x lim a)) z)
887 zc8 = ZChain.csupf (pzc (osuc z) (ob<x lim a)) (o<→≤ <-osuc ) 889 zc8 = ZChain.csupf (pzc (osuc z) (ob<x lim a)) (o<→≤ <-osuc )
888 ... | tri≈ ¬a b ¬c = {!!} -- ⊥-elim (¬a z<x) 890 ... | tri≈ ¬a b ¬c = ?
889 ... | tri> ¬a ¬b c = {!!} -- ⊥-elim (¬a z<x) 891 ... | tri> ¬a ¬b x<z = ⊥-elim (o<¬≡ refl (ordtrans<-≤ x<z z≤x))
890 892
891 zc5 : ZChain A f mf ay x 893 zc5 : ZChain A f mf ay x
892 zc5 with ODC.∋-p O A (* x) 894 zc5 with ODC.∋-p O A (* x)
893 ... | no noax = no-extension {!!} -- ¬ A ∋ p, just skip 895 ... | no noax = no-extension {!!} -- ¬ A ∋ p, just skip
894 ... | yes ax with ODC.p∨¬p O ( HasPrev A pchain ax f ) 896 ... | yes ax with ODC.p∨¬p O ( HasPrev A pchain ax f )
903 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → ZChain A f mf ay (& A) 905 SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → ZChain A f mf ay (& A)
904 SZ f mf {y} ay = TransFinite {λ z → ZChain A f mf ay z } (λ x → ind f mf ay x ) (& A) 906 SZ f mf {y} ay = TransFinite {λ z → ZChain A f mf ay z } (λ x → ind f mf ay x ) (& A)
905 907
906 zorn00 : Maximal A 908 zorn00 : Maximal A
907 zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM 909 zorn00 with is-o∅ ( & HasMaximal ) -- we have no Level (suc n) LEM
908 ... | no not = record { maximal = ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; A∋maximal = zorn01 ; ¬maximal<x = zorn02 } where 910 ... | no not = record { maximal = ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ; as = zorn01 ; ¬maximal<x = zorn02 } where
909 -- yes we have the maximal 911 -- yes we have the maximal
910 zorn03 : odef HasMaximal ( & ( ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ) ) 912 zorn03 : odef HasMaximal ( & ( ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) ) )
911 zorn03 = ODC.x∋minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) -- Axiom of choice 913 zorn03 = ODC.x∋minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) -- Axiom of choice
912 zorn01 : A ∋ ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) 914 zorn01 : A ∋ ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq))
913 zorn01 = proj1 zorn03 915 zorn01 = proj1 zorn03
916 ... | yes ¬Maximal = ⊥-elim ( z04 nmx zorn04 total ) where 918 ... | yes ¬Maximal = ⊥-elim ( z04 nmx zorn04 total ) where
917 -- if we have no maximal, make ZChain, which contradict SUP condition 919 -- if we have no maximal, make ZChain, which contradict SUP condition
918 nmx : ¬ Maximal A 920 nmx : ¬ Maximal A
919 nmx mx = ∅< {HasMaximal} zc5 ( ≡o∅→=od∅ ¬Maximal ) where 921 nmx mx = ∅< {HasMaximal} zc5 ( ≡o∅→=od∅ ¬Maximal ) where
920 zc5 : odef A (& (Maximal.maximal mx)) ∧ (( y : Ordinal ) → odef A y → ¬ (* (& (Maximal.maximal mx)) < * y)) 922 zc5 : odef A (& (Maximal.maximal mx)) ∧ (( y : Ordinal ) → odef A y → ¬ (* (& (Maximal.maximal mx)) < * y))
921 zc5 = ⟪ Maximal.A∋maximal mx , (λ y ay mx<y → Maximal.¬maximal<x mx (subst (λ k → odef A k ) (sym &iso) ay) (subst (λ k → k < * y) *iso mx<y) ) ⟫ 923 zc5 = ⟪ Maximal.as mx , (λ y ay mx<y → Maximal.¬maximal<x mx (subst (λ k → odef A k ) (sym &iso) ay) (subst (λ k → k < * y) *iso mx<y) ) ⟫
922 zorn04 : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A) 924 zorn04 : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)
923 zorn04 = SZ (cf nmx) (cf-is-≤-monotonic nmx) (subst (λ k → odef A k ) &iso as ) 925 zorn04 = SZ (cf nmx) (cf-is-≤-monotonic nmx) (subst (λ k → odef A k ) &iso as )
924 total : IsTotalOrderSet (ZChain.chain zorn04) 926 total : IsTotalOrderSet (ZChain.chain zorn04)
925 total {a} {b} = zorn06 where 927 total {a} {b} = zorn06 where
926 zorn06 : odef (ZChain.chain zorn04) (& a) → odef (ZChain.chain zorn04) (& b) → Tri (a < b) (a ≡ b) (b < a) 928 zorn06 : odef (ZChain.chain zorn04) (& a) → odef (ZChain.chain zorn04) (& b) → Tri (a < b) (a ≡ b) (b < a)