changeset 960:b7370c39769e

IsMinSUP< is wrong
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 04 Nov 2022 17:27:12 +0900
parents 1ef03eedd148
children 811135ad1904
files src/zorn.agda
diffstat 1 files changed, 104 insertions(+), 84 deletions(-) [+]
line wrap: on
line diff
--- a/src/zorn.agda	Fri Nov 04 08:17:21 2022 +0900
+++ b/src/zorn.agda	Fri Nov 04 17:27:12 2022 +0900
@@ -244,7 +244,7 @@
 --    field
 --       x≤sup   : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x )
 
-record IsMinSup (A B : HOD) ( f : Ordinal → Ordinal ) {x : Ordinal } (xa : odef A x)     : Set n where
+record IsMinSUP (A B : HOD) ( f : Ordinal → Ordinal ) {x : Ordinal } (xa : odef A x)     : Set n where
    field
       x≤sup   : {y : Ordinal} → odef B y → (y ≡ x ) ∨ (y << x )
       minsup : { sup1 : Ordinal } → odef A sup1 
@@ -409,7 +409,7 @@
    field
       supf :  Ordinal → Ordinal 
       sup=u : {b : Ordinal} → (ab : odef A b) → b o≤ z  
-           → IsMinSup A (UnionCF A f mf ay supf b) f ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf b) f b ) → supf b ≡ b 
+           → IsMinSUP A (UnionCF A f mf ay supf b) f ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf b) f b ) → supf b ≡ b 
 
       asupf :  {x : Ordinal } → odef A (supf x)
       supf-mono : {x y : Ordinal } → x o≤  y → supf x o≤ supf y
@@ -470,15 +470,46 @@
 
    -- ordering is not proved here but in ZChain1 
 
-   -- b o< x → IsMinSup A (UnionCF A f mf ay supf x) ab → IsMinSup A (UnionCF A f mf ay supf b) ab
-   --   is not valid without ¬ HasPrev
+   IsMinSUP→NotHasPrev : {x sp : Ordinal } → odef A sp 
+       → ({y : Ordinal} → odef (UnionCF A f mf ay supf x) y → (y ≡ sp ) ∨ (y << sp ))
+       → ( {a : Ordinal } → a << f a )
+       → ¬ ( HasPrev A (UnionCF A f mf ay supf x) f sp )
+   IsMinSUP→NotHasPrev {x} {sp} asp is-sup <-mono-f hp = ⊥-elim (<-irr ( <=to≤  fsp≤sp) sp<fsp ) where
+       sp<fsp : sp << f sp
+       sp<fsp = <-mono-f 
+       pr = HasPrev.y hp 
+       im00 : f (f pr) <= sp
+       im00 = is-sup ( f-next (f-next (HasPrev.ay hp)))
+       fsp≤sp : f sp <=  sp
+       fsp≤sp = subst (λ k → f k <= sp ) (sym (HasPrev.x=fy hp)) im00
+
+   IsMinSUP< : ( {a : Ordinal } → a << f a )
+       → {b x : Ordinal } → {ab : odef A b}  → x o≤ z → b o< x 
+       → IsMinSUP A (UnionCF A f mf ay supf x) f ab → IsMinSUP A (UnionCF A f mf ay supf b) f ab
+   IsMinSUP< <-mono-f {b} {x} {ab} x≤z b<x record { x≤sup = x≤sup ; minsup = minsup ; not-hp = nhp } 
+     = record { x≤sup = m02 ; minsup = m07 ; not-hp = IsMinSUP→NotHasPrev ab m02 <-mono-f } where
+             m02 : {z : Ordinal} → odef (UnionCF A f mf ay supf b) z → (z ≡ b) ∨ (z << b)
+             m02 {z} uz = x≤sup (chain-mono f mf ay supf supf-mono (o<→≤ b<x) uz) 
+             m10 : {s : Ordinal }  →  (odef A s ) 
+                →  ( {w : Ordinal} → odef (UnionCF A f mf ay supf b) w → (w ≡ s) ∨ (w << s) ) 
+                →    {w : Ordinal} → odef (UnionCF A f mf ay supf x) w → (w ≡ s) ∨ (w << s)
+             m10 {s} as b-is-sup ⟪ aa , ch-init fc ⟫ = ?
+             m10 {s} as b-is-sup ⟪ aa , ch-is-sup u {w} u<x is-sup-z fc ⟫ = m01 where
+                m01 : w <= s
+                m01 with trio< (supf u) (supf b)
+                ... | tri< a ¬b ¬c = b-is-sup ⟪ aa , ch-is-sup u {w} a is-sup-z fc ⟫ 
+                ... | tri≈ ¬a b ¬c = ?
+                ... | tri> ¬a ¬b c = ?
+             m07 :  {s : Ordinal} → odef A s → ({z : Ordinal} →
+                odef (UnionCF A f mf ay supf b) z → (z ≡ s) ∨ (z << s)) → b o≤ s
+             m07 {s} as b-is-sup = minsup as (m10 as b-is-sup )
 
 record ZChain1 ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) 
         {y : Ordinal} (ay : odef A y)  (zc : ZChain A f mf ay (& A)) ( z : Ordinal ) : Set (Level.suc n) where
    supf = ZChain.supf zc
    field
       is-max :  {a b : Ordinal } → (ca : odef (UnionCF A f mf ay supf z) a ) → supf b o< supf z  → (ab : odef A b) 
