Mercurial > hg > Members > kono > Proof > ZF-in-agda
comparison src/zorn.agda @ 851:717b8c3f55c9
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 05 Sep 2022 21:54:55 +0900 |
parents | 2d8ce664ae31 |
children | a28bb57c88e6 |
comparison
equal
deleted
inserted
replaced
850:2d8ce664ae31 | 851:717b8c3f55c9 |
---|---|
736 pcy : odef pchain y | 736 pcy : odef pchain y |
737 pcy = ⟪ ay , ch-init (init ay refl) ⟫ | 737 pcy = ⟪ ay , ch-init (init ay refl) ⟫ |
738 | 738 |
739 supf0 = ZChain.supf zc | 739 supf0 = ZChain.supf zc |
740 | 740 |
741 supf1 : Ordinal → Ordinal | 741 supf1 : (px z : Ordinal) → Ordinal |
742 supf1 z with trio< z px | 742 supf1 px z with trio< z px |
743 ... | tri< a ¬b ¬c = ZChain.supf zc z | 743 ... | tri< a ¬b ¬c = ZChain.supf zc z |
744 ... | tri≈ ¬a b ¬c = ZChain.supf zc z | 744 ... | tri≈ ¬a b ¬c = ZChain.supf zc z |
745 ... | tri> ¬a ¬b c = ZChain.supf zc px | 745 ... | tri> ¬a ¬b c = ZChain.supf zc px |
746 | 746 |
747 pchain1 : HOD | 747 pchain1 : HOD |
748 pchain1 = UnionCF A f mf ay supf1 x | 748 pchain1 = UnionCF A f mf ay (supf1 px) x |
749 | 749 |
750 ptotal1 : IsTotalOrderSet pchain1 | 750 ptotal1 : IsTotalOrderSet pchain1 |
751 ptotal1 {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where | 751 ptotal1 {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where |
752 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) | 752 uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) |
753 uz01 = chain-total A f mf ay supf1 ( (proj2 ca)) ( (proj2 cb)) | 753 uz01 = chain-total A f mf ay (supf1 px) ( (proj2 ca)) ( (proj2 cb)) |
754 pchain⊆A1 : {y : Ordinal} → odef pchain1 y → odef A y | 754 pchain⊆A1 : {y : Ordinal} → odef pchain1 y → odef A y |
755 pchain⊆A1 {y} ny = proj1 ny | 755 pchain⊆A1 {y} ny = proj1 ny |
756 pnext1 : {a : Ordinal} → odef pchain1 a → odef pchain1 (f a) | 756 pnext1 : {a : Ordinal} → odef pchain1 a → odef pchain1 (f a) |
757 pnext1 {a} ⟪ aa , ch-init fc ⟫ = ⟪ proj2 (mf a aa) , ch-init (fsuc _ fc) ⟫ | 757 pnext1 {a} ⟪ aa , ch-init fc ⟫ = ⟪ proj2 (mf a aa) , ch-init (fsuc _ fc) ⟫ |
758 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 ) ⟫ | 758 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 ) ⟫ |
759 pinit1 : {y₁ : Ordinal} → odef pchain1 y₁ → * y ≤ * y₁ | 759 pinit1 : {y₁ : Ordinal} → odef pchain1 y₁ → * y ≤ * y₁ |
760 pinit1 {a} ⟪ aa , ua ⟫ with ua | 760 pinit1 {a} ⟪ aa , ua ⟫ with ua |
761 ... | ch-init fc = s≤fc y f mf fc | 761 ... | ch-init fc = s≤fc y f mf fc |
762 ... | ch-is-sup u u≤x is-sup fc = ≤-ftrans (<=to≤ zc7) (s≤fc _ f mf fc) where | 762 ... | ch-is-sup u u≤x is-sup fc = ≤-ftrans (<=to≤ zc7) (s≤fc _ f mf fc) where |
763 zc7 : y <= supf1 u | 763 zc7 : y <= supf1 px u |
764 zc7 = ChainP.fcy<sup is-sup (init ay refl) | 764 zc7 = ChainP.fcy<sup is-sup (init ay refl) |
765 pcy1 : odef pchain1 y | 765 pcy1 : odef pchain1 y |
766 pcy1 = ⟪ ay , ch-init (init ay refl) ⟫ | 766 pcy1 = ⟪ ay , ch-init (init ay refl) ⟫ |
767 | 767 |
768 supf0=1 : {z : Ordinal } → z o≤ px → supf0 z ≡ supf1 z | 768 supf0=1 : {px z : Ordinal } → z o≤ px → supf0 z ≡ supf1 px z |
769 supf0=1 {z} z≤px with trio< z px | 769 supf0=1 {px} {z} z≤px with trio< z px |
770 ... | tri< a ¬b ¬c = refl | 770 ... | tri< a ¬b ¬c = refl |
771 ... | tri≈ ¬a b ¬c = refl | 771 ... | tri≈ ¬a b ¬c = refl |
772 ... | tri> ¬a ¬b c = ⊥-elim ( o≤> z≤px c ) | 772 ... | tri> ¬a ¬b c = ⊥-elim ( o≤> z≤px c ) |
773 | 773 |
774 supf∈A : {b : Ordinal} → b o≤ x → odef A (supf1 b) | 774 supf∈A : {b : Ordinal} → b o≤ x → odef A (supf1 px b) |
775 supf∈A {b} b≤z with trio< b px | 775 supf∈A {b} b≤z with trio< b px |
776 ... | tri< a ¬b ¬c = proj1 ( ZChain.csupf zc (o<→≤ a )) | 776 ... | tri< a ¬b ¬c = proj1 ( ZChain.csupf zc (o<→≤ a )) |
777 ... | tri≈ ¬a b ¬c = proj1 ( ZChain.csupf zc (o≤-refl0 b )) | 777 ... | tri≈ ¬a b ¬c = proj1 ( ZChain.csupf zc (o≤-refl0 b )) |
778 ... | tri> ¬a ¬b c = proj1 ( ZChain.csupf zc o≤-refl ) | 778 ... | tri> ¬a ¬b c = proj1 ( ZChain.csupf zc o≤-refl ) |
779 | 779 |
780 supf-mono : {a b : Ordinal } → a o≤ b → supf1 a o≤ supf1 b | 780 supf-mono : {a b : Ordinal } → a o≤ b → supf1 px a o≤ supf1 px b |
781 supf-mono = ? | 781 supf-mono = ? |
782 | 782 |
783 zc70 : HasPrev A pchain x f → ¬ xSUP pchain x | 783 fc0→1 : {px s z : Ordinal } → s o≤ px → FClosure A f (supf0 s) z → FClosure A f (supf1 px s) z |
784 zc70 pr xsup = ? | 784 fc0→1 {px} {s} {z} s≤px fc = subst (λ k → FClosure A f k z ) (supf0=1 s≤px) fc |
785 | 785 |
786 fc0→1 : {s z : Ordinal } → s o≤ px → FClosure A f (supf0 s) z → FClosure A f (supf1 s) z | 786 fc1→0 : {px s z : Ordinal } → s o≤ px → FClosure A f (supf1 px s) z → FClosure A f (supf0 s) z |
787 fc0→1 {s} {z} s≤px fc = subst (λ k → FClosure A f k z ) (supf0=1 s≤px) fc | 787 fc1→0 {px} {s} {z} s≤px fc = subst (λ k → FClosure A f k z ) (sym (supf0=1 s≤px)) fc |
788 | 788 |
789 fc1→0 : {s z : Ordinal } → s o≤ px → FClosure A f (supf1 s) z → FClosure A f (supf0 s) z | 789 CP0→1 : {px u : Ordinal } → ({a b : Ordinal } → a o≤ b → supf1 px a o≤ supf1 px b) |
790 fc1→0 {s} {z} s≤px fc = subst (λ k → FClosure A f k z ) (sym (supf0=1 s≤px)) fc | 790 → u o≤ px → ChainP A f mf ay supf0 u → ChainP A f mf ay (supf1 px) u |
791 | 791 CP0→1 {px} {u} supf-mono u≤px cp = record { fcy<sup = fcy<sup ; order = order ; supu=u = trans (sym (supf0=1 u≤px)) (ChainP.supu=u cp) } where |
792 CP0→1 : {u : Ordinal } → u o≤ px → ChainP A f mf ay supf0 u → ChainP A f mf ay supf1 u | 792 fcy<sup : {z : Ordinal} → FClosure A f y z → (z ≡ supf1 px u) ∨ (z << supf1 px u ) |
793 CP0→1 {u} u≤px cp = record { fcy<sup = fcy<sup ; order = order ; supu=u = trans (sym (supf0=1 u≤px)) (ChainP.supu=u cp) } where | |
794 fcy<sup : {z : Ordinal} → FClosure A f y z → (z ≡ supf1 u) ∨ (z << supf1 u ) | |
795 fcy<sup {z} fc = subst ( λ k → (z ≡ k) ∨ (z << k )) (supf0=1 u≤px) ( ChainP.fcy<sup cp fc ) | 793 fcy<sup {z} fc = subst ( λ k → (z ≡ k) ∨ (z << k )) (supf0=1 u≤px) ( ChainP.fcy<sup cp fc ) |
796 order : {s : Ordinal} {z2 : Ordinal} → supf1 s o< supf1 u → FClosure A f (supf1 s) z2 → | 794 order : {s : Ordinal} {z2 : Ordinal} → supf1 px s o< supf1 px u → FClosure A f (supf1 px s) z2 → |
797 (z2 ≡ supf1 u) ∨ (z2 << supf1 u) | 795 (z2 ≡ supf1 px u) ∨ (z2 << supf1 px u) |
798 order {s} {z2} s<u fc = subst (λ k → (z2 ≡ k) ∨ (z2 << k) ) (supf0=1 u≤px) ( ChainP.order cp ss<su (fc1→0 s≤px fc )) where | 796 order {s} {z2} s<u fc = subst (λ k → (z2 ≡ k) ∨ (z2 << k) ) (supf0=1 u≤px) ( ChainP.order cp ss<su (fc1→0 s≤px fc )) where |
799 s≤px : s o≤ px | 797 s≤px : s o≤ px |
800 s≤px = ordtrans (supf-inject0 supf-mono s<u) u≤px | 798 s≤px = ordtrans (supf-inject0 supf-mono s<u) u≤px |
801 ss<su : supf0 s o< supf0 u | 799 ss<su : supf0 s o< supf0 u |
802 ss<su = subst₂ (λ j k → j o< k ) (sym (supf0=1 s≤px )) (sym (supf0=1 u≤px)) s<u | 800 ss<su = subst₂ (λ j k → j o< k ) (sym (supf0=1 s≤px )) (sym (supf0=1 u≤px)) s<u |
803 | 801 |
804 CP1→0 : {u : Ordinal } → u o≤ px → ChainP A f mf ay supf1 u → ChainP A f mf ay supf0 u | 802 CP1→0 : {px u : Ordinal } → ( {a b : Ordinal } → a o≤ b → supf1 px a o≤ supf1 px b) |
805 CP1→0 {u} u≤px cp = record { fcy<sup = fcy<sup ; order = order ; supu=u = trans (supf0=1 u≤px) (ChainP.supu=u cp) } where | 803 → u o≤ px → ChainP A f mf ay (supf1 px) u → ChainP A f mf ay supf0 u |
804 CP1→0 {px} {u} supf-mono u≤px cp = record { fcy<sup = fcy<sup ; order = order ; supu=u = trans (supf0=1 u≤px) (ChainP.supu=u cp) } where | |
806 fcy<sup : {z : Ordinal} → FClosure A f y z → (z ≡ supf0 u) ∨ (z << supf0 u ) | 805 fcy<sup : {z : Ordinal} → FClosure A f y z → (z ≡ supf0 u) ∨ (z << supf0 u ) |
807 fcy<sup {z} fc = subst ( λ k → (z ≡ k) ∨ (z << k )) (sym (supf0=1 u≤px)) ( ChainP.fcy<sup cp fc ) | 806 fcy<sup {z} fc = subst ( λ k → (z ≡ k) ∨ (z << k )) (sym (supf0=1 u≤px)) ( ChainP.fcy<sup cp fc ) |
808 order : {s : Ordinal} {z2 : Ordinal} → supf0 s o< supf0 u → FClosure A f (supf0 s) z2 → | 807 order : {s : Ordinal} {z2 : Ordinal} → supf0 s o< supf0 u → FClosure A f (supf0 s) z2 → |
809 (z2 ≡ supf0 u) ∨ (z2 << supf0 u) | 808 (z2 ≡ supf0 u) ∨ (z2 << supf0 u) |
810 order {s} {z2} s<u fc = subst (λ k → (z2 ≡ k) ∨ (z2 << k) ) (sym (supf0=1 u≤px)) ( ChainP.order cp ss<su (fc0→1 s≤px fc )) where | 809 order {s} {z2} s<u fc = subst (λ k → (z2 ≡ k) ∨ (z2 << k) ) (sym (supf0=1 u≤px)) ( ChainP.order cp ss<su (fc0→1 s≤px fc )) where |
811 s≤px : s o≤ px | 810 s≤px : s o≤ px |
812 s≤px = ordtrans (supf-inject0 (ZChain.supf-mono zc) s<u) u≤px | 811 s≤px = ordtrans (supf-inject0 (ZChain.supf-mono zc) s<u) u≤px |
813 ss<su : supf1 s o< supf1 u | 812 ss<su : supf1 px s o< supf1 px u |
814 ss<su = subst₂ (λ j k → j o< k ) (supf0=1 s≤px ) (supf0=1 u≤px) s<u | 813 ss<su = subst₂ (λ j k → j o< k ) (supf0=1 s≤px ) (supf0=1 u≤px) s<u |
815 | 814 |
816 UnionCF0⊆1 : {z : Ordinal } → z o≤ px → UnionCF A f mf ay supf0 z ⊆' UnionCF A f mf ay supf1 z | 815 UnionCF0⊆1 : {px z : Ordinal } → ({a b : Ordinal } → a o≤ b → supf1 px a o≤ supf1 px b) → z o≤ px → UnionCF A f mf ay supf0 z ⊆' UnionCF A f mf ay (supf1 px) z |
817 UnionCF0⊆1 {z} z≤px ⟪ au , ch-init fc ⟫ = ⟪ au , ch-init fc ⟫ | 816 UnionCF0⊆1 {px} {z} supf-mono z≤px ⟪ au , ch-init fc ⟫ = ⟪ au , ch-init fc ⟫ |
818 UnionCF0⊆1 {z} z≤px ⟪ au , ch-is-sup u u≤z is-sup fc ⟫ = | 817 UnionCF0⊆1 {px} {z} supf-mono z≤px ⟪ au , ch-is-sup u u≤z is-sup fc ⟫ = |
819 ⟪ au , ch-is-sup u u≤z (CP0→1 (OrdTrans u≤z z≤px ) is-sup) (fc0→1 (OrdTrans u≤z z≤px ) fc) ⟫ | 818 ⟪ au , ch-is-sup u u≤z (CP0→1 supf-mono (OrdTrans u≤z z≤px ) is-sup) (fc0→1 (OrdTrans u≤z z≤px ) fc) ⟫ |
820 | 819 |
821 UnionCF1⊆0 : {z : Ordinal } → z o≤ px → UnionCF A f mf ay supf1 z ⊆' UnionCF A f mf ay supf0 z | 820 UnionCF1⊆0 : {px z : Ordinal } → ({a b : Ordinal } → a o≤ b → supf1 px a o≤ supf1 px b) → z o≤ px → UnionCF A f mf ay (supf1 px) z ⊆' UnionCF A f mf ay supf0 z |
822 UnionCF1⊆0 {z} z≤px ⟪ au , ch-init fc ⟫ = ⟪ au , ch-init fc ⟫ | 821 UnionCF1⊆0 {px} {z} supf-mono z≤px ⟪ au , ch-init fc ⟫ = ⟪ au , ch-init fc ⟫ |
823 UnionCF1⊆0 {z} z≤px ⟪ au , ch-is-sup u u≤z is-sup fc ⟫ = | 822 UnionCF1⊆0 {px} {z} supf-mono z≤px ⟪ au , ch-is-sup u u≤z is-sup fc ⟫ = |
824 ⟪ au , ch-is-sup u u≤z (CP1→0 (OrdTrans u≤z z≤px ) is-sup) | 823 ⟪ au , ch-is-sup u u≤z (CP1→0 supf-mono (OrdTrans u≤z z≤px ) is-sup) |
825 (fc1→0 (OrdTrans u≤z z≤px ) fc) ⟫ | 824 (fc1→0 (OrdTrans u≤z z≤px ) fc) ⟫ |
826 | 825 |
827 -- zc100 : xSUP (UnionCF A f mf ay supf0 px) x → x ≡ sp1 | 826 -- zc100 : xSUP (UnionCF A f mf ay supf0 px) x → x ≡ sp1 |
828 -- zc100 = ? | 827 -- zc100 = ? |
829 | 828 |
830 -- if previous chain satisfies maximality, we caan reuse it | 829 -- if previous chain satisfies maximality, we caan reuse it |
831 -- | 830 -- |
832 -- supf0 px is sup of UnionCF px , supf0 x is sup of UnionCF x | 831 -- supf0 px is sup of UnionCF px , supf0 x is sup of UnionCF x |
833 | 832 |
834 no-extension : ¬ xSUP (UnionCF A f mf ay supf0 px) x → ZChain A f mf ay x | 833 no-extension : ¬ xSUP (UnionCF A f mf ay supf0 px) x → ZChain A f mf ay x |
835 no-extension ¬sp=x = record { supf = supf1 ; sup = sup ; supf-mono = supf-mono | 834 no-extension ¬sp=x = record { supf = supf1 px ; sup = sup ; supf-mono = supf-mono |
836 ; initial = pinit1 ; chain∋init = pcy1 ; sup=u = sup=u ; supf-is-sup = sis ; csupf = csupf | 835 ; initial = pinit1 ; chain∋init = pcy1 ; sup=u = sup=u ; supf-is-sup = sis ; csupf = csupf |
837 ; chain⊆A = λ lt → proj1 lt ; f-next = pnext1 ; f-total = ptotal1 } where | 836 ; chain⊆A = λ lt → proj1 lt ; f-next = pnext1 ; f-total = ptotal1 } where |
838 pchain0=1 : pchain ≡ pchain1 | 837 pchain0=1 : pchain ≡ pchain1 |
839 pchain0=1 = ==→o≡ record { eq→ = zc10 ; eq← = zc11 } where | 838 pchain0=1 = ==→o≡ record { eq→ = zc10 ; eq← = zc11 } where |
840 zc10 : {z : Ordinal} → OD.def (od pchain) z → OD.def (od pchain1) z | 839 zc10 : {z : Ordinal} → OD.def (od pchain) z → OD.def (od pchain1) z |
841 zc10 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ | 840 zc10 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ |
842 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))) (CP0→1 u1≤x u1-is-sup) (fc0→1 u1≤x fc) ⟫ | 841 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))) (CP0→1 supf-mono u1≤x u1-is-sup) (fc0→1 u1≤x fc) ⟫ |
843 zc11 : {z : Ordinal} → OD.def (od pchain1) z → OD.def (od pchain) z | 842 zc11 : {z : Ordinal} → OD.def (od pchain1) z → OD.def (od pchain) z |
844 zc11 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ | 843 zc11 {z} ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ |
845 zc11 {z} ⟪ az , ch-is-sup u1 u1≤x u1-is-sup fc ⟫ with osuc-≡< u1≤x | 844 zc11 {z} ⟪ az , ch-is-sup u1 u1≤x u1-is-sup fc ⟫ with osuc-≡< u1≤x |
846 ... | case1 eq = ⊥-elim (¬sp=x zcsup) where | 845 ... | case2 lt = ⟪ az , ch-is-sup u1 u1≤px (CP1→0 supf-mono u1≤px u1-is-sup) (fc1→0 u1≤px fc) ⟫ where |
847 x<sup : {w : Ordinal} → odef (UnionCF A f mf ay supf0 px) w → (w ≡ x) ∨ (w << x) | |
848 x<sup = ? | |
849 zc12 : supf1 x ≡ u1 | |
850 zc12 = subst (λ k → supf1 k ≡ u1) eq (ChainP.supu=u u1-is-sup) | |
851 zcsup : xSUP (UnionCF A f mf ay supf0 px) x | |
852 zcsup = record { ax = subst (λ k → odef A k) (trans zc12 eq) (supf∈A o≤-refl) ; is-sup = record { x<sup = x<sup } } | |
853 ... | case2 lt = ⟪ az , ch-is-sup u1 u1≤px (CP1→0 u1≤px u1-is-sup) (fc1→0 u1≤px fc) ⟫ where | |
854 u1≤px : u1 o≤ px | 846 u1≤px : u1 o≤ px |
855 u1≤px = (subst (λ k → u1 o< k) (sym (Oprev.oprev=x op)) lt) | 847 u1≤px = (subst (λ k → u1 o< k) (sym (Oprev.oprev=x op)) lt) |
856 sup : {z : Ordinal} → z o≤ x → SUP A (UnionCF A f mf ay supf1 z) | 848 ... | case1 eq = ⊥-elim (¬sp=x zcsup) where |
857 sup {z} z≤x with trio< z px | inspect supf1 z | 849 s1u=x : supf1 px u1 ≡ x |
858 ... | tri< a ¬b ¬c | record { eq = eq1} = SUP⊆ (UnionCF1⊆0 (o<→≤ a)) (ZChain.sup zc (o<→≤ a) ) | 850 s1u=x = trans (ChainP.supu=u u1-is-sup) eq |
859 ... | tri≈ ¬a b ¬c | record { eq = eq1} = SUP⊆ (UnionCF1⊆0 (o≤-refl0 b)) (ZChain.sup zc (o≤-refl0 b) ) | 851 zc13 : osuc px o< osuc u1 |
860 ... | tri> ¬a ¬b px<z | record { eq = eq1} = ? where | 852 zc13 = o≤-refl0 ( trans (Oprev.oprev=x op) (sym eq) ) |
853 x<sup : {w : Ordinal} → odef (UnionCF A f mf ay supf0 px) w → (w ≡ x) ∨ (w << x) | |
854 x<sup {w} ⟪ az , ch-init {w} fc ⟫ = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x | |
855 ( ChainP.fcy<sup u1-is-sup {w} fc ) | |
856 x<sup {w} ⟪ az , ch-is-sup u u≤x is-sup fc ⟫ with osuc-≡< ( supf-mono (ordtrans u≤x zc13 )) | |
857 ... | case1 eq1 = ⊥-elim ( o<¬≡ zc14 u≤x ) where | |
858 zc14 : u ≡ osuc px | |
859 zc14 = begin | |
860 u ≡⟨ sym ( ChainP.supu=u is-sup) ⟩ | |
861 supf0 u ≡⟨ supf0=1 u≤x ⟩ | |
862 supf1 px u ≡⟨ eq1 ⟩ | |
863 supf1 px u1 ≡⟨ s1u=x ⟩ | |
864 x ≡⟨ sym (Oprev.oprev=x op) ⟩ | |
865 osuc px ∎ where open ≡-Reasoning | |
866 ... | case2 lt = subst (λ k → (w ≡ k) ∨ (w << k)) s1u=x ( ChainP.order u1-is-sup lt (fc0→1 u≤x fc) ) | |
867 zc12 : supf1 px x ≡ u1 | |
868 zc12 = subst (λ k → supf1 px k ≡ u1) eq (ChainP.supu=u u1-is-sup) | |
869 zcsup : xSUP (UnionCF A f mf ay supf0 px) x | |
870 zcsup = record { ax = subst (λ k → odef A k) (trans zc12 eq) (supf∈A o≤-refl) | |
871 ; is-sup = record { x<sup = x<sup } } | |
872 sup : {z : Ordinal} → z o≤ x → SUP A (UnionCF A f mf ay (supf1 px) z) | |
873 sup {z} z≤x with trio< z px | inspect (supf1 px) z | |
874 ... | tri< a ¬b ¬c | record { eq = eq1} = SUP⊆ (UnionCF1⊆0 supf-mono (o<→≤ a)) (ZChain.sup zc (o<→≤ a) ) | |
875 ... | tri≈ ¬a b ¬c | record { eq = eq1} = SUP⊆ (UnionCF1⊆0 supf-mono (o≤-refl0 b)) (ZChain.sup zc (o≤-refl0 b) ) | |
876 ... | tri> ¬a ¬b px<z | record { eq = eq1} = subst (λ k → SUP A k ) | |
877 (trans pchain0=1 (cong (λ k → UnionCF A f mf ay (supf1 px) k ) (sym zc30) )) (ZChain.sup zc o≤-refl ) where | |
861 zc30 : z ≡ x | 878 zc30 : z ≡ x |
862 zc30 with osuc-≡< z≤x | 879 zc30 with osuc-≡< z≤x |
863 ... | case1 eq = eq | 880 ... | case1 eq = eq |
864 ... | case2 z<x = ⊥-elim (¬p<x<op ⟪ px<z , subst (λ k → z o< k ) (sym (Oprev.oprev=x op)) z<x ⟫ ) | 881 ... | case2 z<x = ⊥-elim (¬p<x<op ⟪ px<z , subst (λ k → z o< k ) (sym (Oprev.oprev=x op)) z<x ⟫ ) |
865 sup=u : {b : Ordinal} (ab : odef A b) → | 882 sup=u : {b : Ordinal} (ab : odef A b) → |
866 b o≤ x → IsSup A (UnionCF A f mf ay supf1 b) ab → supf1 b ≡ b | 883 b o≤ x → IsSup A (UnionCF A f mf ay (supf1 px) b) ab → (supf1 px) b ≡ b |
867 sup=u {b} ab b≤x is-sup with trio< b px | 884 sup=u {b} ab b≤x is-sup with trio< b px |
868 ... | tri< a ¬b ¬c = ZChain.sup=u zc ab (o<→≤ a) record { x<sup = λ lt → IsSup.x<sup is-sup (UnionCF0⊆1 (o<→≤ a) lt) } | 885 ... | tri< a ¬b ¬c = ZChain.sup=u zc ab (o<→≤ a) record { x<sup = λ lt → IsSup.x<sup is-sup (UnionCF0⊆1 supf-mono (o<→≤ a) lt) } |
869 ... | tri≈ ¬a b ¬c = ZChain.sup=u zc ab (o≤-refl0 b) record { x<sup = λ lt → IsSup.x<sup is-sup (UnionCF0⊆1 (o≤-refl0 b) lt) } | 886 ... | tri≈ ¬a b ¬c = ZChain.sup=u zc ab (o≤-refl0 b) record { x<sup = λ lt → IsSup.x<sup is-sup (UnionCF0⊆1 supf-mono (o≤-refl0 b) lt) } |
870 ... | tri> ¬a ¬b px<b = ⊥-elim (¬sp=x zcsup ) where | 887 ... | tri> ¬a ¬b px<b = ⊥-elim (¬sp=x zcsup ) where |
871 zc30 : x ≡ b | 888 zc30 : x ≡ b |
872 zc30 with osuc-≡< b≤x | 889 zc30 with osuc-≡< b≤x |
873 ... | case1 eq = sym (eq) | 890 ... | case1 eq = sym (eq) |
874 ... | case2 b<x = ⊥-elim (¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) | 891 ... | case2 b<x = ⊥-elim (¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) |
875 zcsup : xSUP (UnionCF A f mf ay supf0 px) x | 892 zcsup : xSUP (UnionCF A f mf ay supf0 px) x |
876 zcsup with zc30 | 893 zcsup with zc30 |
877 ... | refl = record { ax = ab ; is-sup = record { x<sup = λ {w} lt → | 894 ... | refl = record { ax = ab ; is-sup = record { x<sup = λ {w} lt → |
878 IsSup.x<sup is-sup (subst (λ k → odef k w) pchain0=1 lt) } } | 895 IsSup.x<sup is-sup (subst (λ k → odef k w) pchain0=1 lt) } } |
879 csupf : {b : Ordinal} → b o≤ x → odef (UnionCF A f mf ay supf1 (supf1 b)) (supf1 b) | 896 csupf : {b : Ordinal} → b o≤ x → odef (UnionCF A f mf ay (supf1 px) (supf1 px b)) (supf1 px b) |
880 csupf {b} b≤x = ⟪ zc01 , ch-is-sup u o≤-refl | 897 csupf {b} b≤x = ⟪ zc01 , ch-is-sup u o≤-refl |
881 record { fcy<sup = fcy<sup ; order = order ; supu=u = supu=u } fc ⟫ where | 898 record { fcy<sup = fcy<sup ; order = order ; supu=u = supu=u } fc ⟫ where |
882 csupf0 : b o≤ px → odef (UnionCF A f mf ay supf0 (supf1 b)) (supf1 b) | 899 csupf0 : b o≤ px → odef (UnionCF A f mf ay supf0 (supf1 px b)) (supf1 px b) |
883 csupf0 b≤px = subst (λ k → odef (UnionCF A f mf ay supf0 k) k ) (supf0=1 b≤px) ( ZChain.csupf zc b≤px ) | 900 csupf0 b≤px = subst (λ k → odef (UnionCF A f mf ay supf0 k) k ) (supf0=1 b≤px) ( ZChain.csupf zc b≤px ) |
884 zc04 : (b o≤ px ) ∨ (b ≡ x ) | 901 zc04 : (b o≤ px ) ∨ (b ≡ x ) |
885 zc04 with trio< b px | 902 zc04 with trio< b px |
886 ... | tri< a ¬b ¬c = case1 (o<→≤ a) | 903 ... | tri< a ¬b ¬c = case1 (o<→≤ a) |
887 ... | tri≈ ¬a b ¬c = case1 (o≤-refl0 b) | 904 ... | tri≈ ¬a b ¬c = case1 (o≤-refl0 b) |
888 ... | tri> ¬a ¬b px<b with osuc-≡< b≤x | 905 ... | tri> ¬a ¬b px<b with osuc-≡< b≤x |
889 ... | case1 eq = case2 eq | 906 ... | case1 eq = case2 eq |
890 ... | case2 b<x = ⊥-elim ( ¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) | 907 ... | case2 b<x = ⊥-elim ( ¬p<x<op ⟪ px<b , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x ⟫ ) |
891 zc01 : odef A (supf1 b) | 908 zc01 : odef A (supf1 px b) |
892 zc01 with zc04 | 909 zc01 = supf∈A b≤x |
893 ... | case1 le = proj1 ( csupf0 le ) | 910 u = supf1 px b |
894 ... | case2 eq = ? -- subst (λ k → odef A k ) (sym (supf1=sp (o≤-refl0 (sym eq)))) (SUP.as sup1) | 911 supu=u : supf1 px u ≡ u |
895 u = supf1 b | |
896 supu=u : supf1 u ≡ u | |
897 supu=u with zc04 | 912 supu=u with zc04 |
898 ... | case2 eq = begin | 913 ... | case2 eq = begin |
899 supf1 u ≡⟨ ? ⟩ | 914 supf1 px u ≡⟨ ? ⟩ |
915 supf0 px ≡⟨ ? ⟩ | |
900 u ∎ where open ≡-Reasoning | 916 u ∎ where open ≡-Reasoning |
901 ... | case1 le = subst (λ k → k ≡ u ) (supf0=1 zc05 ) ( ZChain.sup=u zc zc01 zc05 ? ) where | 917 ... | case1 le = ? where |
902 zc06 : b o≤ px | 918 zc06 : b o≤ px |
903 zc06 = le | 919 zc06 = le |
904 zc05 : supf1 b o≤ px | 920 zc02 : odef A (supf1 px u) |
905 zc05 = ? | |
906 zc02 : odef A (supf1 u) | |
907 zc02 = subst (λ k → odef A k ) (sym supu=u) zc01 | 921 zc02 = subst (λ k → odef A k ) (sym supu=u) zc01 |
908 zc03 : supf1 u ≡ supf1 b | 922 zc03 : supf1 px u ≡ supf1 px b |
909 zc03 = ? | 923 zc03 = ? |
910 fc : FClosure A f (supf1 u) (supf1 b) | 924 fc : FClosure A f (supf1 px u) (supf1 px b) |
911 fc = init zc02 zc03 | 925 fc = init zc02 zc03 |
912 fcy<sup : {z : Ordinal} → FClosure A f y z → (z ≡ supf1 u) ∨ (z << supf1 u) | 926 fcy<sup : {z : Ordinal} → FClosure A f y z → (z ≡ supf1 px u) ∨ (z << supf1 px u) |
913 fcy<sup = ? | 927 fcy<sup = ? |
914 order : {s z1 : Ordinal} → supf1 s o< supf1 u → FClosure A f (supf1 s) z1 | 928 order : {s z1 : Ordinal} → supf1 px s o< supf1 px u → FClosure A f (supf1 px s) z1 |
915 → (z1 ≡ supf1 u) ∨ (z1 << supf1 u) | 929 → (z1 ≡ supf1 px u) ∨ (z1 << supf1 px u) |
916 order = ? | 930 order = ? |
917 sis : {z : Ordinal} (z≤x : z o≤ x) → supf1 z ≡ & (SUP.sup (sup z≤x)) | 931 sis : {z : Ordinal} (z≤x : z o≤ x) → supf1 px z ≡ & (SUP.sup (sup z≤x)) |
918 sis {z} z≤x = zc40 where | 932 sis {z} z≤x = zc40 where |
919 zc40 : supf1 z ≡ & (SUP.sup (sup z≤x)) -- direct with statment causes error | 933 zc40 : supf1 px z ≡ & (SUP.sup (sup z≤x)) -- direct with statment causes error |
920 zc40 with trio< z px | inspect supf1 z | inspect sup z≤x | 934 zc40 with trio< z px | inspect (supf1 px) z | inspect sup z≤x |
921 ... | tri< a ¬b ¬c | record { eq = eq1 } | record { eq = eq2 } = ? | 935 ... | tri< a ¬b ¬c | record { eq = eq1 } | record { eq = eq2 } = ? |
922 ... | tri≈ ¬a b ¬c | record { eq = eq1 } | record { eq = eq2 } = ? | 936 ... | tri≈ ¬a b ¬c | record { eq = eq1 } | record { eq = eq2 } = ? |
923 ... | tri> ¬a ¬b c | record { eq = eq1 } | record { eq = eq2 } = ? | 937 ... | tri> ¬a ¬b c | record { eq = eq1 } | record { eq = eq2 } = ? |
924 | 938 |
925 zc4 : ZChain A f mf ay x | 939 zc4 : ZChain A f mf ay x |
928 ... | yes ax with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc ) x f ) | 942 ... | yes ax with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc ) x f ) |
929 -- we have to check adding x preserve is-max ZChain A y f mf x | 943 -- we have to check adding x preserve is-max ZChain A y f mf x |
930 ... | case1 pr = no-extension {!!} -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next | 944 ... | case1 pr = no-extension {!!} -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next |
931 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc ) ax ) | 945 ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc ) ax ) |
932 ... | case1 is-sup = -- x is a sup of zc | 946 ... | case1 is-sup = -- x is a sup of zc |
933 record { supf = psupf1 ; chain⊆A = {!!} ; f-next = {!!} ; f-total = {!!} ; csupf = {!!} ; sup=u = {!!} ; supf-mono = {!!} | 947 record { supf = supf1 x ; chain⊆A = {!!} ; f-next = {!!} ; f-total = {!!} ; csupf = {!!} ; sup=u = {!!} ; supf-mono = {!!} |
934 ; initial = {!!} ; chain∋init = {!!} ; sup = {!!} ; supf-is-sup = {!!} } where | 948 ; initial = {!!} ; chain∋init = {!!} ; sup = {!!} ; supf-is-sup = {!!} } where |
935 supx : SUP A (UnionCF A f mf ay supf0 x) | 949 supx : SUP A (UnionCF A f mf ay supf0 x) |
936 supx = record { sup = * x ; as = subst (λ k → odef A k ) {!!} ax ; x<sup = {!!} } | 950 supx = record { sup = * x ; as = subst (λ k → odef A k ) {!!} ax ; x<sup = {!!} } |
937 spx = & (SUP.sup supx ) | 951 spx = & (SUP.sup supx ) |
938 x=spx : x ≡ spx | 952 x=spx : x ≡ spx |
939 x=spx = sym &iso | 953 x=spx = sym &iso |
940 psupf1 : Ordinal → Ordinal | 954 psupf1 : Ordinal → Ordinal |
941 psupf1 z with trio< z x | 955 psupf1 z = supf1 x z |
942 ... | tri< a ¬b ¬c = ZChain.supf zc z | |
943 ... | tri≈ ¬a b ¬c = x | |
944 ... | tri> ¬a ¬b c = x | |
945 csupf : {b : Ordinal} → b o≤ x → odef (UnionCF A f mf ay psupf1 b) (psupf1 b) | 956 csupf : {b : Ordinal} → b o≤ x → odef (UnionCF A f mf ay psupf1 b) (psupf1 b) |
946 csupf {b} b≤x with trio< b px | inspect psupf1 b | 957 csupf {b} b≤x with trio< b px | inspect psupf1 b |
947 ... | tri< a ¬b ¬c | record { eq = eq1 } = ⟪ {!!} , {!!} ⟫ | 958 ... | tri< a ¬b ¬c | record { eq = eq1 } = ⟪ {!!} , {!!} ⟫ |
948 ... | tri≈ ¬a b ¬c | record { eq = eq1 } = ⟪ {!!} , {!!} ⟫ | 959 ... | tri≈ ¬a b ¬c | record { eq = eq1 } = ⟪ {!!} , {!!} ⟫ |
949 ... | tri> ¬a ¬b c | record { eq = eq1 } = {!!} where -- b ≡ x, supf x ≡ sp | 960 ... | tri> ¬a ¬b c | record { eq = eq1 } = {!!} where -- b ≡ x, supf x ≡ sp |