changeset 782:e8cf9c453431

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 01 Aug 2022 09:38:00 +0900
parents 460df9965d63
children 195c3c7de021
files src/zorn.agda
diffstat 1 files changed, 86 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/src/zorn.agda	Sun Jul 31 19:45:40 2022 +0900
+++ b/src/zorn.agda	Mon Aug 01 09:38:00 2022 +0900
@@ -265,6 +265,8 @@
       sup : HOD
       A∋maximal : A ∋ sup
       x<sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup )   -- B is Total, use positive
+      min-sup : {z : HOD } → B ∋ z → ( {x : HOD } → B ∋ x → (x ≡ z ) ∨ (x < z ) ) 
+          → (z ≡ sup ) ∨ (sup < z )  
 
 --
 --  sup and its fclosure is in a chain HOD
@@ -281,10 +283,6 @@
 -- Union of supf z which o< x
 --
 
---     data DChain  ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)  {y : Ordinal} (ay : odef A y) : (z : Ordinal) → Set n where
---        dinit :  DChain f mf ay (& (SUP.sup (ysup f mf ay)))
---        dsuc  : {u : Ordinal } → (au : odef A u) → DChain  f mf ay u → DChain f mf ay ( & (SUP.sup (ysup f mf au)) )
-
 data UChain  ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y )
        (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where 
     ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z
@@ -312,9 +310,30 @@
       f-next : {a : Ordinal } → odef chain a → odef chain (f a)
       f-total : IsTotalOrderSet chain
 
+      sup : {x : Ordinal } → x o≤ z  → SUP A (UnionCF A f mf ay supf x)
+      supf-is-sup : {x : Ordinal } → (x≤z : x o≤ z) → supf x ≡ & (SUP.sup (sup x≤z) )
       sup=u : {b : Ordinal} → (ab : odef A b) → b o< z  → IsSup A (UnionCF A f mf ay supf (osuc b)) ab → supf b ≡ b 
+      csupf : (z : Ordinal ) → odef chain (supf z) 
+      csupf' : {b : Ordinal } → b o≤ z → odef (UnionCF A f mf ay supf b) (supf b) 
       fcy<sup  : {u w : Ordinal } → u o< z  → FClosure A f init w → (w ≡ supf u ) ∨ ( w << supf u ) -- different from order because y o< supf 
       order : {b sup1 z1 : Ordinal} → b o< z → supf sup1 o< supf b → FClosure A f (supf sup1) z1 → (z1 ≡ supf b) ∨ (z1 << supf b)
+   supf∈A : {u : Ordinal } → odef A (supf u)
+   supf∈A = ?
+   fcy<sup'  : {u w : Ordinal } → u o< z  → FClosure A f init w → (w ≡ supf u ) ∨ ( w << supf u ) -- different from order because y o< supf 
+   fcy<sup'  {u} {w} u<z fc with SUP.x<sup (sup ?) ⟪ subst (λ k → odef A k ) (sym &iso) (A∋fc {A} init f mf fc)  , ? ⟫ 
+   ... | case1 eq = ?
+   ... | case2 lt = ?
+   fc∈A : {s z1 : Ordinal} → FClosure A f (supf s) z1 → odef chain z1
+   fc∈A {s} (fsuc x fc) = f-next (fc∈A {s} fc )  -- (supf s) ≡ z1 → init (supf s)
+   order' : {b s z1 : Ordinal} → b o< z → supf s o< supf b → FClosure A f (supf s) z1 → (z1 ≡ supf b) ∨ (z1 << supf b)
+   order' {b} {s} {z1} b<z sf<sb fc with SUP.x<sup (sup (o<→≤ b<z)) (subst (λ k → odef (UnionCF A f mf ay supf b) k) (sym &iso) ( csupf' (o<→≤ b<z)) )
+   ... | case1 eq = case1 (begin
+     ? ≡⟨ ? ⟩
+     ? ∎ ) where open ≡-Reasoning
+   ... | case2 lt = case2 ? where
+        zc00 : ?
+        zc00 = ?
+   -- case2 ( subst (λ k → * z1 < k ) (subst₂ (λ j k → j ≡ k )  *iso ? (cong (*) (sym supf-is-sup)))  lt )
 
 
 record ZChain1 ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) 
