changeset 879:6222efcf3b04

MinSUP
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 30 Sep 2022 10:55:23 +0900
parents 1ec8c0cfc892
children d4839adf694d
files src/zorn.agda
diffstat 1 files changed, 80 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/src/zorn.agda	Sat Sep 24 10:52:57 2022 +0900
+++ b/src/zorn.agda	Fri Sep 30 10:55:23 2022 +0900
@@ -97,6 +97,10 @@
 open _==_
 open _⊆_
 
+-- <-TransFinite : {A x : HOD} → {P : HOD → Set n} → x ∈ A 
+--     → ({x : HOD} → A ∋ x →  ({y : HOD} → A ∋  y → y < x → P y ) → P x) → P x
+-- <-TransFinite = ?
+
 --
 -- Closure of ≤-monotonic function f has total order
 --
@@ -357,6 +361,19 @@
 ... | case1 eq = ⊥-elim ( o<¬≡ (sym eq) sx<sy )
 ... | case2 lt = ⊥-elim ( o<> sx<sy lt )
 
+record MinSUP ( A B : HOD )  : Set n where
+   field
+      sup : Ordinal
+      asm : odef A sup
+      x<sup : {x : Ordinal } → odef B x → (x ≡ sup ) ∨ (x << sup )   
+      minsup : { sup1 : Ordinal } → odef A sup1 
+         →  ( {x : Ordinal  } → odef B x → (x ≡ sup1 ) ∨ (x << sup1 ))  → sup o≤ sup1
+
+z09 : {b : Ordinal } { A : HOD } → odef A b → b o< & A
+z09 {b} {A} ab = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
+
+-- M→S  : {A B : HOD} → MinSUP A B → SUP A B
+-- M→S {A} {B} ms = record { sup = MinSUP.sup ms ; as = MinSUP.asm ms ; x<sup = MinSUP.x<sup ms } 
 
 record ZChain ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) 
         {y : Ordinal} (ay : odef A y)  ( z : Ordinal ) : Set (Level.suc n) where
@@ -368,15 +385,18 @@
    chain⊆A : chain ⊆' A
    chain⊆A = λ lt → proj1 lt
    field
-      sup : {x : Ordinal } → x o≤ z  → SUP A (UnionCF A f mf ay supf x)
+      supf-mono : {x y : Ordinal } → x o≤  y → supf x o≤ supf y
+      supf-< : {x y : Ordinal } → supf x o< supf  y → supf x << supf y
+      minsup : {x : Ordinal } → x o≤ z  → MinSUP A (UnionCF A f mf ay supf x) 
+   sup : {x : Ordinal } → x o≤ z  → SUP A (UnionCF A f mf ay supf x) 
+   sup {x} x≤z = ? -- M→S  (minsup x≤z )
+   field
       sup=u : {b : Ordinal} → (ab : odef A b) → b o≤ z  
            → IsSup A (UnionCF A f mf ay supf b) ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf b) b f) → supf b ≡ b 
       supf-is-sup : {x : Ordinal } → (x≤z : x o≤ z) → supf x ≡ & (SUP.sup (sup x≤z) )
-      csupf : {b : Ordinal } → supf b o< z → odef (UnionCF A f mf ay supf z) (supf b) 
+      csupf : {b : Ordinal } → supf b o< z → odef (UnionCF A f mf ay supf z) (supf b) -- supf z is not an element of this chain
 
-      supf-max : {x : Ordinal } → z o< x → supf x ≡ supf z -- supf z may different from spuf pz
-      supf-mono : {x y : Ordinal } → x o≤  y → supf x o≤ supf y
-      supf-< : {x y : Ordinal } → supf x o< supf  y → supf x << supf y
+      -- supf-max : {x : Ordinal } → z o< x → supf x ≡ supf z -- supf z may different from spuf pz
       x≤supfx : z o≤ supf z
 
    chain∋init : odef chain y
@@ -410,19 +430,18 @@
    ... | case1 eq = ⊥-elim ( o<¬≡ (sym eq) sx<sy )
    ... | case2 lt = ⊥-elim ( o<> sx<sy lt )
 
-   supf-idem : {x : Ordinal } → supf (supf x) ≡ supf x
-   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 ) )
 
+   -- supf-idem : {x : Ordinal } → supf x o≤ z  → supf (supf x) ≡ supf x
+   -- supf-idem {x} sx≤z = sup=u (supf∈A ?) sx≤z ?
+
    fcy<sup  : {u w : Ordinal } → u o≤ z  → FClosure A f y 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 u≤z) ⟪ subst (λ k → odef A k ) (sym &iso) (A∋fc {A} y f mf fc)  
        , ch-init (subst (λ k → FClosure A f y k) (sym &iso) fc ) ⟫ 
    ... | 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 )
 
