Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 877:eaa863c4ebe8
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 20 Sep 2022 10:06:23 +0900 |
parents | 23dcb59d1231 |
children | 1ec8c0cfc892 |
files | src/zorn.agda |
diffstat | 1 files changed, 52 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Sat Sep 17 15:11:13 2022 +0900 +++ b/src/zorn.agda Tue Sep 20 10:06:23 2022 +0900 @@ -375,6 +375,7 @@ supf-mono : {x y : Ordinal } → x o≤ y → supf x o≤ supf y supf-max : {x : Ordinal } → supf x o≤ supf z supf-< : {x y : Ordinal } → supf x o< supf y → supf x << supf y + x≤supfx : {x : Ordinal } → x o≤ supf x csupf : {b : Ordinal } → supf b o< z → odef (UnionCF A f mf ay supf z) (supf b) chain∋init : odef chain y chain∋init = ⟪ ay , ch-init (init ay refl) ⟫ @@ -408,16 +409,7 @@ ... | case2 lt = ⊥-elim ( o<> sx<sy lt ) supf-idem : {x : Ordinal } → supf (supf x) ≡ supf x - supf-idem = ? - - x≤supfx : {x : Ordinal } → x o≤ supf x - x≤supfx {x} with trio< x (supf x) - ... | tri< a ¬b ¬c = o<→≤ a - ... | tri≈ ¬a b ¬c = o≤-refl0 b - ... | tri> ¬a ¬b c = ? -- supf x o< x - -- with osuc-≡< (supf-mono (o<→≤ c) ) - -- ... | case1 eq = ? - -- ... | case2 lt = ⊥-elim ( o<¬≡ supf-idem lt) + supf-idem {x} = ? supf∈A : {b : Ordinal} → b o≤ z → odef A (supf b) supf∈A {b} b≤z = subst (λ k → odef A k ) (sym (supf-is-sup b≤z)) ( SUP.as ( sup b≤z ) ) @@ -428,21 +420,6 @@ ... | case1 eq = case1 (subst (λ k → k ≡ supf u ) &iso (trans (cong (&) eq) (sym (supf-is-sup u≤z ) ) )) ... | case2 lt = case2 (subst (λ k → * w < k ) (subst (λ k → k ≡ _ ) *iso (cong (*) (sym (supf-is-sup u≤z ))) ) lt ) - csupf1 : {b : Ordinal } → supf b o< z → odef (UnionCF A f mf ay supf z) (supf b) - csupf1 {b} sb<z = ⟪ asb , ch-is-sup (supf b) sb<z record { fcy<sup = fcy<sup (o<→≤ sb<z) ; order = order ; supu=u = supf-idem } (init (subst (λ k → odef A k) (sym supf-idem) asb) supf-idem ) ⟫ where - b<z : b o< z - b<z = supf-inject0 supf-mono ( ordtrans<-≤ sb<z x≤supfx ) - asb : odef A (supf b) - asb = supf∈A (o<→≤ b<z) - supb : SUP A (UnionCF A f mf ay supf (supf b)) - supb = sup (o<→≤ sb<z) - supb-is-b : supf (supf b) ≡ & (SUP.sup supb) - supb-is-b = supf-is-sup (o<→≤ sb<z) - order : {s z1 : Ordinal} → supf s o< supf (supf b) → - FClosure A f (supf s) z1 → (z1 ≡ supf (supf b)) ∨ (z1 << supf (supf b)) - order {s} {z1} ss<ssb fs with SUP.x<sup supb ? - ... | case1 eq = ? - ... | case2 lt = ? -- ordering is not proved here but in ZChain1 @@ -528,11 +505,22 @@ chain-mono f mf ay supf {a} {b} {c} a≤b ⟪ uaa , ch-is-sup ua ua<x is-sup fc ⟫ = ⟪ uaa , ch-is-sup ua (ordtrans<-≤ ua<x a≤b ) is-sup fc ⟫ - sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) ) - (total : IsTotalOrderSet (ZChain.chain zc) ) → SUP A (ZChain.chain zc) - sp0 f mf zc total = supP (ZChain.chain zc) (ZChain.chain⊆A zc) total - zc< : {x y z : Ordinal} → {P : Set n} → (x o< y → P) → x o< z → z o< y → P - zc< {x} {y} {z} {P} prev x<z z<y = prev (ordtrans x<z z<y) + sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {x y : Ordinal} (ay : odef A y) + (zc : ZChain A f mf ay x ) → SUP A (ZChain.chain zc) + sp0 f mf ay zc = supP (ZChain.chain zc) (ZChain.chain⊆A zc) ztotal where + ztotal : IsTotalOrderSet (ZChain.chain zc) + ztotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where + uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) + uz01 = chain-total A f mf ay (ZChain.supf zc) ( (proj2 ca)) ( (proj2 cb)) + + x≤sp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {x y : Ordinal} (ay : odef A y) + (zc : ZChain A f mf ay x ) → x o≤ & (SUP.sup (sp0 f mf ay zc)) + x≤sp0 f mf {x} ay zc with trio< x (& (SUP.sup (sp0 f mf ay zc))) + ... | tri< a ¬b ¬c = o<→≤ a + ... | tri≈ ¬a b ¬c = o≤-refl0 b + ... | tri> ¬a ¬b sp<sp0 = ? where + sp1 : {z : Ordinal } → z o≤ x → SUP A (UnionCF A f mf ay (ZChain.supf zc) z) + sp1 {z} z≤x = ZChain.sup zc z≤x -- -- Second TransFinite Pass for maximality @@ -653,11 +641,10 @@ --- the maximum chain has fix point of any ≤-monotonic function --- fixpoint : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (zc : ZChain A f mf as0 (& A) ) - → (total : IsTotalOrderSet (ZChain.chain zc) ) - → f (& (SUP.sup (sp0 f mf zc total ))) ≡ & (SUP.sup (sp0 f mf zc total)) - fixpoint f mf zc total = z14 where + → f (& (SUP.sup (sp0 f mf as0 zc ))) ≡ & (SUP.sup (sp0 f mf as0 zc )) + fixpoint f mf zc = z14 where chain = ZChain.chain zc - sp1 = sp0 f mf zc total + sp1 = sp0 f mf as0 zc z10 : {a b : Ordinal } → (ca : odef chain a ) → b o< & A → (ab : odef A b ) → HasPrev A chain b f ∨ IsSup A chain {b} ab -- (supO chain (ZChain.chain⊆A zc) (ZChain.f-total zc) ≡ b ) → * a < * b → odef chain b @@ -680,8 +667,13 @@ ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ( cong (&) y=p )) ... | case2 y<p = case2 (subst (λ k → * y < k ) (sym *iso) y<p ) -- λ {y} zy → subst (λ k → (y ≡ & k ) ∨ (y << & k)) ? (SUP.x<sup sp1 ? ) } - z14 : f (& (SUP.sup (sp0 f mf zc total ))) ≡ & (SUP.sup (sp0 f mf zc total )) - z14 with total (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) z12 + ztotal : IsTotalOrderSet (ZChain.chain zc) + ztotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where + uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) ) + uz01 = chain-total A f mf as0 (ZChain.supf zc) ( (proj2 ca)) ( (proj2 cb)) + + z14 : f (& (SUP.sup (sp0 f mf as0 zc ))) ≡ & (SUP.sup (sp0 f mf as0 zc )) + z14 with ztotal (subst (λ k → odef chain k) (sym &iso) (ZChain.f-next zc z12 )) z12 ... | tri< a ¬b ¬c = ⊥-elim z16 where z16 : ⊥ z16 with proj1 (mf (& ( SUP.sup sp1)) ( SUP.as sp1 )) @@ -701,15 +693,13 @@ -- ZChain forces fix point on any ≤-monotonic function (fixpoint) -- ¬ Maximal create cf which is a <-monotonic function by axiom of choice. This contradicts fix point of ZChain -- - z04 : (nmx : ¬ Maximal A ) - → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)) - → IsTotalOrderSet (ZChain.chain zc) → ⊥ - z04 nmx zc total = <-irr0 {* (cf nmx c)} {* c} (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (SUP.as sp1 )))) + z04 : (nmx : ¬ Maximal A ) → (zc : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A)) → ⊥ + z04 nmx zc = <-irr0 {* (cf nmx c)} {* c} (subst (λ k → odef A k ) (sym &iso) (proj1 (is-cf nmx (SUP.as sp1 )))) (subst (λ k → odef A (& k)) (sym *iso) (SUP.as sp1) ) - (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc total ))) -- x ≡ f x ̄ + (case1 ( cong (*)( fixpoint (cf nmx) (cf-is-≤-monotonic nmx ) zc ))) -- x ≡ f x ̄ (proj1 (cf-is-<-monotonic nmx c (SUP.as sp1 ))) where -- x < f x sp1 : SUP A (ZChain.chain zc) - sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) zc total + sp1 = sp0 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc c = & (SUP.sup sp1) uchain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → HOD @@ -902,8 +892,26 @@ ... | tri≈ ¬a b ¬c = record { tsup = ? ; tsup=sup = ? } ... | tri> ¬a ¬b px<z = record { tsup = ? ; tsup=sup = ? } + -- csupf1 : {b : Ordinal } → supf1 b o< z → odef (UnionCF A f mf ay supf1 z) (supf1 b) + -- csupf1 {b} sb<z = ⟪ asb , ch-is-sup (supf b) sb<z + -- record { fcy<sup = ZChain.fcy<sup zc (o<→≤ sb<z) ; order = order ; supu=u = ZChain.supf-idem zc } + -- (init (subst (λ k → odef A k) (sym (ZChain.supf-idem zc) asb)) (ZChain.supf-idem zc)) ⟫ where + -- b<z : b o< z + -- b<z = supf-inject0 (ZChain.supf-mono zc ( ordtrans<-≤ sb<z x≤supfx )) + -- asb : odef A (supf b) + -- asb = supf∈A (o<→≤ b<z) + -- supb : SUP A (UnionCF A f mf ay supf (supf b)) + -- supb = ZChain.sup zc (o<→≤ sb<z) + -- supb-is-b : supf (supf b) ≡ & (SUP.sup supb) + -- supb-is-b = ZChain.supf-is-sup zc (o<→≤ sb<z) + -- order : {s z1 : Ordinal} → supf s o< supf (supf b) → + -- FClosure A f (supf s) z1 → (z1 ≡ supf (supf b)) ∨ (z1 << supf (supf b)) + -- order {s} {z1} ss<ssb fs with SUP.x<sup supb ? + -- ... | case1 eq = ? + -- ... | case2 lt = ? + ... | case2 px<spfx = record { supf = supf0 ; asupf = ZChain.asupf zc ; sup = λ lt → STMP.tsup (sup lt ) ; supf-mono = supf-mono - ; supf-< = ? ; sup=u = sup=u ; supf-is-sup = λ lt → STMP.tsup=sup (sup lt) } where + ; supf-< = ? ; sup=u = sup=u ; supf-is-sup = λ lt → STMP.tsup=sup (sup lt) } where supf1 : Ordinal → Ordinal supf1 z with trio< z px @@ -1175,7 +1183,7 @@ zorn01 = proj1 zorn03 zorn02 : {x : HOD} → A ∋ x → ¬ (ODC.minimal O HasMaximal (λ eq → not (=od∅→≡o∅ eq)) < x) zorn02 {x} ax m<x = proj2 zorn03 (& x) ax (subst₂ (λ j k → j < k) (sym *iso) (sym *iso) m<x ) - ... | yes ¬Maximal = ⊥-elim ( z04 nmx zorn04 total ) where + ... | yes ¬Maximal = ⊥-elim ( z04 nmx zorn04 ) where -- if we have no maximal, make ZChain, which contradict SUP condition nmx : ¬ Maximal A nmx mx = ∅< {HasMaximal} zc5 ( ≡o∅→=od∅ ¬Maximal ) where @@ -1183,10 +1191,6 @@ 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) ) ⟫ zorn04 : ZChain A (cf nmx) (cf-is-≤-monotonic nmx) as0 (& A) zorn04 = SZ (cf nmx) (cf-is-≤-monotonic nmx) (subst (λ k → odef A k ) &iso as ) - total : IsTotalOrderSet (ZChain.chain zorn04) - total {a} {b} = zorn06 where - zorn06 : odef (ZChain.chain zorn04) (& a) → odef (ZChain.chain zorn04) (& b) → Tri (a < b) (a ≡ b) (b < a) - zorn06 = ZChain.f-total (SZ (cf nmx) (cf-is-≤-monotonic nmx) (subst (λ k → odef A k ) &iso as) ) -- usage (see filter.agda ) --