@@ -330,6 +349,26 @@
       A∋maximal : A ∋ maximal
       ¬maximal<x : {x : HOD} → A ∋ x  → ¬ maximal < x       -- A is Partial, use negative
 
+-- 
+
+supf-unique : ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) {y : Ordinal} (ay : odef A y)  
+        → {a b : Ordinal } → a o< b
+        → (za : ZChain A f mf ay (osuc a) ) → (zb : ZChain A f mf ay (osuc b) )
+        → odef (UnionCF A f mf ay (ZChain.supf za) (osuc a)) (ZChain.supf za a) 
+        → odef (UnionCF A f mf ay (ZChain.supf zb) (osuc b)) (ZChain.supf zb a) → ZChain.supf za a ≡ ZChain.supf zb a 
+supf-unique A f mf {y} ay {a} {b} a<b za zb ⟪ aa , ch-init fca ⟫ ⟪ ab , ch-init fcb ⟫ = ? where
+       supf = ZChain.supf za
+       supb = ZChain.supf zb
+       su00 :  {u w : Ordinal } → u o< osuc a  → FClosure A f y w → (w ≡ supf u ) ∨ ( w << supf u ) 
+       su00 = ZChain.fcy<sup za
+       su01 :  (supf a ≡ supb b ) ∨ ( supf a << supb b ) 
+       su01 = ZChain.fcy<sup zb <-osuc fca
+       su02 :  (supb a ≡ supf a ) ∨ ( supb a << supf a ) 
+       su02 = ZChain.fcy<sup za <-osuc fcb
+supf-unique A f mf {y} ay {a} a<b za zb ⟪ aa , ch-init fca ⟫ ⟪ ab , ch-is-sup ub is-supb fcb ⟫ = ?
+supf-unique A f mf {y} ay {a} a<b za zb ⟪ aa , ch-is-sup ua is-supa fca ⟫ ⟪ ab , ch-init fcb ⟫ = ?
+supf-unique A f mf {y} ay {a} a<b za zb ⟪ aa , ch-is-sup ua is-supa fca ⟫ ⟪ ab , ch-is-sup ub is-supb fcb ⟫ = ?
+
 -- data UChain is total
 
 chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)  {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal )
@@ -474,11 +513,11 @@
      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
-        chain-mono2 : (x : Ordinal) {a b c : Ordinal} → a o≤ b → b o≤ x →
+        chain-mono1 : (x : Ordinal) {a b c : Ordinal} → 
             odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c
-        chain-mono2 x {a} {b} {c} a≤b b≤x ⟪ ua , ch-init fc  ⟫ = 
+        chain-mono1 x {a} {b} {c} ⟪ ua , ch-init fc  ⟫ = 
             ⟪ ua , ch-init fc  ⟫ 
-        chain-mono2 x {a} {b} {c} a≤b b≤x ⟪ uaa ,  ch-is-sup ua is-sup fc  ⟫ = 
+        chain-mono1 x {a} {b} {c} ⟪ uaa ,  ch-is-sup ua is-sup fc  ⟫ = 
             ⟪ uaa , ch-is-sup ua  is-sup fc  ⟫ 
         chain<ZA : {x : Ordinal } → UnionCF A f mf ay (ZChain.supf zc) x ⊆' UnionCF A f mf ay (ZChain.supf zc) (& A)
         chain<ZA {x} ux with proj2 ux
@@ -512,20 +551,20 @@
                  m01 : odef (UnionCF A f mf ay (ZChain.supf zc) x) b
                  m01 with trio< b px    --- px  < b < x
                  ... | tri> ¬a ¬b c = ⊥-elim (¬p<x<op ⟪ c , subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) b<x  ⟫)
