changeset 522:8e36b5c35777

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 17 Apr 2022 19:58:58 +0900
parents 5d3df69d3732
children f351c183e712
files src/zorn.agda
diffstat 1 files changed, 43 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/src/zorn.agda	Sun Apr 17 17:16:23 2022 +0900
+++ b/src/zorn.agda	Sun Apr 17 19:58:58 2022 +0900
@@ -173,9 +173,9 @@
 ic→A∋y : (A : HOD) {x y : Ordinal}  (ax : A ∋ * x) → odef (IChainSet {A} (me ax)) y → A ∋ * y
 ic→A∋y A {x} {y} ax ⟪ ay , _ ⟫ = subst (λ k → odef A k) (sym &iso) ay
 
-record InFiniteIChain (A : HOD) {x : Ordinal}  (ax : A ∋ * x) : Set n where
+record InFiniteIChain (A : HOD) (max : Ordinal) {x : Ordinal}  (ax : A ∋ * x) : Set n where
    field
-      chain<x : (y : Ordinal ) → odef (IChainSet {A} (me ax)) y →  y o< x
+      chain<x : (y : Ordinal ) → odef (IChainSet {A} (me ax)) y →  y o< max
       c-infinite : (y : Ordinal ) → (cy : odef (IChainSet {A} (me ax)) y  )
           → IChainSup> A (ic→A∋y A ax cy)
 
@@ -205,22 +205,22 @@
 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 : Ordinal } → (ax : A ∋ * x ) → (ifc : InFiniteIChain A ax ) → Ordinal  →  Ordinal
+cinext :  (A : HOD) {x max : Ordinal } → (ax : A ∋ * x ) → (ifc : InFiniteIChain A max ax ) → Ordinal  →  Ordinal
 cinext A ax ifc y with ODC.∋-p O (IChainSet (me ax)) (* y)
 ... | yes ics-y = IChainSup>.y ( InFiniteIChain.c-infinite ifc y (subst (λ k → odef (IChainSet (me ax)) k) &iso ics-y ))
 ... | no _ = o∅
 
-InFCSet : (A : HOD) → {x : Ordinal}  (ax : A ∋ * x)
-     → (ifc : InFiniteIChain A ax ) → HOD
+InFCSet : (A : HOD) → {x max : Ordinal}  (ax : A ∋ * x)
+     → (ifc : InFiniteIChain A max ax ) → HOD
 InFCSet A {x} ax ifc =  ChainClosure (IChainSet {A} (me ax)) x (cinext A ax ifc ) 
 
-InFCSet⊆A : (A : HOD) → {x : Ordinal}  (ax : A ∋ * x) →  (ifc : InFiniteIChain A ax ) → InFCSet A ax ifc ⊆ A
+InFCSet⊆A : (A : HOD) → {x max : Ordinal}  (ax : A ∋ * x) →  (ifc : InFiniteIChain A max ax ) → InFCSet A ax ifc ⊆ A
 InFCSet⊆A A {x} ax ifc = record { incl = λ {y} lt → incl (IChainSet⊆A (me ax)) (
      ct∈A (IChainSet {A} (me ax)) x (cinext A ax ifc) lt ) }
 
-ChainClosure-is-total : (A : HOD) → {x : Ordinal}  (ax : A ∋ * x)
+ChainClosure-is-total : (A : HOD) → {x max : Ordinal}  (ax : A ∋ * x)
      → IsPartialOrderSet A 
