Mercurial > hg > Members > kono > Proof > ZF-in-agda
changeset 701:29100f14bb97
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 12 Jul 2022 22:15:37 +0900 |
parents | 3de5a1fb8011 |
children | ea8ab5cf059b |
files | src/zorn.agda |
diffstat | 1 files changed, 55 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/zorn.agda Tue Jul 12 15:49:49 2022 +0900 +++ b/src/zorn.agda Tue Jul 12 22:15:37 2022 +0900 @@ -248,8 +248,8 @@ record ChainP (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) (sup z : Ordinal) : Set n where field - y-init : supf o∅ ≡ y - asup : (x : Ordinal) → odef A (supf x) + -- y-init : supf o∅ ≡ y + -- asup : (x : Ordinal) → odef A (supf x) fcy<sup : {z : Ordinal } → FClosure A f y z → z << supf sup csupz : FClosure A f (supf sup) z order : {sup1 z1 : Ordinal} → (lt : sup1 o< sup ) → FClosure A f (supf sup1 ) z1 → z1 << supf sup @@ -281,6 +281,7 @@ record ZChain1 ( A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y ) ( z : Ordinal ) : Set (Level.suc n) where field supf : Ordinal → Ordinal + is-sup : {b : Ordinal } → (ab : odef A b ) → IsSup A (UnionCF A f mf ay supf z ) ab → supf b ≡ b -- is-chain : {w : Ordinal } → Chain A f mf ay supf z w -- supf-mono : (x y : Ordinal ) → x o≤ y → supf x o≤ supf y @@ -346,8 +347,8 @@ ChainP-next : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal ) → {x z : Ordinal } → ChainP A f mf ay supf x z → ChainP A f mf ay supf x (f z ) -ChainP-next A f mf {y} ay supf {x} {z} cp = record { y-init = ChainP.y-init cp ; asup = ChainP.asup cp - ; fcy<sup = ChainP.fcy<sup cp ; csupz = fsuc _ (ChainP.csupz cp) ; order = ChainP.order cp } +ChainP-next A f mf {y} ay supf {x} {z} cp = record { -- asup = ChainP.asup cp -- y-init = ChainP.y-init cp ; + fcy<sup = ChainP.fcy<sup cp ; csupz = fsuc _ (ChainP.csupz cp) ; order = ChainP.order cp } Zorn-lemma : { A : HOD } → o∅ o< & A @@ -479,11 +480,13 @@ sind : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → (x : Ordinal) → ((z : Ordinal) → z o< x → ZChain1 A f mf ay z ) → ZChain1 A f mf ay x - sind f mf {y} ay x prev with trio< o∅ x - ... | tri> ¬a ¬b c = ⊥-elim (¬x<0 c ) - ... | tri≈ ¬a b ¬c = record { supf = λ _ → y } - ... | tri< 0<x ¬b ¬c with Oprev-p x - ... | yes op = sc4 where + sind f mf {y} ay x prev = sc0 where + sc0 : ZChain1 A f mf ay x + sc0 with trio< y x + ... | tri> ¬a ¬b c = record { supf = λ _ → y ; is-sup = ? } + ... | tri≈ ¬a b ¬c = record { supf = λ _ → y ; is-sup = ? } + ... | tri< y<x ¬b ¬c with Oprev-p x + ... | yes op = sc4 where open ZChain1 px = Oprev.oprev op px<x : px o< x @@ -493,22 +496,47 @@ pchain : HOD pchain = UnionCF A f mf ay (ZChain1.supf sc) x + pchain⊆A : {y : Ordinal} → odef pchain y → odef A y + pchain⊆A {y} ny = proj1 ny + psupf = ZChain1.supf sc + pnext : {a : Ordinal} → odef pchain a → odef pchain (f a) + pnext {a} ⟪ aa , ua ⟫ = ⟪ afa , record { u = UChain.u ua ; u<x = UChain.u<x ua ; chain∋z = fua } ⟫ where + afa : odef A ( f a ) + afa = proj2 ( mf a aa ) + fua : Chain A f mf ay psupf (UChain.u ua) (f a) + fua with UChain.chain∋z ua + ... | ch-init a fc = ch-init (f a) ( fsuc _ fc ) + ... | ch-is-sup is-sup fc = ch-is-sup (ChainP-next A f mf ay _ is-sup ) (fsuc _ fc) + ptotal : {a b : HOD } → odef pchain (& a) → odef pchain (& b) + → Tri ( a < b) ( a ≡ b) ( b < a ) + ptotal {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 _ (UChain.chain∋z (proj2 ca)) (UChain.chain∋z (proj2 cb)) + pinit : {y₁ : Ordinal} → odef pchain y₁ → * y ≤ * y₁ + pinit {a} ⟪ aa , ua ⟫ with UChain.chain∋z ua + ... | ch-init a fc = s≤fc y f mf fc + ... | ch-is-sup is-sup fc = ≤-ftrans (case2 zc7) (s≤fc _ f mf fc) where + zc7 : y << psupf (UChain.u ua) + zc7 = ChainP.fcy<sup is-sup (init ay) + pcy : odef pchain y + pcy = ⟪ ay , record { u = y ; u<x = y<x ; chain∋z = ch-init _ (init ay) } ⟫ + no-ext : ZChain1 A f mf ay x - no-ext = record { supf = ZChain1.supf sc } + no-ext = record { supf = ZChain1.supf sc ; is-sup = ? } sc4 : ZChain1 A f mf ay x sc4 with ODC.∋-p O A (* x) ... | no noax = no-ext ... | yes ax with ODC.p∨¬p O ( HasPrev A pchain ax f ) ... | case1 pr = no-ext ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A pchain ax ) - ... | case1 is-sup = record { supf = psup1 } where + ... | case1 is-sup = record { supf = psup1 ; is-sup = ?} where psup1 : Ordinal → Ordinal psup1 z with trio< z x ... | tri< a ¬b ¬c = ZChain1.supf sc z ... | tri≈ ¬a b ¬c = x ... | tri> ¬a ¬b c = x ... | case2 ¬x=sup = no-ext - ... | no ¬ox = sc4 where + ... | no ¬ox = sc4 where pzc : (z : Ordinal) → z o< x → ZChain1 A f mf ay z pzc z z<x = prev z z<x psupf : (z : Ordinal) → Ordinal @@ -526,7 +554,7 @@ usup = supP UZ (λ lt → proj1 lt) total-UZ spu = & (SUP.sup usup) sc4 : ZChain1 A f mf ay x - sc4 = record { supf = psup1 } where + sc4 = record { supf = psup1 ; is-sup = ?} where psup1 : Ordinal → Ordinal psup1 z with trio< z x ... | tri< a ¬b ¬c = ZChain1.supf (pzc z a) z @@ -569,7 +597,20 @@ ( HasPrev A pchain ab f ∨ IsSup A pchain ab ) → * a < * b → odef pchain b p-ismax {a} {b} ua b<ox ab (case1 hasp) a<b = ⟪ ab , ? ⟫ - p-ismax {a} {b} ua b<ox ab (case2 sup) a<b = ⟪ ab , ? ⟫ + p-ismax {a} {b} ua b<ox ab (case2 sup) a<b = ⟪ ab , record { u = b ; u<x = ∈∧P→o< ⟪ ab , lift true ⟫ ; chain∋z = zc5 } ⟫ where + zc2 : {sup1 z1 : Ordinal} → sup1 o< b → + FClosure A f (ZChain1.supf (zc0 (& A)) sup1) z1 → z1 << ZChain1.supf (zc0 (& A)) b + zc2 {sup1} {z1} s<b fsz = ? where + zc8 : odef pchain z1 + zc8 = ? + zc4 : FClosure A f (ZChain1.supf (zc0 (& A)) b) b -- + zc4 = subst (λ k → FClosure A f k b ) (sym (ZChain1.is-sup (zc0(& A)) ab sup )) (init ab) + zc6 : {z : Ordinal} → FClosure A f y z → z << ZChain1.supf (zc0 (& A)) b + zc6 = ? + zc3 : ChainP A f mf ay (ZChain1.supf (zc0 (& A))) b b + zc3 = record { fcy<sup = zc6 ; csupz = zc4 ; order = zc2 } + zc5 : Chain A f mf ay (ZChain1.supf (zc0 (& A))) b b + zc5 = ch-is-sup zc3 zc4 SZ0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → (x : Ordinal) → ZChain1 A f mf ay x SZ0 f mf ay x = TransFinite {λ z → ZChain1 A f mf ay z} (sind f mf ay ) x