changeset 728:e864471a818f

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 18 Jul 2022 21:50:17 +0900
parents 322dd6569072
children ac6b4d200f27
files src/zorn.agda
diffstat 1 files changed, 56 insertions(+), 40 deletions(-) [+]
line wrap: on
line diff
--- a/src/zorn.agda	Mon Jul 18 16:26:01 2022 +0900
+++ b/src/zorn.agda	Mon Jul 18 21:50:17 2022 +0900
@@ -295,12 +295,23 @@
    chain : HOD
    chain = UnionCF A f mf ay supf z
    field
+      chain-mono : {z1 : Ordinal} → z1 o≤ z → UnionCF A f mf ay supf z1 ⊆' UnionCF A f mf ay supf z 
       chain⊆A : chain ⊆' A
       chain∋init : odef chain init
       initial : {y : Ordinal } → odef chain y → * init ≤ * y
       f-next : {a : Ordinal } → odef chain a → odef chain (f a)
       f-total : IsTotalOrderSet chain
 
+record ZChain1 ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) 
+        {init : Ordinal} (ay : odef A init)  (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where
+   field
+      b<x→chain : { b : Ordinal } → b o< z → odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) b → odef (UnionCF A f mf ay (ZChain.supf zc) z) b
+      chain-mono2 : { a b c : Ordinal }  → 
+          a o≤ b → b o≤ z → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c
+      is-max :  {a b : Ordinal } → (ca : odef (UnionCF A f mf ay (ZChain.supf zc) z) a ) →  b o< z  → (ab : odef A b) 
+          → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) z) ab f ∨  IsSup A (UnionCF A f mf ay (ZChain.supf zc) z) ab  
+          → * a < * b  → odef ((UnionCF A f mf ay (ZChain.supf zc) z)) b
+
 record Maximal ( A : HOD )  : Set (Level.suc n) where
    field
       maximal : HOD
@@ -347,7 +358,7 @@
 
 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  ; au = ChainP.au cp
+ChainP-next A f mf {y} ay supf {x} {z} cp = {!!} --record { y-init = ChainP.y-init cp ; asup = ChainP.asup cp  ; au = ChainP.au cp
      -- ; fcy<sup = ChainP.fcy<sup cp ; csupz = fsuc _ (ChainP.csupz cp) ; order = ChainP.order cp }
 
 Zorn-lemma : { A : HOD } 
@@ -410,14 +421,35 @@
      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)
 
-     ZChain-is-max :( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) 
-        {init : Ordinal} (ay : odef A init)   (zc : ZChain A f mf ay (& A)) → 
-         {a b : Ordinal } → (ca : odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) a ) →  b o< & A  → (ab : odef A b) 
-          → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) (& A)) ab f ∨  IsSup A (UnionCF A f mf ay (ZChain.supf zc) (& A)) ab  
-          → * a < * b  → odef ((UnionCF A f mf ay (ZChain.supf zc) (& A))) b
-     ZChain-is-max A f mf {y} ay zc {a} {b} ca b<a ab (case1 has-prev) a<b = 
-          subst (λ k → odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) k ) (sym (HasPrev.x=fy has-prev)) ( ZChain.f-next zc (HasPrev.ay has-prev) )
-     ZChain-is-max A f mf {y} ay zc {a} {b} ca b<a ab (case2 is-sup) a<b = ?
+     SZ1 :( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) 
+        {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal)   → ZChain1 A f mf ay zc x
+     SZ1 A f mf {y} ay zc x = TransFinite { λ x →  ZChain1 A f mf ay zc x } zc1 x where
+        zc1 :  (x : Ordinal) →  ((y₁ : Ordinal) → y₁ o< x → ZChain1 A f mf ay zc y₁) → ZChain1 A f mf ay zc x
+        zc1 x prev = {!!} where
+           is-max :  {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a →
+              b o< x → (ab : odef A b) →
+              HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) ab f ∨ IsSup A (UnionCF A f mf ay (ZChain.supf zc) x) ab →
+              * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
+           is-max {a} {b} ua b<x ab (case1 has-prev) a<b = {!!}
+           is-max {a} {b} ua b<x ab (case2 is-sup) a<b with ODC.p∨¬p O ( HasPrev A (ZChain.chain zc ) ab f )
+           ... | case1 has-prev = m03 (subst (λ k → odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) k ) {!!} m02 ) {!!} where
+                 m03 : odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) b → b o< x → odef (UnionCF A f mf ay (ZChain.supf zc) x) b 
+                 m03 = {!!}
+                 m02 : odef (UnionCF A f mf ay (ZChain.supf zc) (& A)) (f (HasPrev.y has-prev))
+                 m02 = ZChain.f-next zc (HasPrev.ay has-prev) 
+           ... | case2  ¬fy<x  with Oprev-p x
+           ... | yes op = {!!} where
+                 px = Oprev.oprev op
+                 m01 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b
+                 m01 with trio< px b
+                 ... | tri< a ¬b ¬c = ZChain1.chain-mono2 (prev px ?) ? ? m04 where
+                    m04 : odef (UnionCF A f mf ay (ZChain.supf zc) px) b
+                    m04 = ZChain1.is-max (prev px ?) {!!} {!!} ab {!!} a<b
+                 ... | tri≈ ¬a b ¬c = {!!}
+                 ... | tri> ¬a ¬b c = {!!}
+           ... | no  lim = ZChain1.chain-mono2 (prev b b<x ) ? {!!} m04  where
+                    m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b
+                    m04 = ZChain1.is-max (prev (osuc b) ? ) {!!} {!!} ab {!!} a<b
 
      ---
      --- the maximum chain  has fix point of any ≤-monotonic function
