Mercurial > hg > Members > kono > Proof > ZF-in-agda
comparison src/zorn.agda @ 954:e43a5cc72287
IsSUP is now min sup
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 02 Nov 2022 13:53:10 +0900 |
parents | dfb4f7e9c454 |
children | bc27df170a1e |
comparison
equal
deleted
inserted
replaced
953:dfb4f7e9c454 | 954:e43a5cc72287 |
---|---|
241 x=fy : x ≡ f y | 241 x=fy : x ≡ f y |
242 | 242 |
243 record IsSup (A B : HOD) {x : Ordinal } (xa : odef A x) : Set n where | 243 record IsSup (A B : HOD) {x : Ordinal } (xa : odef A x) : Set n where |
244 field | 244 field |
245 x≤sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x ) | 245 x≤sup : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x ) |
246 minsup : { sup1 : Ordinal } → odef A sup1 | |
247 → ( {z : Ordinal } → odef B z → (z ≡ sup1 ) ∨ (z << sup1 )) → x o≤ sup1 | |
246 | 248 |
247 record SUP ( A B : HOD ) : Set (Level.suc n) where | 249 record SUP ( A B : HOD ) : Set (Level.suc n) where |
248 field | 250 field |
249 sup : HOD | 251 sup : HOD |
250 as : A ∋ sup | 252 as : A ∋ sup |
657 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) b f | 659 m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) b f |
658 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = | 660 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = |
659 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) ; x=fy = HasPrev.x=fy nhp } ) | 661 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) ; x=fy = HasPrev.x=fy nhp } ) |
660 m05 : ZChain.supf zc b ≡ b | 662 m05 : ZChain.supf zc b ≡ b |
661 m05 = ZChain.sup=u zc ab (o<→≤ (z09 ab) ) | 663 m05 = ZChain.sup=u zc ab (o<→≤ (z09 ab) ) |
662 ⟪ record { x≤sup = λ {z} uz → IsSup.x≤sup (proj2 is-sup) (chain-mono1 (o<→≤ b<x) uz) } , m04 ⟫ | 664 ⟪ record { x≤sup = λ {z} uz → IsSup.x≤sup (proj2 is-sup) (chain-mono1 (o<→≤ b<x) uz) |
665 ; minsup = m07 } , m04 ⟫ where | |
666 m10 : {s : Ordinal } → (odef A s ) | |
667 → ( {z : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) b) z → (z ≡ s) ∨ (z << s) ) | |
668 → {z : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) z → (z ≡ s) ∨ (z << s) | |
669 m10 = ? | |
670 m07 : {sup1 : Ordinal} → odef A sup1 → ({z : Ordinal} → | |
671 odef (UnionCF A f mf ay (ZChain.supf zc) b) z → (z ≡ sup1) ∨ (z << sup1)) → b o≤ sup1 | |
672 m07 {s} as min = IsSup.minsup (proj2 is-sup) as (m10 as min) | |
663 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 |
664 m08 {z} fcz = ZChain.fcy<sup zc (o<→≤ b<A) fcz | 674 m08 {z} fcz = ZChain.fcy<sup zc (o<→≤ b<A) fcz |
665 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 |
666 → 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 |
667 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 |
690 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = | 700 m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay = |
691 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) | 701 chain-mono1 (o<→≤ b<x) (HasPrev.ay nhp) |
692 ; x=fy = HasPrev.x=fy nhp } ) | 702 ; x=fy = HasPrev.x=fy nhp } ) |
693 m05 : ZChain.supf zc b ≡ b | 703 m05 : ZChain.supf zc b ≡ b |
694 m05 = ZChain.sup=u zc ab (o<→≤ m09) | 704 m05 = ZChain.sup=u zc ab (o<→≤ m09) |
695 ⟪ record { x≤sup = λ lt → IsSup.x≤sup (proj2 is-sup) (chain-mono1 (o<→≤ b<x) lt )} , m04 ⟫ -- ZChain on x | 705 ⟪ record { x≤sup = λ lt → IsSup.x≤sup (proj2 is-sup) (chain-mono1 (o<→≤ b<x) lt ) |
706 ; minsup = ? } , m04 ⟫ -- ZChain on x | |
696 m06 : ChainP A f mf ay supf b | 707 m06 : ChainP A f mf ay supf b |
697 m06 = record { fcy<sup = m07 ; order = m08 ; supu=u = m05 } | 708 m06 = record { fcy<sup = m07 ; order = m08 ; supu=u = m05 } |
698 | 709 |
699 uchain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → HOD | 710 uchain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → HOD |
700 uchain f mf {y} ay = record { od = record { def = λ x → FClosure A f y x } ; odmax = & A ; <odmax = | 711 uchain f mf {y} ay = record { od = record { def = λ x → FClosure A f y x } ; odmax = & A ; <odmax = |
723 -- | 734 -- |
724 | 735 |
725 ind : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → (x : Ordinal) | 736 ind : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → (x : Ordinal) |
726 → ((z : Ordinal) → z o< x → ZChain A f mf ay z) → ZChain A f mf ay x | 737 → ((z : Ordinal) → z o< x → ZChain A f mf ay z) → ZChain A f mf ay x |
727 ind f mf {y} ay x prev with Oprev-p x | 738 ind f mf {y} ay x prev with Oprev-p x |
728 ... | yes op = zc4 where | 739 ... | yes op = zc41 where |
729 -- | 740 -- |
730 -- we have previous ordinal to use induction | 741 -- we have previous ordinal to use induction |
731 -- | 742 -- |
732 px = Oprev.oprev op | 743 px = Oprev.oprev op |
733 zc : ZChain A f mf ay (Oprev.oprev op) | 744 zc : ZChain A f mf ay (Oprev.oprev op) |
753 ... | tri≈ ¬a b ¬c = case1 (o≤-refl0 b) | 764 ... | tri≈ ¬a b ¬c = case1 (o≤-refl0 b) |
754 ... | tri> ¬a ¬b px<b with osuc-≡< b≤x | 765 ... | tri> ¬a ¬b px<b with osuc-≡< b≤x |
755 ... | case1 eq = case2 eq | 766 ... | case1 eq = case2 eq |
756 ... | 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 ⟫ ) |
757 | 768 |
758 zc41 : supf0 px o< x → ZChain A f mf ay x | 769 -- |
759 zc41 sfpx<x = record { supf = supf1 ; sup=u = ? ; asupf = ? ; supf-mono = supf1-mono ; supf-< = ? | 770 -- find the next value of supf |
771 -- | |
772 | |
773 pchainpx : HOD | |
774 pchainpx = record { od = record { def = λ z → (odef A z ∧ UChain A f mf ay supf0 px z ) | |
775 ∨ FClosure A f (supf0 px) z } ; odmax = & A ; <odmax = zc00 } where | |
776 zc00 : {z : Ordinal } → (odef A z ∧ UChain A f mf ay supf0 px z ) ∨ FClosure A f (supf0 px) z → z o< & A | |
777 zc00 {z} (case1 lt) = z07 lt | |
778 zc00 {z} (case2 fc) = z09 ( A∋fc (supf0 px) f mf fc ) | |
779 | |
780 zc02 : { a b : Ordinal } → odef A a ∧ UChain A f mf ay supf0 px a → FClosure A f (supf0 px) b → a <= b | |
781 zc02 {a} {b} ca fb = zc05 fb where | |
782 zc06 : MinSUP.sup (ZChain.minsup zc o≤-refl) ≡ supf0 px | |
783 zc06 = trans (sym ( ZChain.supf-is-minsup zc o≤-refl )) refl | |
784 zc05 : {b : Ordinal } → FClosure A f (supf0 px) b → a <= b | |
785 zc05 (fsuc b1 fb ) with proj1 ( mf b1 (A∋fc (supf0 px) f mf fb )) | |
786 ... | case1 eq = subst (λ k → a <= k ) (subst₂ (λ j k → j ≡ k) &iso &iso (cong (&) eq)) (zc05 fb) | |
787 ... | case2 lt = <-ftrans (zc05 fb) (case2 lt) | |
788 zc05 (init b1 refl) with MinSUP.x≤sup (ZChain.minsup zc o≤-refl) | |
789 (subst (λ k → odef A k ∧ UChain A f mf ay supf0 px k) (sym &iso) ca ) | |
790 ... | case1 eq = case1 (subst₂ (λ j k → j ≡ k ) &iso zc06 eq ) | |
791 ... | case2 lt = case2 (subst₂ (λ j k → j < k ) *iso (cong (*) zc06) lt ) | |
792 | |
793 ptotal : IsTotalOrderSet pchainpx | |
794 ptotal (case1 a) (case1 b) = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso | |
795 (chain-total A f mf ay supf0 (proj2 a) (proj2 b)) | |
796 ptotal {a0} {b0} (case1 a) (case2 b) with zc02 a b | |
797 ... | case1 eq = tri≈ (<-irr (case1 (sym eq1))) eq1 (<-irr (case1 eq1)) where | |
798 eq1 : a0 ≡ b0 | |
799 eq1 = subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) eq ) | |
800 ... | case2 lt = tri< lt1 (λ eq → <-irr (case1 (sym eq)) lt1) (<-irr (case2 lt1)) where | |
801 lt1 : a0 < b0 | |
802 lt1 = subst₂ (λ j k → j < k ) *iso *iso lt | |
803 ptotal {b0} {a0} (case2 b) (case1 a) with zc02 a b | |
804 ... | case1 eq = tri≈ (<-irr (case1 eq1)) (sym eq1) (<-irr (case1 (sym eq1))) where | |
805 eq1 : a0 ≡ b0 | |
806 eq1 = subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) eq ) | |
807 ... | case2 lt = tri> (<-irr (case2 lt1)) (λ eq → <-irr (case1 eq) lt1) lt1 where | |
808 lt1 : a0 < b0 | |
809 lt1 = subst₂ (λ j k → j < k ) *iso *iso lt | |
810 ptotal (case2 a) (case2 b) = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso (fcn-cmp (supf0 px) f mf a b) | |
811 | |
812 pcha : pchainpx ⊆' A | |
813 pcha (case1 lt) = proj1 lt | |
814 pcha (case2 fc) = A∋fc _ f mf fc | |
815 | |
816 sup1 : MinSUP A pchainpx | |
817 sup1 = minsupP pchainpx pcha ptotal | |
818 sp1 = MinSUP.sup sup1 | |
819 | |
820 -- | |
821 -- supf0 px o≤ sp1 | |
822 -- | |
823 | |
824 zc41 : ZChain A f mf ay x | |
825 zc41 with MinSUP.x≤sup sup1 (case2 (init (ZChain.asupf zc {px}) refl )) | |
826 zc41 | (case2 sfpx<sp1) = record { supf = supf1 ; sup=u = ? ; asupf = ? ; supf-mono = supf1-mono ; supf-< = ? | |
760 ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; csupf = csupf1 } where | 827 ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; csupf = csupf1 } where |
761 -- supf0 px is included by the chain | 828 -- supf0 px is included by the chain of sp1 |
762 -- ( UnionCF A f mf ay supf0 px ∪ FClosure (supf0 px) ) ≡ UnionCF supf1 x | 829 -- ( UnionCF A f mf ay supf0 px ∪ FClosure (supf0 px) ) ≡ UnionCF supf1 x |
763 -- supf1 x ≡ sp1, which is not included now | 830 -- supf1 x ≡ sp1, which is not included now |
764 | |
765 pchainpx : HOD | |
766 pchainpx = record { od = record { def = λ z → (odef A z ∧ UChain A f mf ay supf0 px z ) | |
767 ∨ FClosure A f (supf0 px) z } ; odmax = & A ; <odmax = zc00 } where | |
768 zc00 : {z : Ordinal } → (odef A z ∧ UChain A f mf ay supf0 px z ) ∨ FClosure A f (supf0 px) z → z o< & A | |
769 zc00 {z} (case1 lt) = z07 lt | |
770 zc00 {z} (case2 fc) = z09 ( A∋fc (supf0 px) f mf fc ) | |
771 zc01 : {z : Ordinal } → (odef A z ∧ UChain A f mf ay supf0 px z ) ∨ FClosure A f (supf0 px) z → odef A z | |
772 zc01 {z} (case1 lt) = proj1 lt | |
773 zc01 {z} (case2 fc) = ( A∋fc (supf0 px) f mf fc ) | |
774 | |
775 zc02 : { a b : Ordinal } → odef A a ∧ UChain A f mf ay supf0 px a → FClosure A f (supf0 px) b → a <= b | |
776 zc02 {a} {b} ca fb = zc05 fb where | |
777 zc06 : MinSUP.sup (ZChain.minsup zc o≤-refl) ≡ supf0 px | |
778 zc06 = trans (sym ( ZChain.supf-is-minsup zc o≤-refl )) refl | |
779 zc05 : {b : Ordinal } → FClosure A f (supf0 px) b → a <= b | |
780 zc05 (fsuc b1 fb ) with proj1 ( mf b1 (A∋fc (supf0 px) f mf fb )) | |
781 ... | case1 eq = subst (λ k → a <= k ) (subst₂ (λ j k → j ≡ k) &iso &iso (cong (&) eq)) (zc05 fb) | |
782 ... | case2 lt = <-ftrans (zc05 fb) (case2 lt) | |
783 zc05 (init b1 refl) with MinSUP.x≤sup (ZChain.minsup zc o≤-refl) | |
784 (subst (λ k → odef A k ∧ UChain A f mf ay supf0 px k) (sym &iso) ca ) | |
785 ... | case1 eq = case1 (subst₂ (λ j k → j ≡ k ) &iso zc06 eq ) | |
786 ... | case2 lt = case2 (subst₂ (λ j k → j < k ) *iso (cong (*) zc06) lt ) | |
787 | |
788 ptotal : IsTotalOrderSet pchainpx | |
789 ptotal (case1 a) (case1 b) = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso | |
790 (chain-total A f mf ay supf0 (proj2 a) (proj2 b)) | |
791 ptotal {a0} {b0} (case1 a) (case2 b) with zc02 a b | |
792 ... | case1 eq = tri≈ (<-irr (case1 (sym eq1))) eq1 (<-irr (case1 eq1)) where | |
793 eq1 : a0 ≡ b0 | |
794 eq1 = subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) eq ) | |
795 ... | case2 lt = tri< lt1 (λ eq → <-irr (case1 (sym eq)) lt1) (<-irr (case2 lt1)) where | |
796 lt1 : a0 < b0 | |
797 lt1 = subst₂ (λ j k → j < k ) *iso *iso lt | |
798 ptotal {b0} {a0} (case2 b) (case1 a) with zc02 a b | |
799 ... | case1 eq = tri≈ (<-irr (case1 eq1)) (sym eq1) (<-irr (case1 (sym eq1))) where | |
800 eq1 : a0 ≡ b0 | |
801 eq1 = subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) eq ) | |
802 ... | case2 lt = tri> (<-irr (case2 lt1)) (λ eq → <-irr (case1 eq) lt1) lt1 where | |
803 lt1 : a0 < b0 | |
804 lt1 = subst₂ (λ j k → j < k ) *iso *iso lt | |
805 ptotal (case2 a) (case2 b) = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso (fcn-cmp (supf0 px) f mf a b) | |
806 | |
807 pcha : pchainpx ⊆' A | |
808 pcha (case1 lt) = proj1 lt | |
809 pcha (case2 fc) = A∋fc _ f mf fc | |
810 | |
811 sup1 : MinSUP A pchainpx | |
812 sup1 = minsupP pchainpx pcha ptotal | |
813 sp1 = MinSUP.sup sup1 | |
814 | 831 |
815 supf1 : Ordinal → Ordinal | 832 supf1 : Ordinal → Ordinal |
816 supf1 z with trio< z px | 833 supf1 z with trio< z px |
817 ... | tri< a ¬b ¬c = supf0 z | 834 ... | tri< a ¬b ¬c = supf0 z |
818 ... | tri≈ ¬a b ¬c = supf0 z | 835 ... | tri≈ ¬a b ¬c = supf0 z |
941 zc19 = trans (sf1=sf0 o≤-refl) (cong supf0 (sym b)) | 958 zc19 = trans (sf1=sf0 o≤-refl) (cong supf0 (sym b)) |
942 s≤px : s o≤ px | 959 s≤px : s o≤ px |
943 s≤px = o<→≤ (supf-inject0 supf1-mono ss<spx) | 960 s≤px = o<→≤ (supf-inject0 supf1-mono ss<spx) |
944 ... | tri> ¬a ¬b c | _ = ⊥-elim ( ¬p<x<op ⟪ c , u≤px ⟫ ) | 961 ... | tri> ¬a ¬b c | _ = ⊥-elim ( ¬p<x<op ⟪ c , u≤px ⟫ ) |
945 zc12 {z} (case2 fc) = zc21 fc where | 962 zc12 {z} (case2 fc) = zc21 fc where |
963 zc20 : (supf0 px ≡ px ) ∨ ( supf0 px o< px ) | |
964 zc20 = ? | |
946 zc21 : {z1 : Ordinal } → FClosure A f (supf0 px) z1 → odef (UnionCF A f mf ay supf1 x) z1 | 965 zc21 : {z1 : Ordinal } → FClosure A f (supf0 px) z1 → odef (UnionCF A f mf ay supf1 x) z1 |
947 zc21 {z1} (fsuc z2 fc ) with zc21 fc | 966 zc21 {z1} (fsuc z2 fc ) with zc21 fc |
948 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫ | 967 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-init (fsuc _ fc₁) ⟫ |
949 ... | ⟪ ua1 , ch-is-sup u u<x u1-is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u<x u1-is-sup (fsuc _ fc₁) ⟫ | 968 ... | ⟪ ua1 , ch-is-sup u u<x u1-is-sup fc₁ ⟫ = ⟪ proj2 ( mf _ ua1) , ch-is-sup u u<x u1-is-sup (fsuc _ fc₁) ⟫ |
950 zc21 (init asp refl ) with osuc-≡< ( subst (λ k → supf0 px o< k ) (sym (Oprev.oprev=x op)) sfpx<x ) | 969 zc21 (init asp refl ) with zc20 |
951 ... | case1 sfpx=px = ⟪ asp , ch-is-sup px zc18 | 970 ... | case1 sfpx=px = ⟪ asp , ch-is-sup px zc18 |
952 record {fcy<sup = zc13 ; order = zc17 ; supu=u = zc15 } zc14 ⟫ where | 971 record {fcy<sup = zc13 ; order = zc17 ; supu=u = zc15 } zc14 ⟫ where |
953 zc15 : supf1 px ≡ px | 972 zc15 : supf1 px ≡ px |
954 zc15 = trans (sf1=sf0 o≤-refl ) (sfpx=px) | 973 zc15 = trans (sf1=sf0 o≤-refl ) (sfpx=px) |
955 zc18 : supf1 px o< supf1 x | 974 zc18 : supf1 px o< supf1 x |
974 csupf17 (init as refl ) = ZChain.csupf zc sf<px | 993 csupf17 (init as refl ) = ZChain.csupf zc sf<px |
975 csupf17 (fsuc x fc) = ZChain.f-next zc (csupf17 fc) | 994 csupf17 (fsuc x fc) = ZChain.f-next zc (csupf17 fc) |
976 | 995 |
977 ... | case2 sfp<px with ZChain.csupf zc sfp<px -- odef (UnionCF A f mf ay supf0 px) (supf0 px) | 996 ... | case2 sfp<px with ZChain.csupf zc sfp<px -- odef (UnionCF A f mf ay supf0 px) (supf0 px) |
978 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ ua1 , ch-init fc₁ ⟫ | 997 ... | ⟪ ua1 , ch-init fc₁ ⟫ = ⟪ ua1 , ch-init fc₁ ⟫ |
979 ... | ⟪ ua1 , ch-is-sup u u<x is-sup fc₁ ⟫ = ⟪ ua1 , ch-is-sup u ? | 998 ... | ⟪ ua1 , ch-is-sup u u<x is-sup fc₁ ⟫ = ⟪ ua1 , ch-is-sup u zc18 |
980 record { fcy<sup = z10 ; order = z11 ; supu=u = z12 } (fcpu fc₁ ? ) ⟫ where | 999 record { fcy<sup = z10 ; order = z11 ; supu=u = z12 } (fcpu fc₁ ? ) ⟫ where |
981 z10 : {z : Ordinal } → FClosure A f y z → (z ≡ supf1 u) ∨ ( z << supf1 u ) | 1000 z10 : {z : Ordinal } → FClosure A f y z → (z ≡ supf1 u) ∨ ( z << supf1 u ) |
982 z10 {z} fc = subst (λ k → (z ≡ k) ∨ ( z << k )) (sym (sf1=sf0 ? )) (ChainP.fcy<sup is-sup fc) | 1001 z10 {z} fc = subst (λ k → (z ≡ k) ∨ ( z << k )) (sym (sf1=sf0 ? )) (ChainP.fcy<sup is-sup fc) |
983 z11 : {s z1 : Ordinal} → (lt : supf1 s o< supf1 u ) → FClosure A f (supf1 s ) z1 | 1002 z11 : {s z1 : Ordinal} → (lt : supf1 s o< supf1 u ) → FClosure A f (supf1 s ) z1 |
984 → (z1 ≡ supf1 u ) ∨ ( z1 << supf1 u ) | 1003 → (z1 ≡ supf1 u ) ∨ ( z1 << supf1 u ) |
990 s≤px = ordtrans s<u ? -- (o<→≤ u<x) | 1009 s≤px = ordtrans s<u ? -- (o<→≤ u<x) |
991 lt0 : supf0 s o< supf0 u | 1010 lt0 : supf0 s o< supf0 u |
992 lt0 = subst₂ (λ j k → j o< k ) (sf1=sf0 s≤px) (sf1=sf0 ? ) lt | 1011 lt0 = subst₂ (λ j k → j o< k ) (sf1=sf0 s≤px) (sf1=sf0 ? ) lt |
993 z12 : supf1 u ≡ u | 1012 z12 : supf1 u ≡ u |
994 z12 = trans (sf1=sf0 ? ) (ChainP.supu=u is-sup) | 1013 z12 = trans (sf1=sf0 ? ) (ChainP.supu=u is-sup) |
1014 zc18 : supf1 u o< supf1 x | |
1015 zc18 = ? | |
995 | 1016 |
996 | 1017 |
997 | 1018 |
998 record STMP {z : Ordinal} (z≤x : z o≤ x ) : Set (Level.suc n) where | 1019 record STMP {z : Ordinal} (z≤x : z o≤ x ) : Set (Level.suc n) where |
999 field | 1020 field |
1053 ... | case2 sfz<sfpx = ⊥-elim ( ¬p<x<op ⟪ cs05 , cs06 ⟫ ) where | 1074 ... | case2 sfz<sfpx = ⊥-elim ( ¬p<x<op ⟪ cs05 , cs06 ⟫ ) where |
1054 --- supf1 z1 ≡ px , z1 o< px , px ≡ supf0 z1 o< supf0 px o< x | 1075 --- supf1 z1 ≡ px , z1 o< px , px ≡ supf0 z1 o< supf0 px o< x |
1055 cs05 : px o< supf0 px | 1076 cs05 : px o< supf0 px |
1056 cs05 = subst₂ ( λ j k → j o< k ) sfz=px (sf1=sf0 o≤-refl ) sfz<sfpx | 1077 cs05 = subst₂ ( λ j k → j o< k ) sfz=px (sf1=sf0 o≤-refl ) sfz<sfpx |
1057 cs06 : supf0 px o< osuc px | 1078 cs06 : supf0 px o< osuc px |
1058 cs06 = subst (λ k → supf0 px o< k ) (sym opx=x) sfpx<x | 1079 cs06 = subst (λ k → supf0 px o< k ) (sym opx=x) ? |
1059 csupf2 | tri≈ ¬a b ¬c | record { eq = eq1 } = zc12 (case2 (init (ZChain.asupf zc) (cong supf0 (sym b)))) | 1080 csupf2 | tri≈ ¬a b ¬c | record { eq = eq1 } = zc12 (case2 (init (ZChain.asupf zc) (cong supf0 (sym b)))) |
1060 csupf2 | tri> ¬a ¬b px<z1 | record { eq = eq1 } = ? | 1081 csupf2 | tri> ¬a ¬b px<z1 | record { eq = eq1 } = ? |
1061 -- ⊥-elim ( ¬p<x<op ⟪ px<z1 , subst (λ k → z1 o< k) (sym opx=x) z1<x ⟫ ) | 1082 -- ⊥-elim ( ¬p<x<op ⟪ px<z1 , subst (λ k → z1 o< k) (sym opx=x) z1<x ⟫ ) |
1062 | 1083 |
1063 | 1084 |
1064 zc4 : ZChain A f mf ay x --- x o≤ supf px | 1085 zc41 | (case1 sfp=sp1 ) = record { supf = supf0 ; sup=u = ? ; asupf = ? ; supf-mono = ? ; supf-< = ? |
1065 zc4 with trio< x (supf0 px) | |
1066 ... | tri> ¬a ¬b c = zc41 c | |
1067 ... | tri≈ ¬a b ¬c = ? | |
1068 ... | tri< a ¬b ¬c = record { supf = supf0 ; sup=u = ? ; asupf = ? ; supf-mono = ? ; supf-< = ? | |
1069 ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; csupf = ? } where | 1086 ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; csupf = ? } where |
1070 | 1087 |
1071 -- supf0 px not is included by the chain | 1088 -- supf0 px not is included by the chain |
1072 -- supf1 x ≡ supf0 px because of supfmax | 1089 -- supf1 x ≡ supf0 px because of supfmax |
1073 | 1090 |
1143 ... | case2 lt = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x ? | 1160 ... | case2 lt = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x ? |
1144 zc12 : supf0 x ≡ u1 | 1161 zc12 : supf0 x ≡ u1 |
1145 zc12 = subst (λ k → supf0 k ≡ u1) eq ? | 1162 zc12 = subst (λ k → supf0 k ≡ u1) eq ? |
1146 zcsup : xSUP (UnionCF A f mf ay supf0 px) x | 1163 zcsup : xSUP (UnionCF A f mf ay supf0 px) x |
1147 zcsup = record { ax = subst (λ k → odef A k) (trans zc12 eq) (ZChain.asupf zc) | 1164 zcsup = record { ax = subst (λ k → odef A k) (trans zc12 eq) (ZChain.asupf zc) |
1148 ; is-sup = record { x≤sup = x≤sup } } | 1165 ; is-sup = record { x≤sup = x≤sup ; minsup = ? } } |
1149 zc11 (case2 hp) {z} ⟪ az , ch-is-sup u1 u1<x u1-is-sup fc ⟫ | tri> ¬a ¬b px<u = case1 ? where | 1166 zc11 (case2 hp) {z} ⟪ az , ch-is-sup u1 u1<x u1-is-sup fc ⟫ | tri> ¬a ¬b px<u = case1 ? where |
1150 eq : u1 ≡ x | 1167 eq : u1 ≡ x |
1151 eq with trio< u1 x | 1168 eq with trio< u1 x |
1152 ... | tri< a ¬b ¬c = ⊥-elim ( ¬p<x<op ⟪ px<u , subst (λ k → u1 o< k ) (sym (Oprev.oprev=x op )) a ⟫ ) | 1169 ... | tri< a ¬b ¬c = ⊥-elim ( ¬p<x<op ⟪ px<u , subst (λ k → u1 o< k ) (sym (Oprev.oprev=x op )) a ⟫ ) |
1153 ... | tri≈ ¬a b ¬c = b | 1170 ... | tri≈ ¬a b ¬c = b |
1195 zc37 : MinSUP A (UnionCF A f mf ay supf0 z) | 1212 zc37 : MinSUP A (UnionCF A f mf ay supf0 z) |
1196 zc37 = record { sup = ? ; asm = ? ; x≤sup = ? } | 1213 zc37 = record { sup = ? ; asm = ? ; x≤sup = ? } |
1197 sup=u : {b : Ordinal} (ab : odef A b) → | 1214 sup=u : {b : Ordinal} (ab : odef A b) → |
1198 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 | 1215 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 |
1199 sup=u {b} ab b≤x is-sup with trio< b px | 1216 sup=u {b} ab b≤x is-sup with trio< b px |
1200 ... | tri< a ¬b ¬c = ZChain.sup=u zc ab (o<→≤ a) ⟪ record { x≤sup = λ lt → IsSup.x≤sup (proj1 is-sup) lt } , proj2 is-sup ⟫ | 1217 ... | tri< a ¬b ¬c = ZChain.sup=u zc ab (o<→≤ a) ⟪ record { x≤sup = λ lt → IsSup.x≤sup (proj1 is-sup) lt ; minsup = ? } , proj2 is-sup ⟫ |
1201 ... | tri≈ ¬a b ¬c = ZChain.sup=u zc ab (o≤-refl0 b) ⟪ record { x≤sup = λ lt → IsSup.x≤sup (proj1 is-sup) lt } , proj2 is-sup ⟫ | 1218 ... | tri≈ ¬a b ¬c = ZChain.sup=u zc ab (o≤-refl0 b) ⟪ record { x≤sup = λ lt → IsSup.x≤sup (proj1 is-sup) lt ; minsup = ? } , proj2 is-sup ⟫ |
1202 ... | tri> ¬a ¬b px<b = zc31 ? where | 1219 ... | tri> ¬a ¬b px<b = zc31 ? where |
1203 zc30 : x ≡ b | 1220 zc30 : x ≡ b |
1204 zc30 with osuc-≡< b≤x | 1221 zc30 with osuc-≡< b≤x |
1205 ... | case1 eq = sym (eq) | 1222 ... | case1 eq = sym (eq) |
1206 ... | case2 b<x = ⊥-elim (¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) | 1223 ... | case2 b<x = ⊥-elim (¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) |
1207 zcsup : xSUP (UnionCF A f mf ay supf0 px) x | 1224 zcsup : xSUP (UnionCF A f mf ay supf0 px) x |
1208 zcsup with zc30 | 1225 zcsup with zc30 |
1209 ... | refl = record { ax = ab ; is-sup = record { x≤sup = λ {w} lt → | 1226 ... | refl = record { ax = ab ; is-sup = record { x≤sup = λ {w} lt → |
1210 IsSup.x≤sup (proj1 is-sup) ?} } | 1227 IsSup.x≤sup (proj1 is-sup) ? ; minsup = ? } } |
1211 zc31 : ( (¬ xSUP (UnionCF A f mf ay supf0 px) x ) ∨ HasPrev A (UnionCF A f mf ay supf0 px) x f) → supf0 b ≡ b | 1228 zc31 : ( (¬ xSUP (UnionCF A f mf ay supf0 px) x ) ∨ HasPrev A (UnionCF A f mf ay supf0 px) x f) → supf0 b ≡ b |
1212 zc31 (case1 ¬sp=x) with zc30 | 1229 zc31 (case1 ¬sp=x) with zc30 |
1213 ... | refl = ⊥-elim (¬sp=x zcsup ) | 1230 ... | refl = ⊥-elim (¬sp=x zcsup ) |
1214 zc31 (case2 hasPrev ) with zc30 | 1231 zc31 (case2 hasPrev ) with zc30 |
1215 ... | refl = ⊥-elim ( proj2 is-sup record { ax = HasPrev.ax hasPrev ; y = HasPrev.y hasPrev | 1232 ... | refl = ⊥-elim ( proj2 is-sup record { ax = HasPrev.ax hasPrev ; y = HasPrev.y hasPrev |
1364 z13 : * (& s) < * sp | 1381 z13 : * (& s) < * sp |
1365 z13 with x≤sup ( ZChain.chain∋init zc ) | 1382 z13 with x≤sup ( ZChain.chain∋init zc ) |
1366 ... | case1 eq = ⊥-elim ( ne (cong (&) eq) ) | 1383 ... | case1 eq = ⊥-elim ( ne (cong (&) eq) ) |
1367 ... | case2 lt = subst₂ (λ j k → j < k ) (sym *iso) (sym *iso) lt | 1384 ... | case2 lt = subst₂ (λ j k → j < k ) (sym *iso) (sym *iso) lt |
1368 z19 : IsSup A chain {& (SUP.sup sp1)} (SUP.as sp1) | 1385 z19 : IsSup A chain {& (SUP.sup sp1)} (SUP.as sp1) |
1369 z19 = record { x≤sup = z20 } where | 1386 z19 = record { x≤sup = z20 ; minsup = ? } where |
1370 z20 : {y : Ordinal} → odef chain y → (y ≡ & (SUP.sup sp1)) ∨ (y << & (SUP.sup sp1)) | 1387 z20 : {y : Ordinal} → odef chain y → (y ≡ & (SUP.sup sp1)) ∨ (y << & (SUP.sup sp1)) |
1371 z20 {y} zy with x≤sup (subst (λ k → odef chain k ) (sym &iso) zy) | 1388 z20 {y} zy with x≤sup (subst (λ k → odef chain k ) (sym &iso) zy) |
1372 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p )) | 1389 ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p )) |
1373 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p ) | 1390 ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p ) |
1374 ztotal : IsTotalOrderSet (ZChain.chain zc) | 1391 ztotal : IsTotalOrderSet (ZChain.chain zc) |
1494 sz<<c z<A = MinSUP.x≤sup msp1 (ZChain.csupf zc (z09 (ZChain.asupf zc) )) | 1511 sz<<c z<A = MinSUP.x≤sup msp1 (ZChain.csupf zc (z09 (ZChain.asupf zc) )) |
1495 | 1512 |
1496 sc=c : supf mc ≡ mc | 1513 sc=c : supf mc ≡ mc |
1497 sc=c = ZChain.sup=u zc (MinSUP.asm msp1) (o<→≤ (∈∧P→o< ⟪ MinSUP.asm msp1 , lift true ⟫ )) ⟪ is-sup , not-hasprev ⟫ where | 1514 sc=c = ZChain.sup=u zc (MinSUP.asm msp1) (o<→≤ (∈∧P→o< ⟪ MinSUP.asm msp1 , lift true ⟫ )) ⟪ is-sup , not-hasprev ⟫ where |
1498 is-sup : IsSup A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) (MinSUP.asm msp1) | 1515 is-sup : IsSup A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) (MinSUP.asm msp1) |
1499 is-sup = record { x≤sup = λ zy → MinSUP.x≤sup msp1 (chain-mono (cf nmx) (cf-is-≤-monotonic nmx) as0 supf (ZChain.supf-mono zc) (o<→≤ mc<A) zy )} | 1516 is-sup = record { x≤sup = λ zy → MinSUP.x≤sup msp1 (chain-mono (cf nmx) (cf-is-≤-monotonic nmx) as0 supf (ZChain.supf-mono zc) (o<→≤ mc<A) zy ) |
1517 ; minsup = ? } | |
1500 not-hasprev : ¬ HasPrev A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) mc (cf nmx) | 1518 not-hasprev : ¬ HasPrev A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) mc (cf nmx) |
1501 not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-init fc ⟫ ; x=fy = x=fy } = ⊥-elim ( <-irr z31 z30 ) where | 1519 not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-init fc ⟫ ; x=fy = x=fy } = ⊥-elim ( <-irr z31 z30 ) where |
1502 z30 : * mc < * (cf nmx mc) | 1520 z30 : * mc < * (cf nmx mc) |
1503 z30 = proj1 (cf-is-<-monotonic nmx mc (MinSUP.asm msp1)) | 1521 z30 = proj1 (cf-is-<-monotonic nmx mc (MinSUP.asm msp1)) |
1504 z31 : ( * (cf nmx mc) ≡ * mc ) ∨ ( * (cf nmx mc) < * mc ) | 1522 z31 : ( * (cf nmx mc) ≡ * mc ) ∨ ( * (cf nmx mc) < * mc ) |
1513 z32 = ftrans<=-< z31 (subst (λ k → * mc < * k ) (cong (cf nmx) x=fy) z30 ) | 1531 z32 = ftrans<=-< z31 (subst (λ k → * mc < * k ) (cong (cf nmx) x=fy) z30 ) |
1514 z48 : ( * (cf nmx (cf nmx y)) ≡ * (supf mc)) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) ) | 1532 z48 : ( * (cf nmx (cf nmx y)) ≡ * (supf mc)) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) ) |
1515 z48 = <=to≤ (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A u<x (fsuc _ ( fsuc _ fc ))) | 1533 z48 = <=to≤ (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A u<x (fsuc _ ( fsuc _ fc ))) |
1516 | 1534 |
1517 is-sup : IsSup A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) (MinSUP.asm spd) | 1535 is-sup : IsSup A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) (MinSUP.asm spd) |
1518 is-sup = record { x≤sup = z22 } where | 1536 is-sup = record { x≤sup = z22 ; minsup = ? } where |
1519 z23 : {z : Ordinal } → odef (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc) z → (z ≡ MinSUP.sup spd) ∨ (z << MinSUP.sup spd) | 1537 z23 : {z : Ordinal } → odef (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc) z → (z ≡ MinSUP.sup spd) ∨ (z << MinSUP.sup spd) |
1520 z23 lt = MinSUP.x≤sup spd lt | 1538 z23 lt = MinSUP.x≤sup spd lt |
1521 z22 : {y : Ordinal} → odef (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) y → | 1539 z22 : {y : Ordinal} → odef (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) y → |
1522 (y ≡ MinSUP.sup spd) ∨ (y << MinSUP.sup spd) | 1540 (y ≡ MinSUP.sup spd) ∨ (y << MinSUP.sup spd) |
1523 z22 {a} ⟪ aa , ch-init fc ⟫ = case2 ( ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) )) where | 1541 z22 {a} ⟪ aa , ch-init fc ⟫ = case2 ( ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) )) where |