changeset 1009:7c39cae23803

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 20 Nov 2022 16:07:25 +0900
parents 47c0f8fa7b0c
children f80d525e6a6b
files src/Ordinals.agda src/ordinal.agda src/zorn.agda
diffstat 3 files changed, 85 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/src/Ordinals.agda	Sun Nov 20 09:29:56 2022 +0900
+++ b/src/Ordinals.agda	Sun Nov 20 16:07:25 2022 +0900
@@ -26,7 +26,7 @@
      <-osuc   : { x : ord  } → x o< osuc x
      osuc-≡<  : { a x : ord  } → x o< osuc a  →  (x ≡ a ) ∨ (x o< a)  
      Oprev-p  : ( x : ord  ) → Dec ( Oprev ord osuc x )
-     o<-irr   : { x y : ord } → ( lt lt1 : x o< y ) → lt ≡ lt1
+     o<-irr   : { x y : ord } → { lt lt1 : x o< y } → lt ≡ lt1
      TransFinite : { ψ : ord  → Set (suc n) }
           → ( (x : ord)  → ( (y : ord  ) → y o< x → ψ y ) → ψ x )
           →  ∀ (x : ord)  → ψ x
--- a/src/ordinal.agda	Sun Nov 20 09:29:56 2022 +0900
+++ b/src/ordinal.agda	Sun Nov 20 16:07:25 2022 +0900
@@ -200,12 +200,12 @@
       lemma y lt | case1 refl = proj1 ( TransFinite1 lx ox ) 
       lemma y lt | case2 lt1 = proj2 ( TransFinite1 lx ox ) y lt1
 
-OrdIrr : {n : Level } {x y : Ordinal {suc n} } (lt lt1 : x o< y) → lt ≡ lt1
-OrdIrr {n} {ordinal lv₁ ord₁} {ordinal lv₂ ord₂} (case1 x) (case1 x₁) = cong case1 (NP.<-irrelevant _ _ )
-OrdIrr {n} {ordinal lv₁ ord₁} {ordinal lv₂ ord₂} (case1 x) (case2 x₁) = ⊥-elim ( nat-≡< ( d<→lv x₁ ) x )
-OrdIrr {n} {ordinal lv₁ ord₁} {ordinal lv₂ ord₂} (case2 x) (case1 x₁) = ⊥-elim ( nat-≡< ( d<→lv x ) x₁ )
-OrdIrr {n} {ordinal lv₁ .(Φ lv₁)} {ordinal .lv₁ .(OSuc lv₁ _)} (case2 Φ<) (case2 Φ<) = refl
-OrdIrr {n} {ordinal lv₁ (OSuc lv₁ a)} {ordinal .lv₁ (OSuc lv₁ b)} (case2 (s< x)) (case2 (s< x₁)) = cong (λ k → case2 (s< k)) (lemma1 _ _ x x₁) where
+OrdIrr : {n : Level } {x y : Ordinal {suc n} } {lt lt1 : x o< y} → lt ≡ lt1
+OrdIrr {n} {ordinal lv₁ ord₁} {ordinal lv₂ ord₂} {case1 x} {case1 x₁} = cong case1 (NP.<-irrelevant _ _ )
+OrdIrr {n} {ordinal lv₁ ord₁} {ordinal lv₂ ord₂} {case1 x} {case2 x₁} = ⊥-elim ( nat-≡< ( d<→lv x₁ ) x )
+OrdIrr {n} {ordinal lv₁ ord₁} {ordinal lv₂ ord₂} {case2 x} {case1 x₁} = ⊥-elim ( nat-≡< ( d<→lv x ) x₁ )
+OrdIrr {n} {ordinal lv₁ .(Φ lv₁)} {ordinal .lv₁ .(OSuc lv₁ _)} {case2 Φ<} {case2 Φ<} = refl
+OrdIrr {n} {ordinal lv₁ (OSuc lv₁ a)} {ordinal .lv₁ (OSuc lv₁ b)} {case2 (s< x)} {case2 (s< x₁)} = cong (λ k → case2 (s< k)) (lemma1 _ _ x x₁) where
       lemma1 : {lx : ℕ} (a b : OrdinalD {suc n} lx) → (x y : a d< b ) → x ≡ y
       lemma1 {lx} .(Φ lx) .(OSuc lx _) Φ< Φ< = refl
       lemma1 {lx} (OSuc lx a) (OSuc lx b) (s< x) (s< y) = cong s< (lemma1 {lx} a b x y )
--- a/src/zorn.agda	Sun Nov 20 09:29:56 2022 +0900
+++ b/src/zorn.agda	Sun Nov 20 16:07:25 2022 +0900
@@ -553,13 +553,49 @@
                     open o≤-Reasoning O
                     z53 : {z : Ordinal } →  odef (UnionCF A f mf ay (ZChain.supf zb) x) z →  odef (UnionCF A f mf ay (ZChain.supf za) x) z
                     z53 ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫ 