@@ -431,7 +463,7 @@
            z10 :  {a b : Ordinal } → (ca : odef chain a ) → b o< & A → (ab : odef A b ) 
               →  HasPrev A chain ab f ∨  IsSup A chain {b} ab -- (supO  chain  (ZChain.chain⊆A zc) (ZChain.f-total zc) ≡ b )
               → * a < * b  → odef chain b
-           z10 = ZChain-is-max A f mf as0 zc
+           z10 = ZChain1.is-max (SZ1 A f mf as0 zc (& A) )
            z11 : & (SUP.sup sp1) o< & A
            z11 = c<→o< ( SUP.A∋maximal sp1)
            z12 : odef chain (& (SUP.sup sp1))
@@ -484,7 +516,7 @@
 
      inititalChain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → ZChain A f mf ay o∅
      inititalChain f mf {y} ay = record { supf = isupf ; chain⊆A = λ lt → proj1 lt ; chain∋init = cy
-      ; initial = isy ; f-next = inext ; f-total = itotal ; is-max = imax } where
+      ; initial = isy ; f-next = inext ; f-total = itotal ; chain-mono = {!!} } where
           isupf : Ordinal → Ordinal
           isupf z = y
           cy : odef (UnionCF A f mf ay isupf o∅) y
@@ -508,11 +540,6 @@
           imax {a} {b} ua b<x ab (case1 hasp) a<b = subst (λ k → odef  (UnionCF A f mf ay isupf o∅) k ) (sym (HasPrev.x=fy hasp)) ( inext (HasPrev.ay hasp) )
           imax {a} {b} ua b<x ab (case2 sup)  a<b = ⊥-elim ( ¬x<0 b<x )
 
-     -- exor-sup : (B : HOD) 
-     --    → ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → 
-     --    → {x : Ordinal } (xa : odef A x) → HasPrev A B xa → IsSup A B xa → ⊥
-     -- exor-sup B f mf {y} ay {x} xa hasp is-sup with trio< 
-
      --
      -- create all ZChains under o< x
      --
@@ -560,7 +587,7 @@
           -- if previous chain satisfies maximality, we caan reuse it
           --
           no-extension : ZChain A f mf ay x
-          no-extension = record { initial = pinit ; chain∋init = pcy 
+          no-extension = record { supf = {!!} ; initial = pinit ; chain∋init = pcy 
               ;  chain⊆A = pchain⊆A ;  f-next = pnext ;  f-total = ptotal }
 
           chain-mono : UnionCF A f mf ay (ZChain.supf zc) (Oprev.oprev op ) ⊆' pchain
@@ -594,10 +621,10 @@
           ... | case1 pr = no-extension -- we have previous A ∋ z < x , f z ≡ x, so chain ∋ f z ≡ x because of f-next
           ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (ZChain.chain zc ) apx )
           ... | case1 is-sup = -- x is a sup of zc 
