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