diff src/zorn.agda @ 525:dea970e4526e

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 18 Apr 2022 11:09:52 +0900
parents c02c82656063
children 7e59e0aeaa73
line wrap: on
line diff
--- a/src/zorn.agda	Mon Apr 18 01:33:07 2022 +0900
+++ b/src/zorn.agda	Mon Apr 18 11:09:52 2022 +0900
@@ -173,7 +173,7 @@
 ic→A∋y : (A : HOD) {x y : Ordinal}  (ax : A ∋ * x) → odef (IChainSet A ax) y → A ∋ * y
 ic→A∋y A {x} {y} ax ⟪ ay , _ ⟫ = subst (λ k → odef A k) (sym &iso) ay
 
-record InFiniteIChain (A : HOD) (max : Ordinal) {x : Ordinal}  (ax : A ∋ * x) : Set n where
+record InfiniteChain (A : HOD) (max : Ordinal) {x : Ordinal}  (ax : A ∋ * x) : Set n where
    field
       chain<x : (y : Ordinal ) → odef (IChainSet A ax) y →  y o< max
       c-infinite : (y : Ordinal ) → (cy : odef (IChainSet A ax) y  )
@@ -205,22 +205,28 @@
 cton : (A : HOD ) (s : Ordinal)   → (next : Ordinal → Ordinal ) → Element (ChainClosure A s next) → ℕ
 cton A s next y = cton0 A s next (is-elm y)
 
-cinext :  (A : HOD) {x max : Ordinal } → (ax : A ∋ * x ) → (ifc : InFiniteIChain A max ax ) → Ordinal  →  Ordinal
+cinext :  (A : HOD) {x max : Ordinal } → (ax : A ∋ * x ) → (ifc : InfiniteChain A max ax ) → Ordinal  →  Ordinal
 cinext A ax ifc y with ODC.∋-p O (IChainSet A ax) (* y)
-... | yes ics-y = IChainSup>.y ( InFiniteIChain.c-infinite ifc y (subst (λ k → odef (IChainSet A ax) k) &iso ics-y ))
+... | yes ics-y = IChainSup>.y ( InfiniteChain.c-infinite ifc y (subst (λ k → odef (IChainSet A ax) k) &iso ics-y ))
 ... | no _ = o∅
 
 InFCSet : (A : HOD) → {x max : Ordinal}  (ax : A ∋ * x)
-     → (ifc : InFiniteIChain A max ax ) → HOD
+     → (ifc : InfiniteChain A max ax ) → HOD
 InFCSet A {x} ax ifc =  ChainClosure (IChainSet A ax) x (cinext A ax ifc ) 
 
-InFCSet⊆A : (A : HOD) → {x max : Ordinal}  (ax : A ∋ * x) →  (ifc : InFiniteIChain A max ax ) → InFCSet A ax ifc ⊆ A
+InFCSet⊆A : (A : HOD) → {x max : Ordinal}  (ax : A ∋ * x) →  (ifc : InfiniteChain A max ax ) → InFCSet A ax ifc ⊆ A
 InFCSet⊆A A {x} ax ifc = record { incl = λ {y} lt → incl (IChainSet⊆A ax) (
      ct∈A (IChainSet A ax) x (cinext A ax ifc) lt ) }
 
+cinext→IChainSup :  (A : HOD) {x max : Ordinal } → (ax : A ∋ * x ) → (ifc : InfiniteChain A max ax ) → (y : Ordinal )
+    → (ay1 : IChainSet A ax ∋ * y ) → IChainSup> A (subst (odef A) (sym &iso) (proj1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1)))
+cinext→IChainSup A {x} ax ifc y ay with ODC.∋-p O (IChainSet A ax) (* y)
+... | no not = ⊥-elim ( not ay )
+... | yes ay1 = InfiniteChain.c-infinite ifc y (subst (λ k → odef (IChainSet A ax) k) &iso ay )
+
 ChainClosure-is-total : (A : HOD) → {x max : Ordinal}  (ax : A ∋ * x)
      → IsPartialOrderSet A 
-     → (ifc : InFiniteIChain A max ax )
+     → (ifc : InfiniteChain A max ax )
      → IsTotalOrderSet ( InFCSet A ax ifc )
 ChainClosure-is-total A {x} ax PO ifc = record { isEquivalence = IsStrictPartialOrder.isEquivalence IPO
    ; trans = λ {x} {y} {z} → IsStrictPartialOrder.trans IPO {x} {y} {z}  ; compare = cmp } where
@@ -246,18 +252,18 @@
         ct07 with ODC.∋-p O (IChainSet A ax) (* oy1)
         ... | no not  = ⊥-elim ( not (subst (λ k → odef (IChainSet A ax) k ) (sym &iso) ay ) )
         ... | yes ay1 = IsStrictPartialOrder.trans PO {me (ct02 x1) } {me (ct02 y)} {me ct031 } (ct-monotonic x1 y a ) ct011 where