-                    z53 ⟪ as , ch-is-sup u u<x is-sup fc ⟫ =  ⟪ as , ch-is-sup u u<x ? ?  ⟫ 
+                    z53 {z} ⟪ as , ch-is-sup u u<x is-sup fc ⟫ =  ⟪ as , ch-is-sup u u<x z54 z55  ⟫ where
+                        ua=ub : supfa u ≡ supfb u
+                        ua=ub = prev u u<x (ordtrans u<x x≤xa )
+                        order :  {s z1 : Ordinal} → ZChain.supf za s o< ZChain.supf za u → FClosure A f (ZChain.supf za s) z1 →
+                            (z1 ≡ ZChain.supf za u) ∨ (z1 << ZChain.supf za u)
+                        order {s} {z1} lt fc = subst (λ k → z1 <= k) (sym ua=ub) 
+                             (ChainP.order is-sup (subst₂ ( λ j k → j o< k ) z56 ua=ub lt ) (subst (λ k → FClosure A f k z1 ) z56 fc )) where
+                             s<x : s o< x
+                             s<x = ordtrans (ZChain.supf-inject za lt) u<x
+                             z56 : supfa s ≡ supfb s
+                             z56 = prev s s<x (ordtrans s<x x≤xa)
+                        z54 : ChainP A f mf ay (ZChain.supf za) u  
+                        z54 = record { fcy<sup = λ {w} fc → subst (λ k → w <= k ) (sym ua=ub) (ChainP.fcy<sup is-sup fc )
+                          ; order = order
+                          ; supu=u = trans ua=ub (ChainP.supu=u is-sup) } 
+                        z55 : FClosure A f (ZChain.supf za u) z
+                        z55 = subst (λ k → FClosure A f k z ) (sym ua=ub) fc
            ... | tri> ¬a ¬b c = ⊥-elim ( o≤> (
                begin
                  supfa x  ≡⟨ sax=spa ⟩
-                 spa  ≤⟨ MinSUP.minsup ma (MinSUP.asm mb) (λ uza → MinSUP.x≤sup mb ?) ⟩
+                 spa  ≤⟨ MinSUP.minsup ma (MinSUP.asm mb) (λ uza → MinSUP.x≤sup mb (z53 uza)) ⟩
                  spb  ≡⟨ sym sbx=spb ⟩
-                 supfb x ∎ ) c ) where open o≤-Reasoning O
+                 supfb x ∎ ) c ) where 
+                    open o≤-Reasoning O
+                    z53 : {z : Ordinal } →  odef (UnionCF A f mf ay (ZChain.supf za) x) z →  odef (UnionCF A f mf ay (ZChain.supf zb) x) z
+                    z53 ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫ 
+                    z53 {z} ⟪ as , ch-is-sup u u<x is-sup fc ⟫ =  ⟪ as , ch-is-sup u u<x z54 z55  ⟫ where
+                        ub=ua : supfb u ≡ supfa u
+                        ub=ua = sym ( prev u u<x (ordtrans u<x x≤xa ))
+                        order :  {s z1 : Ordinal} → ZChain.supf zb s o< ZChain.supf zb u → FClosure A f (ZChain.supf zb s) z1 →
+                            (z1 ≡ ZChain.supf zb u) ∨ (z1 << ZChain.supf zb u)
+                        order {s} {z1} lt fc = subst (λ k → z1 <= k) (sym ub=ua) 
+                             (ChainP.order is-sup (subst₂ ( λ j k → j o< k ) z56 ub=ua lt ) (subst (λ k → FClosure A f k z1 ) z56 fc )) where
+                             s<x : s o< x
+                             s<x = ordtrans (ZChain.supf-inject zb lt) u<x
+                             z56 : supfb s ≡ supfa s
+                             z56 = sym (prev s s<x (ordtrans s<x x≤xa))
+                        z54 : ChainP A f mf ay (ZChain.supf zb) u  
+                        z54 = record { fcy<sup = λ {w} fc → subst (λ k → w <= k ) (sym ub=ua) (ChainP.fcy<sup is-sup fc )
+                          ; order = order
+                          ; supu=u = trans ub=ua (ChainP.supu=u is-sup) } 
+                        z55 : FClosure A f (ZChain.supf zb u) z
+                        z55 = subst (λ k → FClosure A f k z ) (sym ub=ua) fc
 
 UChain⊆ : ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f)
         {z y : Ordinal} (ay : odef A y)  { supf supf1 : Ordinal → Ordinal }
@@ -1263,14 +1299,14 @@
 
      ... | no lim = zc5 where
 