-     → (ifc : InFiniteIChain A ax )
+     → (ifc : InFiniteIChain 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
@@ -307,7 +307,7 @@
 Zorn-lemma-3case : { A : HOD } 
     → o∅ o< & A 
     → IsPartialOrderSet A 
-    → (x : Element A) → OSup> A (d→∋ A (is-elm x)) ∨ Maximal A ∨ InFiniteIChain A (d→∋ A (is-elm x))
+    → (x : Element A) → OSup> A (d→∋ A (is-elm x)) ∨ Maximal A ∨ InFiniteIChain A (& (elm x))  (d→∋ A (is-elm x))
 Zorn-lemma-3case {A}  0<A PO x = zc2 where
     Gtx : HOD
     Gtx = record { od = record { def = λ y → odef ( IChainSet x ) y ∧  ( & (elm x) o< y ) } ; odmax = & A
@@ -315,7 +315,7 @@
     HG : HOD
     HG = record { od = record { def = λ y → odef A y ∧ IsFC A (d→∋ A (is-elm x) ) y } ; odmax = & A
         ; <odmax = λ lt → subst (λ k → k o< & A) &iso (c<→o< (d→∋  A  (proj1 lt) ))  }
-    zc2 :  OSup> A (d→∋ A (is-elm x))  ∨ Maximal A ∨ InFiniteIChain A  (d→∋ A (is-elm x))
+    zc2 :  OSup> A (d→∋ A (is-elm x))  ∨ Maximal A ∨ InFiniteIChain A (& (elm x))  (d→∋ A (is-elm x))
     zc2 with  is-o∅ (& Gtx)
     ... | no not = case1 record { y = & y ; icy = zc4 ; y>x = proj2 zc3 } where
         y : HOD
@@ -379,8 +379,29 @@
 
 all-climb-case : { A : HOD } → (0<A : o∅ o< & A) → IsPartialOrderSet A
      → (( x : Element A) → OSup> A (d→∋ A (is-elm x) ))
-     → InFiniteIChain A (d→∋ A (ODC.x∋minimal O A (λ eq → ¬x<0 ( subst (λ k → o∅ o< k ) (=od∅→≡o∅ eq) 0<A )) ))
-all-climb-case {A} 0<A PO climb = record {    c-infinite = {!!}  ; chain<x = {!!} } 
+     → InFiniteIChain A (& A) (d→∋ A (ODC.x∋minimal O A (λ eq → ¬x<0 ( subst (λ k → o∅ o< k ) (=od∅→≡o∅ eq) 0<A )) ))
+all-climb-case {A} 0<A PO climb = record {    c-infinite = λ y cy → ac00 (& x) y (proj1 cy) (subst (λ k → IChained A k y  )
+         (cong (&) (me-elm-refl A (me ax))) (proj2 cy))
+    ; chain<x = ac01 }  where
+        x = ODC.minimal O A (λ eq → ¬x<0 (subst (_o<_ o∅) (=od∅→≡o∅ eq) 0<A))
+        ax = ODC.x∋minimal O A (λ eq → ¬x<0 (subst (_o<_ o∅) (=od∅→≡o∅ eq) 0<A))
+        B = IChainSet {A} (me (d→∋ A ax))
+        ac01 : (y : Ordinal) → odef (IChainSet {A} (me (d→∋ A ax))) y → y o< & A
+        ac01 y ⟪ ay , _ ⟫ = subst (λ k → k o< & A ) &iso (c<→o< (subst (λ k → odef A k ) (sym &iso) ay) )
+        ac00 : (x y : Ordinal) (ay : odef A y) (cy :  IChained A x y) → IChainSup> A (subst (λ k → odef A k ) (sym &iso) ay )
+        ac00 x y ay cy = record { y = z ; A∋y = az ; y>x = {!!} } where
+             z : Ordinal
+             z = OSup>.y ( climb (me (subst (λ k → odef A k ) (sym &iso) ay) ) )
+             az : odef A z
+             icy :  odef (IChainSet {A} (me (subst (λ k → odef A k ) {!!} ay))) z
+             icy  = OSup>.icy ( climb (me (subst (λ k → odef A k ) (sym &iso) ay) ) )
+             az = {!!}
+             -- incl (IChainSet⊆A {A} ? ) (subst (λ k → odef (IChainSet {A} ? ) k ) ? (OSup>.icy ( climb (me (subst (λ k → odef A k ) (sym &iso) ay) ) )))
+             - = OSup>.y ( climb (me (subst (λ k → odef A k ) (sym &iso) ay) ) )
+             -- iy0 : IChained A (& (* (& (ODC.minimal O A (λ eq → ¬x<0 (subst (_o<_ o∅) (=od∅→≡o∅ eq) 0<A)))))) ?
+             -- iy0 = iy 
+
+
 
 record SUP ( A B : HOD )  : Set (Level.suc n) where
    field
@@ -397,17 +418,17 @@
      z01 : {a b : HOD} → A ∋ a → A ∋ b  → (a ≡ b ) ∨ (a < b ) → b < a → ⊥
      z01 {a} {b} A∋a A∋b (case1 a=b) b<a = IsStrictPartialOrder.irrefl PO {me A∋b} {me A∋a} (sym a=b) b<a
      z01 {a} {b} A∋a A∋b (case2 a<b) b<a = IsStrictPartialOrder.irrefl PO {me A∋b} {me A∋b} refl (IsStrictPartialOrder.trans PO {me A∋b} {me A∋a} {me A∋b}  b<a a<b)
-     z02 : {x : Ordinal } → (ax : A ∋ * x ) → InFiniteIChain A  ax  → ⊥
+     z02 : {x : Ordinal } → (ax : A ∋ * x ) → InFiniteIChain A x ax  → ⊥
      z02 {x} ax ic = zc5 ic where
               FC : HOD
               FC = IChainSet {A} (me ax)
-              zc6 :  InFiniteIChain A ax  → ¬ SUP A FC 
+              zc6 :  InFiniteIChain A x ax  → ¬ SUP A FC 
               zc6 inf = {!!}
               FC-is-total : IsTotalOrderSet FC
               FC-is-total = {!!}
               FC⊆A :  FC ⊆ A
               FC⊆A = record { incl = λ {x} lt → proj1 lt }
-              zc5 : InFiniteIChain A ax → ⊥
+              zc5 : InFiniteIChain A x ax → ⊥
               zc5 x = zc6 x ( supP FC FC⊆A FC-is-total )
      -- ZChain is not compatible with the SUP condition
      ind : (x : Ordinal) → ((y : Ordinal) → y o< x →  ZChain A y ∨ Maximal A )
@@ -434,24 +455,24 @@
           zc4 with Zorn-lemma-3case 0<A PO (me ax)
           ... | case1 y>x = zc1 y>x
           ... | case2 (case1 x) = case2 x
-          ... | case2 (case2 x) = ⊥-elim (zc5 x) where
+          ... | case2 (case2 ex) = ⊥-elim (zc5 {!!} ) where
               FC : HOD
               FC = IChainSet {A} (me ax)
-              B : InFiniteIChain A ax  → HOD
+              B : InFiniteIChain A x ax  → HOD
               B ifc =  InFCSet A ax ifc
-              zc6 :  (ifc : InFiniteIChain A ax ) → ¬ SUP A (B ifc)
+              zc6 :  (ifc : InFiniteIChain A x ax ) → ¬ SUP A (B ifc)
               zc6 = {!!}
-              FC-is-total : (ifc : InFiniteIChain A ax)  → IsTotalOrderSet (B ifc)
+              FC-is-total : (ifc : InFiniteIChain A x ax)  → IsTotalOrderSet (B ifc)
               FC-is-total ifc = ChainClosure-is-total A ax PO ifc 
-              B⊆A : (ifc : InFiniteIChain A ax)  →   B ifc ⊆ A
+              B⊆A : (ifc : InFiniteIChain A x ax)  →   B ifc ⊆ A
               B⊆A = {!!}
-              ifc : InFiniteIChain A (subst (OD.def (od A)) (sym &iso) ax) → InFiniteIChain A ax
+              ifc : InFiniteIChain A x (subst (OD.def (od A)) (sym &iso) ax) → InFiniteIChain 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 (subst (OD.def (od A)) (sym &iso) ax) → ⊥
+              zc5 : InFiniteIChain 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