-          → HasPrev A (UnionCF A f mf ay supf z) f b ∨  IsMinSup A (UnionCF A f mf ay supf b) f ab  
+          → HasPrev A (UnionCF A f mf ay supf z) f b ∨  IsMinSUP A (UnionCF A f mf ay supf b) f ab  
           → * a < * b  → odef ((UnionCF A f mf ay supf z)) b
       order : {b s z1 : Ordinal} → b o< & A → supf s o< supf b → FClosure A f (supf s) z1 → (z1 ≡ supf b) ∨ (z1 << supf b)
 
@@ -653,7 +684,7 @@
            zc-b<x {b} lt = subst (λ k → b o< k ) (sym (Oprev.oprev=x op)) (ZChain.supf-inject zc lt  )
            is-max :  {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a →
               ZChain.supf zc b o< ZChain.supf zc x → (ab : odef A b) →
-              HasPrev A (UnionCF A f mf ay supf x) f b  ∨ IsMinSup A (UnionCF A f mf ay supf b) f ab →
+              HasPrev A (UnionCF A f mf ay supf x) f b  ∨ IsMinSUP A (UnionCF A f mf ay supf b) f ab →
               * a < * b → odef (UnionCF A f mf ay supf x) b
            is-max {a} {b} ua b<x ab P a<b with ODC.or-exclude O P
            is-max {a} {b} ua b<x ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b 
@@ -668,11 +699,11 @@
                     chain-mono1 (o<→≤ b<x) (HasPrev.ay  nhp) ; x=fy = HasPrev.x=fy nhp } )
               m05 : ZChain.supf zc b ≡ b
               m05 =  ZChain.sup=u zc ab (o<→≤ (z09 ab) )