-                 ... | tri< b<px ¬b ¬c = chain-mono2 x ( o<→≤  (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ))  o≤-refl m04 where
+                 ... | tri< b<px ¬b ¬c = chain-mono1 x m04 where
                     m03 :  odef (UnionCF A f mf ay (ZChain.supf zc) px) a -- if a ∈ chain of px, is-max of px can be used
                     m03 with proj2 ua
                     ... | ch-init fc = ⟪ proj1 ua ,  ch-init fc ⟫
                     ... | ch-is-sup u is-sup-a fc = ⟪ proj1 ua , ch-is-sup u  is-sup-a fc ⟫
                     m04 : odef (UnionCF A f mf ay (ZChain.supf zc) px) b
                     m04 = ZChain1.is-max (prev px px<x) m03 b<px ab 
-                         (case2 record {x<sup = λ {z} lt → IsSup.x<sup is-sup (chain-mono2 x ( o<→≤  (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc ))  o≤-refl lt)  } ) a<b
+                         (case2 record {x<sup = λ {z} lt → IsSup.x<sup is-sup (chain-mono1 x lt)  } ) a<b
                  ... | tri≈ ¬a b=px ¬c = ⟪ ab , ch-is-sup b  m06 (subst (λ k → FClosure A f k b) m05 (init ab)) ⟫   where
                     b<A : b o< & A
                     b<A = z09 ab
                     m05 : b ≡ ZChain.supf zc b
                     m05 = sym ( ZChain.sup=u zc ab (z09 ab) 
-                      record { x<sup = λ {z} uz → IsSup.x<sup is-sup (chain-mono2 x (osucc b<x) o≤-refl uz )  }  )
+                      record { x<sup = λ {z} uz → IsSup.x<sup is-sup (chain-mono1 x uz )  }  )
                     m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b
                     m08 {z} fcz = ZChain.fcy<sup zc b<A fcz
                     m09 : {sup1 z1 : Ordinal} → (ZChain.supf zc sup1) o< (ZChain.supf zc b) 
@@ -540,9 +579,9 @@
               * 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-hp x {a} {b} ua b<x ab has-prev a<b 
            is-max {a} {b} ua b<x ab (case2 is-sup) a<b with IsSup.x<sup is-sup (init-uchain A f mf ay )
-           ... | case1 b=y = ⊥-elim ( <-irr ( ZChain.initial zc (chain<ZA (chain-mono2 (osuc x) (o<→≤ <-osuc ) o≤-refl ua )) )
+           ... | case1 b=y = ⊥-elim ( <-irr ( ZChain.initial zc (chain<ZA {x} (chain-mono1 (osuc x) ua )) )
                        (subst (λ k → * a < * k ) (sym b=y) a<b ) )
-           ... | case2 y<b = chain-mono2 x (o<→≤ (ob<x lim b<x) ) o≤-refl m04 where
+           ... | case2 y<b = chain-mono1 x m04 where
                  m09 : b o< & A
                  m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
                  m07 : {z : Ordinal} → FClosure A f y z → z <= ZChain.supf zc b
@@ -552,7 +591,7 @@
                  m08 {sup1} {z1} s<b fc = ZChain.order zc m09 s<b fc
                  m05 : b ≡ ZChain.supf zc b
                  m05 = sym (ZChain.sup=u zc ab m09
-                      record { x<sup = λ lt → IsSup.x<sup is-sup (chain-mono2 x (o<→≤ (ob<x lim b<x)) o≤-refl lt )} )   -- ZChain on x
+                      record { x<sup = λ lt → IsSup.x<sup is-sup (chain-mono1 x lt )} )   -- ZChain on x
                  m06 : ChainP A f mf ay (ZChain.supf zc) b b
                  m06 = record { fcy<sup = m07 ;  order = m08 }
                  m04 : odef (UnionCF A f mf ay (ZChain.supf zc) (osuc b)) b
@@ -717,6 +756,11 @@
 
           supf0 = ZChain.supf zc
 
