changeset 648:3821048a8552

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 27 Jun 2022 11:11:56 +0900
parents 7629714b4d07
children ce4dbd14cf44
files src/OrdUtil.agda src/zorn.agda
diffstat 2 files changed, 22 insertions(+), 15 deletions(-) [+]
line wrap: on
line diff
--- a/src/OrdUtil.agda	Mon Jun 27 08:01:11 2022 +0900
+++ b/src/OrdUtil.agda	Mon Jun 27 11:11:56 2022 +0900
@@ -76,6 +76,12 @@
 _o≤_ :  Ordinal → Ordinal → Set  n
 a o≤ b  = a o< osuc b -- (a ≡ b)  ∨ ( a o< b )
 
+o<→≤ : {a b : Ordinal} → a o< b → a o≤ b
+o<→≤ {a} {b} lt with trio< a (osuc b)
+... | tri< a₁ ¬b ¬c = a₁
+... | tri≈ ¬a b₁ ¬c = ⊥-elim (¬a (ordtrans lt <-osuc ) )
+... | tri> ¬a ¬b c  = ⊥-elim (¬a (ordtrans lt <-osuc ) )
+
 -- o<-irr : { x y : Ordinal } → { lt lt1 : x o< y } → lt ≡ lt1
 
 xo<ab :  {oa ob : Ordinal } → ( {ox : Ordinal } → ox o< oa  → ox o< ob ) → oa o< osuc ob
--- a/src/zorn.agda	Mon Jun 27 08:01:11 2022 +0900
+++ b/src/zorn.agda	Mon Jun 27 11:11:56 2022 +0900
@@ -529,6 +529,7 @@
      ... | no ¬ox = record { chain⊆A = Uz⊆A ; f-next = u-next ; chain = Uz
                      ; initial = u-initial ; chain∋x  = u-chain∋x ; is-max = {!!} }   where --- limit ordinal case
          record UZFChain (z : Ordinal) : Set n where -- Union of ZFChain from y which has maximality o< x
+            inductive
             field
                u : Ordinal
                u<x : u o< x
@@ -551,10 +552,11 @@
          u-chain∋x = case2 ( init ay )
          
      record ZChain1 (y : Ordinal) ( f : Ordinal → Ordinal )  ( z : Ordinal ) : Set (Level.suc n) where
+      inductive
       field
-         zc : { x : Ordinal } → x o< z → HOD
-         chain-mono : {x y : Ordinal} → (x≤y : x o≤ y) → (y<z : y o< z ) →  zc {x} (ordtrans≤-< x≤y y<z)  ⊆' zc y<z  
-         f-total : {x : Ordinal} → (x<z : x o< z ) → IsTotalOrderSet (zc x<z ) 
+         zc : { x : Ordinal } → x o≤ z → ZChain A y f x
+         chain-mono : {x y : Ordinal} → (x≤y : x o≤ y) → (y≤z : y o≤ z ) →  ZChain.chain (zc {x} (OrdTrans x≤y y≤z))  ⊆' ZChain.chain (zc y≤z ) 
+         f-total : {x : Ordinal} → (x≤z : x o≤ z ) → IsTotalOrderSet (ZChain.chain (zc x≤z ))
 
      SZ1 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) → {y : Ordinal} → (ay : odef A y)
          → (z : Ordinal) → ZChain1 y f z
@@ -565,20 +567,22 @@
          indp x prev with Oprev-p x
          ... | yes op  = sz02 where
              px = Oprev.oprev op
-             zc1 : ZChain1 y f (Oprev.oprev op)
+             zc1 : ZChain1 y f px
              zc1 = prev px (subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc )
+             zc0 : ZChain A y f px
+             zc0 = ind f mf ay px (λ w w<px → zc zc1 (o<→≤ w<px) )
              px<x : px o< x
              px<x = subst (λ k → px o< k) (Oprev.oprev=x op) <-osuc 
              sz02 : ZChain1 y f x
              sz02 with ODC.∋-p O A (* x)
              ... | no noax = record { zc = ? ;  chain-mono = ? ; f-total = ? }