-                      ⟪ record { x≤sup = λ {z} uz → IsMinSup.x≤sup (proj2 is-sup) uz  
+                      ⟪ record { x≤sup = λ {z} uz → IsMinSUP.x≤sup (proj2 is-sup) uz  
                           ; minsup = m07 ; not-hp = m04 }  , m04 ⟫ where
                  m07 :  {s : Ordinal} → odef A s → ({z : Ordinal} →
                      odef (UnionCF A f mf ay (ZChain.supf zc) b) z → (z ≡ s) ∨ (z << s)) → b o≤ s
-                 m07 {s} as s-is-sup = IsMinSup.minsup (proj2 is-sup) as s-is-sup
+                 m07 {s} as s-is-sup = IsMinSUP.minsup (proj2 is-sup) as s-is-sup
               m08 : {z : Ordinal} → (fcz : FClosure A f y z ) → z <= ZChain.supf zc b
               m08 {z} fcz = ZChain.fcy<sup zc (o<→≤ b<A) fcz
               m09 : {s z1 : Ordinal} → ZChain.supf zc s o< ZChain.supf zc b 
@@ -683,11 +714,11 @@
         ... | no lim = record { is-max = is-max ; order = order }  where
            is-max :  {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a →
               ZChain.supf zc b o< ZChain.supf zc x → (ab : odef A b) →
-              HasPrev A (UnionCF A f mf ay supf x) f b  ∨ IsMinSup A (UnionCF A f mf ay supf b) f ab →
+              HasPrev A (UnionCF A f mf ay supf x) f b  ∨ IsMinSUP A (UnionCF A f mf ay supf b) f ab →
               * a < * b → odef (UnionCF A f mf ay supf x) b
            is-max {a} {b} ua sb<sx ab P a<b with ODC.or-exclude O P
            is-max {a} {b} ua sb<sx ab P a<b | case1 has-prev = is-max-hp x {a} {b} ua ab has-prev a<b 
-           is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup with IsMinSup.x≤sup (proj2 is-sup) (init-uchain A f mf ay )
+           is-max {a} {b} ua sb<sx ab P a<b | case2 is-sup with IsMinSUP.x≤sup (proj2 is-sup) (init-uchain A f mf ay )
            ... | case1 b=y = ⟪ subst (λ k → odef A k ) b=y ay , ch-init (subst (λ k → FClosure A f y k ) b=y (init ay refl ))  ⟫
            ... | case2 y<b = ⟪ ab , ch-is-sup b sb<sx m06 (subst (λ k → FClosure A f k b) (sym m05) (init ab refl))  ⟫ where
               m09 : b o< & A
@@ -705,8 +736,8 @@
                  ; x=fy = HasPrev.x=fy nhp } )
               m05 : ZChain.supf zc b ≡ b
               m05 = ZChain.sup=u zc ab (o<→≤  m09)
-                      ⟪ record { x≤sup = λ lt → IsMinSup.x≤sup (proj2 is-sup) lt 
-                         ; minsup = IsMinSup.minsup (proj2 is-sup) ; not-hp = m04 } , m04 ⟫    -- ZChain on x
+                      ⟪ record { x≤sup = λ lt → IsMinSUP.x≤sup (proj2 is-sup) lt 
+                         ; minsup = IsMinSUP.minsup (proj2 is-sup) ; not-hp = m04 } , m04 ⟫    -- ZChain on x
               m06 : ChainP A f mf ay supf b 
               m06 = record { fcy<sup = m07 ;  order = m08 ; supu=u = m05 }
 
@@ -730,7 +761,7 @@
      record xSUP (B : HOD) (f : Ordinal → Ordinal ) (x : Ordinal) : Set n where
         field
            ax : odef A x
-           is-sup : IsMinSup A B f ax
+           is-sup : IsMinSUP A B f ax
 
      --
      -- create all ZChains under o< x
@@ -1215,10 +1246,10 @@
                           zc37 : MinSUP A (UnionCF A f mf ay supf0 z)
                           zc37 = record { sup = ? ; asm = ? ; x≤sup = ? }
                  sup=u : {b : Ordinal} (ab : odef A b) →
-                    b o≤ x → IsMinSup A (UnionCF A f mf ay supf0 b) supf0 ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf0 b) f b ) → supf0 b ≡ b
+                    b o≤ x → IsMinSUP A (UnionCF A f mf ay supf0 b) supf0 ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf0 b) f b ) → supf0 b ≡ b
                  sup=u {b} ab b≤x is-sup with trio< b px