-
    -- ordering is not proved here but in ZChain1 
 
 record ZChain1 ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) 
@@ -452,8 +471,6 @@
      <-irr0 {a} {b} A∋a A∋b = <-irr
      z07 :   {y : Ordinal} {A : HOD } → {P : Set n} → odef A y ∧ P → y o< & A
      z07 {y} {A} p = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) (proj1 p )))
-     z09 : {b : Ordinal } { A : HOD } → odef A b → b o< & A
-     z09 {b} {A} ab = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
      s : HOD
      s = ODC.minimal O A (λ eq → ¬x<0 ( subst (λ k → o∅ o< k ) (=od∅→≡o∅ eq) 0<A )) 
      as : A ∋ * ( & s  )
@@ -476,6 +493,50 @@
         ¬x<m :  ¬ (* x < * m)
         ¬x<m x<m = ∅< {Gtx (subst (λ k → odef A k ) (sym &iso) ax)} {* m} ⟪ subst (λ k → odef A k) (sym &iso) am , subst (λ k → * x < k ) (cong (*) (sym &iso)) x<m ⟫  (≡o∅→=od∅ nogt) 
 
+     minsupP :  ( B : HOD) → (B⊆A : B ⊆' A) → IsTotalOrderSet B → MinSUP A B  
+     minsupP B B⊆A total = m02 where
+         xsup : (sup : Ordinal ) → Set n
+         xsup sup = {w : Ordinal } → odef B w → (w ≡ sup ) ∨ (w << sup )
+         ∀-imply-or :  {A : Ordinal  → Set n } {B : Set n }
+                        → ((x : Ordinal ) → A x ∨ B) →  ((x : Ordinal ) → A x) ∨ B
+         ∀-imply-or  {A} {B} ∀AB with ODC.p∨¬p O ((x : Ordinal ) → A x) -- LEM
+         ∀-imply-or  {A} {B} ∀AB | case1 t = case1 t
+         ∀-imply-or  {A} {B} ∀AB | case2 x  = case2 (lemma (λ not → x not )) where
+               lemma : ¬ ((x : Ordinal ) → A x) →  B
+               lemma not with ODC.p∨¬p O B
+               lemma not | case1 b = b
+               lemma not | case2 ¬b = ⊥-elim  (not (λ x → dont-orb (∀AB x) ¬b ))
+         m00 : (x : Ordinal ) → ( ( z : Ordinal) → z o< x →  ¬ (odef A z ∧ xsup z) ) ∨ MinSUP A B
+         m00 x = TransFinite0 ind x where
+            ind : (x : Ordinal) → ((z : Ordinal) → z o< x → ( ( w : Ordinal) → w o< z →  ¬ (odef A w ∧ xsup w ))  ∨ MinSUP A B)
+                  → ( ( w : Ordinal) → w o< x →  ¬ (odef A w ∧ xsup w) )  ∨ MinSUP A B
+            ind x prev  =  ∀-imply-or m01 where
+                m01 : (z : Ordinal) → (z o< x → ¬ (odef A z ∧ xsup z)) ∨ MinSUP A B
+                m01 z with trio< z x
+                ... | tri≈ ¬a b ¬c = case1 ( λ lt →  ⊥-elim ( ¬a lt )  )
+                ... | tri> ¬a ¬b c = case1 ( λ lt →  ⊥-elim ( ¬a lt )  )
+                ... | tri< a ¬b ¬c with prev z a
+                ... | case2 mins = case2 mins
+                ... | case1 not with ODC.p∨¬p O (odef A z ∧ xsup z)
+                ... | case1 mins = case2 record { sup = z ; asm = proj1 mins ; x<sup = proj2 mins ; minsup = m04 } where
+                  m04 : {sup1 : Ordinal} → odef A sup1 → ({w : Ordinal} → odef B w → (w ≡ sup1) ∨ (w << sup1)) → z o≤ sup1
+                  m04 {s} as lt with trio< z s
+                  ... | tri< a ¬b ¬c = o<→≤ a
+                  ... | tri≈ ¬a b ¬c = o≤-refl0 b
+                  ... | tri> ¬a ¬b s<z = ⊥-elim ( not s s<z ⟪ as , lt ⟫  )
+                ... | case2 notz = case1 (λ _ → notz )
+         m03 : ¬ ((z : Ordinal) → z o< & A → ¬ odef A z ∧ xsup z)
+         m03 not = ⊥-elim ( not s1 (z09 (SUP.as S)) ⟪ SUP.as S , m05 ⟫ ) where
+             S : SUP A B
+             S = supP B  B⊆A total
+             s1 = & (SUP.sup S)
+             m05 : {w : Ordinal } → odef B w → (w ≡ s1 ) ∨ (w << s1 )
+             m05 {w} bw with SUP.x<sup S {* w} (subst (λ k → odef B k) (sym &iso) bw )
+             ... | case1 eq = case1 ( subst₂ (λ j k → j ≡ k ) &iso refl (cong (&) eq) )
+             ... | case2 lt = case2 ( subst (λ k → _ < k ) (sym *iso) lt )
+         m02 : MinSUP A B 
+         m02 = dont-or (m00 (& A)) m03
+
      -- Uncountable ascending chain by axiom of choice
      cf : ¬ Maximal A → Ordinal → Ordinal
      cf  nmx x with ODC.∋-p O A (* x)
@@ -515,31 +576,6 @@
                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
-
-     record MinSUP ( A B : HOD ) (z : Ordinal) : Set (Level.suc n) where
-       field
-          sup : HOD
-          asm : A ∋ sup
-          x<sup : {x : HOD} → B ∋ x → (& x)  o< z → (x ≡ sup ) ∨ (x < sup )   
-          minsup : {x sup1 : HOD} → B ∋ x → (& x) o< z  → (x ≡ sup1 ) ∨ (x < sup1 )  → sup ≤ sup1
-
-     msupP : {B : HOD} → MinSUP A B (& A)
-     msupP {B} = tf (& A) where
-         ind :  (x : Ordinal) → ((y : Ordinal) → y o< x → MinSUP A B y) → MinSUP A B x
-         ind x prev = ?
-         tf : (z : Ordinal) → MinSUP A B z
-         tf z = TransFinite {λ x → MinSUP A B x } ind z
-
-     M→S  : {B : HOD} {z : Ordinal } → (& B) o< z  → MinSUP A B z → SUP A B
-     M→S {B} lt ms = record { sup = MinSUP.sup ms ; as = MinSUP.asm ms ; x<sup = ? }
 
      --
      -- Second TransFinite Pass for maximality
@@ -842,7 +878,7 @@
                  supf1 : Ordinal → Ordinal
                  supf1 z with trio< z px 
                  ... | tri< a ¬b ¬c = supf0 z
-                 ... | tri≈ ¬a b ¬c = px
+                 ... | tri≈ ¬a b ¬c = px   --- supf px ≡ px
                  ... | tri> ¬a ¬b c = sp1 
 
                  pchainp : HOD
@@ -929,9 +965,9 @@
                     ... | 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
-
+          ... | case2 px<spfx = ? where
+            -- 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
                  supf1 : Ordinal → Ordinal
                  supf1 z with trio< z px 
                  ... | tri< a ¬b ¬c = supf0 z
@@ -1136,8 +1172,8 @@
           zc70 pr xsup = ?
 
           no-extension : ¬ ( xSUP (UnionCF A f mf ay supf0 x) x ) → ZChain A f mf ay x
-          no-extension ¬sp=x  = record { supf = supf1  ; sup=u = sup=u  
-               ; sup = sup ; supf-is-sup = sis ; supf-mono = {!!} ; asupf = ? } where
+          no-extension ¬sp=x  = ? where -- record { supf = supf1  ; sup=u = sup=u  
+               -- ; sup = sup ; supf-is-sup = sis ; supf-mono = {!!} ; asupf = ? } where
                  supfu : {u : Ordinal } → ( a : u o< x ) → (z : Ordinal) → Ordinal
                  supfu {u} a z = ZChain.supf (pzc (osuc u) (ob<x lim a)) z
                  pchain0=1 : pchain ≡ pchain1
@@ -1185,8 +1221,8 @@
                -- 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 = record { supf = supf1  ; sup=u = {!!} 
-               ; sup = {!!} ; supf-is-sup = {!!} ; supf-mono = {!!};  asupf = {!!}  } -- where -- x is a sup of (zc ?) 
+          ... | case1 is-sup = ? -- record { supf = supf1  ; sup=u = {!!} 
+               -- ; sup = {!!} ; supf-is-sup = {!!} ; supf-mono = {!!};  asupf = {!!}  } -- where -- x is a sup of (zc ?) 
           ... | 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)