+          csupf : (z : Ordinal) → odef (UnionCF A f mf ay supf0 x) (supf0 z)
+          csupf z with ZChain.csupf zc z
+          ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 
+          ... | ⟪ az , ch-is-sup u is-sup fc ⟫ = ⟪ az , ch-is-sup u is-sup fc ⟫ 
+
           -- if previous chain satisfies maximality, we caan reuse it
           --
           no-extension : ZChain A f mf ay x
@@ -796,6 +840,13 @@
                    szc = pzc (osuc s) (ob<x lim s<x)
                    zc23 :  ZChain.supf (pzc (osuc s) (ob<x lim s<x)) s ≡ ZChain.supf (pzc (osuc b) (ob<x lim a)) s
                    zc23 = ?
+                   zc24 : odef (UnionCF A f mf ay (ZChain.supf (pzc (osuc s) (ob<x lim s<x))) (osuc s)) 
+                                (ZChain.supf (pzc (osuc s) (ob<x lim s<x)) s )
+                   zc24 = ZChain.csupf (pzc (osuc s) (ob<x lim s<x)) s
+                   zc25 : odef (UnionCF A f mf ay (ZChain.supf (pzc (osuc b) (ob<x lim a))) (osuc b)) 
+                                (ZChain.supf (pzc (osuc b) (ob<x lim a)) b )
+                   zc25 = ZChain.csupf (pzc (osuc b) (ob<x lim a)) b
+
                ... | tri≈ ¬a b ¬c = ?
                ... | tri> ¬a ¬b c = ?
                zc21 :  ZChain.supf uzc s o< ZChain.supf uzc b
@@ -805,6 +856,28 @@
           ... | tri≈ ¬a b ¬c = ⊥-elim (¬a b<x)
           ... | tri> ¬a ¬b c = ⊥-elim (¬a b<x)
 
+          csupf : (z : Ordinal) → odef (UnionCF A f mf ay psupf x) (psupf z)
+          csupf z with trio< z x | inspect psupf z
+          ... | tri< z<x ¬b ¬c | record { eq = eq1 } = zc11 where
+                ozc = pzc (osuc z) (ob<x lim z<x)
+                zc12 : odef A (ZChain.supf ozc z) ∧ UChain A f mf ay (ZChain.supf ozc) (osuc z) (ZChain.supf ozc z)
+                zc12  = ZChain.csupf ozc z
+                zc11 : odef A (ZChain.supf ozc z) ∧ UChain A f mf ay psupf x (ZChain.supf ozc z)
+                zc11 = ⟪ az , ch-is-sup z cp1 (subst (λ k → FClosure A f k _) (sym eq1) (init az) ) ⟫ where
+                      az : odef A ( ZChain.supf ozc z )
+                      az = proj1 zc12
+                      zc20 : {z1  : Ordinal} → FClosure A f y z1 → (z1 ≡ psupf z) ∨ (z1 << psupf z)
+                      zc20 {z1} fc with ZChain.fcy<sup ozc <-osuc fc
+                      ... | case1 eq = case1 (trans eq (sym eq1) )
+                      ... | case2 lt = case2 (subst ( λ k → z1 << k ) (sym eq1) lt)
+                      cp1 : ChainP A f mf ay psupf z (ZChain.supf ozc z)
+                      cp1 = record {  fcy<sup = zc20   ; order = order z<x  }
+                     ---  u = supf u = supf z 
+          ... | tri≈ ¬a b ¬c | record { eq = eq1 } = ⟪ sa , ch-is-sup {!!} {!!} {!!} ⟫ where
+                sa = SUP.A∋maximal usup
+          ... | tri> ¬a ¬b c | record { eq = eq1 } = {!!}
+
+
           fcy<sup : {u w : Ordinal} → u o< x → FClosure A f y w → (w ≡ psupf u) ∨ (w << psupf u)
           fcy<sup {u} {w} u<x fc with trio< u x 
           ... | tri< a ¬b ¬c = ZChain.fcy<sup uzc <-osuc fc where