-                 ... | tri< a ¬b ¬c = ZChain.sup=u zc ab (o<→≤ a) ⟪ record { x≤sup = λ lt → IsMinSup.x≤sup (proj1 is-sup) lt ; minsup = ? } , proj2 is-sup ⟫ 
-                 ... | tri≈ ¬a b ¬c = ZChain.sup=u zc ab (o≤-refl0 b) ⟪ record { x≤sup = λ lt → IsMinSup.x≤sup (proj1 is-sup) lt ; minsup = ? } , proj2 is-sup ⟫ 
+                 ... | tri< a ¬b ¬c = ZChain.sup=u zc ab (o<→≤ a) ⟪ record { x≤sup = λ lt → IsMinSUP.x≤sup (proj1 is-sup) lt ; minsup = ? } , proj2 is-sup ⟫ 
+                 ... | tri≈ ¬a b ¬c = ZChain.sup=u zc ab (o≤-refl0 b) ⟪ record { x≤sup = λ lt → IsMinSUP.x≤sup (proj1 is-sup) lt ; minsup = ? } , proj2 is-sup ⟫ 
                  ... | tri> ¬a ¬b px<b = zc31 ? where
                      zc30 : x ≡ b
                      zc30 with osuc-≡< b≤x
@@ -1227,7 +1258,7 @@
                      zcsup : xSUP (UnionCF A f mf ay supf0 px) supf0 x 
                      zcsup with zc30
                      ... | refl = record { ax = ab ; is-sup = record { x≤sup = λ {w} lt → 
-                        IsMinSup.x≤sup (proj1 is-sup) ? ; minsup = ? } } 
+                        IsMinSUP.x≤sup (proj1 is-sup) ? ; minsup = ? } } 
                      zc31 : ( (¬ xSUP (UnionCF A f mf ay supf0 px) supf0 x ) ∨  HasPrev A (UnionCF A f mf ay supf0 px) f x ) → supf0 b ≡ b
                      zc31 (case1 ¬sp=x) with zc30
                      ... | refl = ⊥-elim (¬sp=x zcsup )
@@ -1319,7 +1350,7 @@
                      zc8 = ZChain.supf-is-minsup (pzc z a) {!!}
                  ... | tri≈ ¬a b ¬c = {!!}
                  ... | tri> ¬a ¬b x<z = ⊥-elim (o<¬≡ refl (ordtrans<-≤ x<z z≤x )) 
-                 sup=u : {b : Ordinal} (ab : odef A b) → b o≤ x → IsMinSup A (UnionCF A f mf ay supf1 b) f ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf1 b) f b ) → supf1 b ≡ b
+                 sup=u : {b : Ordinal} (ab : odef A b) → b o≤ x → IsMinSUP A (UnionCF A f mf ay supf1 b) f ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf1 b) f b ) → supf1 b ≡ b
                  sup=u {z} ab z≤x is-sup with trio< z x
                  ... | tri< a ¬b ¬c = ? -- ZChain.sup=u (pzc (osuc b)  (ob<x lim a))  ab {!!} record { x≤sup = {!!} }
                  ... | tri≈ ¬a b ¬c = {!!} -- ZChain.sup=u (pzc (osuc ?)  ?)  ab {!!} record { x≤sup = {!!} }
@@ -1331,7 +1362,7 @@
           ... | yes ax with ODC.p∨¬p O ( HasPrev A pchain f x  )   
                -- 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 (IsMinSup A pchain f ax )
+          ... | case2 ¬fy<x with ODC.p∨¬p O (IsMinSUP A pchain f ax )
           ... | 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
@@ -1346,14 +1377,10 @@
      msp0 : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {x y : Ordinal} (ay : odef A y)  
          → (zc : ZChain A f mf ay x ) 
          → MinSUP A (UnionCF A f mf ay (ZChain.supf zc) x)
-     msp0 f mf {x} ay zc = minsupP (UnionCF A f mf ay (ZChain.supf zc) x) (ZChain.chain⊆A zc) ztotal where
-        ztotal : IsTotalOrderSet (ZChain.chain zc) 
-        ztotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where 
-               uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
-               uz01 = chain-total A f mf ay (ZChain.supf zc) ( (proj2 ca)) ( (proj2 cb)) 
+     msp0 f mf {x} ay zc = minsupP (UnionCF A f mf ay (ZChain.supf zc) x) (ZChain.chain⊆A zc) (ZChain.f-total zc)
 
      fixpoint :  ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f )  (zc : ZChain A f mf as0 (& A) )