-           ct031 :  A ∋ * (IChainSup>.y (InFiniteIChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 ) )) 
+           ct031 :  A ∋ * (IChainSup>.y (InfiniteChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 ) )) 
            ct031 = subst (λ k → odef A k ) (sym &iso) (
-              IChainSup>.A∋y (InFiniteIChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) )
-           ct011 :  * oy1 < * ( IChainSup>.y (InFiniteIChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) )
-           ct011 = IChainSup>.y>x (InFiniteIChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) 
+              IChainSup>.A∋y (InfiniteChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) )
+           ct011 :  * oy1 < * ( IChainSup>.y (InfiniteChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) )
+           ct011 = IChainSup>.y>x (InfiniteChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) 
     ... | tri≈ ¬a b ¬c = ct11 where
            ct11 : * ox < * (cnext oy1)
            ct11 with ODC.∋-p O (IChainSet A ax) (* oy1)
            ... | no not  = ⊥-elim ( not (subst (λ k → odef (IChainSet A ax) k ) (sym &iso) ay ) )
            ... | yes ay1 = subst (λ k → * k < _) (sym (ct-inject _ _ b)) ct011  where
-              ct011 :  * oy1 < * ( IChainSup>.y (InFiniteIChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) )
-              ct011 = IChainSup>.y>x (InFiniteIChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) 
+              ct011 :  * oy1 < * ( IChainSup>.y (InfiniteChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) )
+              ct011 = IChainSup>.y>x (InfiniteChain.c-infinite ifc oy1 (subst (λ k → odef (IChainSet A ax) k) &iso ay1 )) 
     ... | tri> ¬a ¬b c = ⊥-elim ( nat-≤> lt c ) 
     ct12 : {y z : Element (ChainClosure B x cnext) } → elm y ≡ elm z → elm y < elm z → ⊥ 
     ct12 {y} {z} y=z y<z = IsStrictPartialOrder.irrefl IPO {y} {z} y=z y<z
@@ -307,7 +313,7 @@
 Zorn-lemma-3case : { A : HOD } 
     → o∅ o< & A 
     → IsPartialOrderSet A 