-             ... | yes ax with ODC.p∨¬p O ( HasPrev A (zc zc1 ? ) ax f ) 
+             ... | yes ax with ODC.p∨¬p O ( HasPrev A (chain zc0) ax f ) 
              ... | case1 pr = record { zc = ? ;  chain-mono = ? ; f-total = ? } where
-             ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (zc zc1 ? ) ax )
+             ... | case2 ¬fy<x with ODC.p∨¬p O (IsSup A (chain zc0) ax )
              ... | case1 is-sup = ? where -- x is a sup of zc 1
-                sup0 : SUP A (zc zc1 ? ) 
+                sup0 : SUP A (chain zc0) 
                 sup0 = record { sup = * x ; A∋maximal = ax ; x<sup = x21 } where
-                        x21 :  {y : HOD} → (zc zc1 ?) ∋ y → (y ≡ * x) ∨ (y < * x)
+                        x21 :  {y : HOD} → (chain zc0) ∋ y → (y ≡ * x) ∨ (y < * x)
                         x21 {y} zy with IsSup.x<sup is-sup zy 
                         ... | case1 y=x = case1 ( subst₂ (λ j k → j ≡ * k  ) *iso &iso ( cong (*) y=x)  )
                         ... | case2 y<x = case2 (subst₂ (λ j k → j < * k ) *iso &iso y<x  )
@@ -586,7 +590,7 @@
                 sp = SUP.sup sup0 
                 x=sup : x ≡ & sp 
                 x=sup = sym &iso 
-                chain0 = zc zc1 ?
+                chain0 = chain zc0
                 sc<A : {y : Ordinal} → odef chain0 y ∨ FClosure A f (& sp) y → y o< & A
                 sc<A {y} (case1 zx) = subst (λ k → k o< (& A)) &iso ( c<→o< ? )
                 sc<A {y} (case2 fx) = subst (λ k → k o< (& A)) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso) (A∋fc (& sp) f mf fx )) )
@@ -598,9 +602,6 @@
          ... | tri≈ ¬a b ¬c = {!!}
          ... | tri> ¬a ¬b y<x = {!!}
 
-     zc1=zc : { f : Ordinal → Ordinal } {y : Ordinal} →  ZChain1  y f (osuc (& A)) → ZChain A y f (& A)
-     zc1=zc = ?
-
      zorn00 : Maximal A 
      zorn00 with is-o∅ ( & HasMaximal )  -- we have no Level (suc n) LEM 
      ... | no not = record { maximal = ODC.minimal O HasMaximal  (λ eq → not (=od∅→≡o∅ eq)) ; A∋maximal = zorn01 ; ¬maximal<x  = zorn02 } where
@@ -611,14 +612,14 @@
          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 (zc1=zc zc0) (ZChain1.f-total zc0 <-osuc) ) where
+     ... | yes ¬Maximal = ⊥-elim ( z04 nmx (ZChain1.zc zc0 o≤-refl ) (ZChain1.f-total zc0 o≤-refl ) ) where
          -- if we have no maximal, make ZChain, which contradict SUP condition
          nmx : ¬ Maximal A 
          nmx mx =  ∅< {HasMaximal} zc5 ( ≡o∅→=od∅  ¬Maximal ) where
               zc5 : odef A (& (Maximal.maximal mx)) ∧ (( y : Ordinal ) →  odef A y → ¬ (* (& (Maximal.maximal mx)) < * y)) 
               zc5 = ⟪  Maximal.A∋maximal mx , (λ y ay mx<y → Maximal.¬maximal<x mx (subst (λ k → odef A k ) (sym &iso) ay) (subst (λ k → k < * y) *iso mx<y) ) ⟫
-         zc0 : ZChain1 (& s) (cf nmx)  (osuc (& A))
-         zc0 = SZ1 (cf nmx) (cf-is-≤-monotonic nmx) (subst (λ k → odef A k ) &iso as) (osuc (& A))
+         zc0 : ZChain1 (& s) (cf nmx)  (& A)
+         zc0 = SZ1 (cf nmx) (cf-is-≤-monotonic nmx) (subst (λ k → odef A k ) &iso as) (& A)
 
 -- usage (see filter.agda )
 --