-            → (sp1 : MinSUP A (ZChain.chain zc))   -- & (SUP.sup (sp0 f mf as0 zc  ))
+            → (sp1 : MinSUP A (ZChain.chain zc)) 
             → (ssp<as :  ZChain.supf zc (MinSUP.sup sp1) o< ZChain.supf zc (& A))
             → f (MinSUP.sup sp1)  ≡ MinSUP.sup sp1
      fixpoint f mf zc sp1 ssp<as = z14 where
@@ -1364,49 +1391,41 @@
            asp : odef A sp
            asp = MinSUP.asm sp1
            z10 :  {a b : Ordinal } → (ca : odef chain a ) → supf b o< supf (& A) → (ab : odef A b ) 
-              →  HasPrev A chain f b  ∨  IsMinSup A (UnionCF A f mf ab (ZChain.supf zc) b) f ab
+              →  HasPrev A chain f b  ∨  IsMinSUP A (UnionCF A f mf as0 (ZChain.supf zc) b) f ab
               → * a < * b  → odef chain b
-           z10 = ? -- ZChain1.is-max (SZ1 f mf as0 zc (& A) )
+           z10 = ZChain1.is-max (SZ1 f mf as0 zc (& A) )
            z22 : sp o< & A
            z22 = z09 asp
-           x≤sup : {x : HOD} → chain ∋ x → (& x ≡ sp ) ∨ (x < * sp )
-           x≤sup bz with MinSUP.x≤sup sp1 bz 
-           ... | case1 eq = ?
-           ... | case2 lt = ?
            z12 : odef chain sp
            z12 with o≡? (& s) sp
            ... | yes eq = subst (λ k → odef chain k) eq ( ZChain.chain∋init zc )
            ... | no ne = ZChain1.is-max (SZ1 f mf as0 zc (& A)) {& s} {sp} ( ZChain.chain∋init zc ) ssp<as asp
                 (case2 z19 ) z13 where
                z13 :  * (& s) < * sp
-               z13 with x≤sup ( ZChain.chain∋init zc )
-               ... | case1 eq = ⊥-elim ( ne ? )
-               ... | case2 lt = ? -- subst₂ (λ j k → j < k ) (sym *iso) (sym *iso) lt
-               z19 : IsMinSup A (UnionCF A f mf as0 (ZChain.supf zc) sp) f asp
-               z19 = record {   x≤sup = z20 ; minsup = ?  ; not-hp = ? }  where
+               z13 with MinSUP.x≤sup sp1 ( ZChain.chain∋init zc )
+               ... | case1 eq = ⊥-elim ( ne eq )
+               ... | case2 lt = lt -- subst₂ (λ j k → j < k ) (sym *iso) (sym *iso) lt
+               z19 : IsMinSUP A (UnionCF A f mf as0 (ZChain.supf zc) sp) f asp
+               z19 = record {   x≤sup = z20 ; minsup = ?  ; not-hp = ZChain.IsMinSUP→NotHasPrev zc ? z20 ? }  where
                    z20 : {y : Ordinal} → odef (UnionCF A f mf as0 (ZChain.supf zc) sp) y → (y ≡ sp) ∨ (y << sp)
-                   z20 {y} zy with x≤sup (subst (λ k → odef chain k ) (sym &iso) ?)
-                   ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso ? ) -- ( cong (&) y=p ))
-                   ... | case2 y<p = case2 ? -- (subst (λ k → * y < k ) (sym *iso) y<p )
-           ztotal : IsTotalOrderSet (ZChain.chain zc)
-           ztotal {a} {b} ca cb = subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso uz01 where 
-               uz01 : Tri (* (& a) < * (& b)) (* (& a) ≡ * (& b)) (* (& b) < * (& a) )
-               uz01 = chain-total A f mf as0 supf ( (proj2 ca)) ( (proj2 cb)) 
+                   z20 {y} zy with MinSUP.x≤sup sp1 (subst (λ k → odef chain k ) (sym &iso) (chain-mono f mf as0 supf (ZChain.supf-mono zc) (o<→≤ z22)  zy ))
+                   ... | case1 y=p = case1 (subst (λ k → k ≡ _ ) &iso y=p ) 
+                   ... | case2 y<p = case2 (subst (λ k → * k < _ ) &iso y<p )
            z14 :  f sp ≡ sp