-    → (x : Ordinal ) → (ax : odef A x)  → OSup> A (d→∋ A ax) ∨ Maximal A ∨ InFiniteIChain A x  (d→∋ A ax)
+    → (x : Ordinal ) → (ax : odef A x)  → OSup> A (d→∋ A ax) ∨ Maximal A ∨ InfiniteChain A x  (d→∋ A ax)
 Zorn-lemma-3case {A}  0<A PO x ax = zc2 where
     Gtx : HOD
     Gtx = record { od = record { def = λ y → odef ( IChainSet A ax ) y ∧  ( x o< y ) } ; odmax = & A
@@ -315,7 +321,7 @@
     HG : HOD
     HG = record { od = record { def = λ y → odef A y ∧ IsFC A (d→∋ A ax ) y } ; odmax = & A
         ; <odmax = λ lt → subst (λ k → k o< & A) &iso (c<→o< (d→∋  A  (proj1 lt) ))  }
-    zc2 :  OSup> A (d→∋ A ax)  ∨ Maximal A ∨ InFiniteIChain A x  (d→∋ A ax )
+    zc2 :  OSup> A (d→∋ A ax)  ∨ Maximal A ∨ InfiniteChain A x  (d→∋ A ax )
     zc2 with  is-o∅ (& Gtx)
     ... | no not = case1 record { y = & y ; icy = zc4 ; y>x = proj2 zc3 } where
         y : HOD
@@ -369,7 +375,7 @@
 all-climb-case : { A : HOD } → (0<A : o∅ o< & A) → IsPartialOrderSet A
      → (( x : Ordinal ) → (ax : odef A (& (* x))) → OSup> A ax )
      → (x : HOD) ( ax : A ∋ x )
-     → InFiniteIChain A (& A) (d→∋ A ax)
+     → InfiniteChain A (& A) (d→∋ A ax)
 all-climb-case {A} 0<A PO climb x ax = record {    c-infinite = ac00 ; chain<x = ac01 }  where
         B = IChainSet A ax
         ac01 : (y : Ordinal) → odef (IChainSet A (d→∋ A ax)) y → y o< & A 
@@ -406,22 +412,24 @@
           (IsStrictPartialOrder.trans PO {me A∋b} {me A∋a} {me A∋b}  b<a a<b)
      s = ODC.minimal O A (λ eq → ¬x<0 (subst (_o<_ o∅) (=od∅→≡o∅ eq) 0<A))
      sa = ODC.x∋minimal O A (λ eq → ¬x<0 (subst (_o<_ o∅) (=od∅→≡o∅ eq) 0<A))
-     z02 : {x max : Ordinal } → (ax : A ∋ * x ) → InFiniteIChain A max ax  → ⊥
+     z02 : {x max : Ordinal } → (ax : A ∋ * x ) → InfiniteChain A max ax  → ⊥
      z02 {x} {max} ax ifc = zc5 ifc where
           FC : HOD
           FC = IChainSet A ax
-          zc6 :  InFiniteIChain A max ax  → ¬ SUP A (InFCSet A ax ifc) 
-          zc6 inf sup = z01 nxa (SUP.A∋maximal sup) (SUP.x<sup sup {!!} ) {!!} where
+          zc6 : (ifc : InfiniteChain A max ax)  → ¬ SUP A (InFCSet A ax ifc) 
+          zc6 ifc sup = z01 nxa (SUP.A∋maximal sup) (SUP.x<sup sup {!!} ) {!!} where
               nx : Ordinal
               nx = cinext A ax ifc (& (SUP.sup sup))
+              zc7 : A ∋ * (& (SUP.sup sup))
+              zc7 = subst (λ k → odef A k ) (cong (&) (sym *iso)) (SUP.A∋maximal sup)
+              sup-ics :  odef (IChainSet A ax) (& (SUP.sup sup))
+              sup-ics = ? -- SUP.A∋maximal sup
+              ncsup : (z : Ordinal) → (az : odef (IChainSet A ax) z)  → IChainSup> A {z} (subst (odef A) (sym &iso) (proj1 az)) 
+              ncsup z az = InfiniteChain.c-infinite ifc z az
               nxa : A ∋ * nx
-              nxa = {!!}
-          fct : IsTotalOrderSet (InFCSet A ax ifc)
-          fct = ChainClosure-is-total  A {x} ax PO ifc
-          FC⊆A :  InFCSet A ax ifc ⊆ A
-          FC⊆A = InFCSet⊆A A {x} ax ifc
-          zc5 : InFiniteIChain A max ax → ⊥
-          zc5 ic = zc6 ic ( supP (InFCSet A ax ifc) FC⊆A fct )
+              nxa = {!!} -- cinext∈A A ax ifc (& (SUP.sup sup)) {!!}
+          zc5 : InfiniteChain A max ax → ⊥
+          zc5 ifc = zc6 ifc ( supP (InFCSet A ax ifc) (InFCSet⊆A A {x} ax ifc) (  ChainClosure-is-total  A {x} ax PO ifc ))
      -- ZChain is not compatible with the SUP condition
      ind : (x : Ordinal) → ((y : Ordinal) → y o< x →  ZChain A y ∨ Maximal A )
          →  ZChain A x ∨ Maximal A 
@@ -450,21 +458,21 @@
           ... | case2 (case2 ex) = ⊥-elim (zc5 {!!} ) where
               FC : HOD
               FC = IChainSet A ax
-              B : InFiniteIChain A x ax  → HOD
+              B : InfiniteChain A x ax  → HOD
               B ifc =  InFCSet A ax ifc
-              zc6 :  (ifc : InFiniteIChain A x ax ) → ¬ SUP A (B ifc)
+              zc6 :  (ifc : InfiniteChain A x ax ) → ¬ SUP A (B ifc)
               zc6 = {!!}
-              FC-is-total : (ifc : InFiniteIChain A x ax)  → IsTotalOrderSet (B ifc)
+              FC-is-total : (ifc : InfiniteChain A x ax)  → IsTotalOrderSet (B ifc)
               FC-is-total ifc = ChainClosure-is-total A ax PO ifc 
-              B⊆A : (ifc : InFiniteIChain A x ax)  →   B ifc ⊆ A
+              B⊆A : (ifc : InfiniteChain A x ax)  →   B ifc ⊆ A
               B⊆A = {!!}
-              ifc : InFiniteIChain A x (subst (OD.def (od A)) (sym &iso) ax) → InFiniteIChain A x ax
+              ifc : InfiniteChain A x (subst (OD.def (od A)) (sym &iso) ax) → InfiniteChain A x ax
               ifc record {  c-infinite = c-infinite } = record {  c-infinite = {!!} }  where
                   ifc01 : {!!} -- me (subst (OD.def (od A)) (sym &iso) ax)
                   ifc01 = {!!}
                -- (y : Ordinal) → odef (IChainSet (me (subst (OD.def (od A)) (sym &iso) ax))) y → y o< & (* x₁)
                --  (y : Ordinal) → odef (IChainSet (me ax)) y → y o< x₁
-              zc5 : InFiniteIChain A x (subst (OD.def (od A)) (sym &iso) ax) → ⊥
+              zc5 : InfiniteChain A x (subst (OD.def (od A)) (sym &iso) ax) → ⊥
               zc5 x = zc6 (ifc x) ( supP (B (ifc x)) (B⊆A (ifc x)) (FC-is-total (ifc x) ))
      ind x prev | no ¬ox with trio< (& A) x   --- limit ordinal case
      ... | tri< a ¬b ¬c = {!!} where