-                record {  chain⊆A = pchain⊆A ; f-next = pnext ; f-total = ptotal
+                record {  supf = {!!} ; chain⊆A = pchain⊆A ; f-next = pnext ; f-total = ptotal
                      ; initial = pinit ; chain∋init  = pcy } 
           ... | case2 ¬x=sup =  no-extension -- px is not f y' nor sup of former ZChain from y -- no extention
-     ... | no op = zc5 where
+     ... | no lim = zc5 where
 
           pzc : (z : Ordinal) → z o< x → ZChain A f mf ay z
           pzc z z<x = prev z z<x
@@ -643,7 +670,7 @@
           pcy = ⟪ ay , record { u =  o∅ ; u<x = case2 refl ; uchain = ch-init _ (init ay)  }  ⟫
 
           no-extension : ZChain A f mf ay x
-          no-extension  = record { initial = pinit ; chain∋init = pcy 
+          no-extension  = record { initial = pinit ; chain∋init = pcy  ; supf = psupf0 ; chain-mono = ?
               ;  chain⊆A = pchain⊆A ;  f-next = pnext ;  f-total = ptotal }
 
           usup : SUP A pchain
@@ -655,18 +682,14 @@
           ... | tri≈ ¬a b ¬c = spu
           ... | tri> ¬a ¬b c = spu
 
-          uzc : {a : Ordinal } → (za : odef pchain a) → ZChain A f mf ay (UChain.u (proj2 za))
-          uzc {a} za with UChain.u<x (proj2 za)
-          ... | case1 u<x = pzc _ u<x
-          ... | case2 u=0 =  subst (λ k → ZChain A f mf ay k ) (sym u=0) (inititalChain f mf {y} ay )
 
           chain-mono : pchain ⊆'  UnionCF A f mf ay psupf x  
           chain-mono {a} ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-init a x } ⟫ = 
                    ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-init a x } ⟫ 
           chain-mono {.(psupf0 u)} ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup is-sup (init x) } ⟫ = 
-                   ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup ? ? } ⟫ 
+                   ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup {!!} {!!} } ⟫ 
           chain-mono {.(f x)} ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup is-sup (fsuc x fc) } ⟫ = 
-                   ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup ? (fsuc x ?) } ⟫ 
+                   ⟪ az , record { u = u ; u<x = u<x ; uchain = ch-is-sup {!!} (fsuc x {!!}) } ⟫ 
           
           chain-≡ : UnionCF A f mf ay psupf x ⊆' pchain 
              → UnionCF A f mf ay psupf x ≡ pchain 
@@ -679,19 +702,6 @@
           fc-conv {.(p0 u)} {u}  {p0} {p1} p0u=p1u (init ap0u) = subst (λ k → FClosure A f (p1 u) k) (sym p0u=p1u) ( init (subst (λ k → odef A k) p0u=p1u ap0u ))
           fc-conv {_} {u}  {p0} {p1} p0u=p1u (fsuc z fc) = fsuc z (fc-conv {_} {u}  {p0} {p1} p0u=p1u fc)
 
-          uzc-mono : {b : Ordinal } → {ob<x : osuc b o< x }
-             → odef (UnionCF A f mf ay (ZChain.supf (prev (osuc b) ob<x))(osuc b)) b → odef pchain b
-          uzc-mono {b} {ob<x} ⟪ ab , record { u = x=0 ; u<x = u<x ; uchain = ch-init .b fc } ⟫ = 
-               ⟪ ab , record { u = x=0 ; u<x = case2 refl ; uchain = ch-init b fc } ⟫ 
-          uzc-mono {b} {ob<x} ⟪ ab , record { u = u ; u<x = case2 x=0 ; uchain = ch-is-sup is-sup fc } ⟫ = ?
-          uzc-mono {b} {ob<x} ⟪ ab , record { u = u ; u<x = case1 u<x ; uchain = ch-is-sup is-sup fc } ⟫ = 
-               ⟪ ab , record { u = u ; u<x = case1 (ordtrans u<x ob<x) ; uchain = ch-is-sup uzc00 
-                       (fc-conv {b} {u} {ZChain.supf (prev (osuc b) ob<x)} {psupf0} uzc01 fc) } ⟫ where
-                   uzc01 : ZChain.supf (prev (osuc b) ob<x) u  ≡ psupf0 u
-                   uzc01 = ? -- trans (sym (psupf0=pzc (ordtrans u<x ob<x ) )) ?
-                   uzc00 : ChainP A f mf ay psupf0 u b
-                   uzc00 = ?
-
           zc5 : ZChain A f mf ay x 
           zc5 with ODC.∋-p O A (* x)
           ... | no noax = no-extension where -- ¬ A ∋ p, just skip
@@ -699,7 +709,13 @@
                -- we have to check adding x preserve is-max ZChain A y f mf x
           ... | case1 pr = no-extension  
           ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A pchain ax )
-          ... | case1 is-sup = {!!} -- x is a sup of (zc ?) 
+          ... | case1 is-sup = record { initial = ? ; chain∋init = ?  ; supf = psupf1  ; chain-mono = ?
+              ;  chain⊆A = ? ;  f-next = ? ;  f-total = ? } where -- x is a sup of (zc ?) 
+             psupf1 : Ordinal → Ordinal
+             psupf1 z with trio< z x 
+             ... | tri< a ¬b ¬c = ZChain.supf (pzc z a) z
+             ... | tri≈ ¬a b ¬c = x
+             ... | tri> ¬a ¬b c = x
           ... | case2 ¬x=sup =  no-extension -- x is not f y' nor sup of former ZChain from y -- no extention
          
      SZ : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} (ay : odef A y) → ZChain A f mf ay   (& A)