-           z14 with ztotal (subst (λ k → odef chain k) (sym &iso)  (ZChain.f-next zc z12 )) ?
+           z14 with ZChain.f-total zc (subst (λ k → odef chain k) (sym &iso)  (ZChain.f-next zc z12 )) (subst (λ k → odef chain k) (sym &iso) z12 )
            ... | tri< a ¬b ¬c = ⊥-elim z16 where
                z16 : ⊥
                z16 with proj1 (mf (( MinSUP.sup sp1)) ( MinSUP.asm sp1 ))
-               ... | case1 eq = ⊥-elim (¬b (subst₂ (λ j k → j ≡ k ) refl *iso (sym ? ) ))
-               ... | case2 lt = ⊥-elim (¬c (subst₂ (λ j k → k < j ) refl *iso ? ))
-           ... | tri≈ ¬a b ¬c = subst ( λ k → k ≡ (MinSUP.sup sp1) ) &iso ? -- ( cong (&) b )
+               ... | case1 eq = ⊥-elim (¬b (sym eq) ) 
+               ... | case2 lt = ⊥-elim (¬c lt ) 
+           ... | tri≈ ¬a b ¬c = subst₂ (λ j k → j ≡ k ) &iso &iso ( cong (&) b ) 
            ... | tri> ¬a ¬b c = ⊥-elim z17 where
                z15 : (f sp ≡ MinSUP.sup sp1) ∨ (* (f sp) < * (MinSUP.sup sp1) )
-               z15  = ? -- x≤sup (subst (λ k → odef chain k ) (sym &iso) (ZChain.f-next zc z12 ))
+               z15  = MinSUP.x≤sup sp1 (ZChain.f-next zc z12 )
                z17 : ⊥
                z17 with z15
-               ... | case1 eq = ¬b ?
-               ... | case2 lt = ¬a ?
+               ... | case1 eq = ¬b (cong (*) eq)
+               ... | case2 lt = ¬a lt
 
      tri : {n : Level} (u w : Ordinal ) { R : Set n }  → ( u o< w → R ) → ( u ≡  w → R ) → ( w o< u → R ) → R
      tri {_} u w p q r with trio< u w
@@ -1510,9 +1529,6 @@
 
           sc=c : supf mc ≡ mc
           sc=c = ZChain.sup=u zc (MinSUP.asm msp1) (o<→≤ (∈∧P→o< ⟪ MinSUP.asm msp1 , lift true ⟫ )) ⟪ is-sup , not-hasprev ⟫ where
-              is-sup :  IsMinSup A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) (cf nmx) (MinSUP.asm msp1)
-              is-sup = record { x≤sup = λ zy → MinSUP.x≤sup msp1 (chain-mono (cf nmx) (cf-is-≤-monotonic nmx) as0 supf (ZChain.supf-mono zc) (o<→≤ mc<A) zy )
-                          ; minsup = ? } 
               not-hasprev :  ¬ HasPrev A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) (cf nmx) mc
               not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-init fc ⟫ ; x=fy = x=fy } = ⊥-elim ( <-irr z31 z30 ) where 
                    z30 : * mc < * (cf nmx mc)
@@ -1529,38 +1545,10 @@
                    z32 = ftrans<=-< z31 (subst (λ k → * mc < * k ) (cong (cf nmx) x=fy) z30 )
                    z48 : ( * (cf nmx (cf nmx y)) ≡ * (supf mc)) ∨ (* (cf nmx (cf nmx y)) < * (supf mc) )
                    z48 = <=to≤ (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A u<x (fsuc _ ( fsuc  _ fc )))