-          pzc : (z : Ordinal) → z o< x → ZChain A f mf ay z
-          pzc z z<x = prev z z<x
+          pzc : {z : Ordinal} → z o< x → ZChain A f mf ay z
+          pzc {z} z<x = prev z z<x
 
           ysp =  MinSUP.sup (ysup f mf ay)
 
           supf0 : Ordinal → Ordinal
           supf0 z with trio< z x
-          ... | tri< a ¬b ¬c = ZChain.supf (pzc (osuc z) (ob<x lim a)) z
+          ... | tri< a ¬b ¬c = ZChain.supf (pzc  (ob<x lim a)) z
           ... | tri≈ ¬a b ¬c = ysp
           ... | tri> ¬a ¬b c = ysp
 
@@ -1288,23 +1324,53 @@
 
           supf1 : Ordinal → Ordinal
           supf1 z with trio< z x
-          ... | tri< a ¬b ¬c = ZChain.supf (pzc (osuc z) (ob<x lim a)) z  
+          ... | tri< a ¬b ¬c = ZChain.supf (pzc  (ob<x lim a)) z  
           ... | tri≈ ¬a b ¬c = spu
           ... | tri> ¬a ¬b c = spu
 
           pchain1 : HOD
           pchain1 = UnionCF A f mf ay supf1 x
 
+          zeq : {xa xb z : Ordinal } 
+             → (xa<x : xa o< x) → (xb<x : xb o< x) → xa o≤ xb → z o≤ xa 
+             → ZChain.supf (pzc  xa<x) z ≡  ZChain.supf (pzc  xb<x) z  
+          zeq {xa} {xb} {z} xa<x xb<x xa≤xb z≤xa =  spuf-unique A f mf ay xa≤xb  
+              (pzc xa<x)  (pzc xb<x)  z≤xa
+
+          sf1=sf : {z : Ordinal } → (a : z o< x ) → supf1 z ≡ ZChain.supf (pzc  (ob<x lim a)) z  
+          sf1=sf {z} z<x with trio< z x
+          ... | tri< a ¬b ¬c = cong ( λ k → ZChain.supf (pzc (ob<x lim k)) z) o<-irr
+          ... | tri≈ ¬a b ¬c = ⊥-elim (¬a z<x)
+          ... | tri> ¬a ¬b c = ⊥-elim (¬a z<x)
+
+          sf1=spu : {z : Ordinal } → (a : x o≤ z ) → supf1 z ≡ spu
+          sf1=spu {z} x≤z with trio< z x
+          ... | tri< a ¬b ¬c = ⊥-elim (o≤> x≤z a)
+          ... | tri≈ ¬a b ¬c = refl
+          ... | tri> ¬a ¬b c = refl
+
+          zc11 : {z : Ordinal } → (a : z o< x ) → odef pchain (ZChain.supf (pzc (ob<x lim a)) z)
+          zc11 {z} z<x = ⟪ ZChain.asupf (pzc (ob<x lim z<x)) , ch-is-sup (ZChain.supf (pzc (ob<x lim z<x)) z) 
+                  ? ? (init ? ?) ⟫           
+
           sfpx<=spu : {z : Ordinal } → supf1 z <= spu
-          sfpx<=spu {z} = ? -- MinSUP.x≤sup usup (case2 (init (ZChain.asupf zc {px}) refl ))
+          sfpx<=spu {z} with trio< z x
+          ... | tri< a ¬b ¬c = MinSUP.x≤sup usup ? -- (init (ZChain.asupf (pzc  (ob<x lim a)) ) refl )
+          ... | tri≈ ¬a b ¬c = case1 refl
+          ... | tri> ¬a ¬b c = case1 refl
 
           sfpx≤spu : {z : Ordinal } → supf1 z o≤ spu
-          sfpx≤spu {z} = ? -- subst ( λ k → k o≤ spu) (sym (ZChain.supf-is-minsup zc o≤-refl ))  
-            -- ( MinSUP.minsup (ZChain.minsup zc o≤-refl) (MinSUP.asm supu)  
-            --  (λ {x} ux → MinSUP.x≤sup supu (case1 ux)) )
+          sfpx≤spu {z} with trio< z x
+          ... | tri< a ¬b ¬c = subst ( λ k → k o≤ spu) ?
+                    ( MinSUP.minsup (ZChain.minsup ? o≤-refl) ? (λ {x} ux → MinSUP.x≤sup ? ?) )
+          ... | tri≈ ¬a b ¬c = ?
+          ... | tri> ¬a ¬b c = ?
 
           supf-mono : {x y : Ordinal } → x o≤  y → supf1 x o≤ supf1 y
-          supf-mono {x} {y} x≤y = ?
+          supf-mono {x} {y} x≤y with trio< y x
+          ... | tri< a ¬b ¬c = ?
+          ... | tri≈ ¬a b ¬c = ?
+          ... | tri> ¬a ¬b c = ?
 
           zc5 : ZChain A f mf ay x
           zc5 with zc43 x spu