+              is-sup :  IsMinSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) mc) (cf nmx) (MinSUP.asm msp1)
+              is-sup = record { x≤sup = λ zy → MinSUP.x≤sup msp1 (chain-mono (cf nmx) (cf-is-≤-monotonic nmx) as0 supf (ZChain.supf-mono zc) (o<→≤ mc<A) zy )
+                          ; minsup = ? ; not-hp = not-hasprev } 
 
-          is-sup : IsMinSup A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) (cf nmx) (MinSUP.asm spd)
-          is-sup = record { x≤sup = z22 ; minsup = ? } where
-                z23 : {z : Ordinal } → odef (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc) z → (z ≡ MinSUP.sup spd) ∨ (z << MinSUP.sup spd)
-                z23 lt = MinSUP.x≤sup spd lt
-                z22 :  {y : Ordinal} → odef (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) y →
-                   (y ≡ MinSUP.sup spd) ∨ (y << MinSUP.sup spd)
-                z22 {a} ⟪ aa , ch-init fc ⟫ = case2 ( ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) )) where
-                    z32 : ( a  ≡  supf mc ) ∨ ( * a < * (supf mc) )
-                    z32 = ZChain.fcy<sup zc (o<→≤ mc<A) fc
-                z22 {a} ⟪ aa , ch-is-sup u u<x is-sup1 fc ⟫ = tri u (supf mc)
-                       z60 z61 ( λ sc<u → ⊥-elim ( o≤> ( subst (λ k → k o≤ supf mc) (ChainP.supu=u is-sup1) z51) sc<u )) where
-                    z53 : supf u o< supf (& A)
-                    z53 = ordtrans<-≤ u<x (ZChain.supf-mono zc (o<→≤ d<A) )
-                    z52 : ( u ≡ mc ) ∨  ( u << mc )
-                    z52 = MinSUP.x≤sup msp1 ⟪ subst (λ k → odef A k ) (ChainP.supu=u is-sup1) (A∋fcs _ _ (cf-is-≤-monotonic nmx) fc) 
-                           , ch-is-sup u z53 is-sup1 (init (ZChain.asupf zc)  (ChainP.supu=u is-sup1)) ⟫
-                    z56 : u ≡ mc → supf u ≡  supf mc
-                    z56 eq = cong supf eq
-                    z57 : u << mc → supf u o≤ supf mc
-                    z57 lt = ZChain.supf-<= zc (case2 z58) where
-                        z58 : supf u << supf mc -- supf u o< supf d -- supf u << supf d
-                        z58 = subst₂ ( λ j k → j << k ) (sym (ChainP.supu=u is-sup1)) (sym sc=c)  lt 
-                    z51 : supf u o≤ supf mc
-                    z51 = or z52 (λ le → o≤-refl0 (z56 le) ) z57 
-                    z60 : u o< supf mc → (a ≡ d ) ∨ ( * a < * d )
-                    z60 u<smc = case2 ( ftrans<=-< (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A 
-                        (subst (λ k → k o< supf mc) (sym (ChainP.supu=u is-sup1))  u<smc)  fc ) smc<<d )
-                    z61 : u ≡ supf mc → (a ≡ d ) ∨ ( * a < * d )
-                    z61 u=sc = case2 (fsc<<d {mc} asc spd (subst (λ k → FClosure A (cf nmx) k a) (trans (ChainP.supu=u is-sup1) u=sc) fc ) )
-                    -- u<x    : ZChain.supf zc u o< ZChain.supf zc d
-                    --     supf u o< spuf c → order
 
           not-hasprev : ¬ HasPrev A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 supf d) (cf nmx) d
           not-hasprev record { ax = ax ; y = y ; ay = ⟪ ua1 , ch-init fc ⟫ ; x=fy = x=fy } = ⊥-elim ( <-irr z31 z30 ) where 
@@ -1609,6 +1597,38 @@
                 -- ... | case1 eq =  MinSUP.x≤sup spd ( subst₂ (λ j k → FClosure A (cf nmx) j k ) (trans (ChainP.supu=u is-sup1) eq) refl fc )
                 -- ... | case2 lt = z45 (case2 (z47 {mc} {d} {asc} spd (z49 lt) z48 ))
 
+          is-sup : IsMinSUP A (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) (cf nmx) (MinSUP.asm spd)
+          is-sup = record { x≤sup = z22 ; minsup = ? ; not-hp = not-hasprev } where
+                z23 : {z : Ordinal } → odef (uchain (cf nmx) (cf-is-≤-monotonic nmx) asc) z → (z ≡ MinSUP.sup spd) ∨ (z << MinSUP.sup spd)
+                z23 lt = MinSUP.x≤sup spd lt
+                z22 :  {y : Ordinal} → odef (UnionCF A (cf nmx) (cf-is-≤-monotonic nmx) as0 (ZChain.supf zc) d) y →
+                   (y ≡ MinSUP.sup spd) ∨ (y << MinSUP.sup spd)
+                z22 {a} ⟪ aa , ch-init fc ⟫ = case2 ( ( ftrans<=-< z32 ( sc<<d {mc} asc spd ) )) where
+                    z32 : ( a  ≡  supf mc ) ∨ ( * a < * (supf mc) )
+                    z32 = ZChain.fcy<sup zc (o<→≤ mc<A) fc
+                z22 {a} ⟪ aa , ch-is-sup u u<x is-sup1 fc ⟫ = tri u (supf mc)
+                       z60 z61 ( λ sc<u → ⊥-elim ( o≤> ( subst (λ k → k o≤ supf mc) (ChainP.supu=u is-sup1) z51) sc<u )) where
+                    z53 : supf u o< supf (& A)
+                    z53 = ordtrans<-≤ u<x (ZChain.supf-mono zc (o<→≤ d<A) )
+                    z52 : ( u ≡ mc ) ∨  ( u << mc )
+                    z52 = MinSUP.x≤sup msp1 ⟪ subst (λ k → odef A k ) (ChainP.supu=u is-sup1) (A∋fcs _ _ (cf-is-≤-monotonic nmx) fc) 
+                           , ch-is-sup u z53 is-sup1 (init (ZChain.asupf zc)  (ChainP.supu=u is-sup1)) ⟫
+                    z56 : u ≡ mc → supf u ≡  supf mc
+                    z56 eq = cong supf eq
+                    z57 : u << mc → supf u o≤ supf mc
+                    z57 lt = ZChain.supf-<= zc (case2 z58) where
+                        z58 : supf u << supf mc -- supf u o< supf d -- supf u << supf d
+                        z58 = subst₂ ( λ j k → j << k ) (sym (ChainP.supu=u is-sup1)) (sym sc=c)  lt 
+                    z51 : supf u o≤ supf mc
+                    z51 = or z52 (λ le → o≤-refl0 (z56 le) ) z57 
+                    z60 : u o< supf mc → (a ≡ d ) ∨ ( * a < * d )
+                    z60 u<smc = case2 ( ftrans<=-< (ZChain1.order (SZ1 (cf nmx) (cf-is-≤-monotonic nmx) as0 zc (& A)) mc<A 
+                        (subst (λ k → k o< supf mc) (sym (ChainP.supu=u is-sup1))  u<smc)  fc ) smc<<d )
+                    z61 : u ≡ supf mc → (a ≡ d ) ∨ ( * a < * d )
+                    z61 u=sc = case2 (fsc<<d {mc} asc spd (subst (λ k → FClosure A (cf nmx) k a) (trans (ChainP.supu=u is-sup1) u=sc) fc ) )
+                    -- u<x    : ZChain.supf zc u o< ZChain.supf zc d
+                    --     supf u o< spuf c → order
+
           sd=d : supf d ≡ d
           sd=d = ZChain.sup=u zc (MinSUP.asm spd) (o<→≤ d<A) ⟪ is-sup , not-hasprev ⟫