changeset 1029:07ffcf16a3d4

ChainP removal
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 28 Nov 2022 07:13:19 +0900
parents d1eecfc6cdfa
children 40532b0ed230
files src/zorn.agda
diffstat 1 files changed, 144 insertions(+), 400 deletions(-) [+]
line wrap: on
line diff
--- a/src/zorn.agda	Sun Nov 27 20:19:18 2022 +0900
+++ b/src/zorn.agda	Mon Nov 28 07:13:19 2022 +0900
@@ -265,23 +265,6 @@
       x≤sup : {x : HOD} → B ∋ x → (x ≡ sup ) ∨ (x < sup )   -- B is Total, use positive
 
 --
---  sup and its fclosure is in a chain HOD
---    chain HOD is sorted by sup as Ordinal and <-ordered
---    whole chain is a union of separated Chain
---    minimum index is sup of y not ϕ
---
-
-record ChainP (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)  {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal) (u : Ordinal) : Set n where
-   field
-      fcy<sup  : {z : Ordinal } → FClosure A f y z → (z ≡ supf u) ∨ ( z << supf u )
-      order    : {s z1 : Ordinal} → (lt : supf s o< supf u ) → FClosure A f (supf s ) z1 → (z1 ≡ supf u ) ∨ ( z1 << supf u )
-      supu=u   : supf u ≡ u
-
-data UChain  ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y )
-       (supf : Ordinal → Ordinal) (x : Ordinal) : (z : Ordinal) → Set n where
-    ch-init : {z : Ordinal } (fc : FClosure A f y z) → UChain A f mf ay supf x z
-    ch-is-sup  : (u : Ordinal) {z : Ordinal }  (u<x : u o< x) ( is-sup : ChainP A f mf ay supf u )
-        ( fc : FClosure A f (supf u) z ) → UChain A f mf ay supf x z
 
 --
 --         f (f ( ... (supf y))) f (f ( ... (supf z1)))
@@ -301,91 +284,34 @@
      fc00 :  * b ≤ * (f b)
      fc00 = proj1 (mf _ (subst (λ k → odef A k) a=b aa ))
 
---
--- data UChain is total
-
-chain-total : (A : HOD ) ( f : Ordinal → Ordinal ) (mf : ≤-monotonic-f A f)  {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal )
-   {s s1 a b : Ordinal } ( ca : UChain A f mf ay supf s a ) ( cb : UChain A f mf ay supf s1 b ) → Tri (* a < * b) (* a ≡ * b) (* b < * a )
-chain-total A f mf {y} ay supf {xa} {xb} {a} {b} ca cb = ct-ind xa xb ca cb where
-     ct-ind : (xa xb : Ordinal) → {a b : Ordinal} → UChain A f mf ay supf xa a → UChain A f mf ay supf xb b → Tri (* a < * b) (* a ≡ * b) (* b < * a)
-     ct-ind xa xb {a} {b} (ch-init fca) (ch-init fcb) = fcn-cmp y f mf fca fcb
-     ct-ind xa xb {a} {b} (ch-init fca) (ch-is-sup ub u<x supb fcb) with ChainP.fcy<sup supb fca
-     ... | case1 eq with s≤fc (supf ub) f mf fcb
-     ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00  (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
-          ct00 : * a ≡ * b
-          ct00 = trans (cong (*) eq) eq1
-     ... | case2 lt = tri< ct01  (λ eq → <-irr (case1 (sym eq)) ct01) (λ lt → <-irr (case2 ct01) lt)  where
-          ct01 : * a < * b
-          ct01 = subst (λ k → * k < * b ) (sym eq) lt
-     ct-ind xa xb {a} {b} (ch-init fca) (ch-is-sup ub u<x supb fcb) | case2 lt = tri< ct01  (λ eq → <-irr (case1 (sym eq)) ct01) (λ lt → <-irr (case2 ct01) lt)  where
-          ct00 : * a < * (supf ub)
-          ct00 = lt
-          ct01 : * a < * b
-          ct01 with s≤fc (supf ub) f mf fcb
-          ... | case1 eq =  subst (λ k → * a < k ) eq ct00
-          ... | case2 lt =  IsStrictPartialOrder.trans POO ct00 lt
-     ct-ind xa xb {a} {b} (ch-is-sup ua u<x supa fca) (ch-init fcb) with ChainP.fcy<sup supa fcb
-     ... | case1 eq with s≤fc (supf ua) f mf fca
-     ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00  (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
+fc-total : (A : HOD ) ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) (supf : Ordinal → Ordinal )
+    (order : {x y w : Ordinal } → x o< y → FClosure A f (supf x) w → w <= supf y)
+   {s s1 a b : Ordinal } ( fa : FClosure A f (supf s) a )( fb : FClosure A f (supf s1) b )  → Tri (* a < * b) (* a ≡ * b) (* b < * a )
+fc-total A f mf supf order {xa} {xb} {a} {b} ca cb with trio< xa xb
+... | tri< a₁ ¬b ¬c with order a₁ ? 
+... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00  (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
           ct00 : * a ≡ * b
-          ct00 = sym (trans (cong (*) eq) eq1 )
-     ... | case2 lt = tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01    where
-          ct01 : * b < * a
-          ct01 = subst (λ k → * k < * a ) (sym eq) lt
-     ct-ind xa xb {a} {b} (ch-is-sup ua u<x supa fca) (ch-init fcb) | case2 lt = tri> (λ lt → <-irr (case2 ct01) lt) (λ eq → <-irr (case1 eq) ct01) ct01    where
-          ct00 : * b < * (supf ua)
-          ct00 = lt
-          ct01 : * b < * a
-          ct01 with s≤fc (supf ua) f mf fca
-          ... | case1 eq =  subst (λ k → * b < k ) eq ct00
-          ... | case2 lt =  IsStrictPartialOrder.trans POO ct00 lt
-     ct-ind xa xb {a} {b} (ch-is-sup ua ua<x supa fca) (ch-is-sup ub ub<x supb fcb) with trio< ua ub
-     ... | tri< a₁ ¬b ¬c with ChainP.order supb  (subst₂ (λ j k → j o< k ) (sym (ChainP.supu=u supa )) (sym (ChainP.supu=u supb )) a₁)  fca
-     ... | case1 eq with s≤fc (supf ub) f mf fcb
-     ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00  (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
-          ct00 : * a ≡ * b
-          ct00 = trans (cong (*) eq) eq1
-     ... | case2 lt =  tri< ct02  (λ eq → <-irr (case1 (sym eq)) ct02) (λ lt → <-irr (case2 ct02) lt)  where
+          ct00 = ? -- trans (cong (*) eq) eq1
+... | case2 lt =  tri< ct02  (λ eq → <-irr (case1 (sym eq)) ct02) (λ lt → <-irr (case2 ct02) lt)  where
           ct02 : * a < * b
-          ct02 = subst (λ k → * k < * b ) (sym eq) lt
-     ct-ind xa xb {a} {b} (ch-is-sup ua ua<x supa fca) (ch-is-sup ub ub<x supb fcb) | tri< a₁ ¬b ¬c | case2 lt = tri< ct02  (λ eq → <-irr (case1 (sym eq)) ct02) (λ lt → <-irr (case2 ct02) lt)  where
-          ct03 : * a < * (supf ub)
-          ct03 = lt
-          ct02 : * a < * b
-          ct02 with s≤fc (supf ub) f mf fcb
-          ... | case1 eq =  subst (λ k → * a < k ) eq ct03
-          ... | case2 lt =  IsStrictPartialOrder.trans POO ct03 lt
-     ct-ind xa xb {a} {b} (ch-is-sup ua ua<x supa fca) (ch-is-sup ub ub<x  supb fcb) | tri≈ ¬a  eq ¬c
-         = fcn-cmp (supf ua) f mf fca (subst (λ k → FClosure A f k b ) (cong supf (sym eq)) fcb )
-     ct-ind xa xb {a} {b} (ch-is-sup ua ua<x supa fca) (ch-is-sup ub ub<x supb fcb) | tri> ¬a ¬b c with ChainP.order supa (subst₂ (λ j k → j o< k ) (sym (ChainP.supu=u supb )) (sym (ChainP.supu=u supa )) c) fcb
-     ... | case1 eq with s≤fc (supf ua) f mf fca
-     ... | case1 eq1 = tri≈ (λ lt → ⊥-elim (<-irr (case1 (sym ct00)) lt)) ct00  (λ lt → ⊥-elim (<-irr (case1 ct00) lt)) where
-          ct00 : * a ≡ * b
-          ct00 = sym (trans (cong (*) eq) eq1)
-     ... | case2 lt =  tri> (λ lt → <-irr (case2 ct02) lt) (λ eq → <-irr (case1 eq) ct02) ct02    where
-          ct02 : * b < * a
-          ct02 = subst (λ k → * k < * a ) (sym eq) lt
-     ct-ind xa xb {a} {b} (ch-is-sup ua ua<x supa fca) (ch-is-sup ub ub<x supb fcb) | tri> ¬a ¬b c | case2 lt = tri> (λ lt → <-irr (case2 ct04) lt) (λ eq → <-irr (case1 (eq)) ct04) ct04    where
-          ct05 : * b < * (supf ua)
-          ct05 = lt
-          ct04 : * b < * a
-          ct04 with s≤fc (supf ua) f mf fca
-          ... | case1 eq =  subst (λ k → * b < k ) eq ct05
-          ... | case2 lt =  IsStrictPartialOrder.trans POO ct05 lt
+          ct02 = ? -- subst (λ k → * k < * b ) (sym eq) lt
+fc-total f mf supf {xa} {xb} {a} {b} ca cb | tri< a₁ ¬b ¬c = ?
+
 
 ∈∧P→o< :  {A : HOD } {y : Ordinal} → {P : Set n} → odef A y ∧ P → y o< & A
 ∈∧P→o< {A } {y} p = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) (proj1 p )))
 
 -- Union of supf z which o< x
 --
-UnionCF : ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y )
-    ( supf : Ordinal → Ordinal ) ( x : Ordinal ) → HOD
-UnionCF A f mf ay supf x
-   = record { od = record { def = λ z → odef A z ∧ UChain A f mf ay supf x z } ; odmax = & A ; <odmax = λ {y} sy → ∈∧P→o< sy }
+-- UnionCF : ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y )
+--     ( supf : Ordinal → Ordinal ) ( x : Ordinal ) → HOD
+-- UnionCF A f supf x
+--    = record { od = record { def = λ z → odef A z ∧ UChain A f supf x z } ; odmax = & A ; <odmax = λ {y} sy → ∈∧P→o< sy }
 
-UnionCF' : ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) {y : Ordinal } (ay : odef A y )
-    ( supf : Ordinal → Ordinal ) ( x : Ordinal ) → HOD
-UnionCF' A f mf ay supf x
+--      order : {x y w : Ordinal } → x o< y → FClosure A f (supf x) w → w <= supf y
+--
+UnionCF : ( A : HOD )    ( f : Ordinal → Ordinal )  ( supf : Ordinal → Ordinal ) ( x : Ordinal ) → HOD
+UnionCF A f supf x
    = record { od = record { def = λ z → odef A z ∧ ( { s : Ordinal} → s o< x → FClosure A f (supf s) z ) } ;   
        odmax = & A ; <odmax = λ {y} sy → ∈∧P→o< sy }
 
@@ -412,12 +338,12 @@
 
 M→S  : { A : HOD } { f : Ordinal → Ordinal } {mf : ≤-monotonic-f A f} {y : Ordinal} {ay : odef A y}  { x : Ordinal }
       →  (supf : Ordinal → Ordinal )
-      →  MinSUP A (UnionCF A f mf ay supf x)
-      → SUP A (UnionCF A f mf ay supf x)
+      →  MinSUP A (UnionCF A f supf x)
+      → SUP A (UnionCF A f supf x)
 M→S {A} {f} {mf} {y} {ay} {x} supf ms = record { sup = * (MinSUP.sup ms)
         ; as = subst (λ k → odef A k) (sym &iso) (MinSUP.asm ms) ; x≤sup = ms00 } where
    msup = MinSUP.sup ms
-   ms00 : {z : HOD} → UnionCF A f mf ay supf x ∋ z → (z ≡ * msup) ∨ (z < * msup)
+   ms00 : {z : HOD} → UnionCF A f supf x ∋ z → (z ≡ * msup) ∨ (z < * msup)
    ms00 {z} uz with MinSUP.x≤sup ms uz
    ... | case1 eq = case1 (subst (λ k → k ≡ _) *iso ( cong (*) eq))
    ... | case2 lt = case2 (subst₂ (λ j k →  j < k ) *iso refl lt )
@@ -425,11 +351,8 @@
 
 chain-mono : {A : HOD}  ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f )  {y : Ordinal} (ay : odef A y) (supf : Ordinal → Ordinal )
    (supf-mono : {x y : Ordinal } →  x o≤  y  → supf x o≤ supf y ) {a b c : Ordinal} → a o≤ b
-        → odef (UnionCF A f mf ay supf a) c → odef (UnionCF A f mf ay supf b) c
-chain-mono f mf ay supf supf-mono {a} {b} {c} a≤b ⟪ ua , ch-init fc  ⟫ =
-        ⟪ ua , ch-init fc  ⟫
-chain-mono f mf ay supf supf-mono {a} {b} {c} a≤b ⟪ uaa ,  ch-is-sup ua ua<x is-sup fc  ⟫ =
-        ⟪ uaa , ch-is-sup ua (ordtrans<-≤ ua<x a≤b) is-sup fc  ⟫
+        → odef (UnionCF A f supf a) c → odef (UnionCF A f supf b) c
+chain-mono f mf ay supf supf-mono {a} {b} {c} a≤b ⟪ uaa , ch-is-sup  ⟫ = ?
 
 record ZChain ( A : HOD )    ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f)
         {y : Ordinal} (ay : odef A y)  ( z : Ordinal ) : Set (Level.suc n) where
@@ -437,44 +360,39 @@
       supf :  Ordinal → Ordinal
 
       sup=u : {b : Ordinal} → (ab : odef A b) → b o≤ z
-           → IsSUP A (UnionCF A f mf ay supf b) ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf b) f b ) → supf b ≡ b
+           → IsSUP A (UnionCF A f supf b) ab ∧ (¬ HasPrev A (UnionCF A f supf b) f b ) → supf b ≡ b
       cfcs : (mf< : <-monotonic-f A f)
-         {a b w : Ordinal } → a o< b → b o≤ z → supf a o< b  → FClosure A f (supf a) w → odef (UnionCF A f mf ay supf b) w
+         {a b w : Ordinal } → a o< b → b o≤ z → supf a o< b  → FClosure A f (supf a) w → odef (UnionCF A f supf b) w
       order : {x y w : Ordinal } → x o< y → FClosure A f (supf x) w → w <= supf y
 
       asupf :  {x : Ordinal } → odef A (supf x)
       supf-mono : {x y : Ordinal } → x o≤  y → supf x o≤ supf y
       supfmax : {x : Ordinal } → z o< x → supf x ≡ supf z
 
-      minsup : {x : Ordinal } → x o≤ z  → MinSUP A (UnionCF A f mf ay supf x)
+      minsup : {x : Ordinal } → x o≤ z  → MinSUP A (UnionCF A f supf x)
       supf-is-minsup : {x : Ordinal } → (x≤z : x o≤ z) → supf x ≡ MinSUP.sup ( minsup x≤z )
 
    chain : HOD
-   chain = UnionCF A f mf ay supf z
+   chain = UnionCF A f supf z
    chain⊆A : chain ⊆' A
    chain⊆A = λ lt → proj1 lt
 
-   sup : {x : Ordinal } → x o≤ z  → SUP A (UnionCF A f mf ay supf x)
+   sup : {x : Ordinal } → x o≤ z  → SUP A (UnionCF A f supf x)
    sup {x} x≤z = M→S supf (minsup x≤z)
 
    s=ms : {x : Ordinal } → (x≤z : x o≤ z ) → & (SUP.sup (sup x≤z)) ≡ MinSUP.sup (minsup x≤z)
    s=ms {x} x≤z = &iso
 
    chain∋init : odef chain y
-   chain∋init = ⟪ ay , ch-init (init ay refl)    ⟫
-   f-next : {a z : Ordinal} → odef (UnionCF A f mf ay supf z) a → odef (UnionCF A f mf ay supf z) (f a)
-   f-next {a} ⟪ aa , ch-init fc ⟫ = ⟪ proj2 (mf a aa) , ch-init (fsuc _ fc)  ⟫
-   f-next {a} ⟪ aa , ch-is-sup u u<x is-sup fc ⟫ = ⟪ proj2 (mf a aa) , ch-is-sup u u<x is-sup (fsuc _ fc ) ⟫
+   chain∋init = ⟪ ay , ?   ⟫
+   f-next : {a z : Ordinal} → odef (UnionCF A f supf z) a → odef (UnionCF A f supf z) (f a)
+   f-next {a} ⟪ aa , ch-is-sup  ⟫ = ?
    initial : {z : Ordinal } → odef chain z → * y ≤ * z
-   initial {a} ⟪ aa , ua ⟫  with  ua
-   ... | ch-init fc = s≤fc y f mf fc
-   ... | ch-is-sup u u<x is-sup fc = ≤-ftrans (<=to≤ zc7) (s≤fc _ f mf fc)  where
-        zc7 : y <= supf u
-        zc7 = ChainP.fcy<sup is-sup (init ay refl)
+   initial {a} ⟪ aa , ua ⟫  = ?
    f-total : IsTotalOrderSet chain
    f-total {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 supf ( (proj2 ca)) ( (proj2 cb))
+               uz01 = ? -- chain-total A f supf ( (proj2 ca)) ( (proj2 cb))
 
    supf-inject : {x y : Ordinal } → supf x o< supf y → x o<  y
    supf-inject {x} {y} sx<sy with trio< x y
@@ -488,21 +406,20 @@
    supf<A = z09 asupf
 
    csupf : (mf< : <-monotonic-f A f) {b : Ordinal } 
-      → supf b o< supf z → supf b o< z → odef (UnionCF A f mf ay supf z) (supf b) -- supf z is not an element of this chain
+      → supf b o< supf z → supf b o< z → odef (UnionCF A f supf z) (supf b) -- supf z is not an element of this chain
    csupf mf< {b} sb<sz sb<z = cfcs mf< (supf-inject sb<sz) o≤-refl sb<z (init asupf refl)
 
    fcy<sup  : {u w : Ordinal } → u o≤ z  → FClosure A f y w → (w ≡ supf u ) ∨ ( w << supf u ) -- different from order because y o< supf
-   fcy<sup  {u} {w} u≤z fc with MinSUP.x≤sup (minsup u≤z) ⟪ subst (λ k → odef A k ) (sym &iso) (A∋fc {A} y f mf fc)
-       , ch-init (subst (λ k → FClosure A f y k) (sym &iso) fc ) ⟫
+   fcy<sup  {u} {w} u≤z fc with MinSUP.x≤sup (minsup u≤z) ⟪ subst (λ k → odef A k ) (sym &iso) (A∋fc {A} y f mf fc) , ? ⟫ 
    ... | case1 eq = case1 (subst (λ k → k ≡ supf u ) &iso  (trans eq (sym (supf-is-minsup u≤z ) ) ))
    ... | case2 lt = case2 (subst₂ (λ j k → j << k ) &iso (sym (supf-is-minsup u≤z )) lt )
 
    -- ordering is not proved here but in ZChain1
 
    IsMinSUP→NotHasPrev : {x sp : Ordinal } → odef A sp
-       → ({y : Ordinal} → odef (UnionCF A f mf ay supf x) y → (y ≡ sp ) ∨ (y << sp ))
+       → ({y : Ordinal} → odef (UnionCF A f supf x) y → (y ≡ sp ) ∨ (y << sp ))
        → ( {a : Ordinal } → odef A a → a << f a )
-       → ¬ ( HasPrev A (UnionCF A f mf ay supf x) f sp )
+       → ¬ ( HasPrev A (UnionCF A f 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 asp
@@ -514,32 +431,29 @@
 
    supf-¬hp : {x  : Ordinal } → x o≤ z 
        → ( {a : Ordinal } → odef A a → a << f a )
-       → ¬ ( HasPrev A (UnionCF A f mf ay supf x) f (supf x) )
+       → ¬ ( HasPrev A (UnionCF A f supf x) f (supf x) )
    supf-¬hp {x} x≤z <-mono hp = IsMinSUP→NotHasPrev asupf (λ {w} uw → 
        (subst (λ k → w <= k) (sym (supf-is-minsup x≤z)) ( MinSUP.x≤sup (minsup x≤z) uw) )) <-mono hp
 
    supf-idem : (mf< : <-monotonic-f A f) {b : Ordinal } → b o≤ z → supf b o≤ z  → supf (supf b) ≡ supf b
    supf-idem  mf< {b} b≤z sfb≤x = z52 where
-       z54 :  {w : Ordinal} → odef (UnionCF A f mf ay supf (supf b)) w → (w ≡ supf b) ∨ (w << supf b)
-       z54 {w} ⟪ aw , ch-init fc ⟫ = fcy<sup b≤z fc
-       z54 {w} ⟪ aw , ch-is-sup u u<x is-sup fc ⟫ = subst (λ k → (w ≡ k) ∨ (w << k )) 
-                   (sym (supf-is-minsup b≤z)) 
-                   (MinSUP.x≤sup (minsup b≤z) (cfcs mf< u<b b≤z (subst (λ k → k o< b) (sym (ChainP.supu=u is-sup)) u<b) fc )) where
-               u<b : u o< b
-               u<b = supf-inject ( subst (λ k → k o< supf b) (sym (ChainP.supu=u is-sup)) u<x )
+       z54 :  {w : Ordinal} → odef (UnionCF A f supf (supf b)) w → (w ≡ supf b) ∨ (w << supf b)
+       z54 {w} ⟪ aw , fc ⟫ = order ? ? where
+               u<b : supf b o< b
+               u<b = ?
        z52 : supf (supf b) ≡ supf b
        z52 = sup=u asupf sfb≤x ⟪ record { x≤sup = z54  } , IsMinSUP→NotHasPrev asupf z54 ( λ ax → proj1 (mf< _ ax)) ⟫ 
 
-   -- cp : (mf< : <-monotonic-f A f) {b : Ordinal } → b o≤ z → supf b o≤ z  → ChainP A f mf ay supf (supf b)
+   -- cp : (mf< : <-monotonic-f A f) {b : Ordinal } → b o≤ z → supf b o≤ z  → ChainP A f supf (supf b)
    --    the condition of cfcs is satisfied, this is obvious
 
 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 ) → b o< z  → (ab : odef A b)
-          → HasPrev A (UnionCF A f mf ay supf z) f b ∨  IsSUP A (UnionCF A f mf ay supf b) ab
-          → * a < * b  → odef ((UnionCF A f mf ay supf z)) b
+      is-max :  {a b : Ordinal } → (ca : odef (UnionCF A f supf z) a ) → b o< z  → (ab : odef A b)
+          → HasPrev A (UnionCF A f supf z) f b ∨  IsSUP A (UnionCF A f supf b) ab
+          → * a < * b  → odef ((UnionCF A f supf z)) b
 
 record Maximal ( A : HOD )  : Set (Level.suc n) where
    field
@@ -548,8 +462,8 @@
       ¬maximal<x : {x : HOD} → A ∋ x  → ¬ maximal < x       -- A is Partial, use negative
 
 init-uchain : (A : HOD)  ( f : Ordinal → Ordinal )  (mf : ≤-monotonic-f A f) {y : Ordinal } → (ay : odef A y )
-    { supf : Ordinal → Ordinal } { x : Ordinal } → odef (UnionCF A f mf ay supf x) y
-init-uchain A f mf ay = ⟪ ay , ch-init (init ay refl)   ⟫
+    { supf : Ordinal → Ordinal } { x : Ordinal } → odef (UnionCF A f supf x) y
+init-uchain A f mf ay = ⟪ ay , ?   ⟫
 
 record IChain  (A : HOD)  ( f : Ordinal → Ordinal ) {x : Ordinal } (supfz : {z : Ordinal } → z o< x → Ordinal) (z : Ordinal ) : Set n where
   field
@@ -586,25 +500,8 @@
                  spa ≡⟨ sym sax=spa ⟩ 
                  supfa x ∎ ) a ) where 
                     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 {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
+                    z53 : {z : Ordinal } →  odef (UnionCF A f (ZChain.supf zb) x) z →  odef (UnionCF A f (ZChain.supf za) x) z
+                    z53 {z} ⟪ as , cp ⟫ =  ⟪ as , ?  ⟫ 
            ... | tri> ¬a ¬b c = ⊥-elim ( o≤> (
                begin
                  supfa x  ≡⟨ sax=spa ⟩
@@ -612,37 +509,18 @@
                  spb  ≡⟨ sym sbx=spb ⟩
                  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
+                    z53 : {z : Ordinal } →  odef (UnionCF A f (ZChain.supf za) x) z →  odef (UnionCF A f (ZChain.supf zb) x) z
+                    z53 {z} ⟪ as , cp ⟫ =  ⟪ as , ?  ⟫ 
 
 UChain-eq : { A : HOD }    { f : Ordinal → Ordinal }  {mf : ≤-monotonic-f A f}
         {z y : Ordinal} {ay : odef A y}  { supf0 supf1 : Ordinal → Ordinal }
         → (seq : {x : Ordinal } →  x o<  z  → supf0 x ≡ supf1 x )
-        → UnionCF A f mf ay supf0 z ≡ UnionCF A f mf ay supf1 z
+        → UnionCF A f supf0 z ≡ UnionCF A f supf1 z
 UChain-eq {A} {f} {mf} {z} {y} {ay} {supf0} {supf1} seq = ==→o≡  record { eq← = ueq← ; eq→ = ueq→ } where
-      ueq← :  {x : Ordinal} → odef A x ∧ UChain A f mf ay supf1 z x → odef A x ∧ UChain A f mf ay supf0 z x
-      ueq← {z} ⟪ ab , ch-init fc ⟫ = ⟪ ab , ch-init fc ⟫
-      ueq← {z} ⟪ ab , ch-is-sup u u<x is-sup fc ⟫ = ⟪ ab , ch-is-sup u u<x ? ? ⟫ 
-      ueq→  : {x : Ordinal} → odef A x ∧ UChain A f mf ay supf0 z x → odef A x ∧ UChain A f mf ay supf1 z x
-      ueq→ {z} ⟪ ab , ch-init fc ⟫ = ⟪ ab , ch-init fc ⟫
-      ueq→ {z} ⟪ ab , ch-is-sup u u<x is-sup fc ⟫ = ⟪ ab , ch-is-sup u u<x ? ? ⟫ 
+      ueq← :  {x : Ordinal} → odef A x ∧ ? → odef A x ∧ ?
+      ueq← {z} ⟪ ab , cp ⟫ = ⟪ ab , ? ⟫ 
+      ueq→  : {x : Ordinal} → odef A x ∧ ? → odef A x ∧ ?
+      ueq→ {z} ⟪ ab , cp ⟫ = ⟪ ab , ? ⟫ 
 
 Zorn-lemma : { A : HOD }
     → o∅ o< & A
@@ -755,15 +633,13 @@
         {init : Ordinal} (ay : odef A init) (zc : ZChain A f mf ay (& A)) (x : Ordinal) → x o≤ & A → ZChain1 A f mf ay zc x
      SZ1 f mf mf< {y} ay zc x x≤A = zc1 x x≤A  where
         chain-mono1 :  {a b c : Ordinal} → a o≤ b
-            → odef (UnionCF A f mf ay (ZChain.supf zc) a) c → odef (UnionCF A f mf ay (ZChain.supf zc) b) c
+            → odef (UnionCF A f (ZChain.supf zc) a) c → odef (UnionCF A f (ZChain.supf zc) b) c
         chain-mono1  {a} {b} {c} a≤b = chain-mono f mf ay (ZChain.supf zc) (ZChain.supf-mono zc) a≤b
-        is-max-hp : (x : Ordinal) {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay (ZChain.supf zc) x) a → (ab : odef A b)
-            → HasPrev A (UnionCF A f mf ay (ZChain.supf zc) x) f b
-            → * a < * b → odef (UnionCF A f mf ay (ZChain.supf zc) x) b
+        is-max-hp : (x : Ordinal) {a : Ordinal} {b : Ordinal} → odef (UnionCF A f (ZChain.supf zc) x) a → (ab : odef A b)
+            → HasPrev A (UnionCF A f (ZChain.supf zc) x) f b
+            → * a < * b → odef (UnionCF A f (ZChain.supf zc) x) b
         is-max-hp x {a} {b} ua ab has-prev a<b with HasPrev.ay has-prev
-        ... | ⟪ ab0 , ch-init fc ⟫ = ⟪ ab , ch-init ( subst (λ k → FClosure A f y k) (sym (HasPrev.x=fy has-prev)) (fsuc _ fc )) ⟫
-        ... | ⟪ ab0 , ch-is-sup u u<x is-sup fc ⟫ = ⟪ ab , subst (λ k → UChain A f mf ay (ZChain.supf zc) x k )
-                      (sym (HasPrev.x=fy has-prev)) ( ch-is-sup u u<x is-sup (fsuc _ fc))  ⟫
+        ... | ⟪ ab0 , cp ⟫ = ⟪ ab , ? ⟫
 
         supf = ZChain.supf zc
 
@@ -771,25 +647,25 @@
         zc1 x x≤A with Oprev-p x  
         ... | yes op = record { is-max = is-max } where
                px = Oprev.oprev op
-               is-max :  {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a →
+               is-max :  {a : Ordinal} {b : Ordinal} → odef (UnionCF A f supf x) a →
                   b o< x → (ab : odef A b) →
-                  HasPrev A (UnionCF A f mf ay supf x) f b  ∨ IsSUP A (UnionCF A f mf ay supf b) ab →
-                  * a < * b → odef (UnionCF A f mf ay supf x) b
+                  HasPrev A (UnionCF A f supf x) f b  ∨ IsSUP A (UnionCF A f supf b) ab →
+                  * a < * b → odef (UnionCF A f 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
                is-max {a} {b} ua b<x ab P a<b | case2 is-sup with osuc-≡< (ZChain.supf-mono zc (o<→≤ b<x))
                ... | case2 sb<sx = m10 where
                   b<A : b o< & A
                   b<A = z09 ab
-                  m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b
+                  m04 : ¬ HasPrev A (UnionCF A f supf b) f b
                   m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay =
                         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 → IsSUP.x≤sup (proj2 is-sup) uz  }  , m04 ⟫
-                  m10 : odef (UnionCF A f mf ay supf x) b
+                  m10 : odef (UnionCF A f supf x) b
                   m10 = ZChain.cfcs zc mf< b<x x≤A (subst (λ k → k o< x) (sym m05) b<x) (init (ZChain.asupf zc) m05)
                ... | case1 sb=sx = ⊥-elim (<-irr (case1 (cong (*) m10)) (proj1 (mf< (supf b) (ZChain.asupf zc)))) where
-                  m17 : MinSUP A (UnionCF A f mf ay supf x) -- supf z o< supf ( supf x )
+                  m17 : MinSUP A (UnionCF A f supf x) -- supf z o< supf ( supf x )
                   m17 = ZChain.minsup zc x≤A
                   m18 : supf x ≡ MinSUP.sup m17 
                   m18 = ZChain.supf-is-minsup zc x≤A
@@ -797,39 +673,39 @@
                   m10 = fc-stop A f mf (ZChain.asupf zc) m11 sb=sx where
                       m11 : {z : Ordinal} → FClosure A f (supf b) z → (z ≡ ZChain.supf zc x) ∨ (z << ZChain.supf zc x)
                       m11 {z} fc = subst (λ k → (z ≡ k) ∨ (z << k)) (sym m18) ( MinSUP.x≤sup m17 m13 ) where
-                          m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b
+                          m04 : ¬ HasPrev A (UnionCF A f supf b) f b
                           m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay =
                                 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 → IsSUP.x≤sup (proj2 is-sup) uz  }  , m04 ⟫
                           m14 : ZChain.supf zc b o< x
                           m14 = subst (λ k → k o< x ) (sym m05)  b<x
-                          m13 :  odef (UnionCF A f mf ay supf x) z
+                          m13 :  odef (UnionCF A f supf x) z
                           m13 = ZChain.cfcs zc mf< b<x x≤A m14 fc
 
         ... | no lim = record { is-max = is-max }  where
-               is-max :  {a : Ordinal} {b : Ordinal} → odef (UnionCF A f mf ay supf x) a →
+               is-max :  {a : Ordinal} {b : Ordinal} → odef (UnionCF A f supf x) a →
                   b o< x → (ab : odef A b) →
-                  HasPrev A (UnionCF A f mf ay supf x) f b  ∨ IsSUP A (UnionCF A f mf ay supf b) ab →
-                  * a < * b → odef (UnionCF A f mf ay supf x) b
+                  HasPrev A (UnionCF A f supf x) f b  ∨ IsSUP A (UnionCF A f supf b) ab →
+                  * a < * b → odef (UnionCF A f 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
                is-max {a} {b} ua b<x ab P a<b | case2 is-sup with IsSUP.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 ))  ⟫
+               ... | case1 b=y = ⟪ subst (λ k → odef A k ) b=y ay , ?  ⟫
                ... | case2 y<b with osuc-≡< (ZChain.supf-mono zc (o<→≤ b<x))
                ... | case2 sb<sx = m10 where
                   m09 : b o< & A
                   m09 = subst (λ k → k o< & A) &iso ( c<→o< (subst (λ k → odef A k ) (sym &iso ) ab))
-                  m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b
+                  m04 : ¬ HasPrev A (UnionCF A f supf b) f b
                   m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay =
                           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<→≤  m09) ⟪ record { x≤sup = λ lt → IsSUP.x≤sup (proj2 is-sup) lt } , m04 ⟫    -- ZChain on x
-                  m10 : odef (UnionCF A f mf ay supf x) b
+                  m10 : odef (UnionCF A f supf x) b
                   m10 = ZChain.cfcs zc mf< b<x x≤A (subst (λ k → k o< x) (sym m05) b<x) (init (ZChain.asupf zc) m05)
                ... | case1 sb=sx = ⊥-elim (<-irr (case1 (cong (*) m10)) (proj1 (mf< (supf b) (ZChain.asupf zc)))) where
-                  m17 : MinSUP A (UnionCF A f mf ay supf x) -- supf z o< supf ( supf x )
+                  m17 : MinSUP A (UnionCF A f supf x) -- supf z o< supf ( supf x )
                   m17 = ZChain.minsup zc x≤A
                   m18 : supf x ≡ MinSUP.sup m17 
                   m18 = ZChain.supf-is-minsup zc x≤A
@@ -837,14 +713,14 @@
                   m10 = fc-stop A f mf (ZChain.asupf zc) m11 sb=sx where
                       m11 : {z : Ordinal} → FClosure A f (supf b) z → (z ≡ ZChain.supf zc x) ∨ (z << ZChain.supf zc x)
                       m11 {z} fc = subst (λ k → (z ≡ k) ∨ (z << k)) (sym m18) ( MinSUP.x≤sup m17 m13 ) where
-                          m04 : ¬ HasPrev A (UnionCF A f mf ay supf b) f b
+                          m04 : ¬ HasPrev A (UnionCF A f supf b) f b
                           m04 nhp = proj1 is-sup ( record { ax = HasPrev.ax nhp ; y = HasPrev.y nhp ; ay =
                                 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 → IsSUP.x≤sup (proj2 is-sup) uz  }  , m04 ⟫
                           m14 : ZChain.supf zc b o< x
                           m14 = subst (λ k → k o< x ) (sym m05)  b<x
-                          m13 :  odef (UnionCF A f mf ay supf x) z
+                          m13 :  odef (UnionCF A f supf x) z
                           m13 = ZChain.cfcs zc mf< b<x x≤A m14 fc
 
      uchain : ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) {y : Ordinal} (ay : odef A y) → HOD
@@ -895,7 +771,7 @@
 
           supf0 = ZChain.supf zc
           pchain  : HOD
-          pchain   = UnionCF A f mf ay supf0 px
+          pchain   = UnionCF A f supf0 px
 
           supf-mono : {a b : Ordinal } → a o≤ b → supf0 a o≤ supf0 b
           supf-mono = ZChain.supf-mono zc
@@ -913,13 +789,13 @@
           --
 
           pchainpx : HOD
-          pchainpx = record { od = record { def = λ z →  (odef A z ∧ UChain A f mf ay supf0 px z )
+          pchainpx = record { od = record { def = λ z →  (odef A z ∧ ? )
                 ∨ FClosure A f (supf0 px) z  } ; odmax = & A ; <odmax = zc00 } where
-               zc00 : {z : Ordinal } → (odef A z ∧ UChain A f mf ay supf0 px z ) ∨ FClosure A f (supf0 px) z → z o< & A
+               zc00 : {z : Ordinal } → (odef A z ∧ ? ) ∨ FClosure A f (supf0 px) z → z o< & A
                zc00 {z} (case1 lt) = z07 lt
                zc00 {z} (case2 fc) = z09 ( A∋fc (supf0 px) f mf fc )
 
-          zc02 : { a b : Ordinal } → odef A a ∧ UChain A f mf ay supf0 px a → FClosure A f (supf0 px) b → a <= b
+          zc02 : { a b : Ordinal } → odef A a ∧ ? → FClosure A f (supf0 px) b → a <= b
           zc02 {a} {b} ca fb = zc05 fb where
              zc06 : MinSUP.sup (ZChain.minsup zc o≤-refl) ≡ supf0 px
              zc06 = trans (sym ( ZChain.supf-is-minsup zc o≤-refl )) refl
@@ -928,13 +804,13 @@
              ... | case1 eq = subst (λ k → a <= k ) (subst₂ (λ j k → j ≡ k) &iso &iso (cong (&) eq)) (zc05 fb)
              ... | case2 lt = <=-trans (zc05 fb) (case2 lt)
              zc05 (init b1 refl) with MinSUP.x≤sup (ZChain.minsup zc o≤-refl)
-                (subst (λ k → odef A k ∧ UChain A f mf ay supf0 px k) (sym &iso) ca )
+                (subst (λ k → odef A k ∧ ?) (sym &iso) ca )
              ... | case1 eq = case1 (subst₂ (λ j k → j ≡ k ) &iso zc06 eq )
              ... | case2 lt = case2 (subst₂ (λ j k → j < k ) *iso (cong (*) zc06) lt )
 
           ptotal : IsTotalOrderSet pchainpx
           ptotal (case1 a) (case1 b) =  subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso
-                   (chain-total A f mf ay supf0 (proj2 a) (proj2 b))
+                   ?
           ptotal {a0} {b0} (case1 a) (case2 b) with zc02 a b
           ... | case1 eq = tri≈ (<-irr (case1 (sym eq1))) eq1 (<-irr (case1 eq1)) where
                eq1 : a0 ≡ b0
@@ -1009,18 +885,18 @@
                  ... | tri≈ ¬a b ¬c =  subst₂ (λ j k → j o≤ k ) (sym (sf1=sf0 (subst (λ k → a o≤ k) b a≤b))) refl ( supf-mono a≤b )
                  supf1-mono {a} {b} a≤b | tri> ¬a ¬b c with trio< a px
                  ... | tri< a<px ¬b ¬c = zc19 where
-                       zc21 : MinSUP A (UnionCF A f mf ay supf0 a)
+                       zc21 : MinSUP A (UnionCF A f supf0 a)
                        zc21 = ZChain.minsup zc (o<→≤ a<px)
-                       zc24 : {x₁ : Ordinal} → odef (UnionCF A f mf ay supf0 a) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1)
+                       zc24 : {x₁ : Ordinal} → odef (UnionCF A f supf0 a) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1)
                        zc24 {x₁} ux = MinSUP.x≤sup sup1 (case1 (chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o<→≤ a<px) ux ) )
                        zc19 : supf0 a o≤ sp1
                        zc19 = subst (λ k → k o≤ sp1) (sym (ZChain.supf-is-minsup zc  (o<→≤ a<px))) ( MinSUP.minsup zc21 (MinSUP.asm sup1) zc24 )
                  ... | tri≈ ¬a b ¬c = zc18 where
-                       zc21 : MinSUP A (UnionCF A f mf ay supf0 a)
+                       zc21 : MinSUP A (UnionCF A f supf0 a)
                        zc21 = ZChain.minsup zc (o≤-refl0 b)
                        zc20 : MinSUP.sup zc21 ≡ supf0 a
                        zc20 = sym (ZChain.supf-is-minsup zc (o≤-refl0 b))
-                       zc24 : {x₁ : Ordinal} → odef (UnionCF A f mf ay supf0 a) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1)
+                       zc24 : {x₁ : Ordinal} → odef (UnionCF A f supf0 a) x₁ → (x₁ ≡ sp1) ∨ (x₁ << sp1)
                        zc24 {x₁} ux = MinSUP.x≤sup sup1 (case1 (chain-mono f mf ay supf0 (ZChain.supf-mono zc) (o≤-refl0 b) ux ) )
                        zc18 : supf0 a o≤ sp1
                        zc18 = subst (λ k → k o≤ sp1) zc20( MinSUP.minsup zc21 (MinSUP.asm sup1) zc24 )
@@ -1042,7 +918,7 @@
                  -- this is a kind of maximality, so we cannot prove this without <-monotonicity
                  --
                  cfcs : (mf< : <-monotonic-f A f) {a b w : Ordinal } 
-                     → a o< b → b o≤ x → supf1 a o< b  → FClosure A f (supf1 a) w → odef (UnionCF A f mf ay supf1 b) w
+                     → a o< b → b o≤ x → supf1 a o< b  → FClosure A f (supf1 a) w → odef (UnionCF A f supf1 b) w
                  cfcs mf< {a} {b} {w} a<b b≤x sa<b fc with zc43 (supf0 a) px
                  ... | case2 px≤sa = z50 where
                       a<x : a o< x
@@ -1051,9 +927,9 @@
                       a≤px = subst (λ k → a o< k) (sym (Oprev.oprev=x op)) (ordtrans<-≤ a<b b≤x)
                       --  supf0 a ≡ px we cannot use previous cfcs, it is in the chain because
                       --       supf0 a ≡ supf0 (supf0 a) ≡ supf0 px o< x
-                      z50 : odef (UnionCF A f mf ay supf1 b) w
+                      z50 : odef (UnionCF A f supf1 b) w
                       z50 with osuc-≡< px≤sa
-                      ... | case1 px=sa = ⟪ A∋fc {A} _ f mf fc , ch-is-sup (supf0 px) z51 cp (subst (λ k → FClosure A f k w) z52 fc)  ⟫ where
+                      ... | case1 px=sa = ⟪ A∋fc {A} _ f mf fc , ?  ⟫ where
                           sa≤px : supf0 a o≤ px
                           sa≤px = subst₂ (λ j k → j o< k) px=sa (sym (Oprev.oprev=x op)) px<x
                           spx=sa : supf0 px ≡ supf0 a
@@ -1071,7 +947,7 @@
                                 supf0 (supf0 a) ≡⟨ sym (sf1=sf0 sa≤px)  ⟩ 
                                 supf1 (supf0 a) ≡⟨ cong supf1 (sym spx=sa) ⟩ 
                                 supf1 (supf0 px) ∎ where open ≡-Reasoning
-                          m : MinSUP A (UnionCF A f mf ay supf0 px)
+                          m : MinSUP A (UnionCF A f supf0 px)
                           m = ZChain.minsup zc o≤-refl
                           m=spx : MinSUP.sup m ≡ supf1 (supf0 px)
                           m=spx = begin 
@@ -1086,11 +962,9 @@
                                 supf1 (supf0 a)  ≡⟨ sf1=sf0 sa≤px ⟩ 
                                 supf0 (supf0 a)  ≡⟨ sym ( cong supf0 px=sa ) ⟩ 
                                 supf0 px  ∎  where open ≡-Reasoning 
-                          cp : ChainP A f mf ay supf1 (supf0 px)
-                          cp = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) m=spx (MinSUP.x≤sup m ⟪  A∋fc _ f mf fc , ch-init fc ⟫ )  
-                            ; order = order 
-                            ; supu=u = z53 } where
-                             uz : {s z1 : Ordinal } → supf1 s o< supf1 (supf0 px) → FClosure A f (supf1 s) z1 → odef (UnionCF A f mf ay supf0 px) z1
+                          cp : ?
+                          cp = ? where
+                             uz : {s z1 : Ordinal } → supf1 s o< supf1 (supf0 px) → FClosure A f (supf1 s) z1 → odef (UnionCF A f supf0 px) z1
                              uz {s} {z1} ss<sp fc = ZChain.cfcs zc mf< s<px o≤-refl ss<px (subst (λ k → FClosure A f k z1) 
                                      (sf1=sf0 (o<→≤ s<px))  fc ) where
                                 s<spx : s o< supf0 px
@@ -1117,36 +991,12 @@
                           z53  = ordtrans<-≤ sa<b b≤x
                  ... | case1 sa<px with trio< a px
                  ... | tri< a<px ¬b ¬c = z50 where
-                      z50 : odef (UnionCF A f mf ay supf1 b) w
+                      z50 : odef (UnionCF A f supf1 b) w
                       z50 with osuc-≡< b≤x
                       ... | case2 lt with ZChain.cfcs zc mf< a<b (subst (λ k → b o< k) (sym (Oprev.oprev=x op)) lt) sa<b fc  
-                      ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 
-                      ... | ⟪ az , ch-is-sup u u<b is-sup fc ⟫ = ⟪ az , ch-is-sup u u<b cp1 (fcpu fc u≤px )  ⟫  where -- u o< px → u o< b ?
-                           u≤px : u o≤ px
-                           u≤px = subst (λ k → u o< k) (sym (Oprev.oprev=x op))  (ordtrans<-≤ u<b b≤x )
-                           u<x : u o< x
-                           u<x = ordtrans<-≤ u<b b≤x 
-                           cp1 : ChainP A f mf ay supf1 u
-                           cp1 = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sf=eq u<x) (ChainP.fcy<sup is-sup fc )  
-                               ; order =  λ {s} {z} s<u fc  → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sf=eq u<x) 
-                                  (ChainP.order is-sup (subst₂ (λ j k → j o< k ) (sym (sf=eq (ordtrans (supf-inject0 supf1-mono s<u) u<x) )) 
-                                   (sym (sf=eq u<x)) s<u)  
-                                    (subst (λ k → FClosure A f k z ) (sym (sf=eq (ordtrans (supf-inject0 supf1-mono s<u) u<x) )) fc ))
-                               ; supu=u = trans (sym (sf=eq u<x)) (ChainP.supu=u is-sup)  }
+                      ... | ⟪ az , cp ⟫ = ⟪ az , ?  ⟫  -- u o< px → u o< b ?
                       z50 | case1 eq with ZChain.cfcs zc mf< a<px o≤-refl sa<px fc  
-                      ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 
-                      ... | ⟪ az , ch-is-sup u u<px is-sup fc ⟫ = ⟪ az , ch-is-sup u u<b cp1 (fcpu fc (o<→≤ u<px)) ⟫  where -- u o< px → u o< b ?
-                           u<b : u o< b
-                           u<b = subst (λ k → u o< k ) (trans (Oprev.oprev=x op) (sym eq) ) (ordtrans u<px <-osuc )
-                           u<x : u o< x
-                           u<x = subst (λ k → u o< k ) (Oprev.oprev=x op) ( ordtrans u<px <-osuc )
-                           cp1 : ChainP A f mf ay supf1 u
-                           cp1 = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sf=eq u<x) (ChainP.fcy<sup is-sup fc )  
-                               ; order =  λ {s} {z} s<u fc  → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sf=eq u<x) 
-                                  (ChainP.order is-sup (subst₂ (λ j k → j o< k ) (sym (sf=eq (ordtrans (supf-inject0 supf1-mono s<u) u<x) )) 
-                                   (sym (sf=eq u<x)) s<u)  
-                                    (subst (λ k → FClosure A f k z ) (sym (sf=eq (ordtrans (supf-inject0 supf1-mono s<u) u<x) )) fc ))
-                               ; supu=u = trans (sym (sf=eq u<x)) (ChainP.supu=u is-sup)  }
+                      ... | ⟪ az , cp ⟫ = ⟪ az , ? ⟫  where -- u o< px → u o< b ?
                  ... | tri≈ ¬a a=px ¬c = csupf1 where
                       -- a ≡ px , b ≡ x, sp o≤ x 
                       px<b : px o< b
@@ -1160,9 +1010,9 @@
                       z51 = subst (λ k → FClosure A f k w) (sym (trans (cong supf1 (sym a=px)) (sf1=sf0 (o≤-refl0 a=px) ))) fc
                       z53 : odef A w
                       z53 = A∋fc {A} _ f mf fc
-                      csupf1 : odef (UnionCF A f mf ay supf1 b) w
+                      csupf1 : odef (UnionCF A f supf1 b) w
                       csupf1 with trio< (supf0 px) x
-                      ... | tri< sfpx<x ¬b ¬c = ⟪ z53 , ch-is-sup spx (subst (λ k → spx o< k) (sym b=x) sfpx<x) cp1 fc1 ⟫  where
+                      ... | tri< sfpx<x ¬b ¬c = ⟪ z53 , ? ⟫  where
                           spx = supf0 px
                           spx≤px : supf0 px o≤ px
                           spx≤px = zc-b<x _ sfpx<x
@@ -1185,11 +1035,6 @@
                                             supf1 spx  ≡⟨ sf1=sf0 spx≤px  ⟩
                                             supf0 spx  ≤⟨ ZChain.supf-mono zc spx≤px ⟩
                                             supf0 px  ∎  ) where open o≤-Reasoning O
-                          cp1 : ChainP A f mf ay supf1 spx
-                          cp1 = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ (z << k )) (sym (sf1=sf0 spx≤px )) 
-                                  ( ZChain.fcy<sup zc spx≤px fc )
-                                       ; order =  order
-                                       ; supu=u = z52 }
                       ... | tri≈ ¬a spx=x ¬c = ⊥-elim (<-irr (case1 (cong (*) m10)) (proj1 (mf< (supf0 px) (ZChain.asupf zc)))) where 
                           -- supf px ≡ x then the chain is stopped, which cannot happen when <-monotonic case
                           m12 : supf0 px ≡ sp1
@@ -1203,37 +1048,17 @@
                       ... | tri> ¬a ¬b c = ⊥-elim ( o<¬≡ refl (ordtrans<-≤ c (OrdTrans sfpx≤sp1 sp≤x)))   -- x o< supf0 px o≤ sp1 ≤ x
                  ... | tri> ¬a ¬b c = ⊥-elim ( ¬p<x<op ⟪ c , subst (λ k → a o< k ) (sym (Oprev.oprev=x op)) ( ordtrans<-≤ a<b b≤x) ⟫ ) --  px o< a o< b o≤ x
 
-                 zc11 : {z : Ordinal} → odef (UnionCF A f mf ay supf1 x) z → odef pchainpx z
-                 zc11 {z} ⟪ az , ch-init fc ⟫ = case1 ⟪ az , ch-init fc ⟫
-                 zc11 {z} ⟪ az , ch-is-sup u u<x is-sup fc ⟫ = zc21 fc where
-                    u≤px : u o≤ px
-                    u≤px = zc-b<x _ u<x
-                    zc21 : {z1 : Ordinal } → FClosure A f (supf1 u) z1 → odef pchainpx z1
+                 zc11 : {z : Ordinal} → odef (UnionCF A f supf1 x) z → odef pchainpx z
+                 zc11 {z} ⟪ az , cp ⟫ = zc21 ? where
+                    zc21 : {z1 : Ordinal } → FClosure A f (supf1 ?) z1 → odef pchainpx z1
                     zc21 {z1} (fsuc z2 fc ) with zc21 fc
-                    ... | case1 ⟪ ua1 , ch-init fc₁ ⟫ = case1 ⟪ proj2 ( mf _ ua1)  , ch-init (fsuc _ fc₁)  ⟫
-                    ... | case1 ⟪ ua1 , ch-is-sup u u<x u1-is-sup fc₁ ⟫ = case1 ⟪ proj2 ( mf _ ua1)  , ch-is-sup u u<x u1-is-sup (fsuc _ fc₁) ⟫
+                    ... | case1 ⟪ ua1 , cp  ⟫ = case1 ⟪ proj2 ( mf _ ua1)  , ? ⟫
                     ... | case2 fc = case2 (fsuc _ fc)
-                    zc21 (init asp refl ) with trio< (supf0 u) (supf0 px) | inspect supf1 u
-                    ... | tri< a ¬b ¬c | _ = case1 ⟪ asp , ch-is-sup u u<px record {fcy<sup = zc13 ; order = zc17
-                         ; supu=u = trans (sym (sf1=sf0 (o<→≤ u<px))) (ChainP.supu=u is-sup) } (init asp0 (sym (sf1=sf0 (o<→≤ u<px))) ) ⟫ where
-                        u<px :  u o< px
-                        u<px =  ZChain.supf-inject zc a
-                        asp0 : odef A (supf0 u)
-                        asp0 = ZChain.asupf zc
-                        zc17 :  {s : Ordinal} {z1 : Ordinal} → supf0 s o< supf0 u →
-                            FClosure A f (supf0 s) z1 → (z1 ≡ supf0 u) ∨ (z1 << supf0 u)
-                        zc17 {s} {z1} ss<spx fc = subst (λ k → (z1 ≡ k) ∨ (z1 << k)) ((sf1=sf0 u≤px)) ( ChainP.order is-sup
-                         (subst₂ (λ j k → j o< k ) (sym (sf1=sf0 zc18)) (sym (sf1=sf0 u≤px)) ss<spx) (fcpu fc zc18) ) where
-                            zc18 : s o≤ px
-                            zc18 = ordtrans (ZChain.supf-inject zc ss<spx) u≤px
-                        zc13 : {z : Ordinal } → FClosure A f y z → (z ≡ supf0 u) ∨ ( z << supf0 u )
-                        zc13 {z} fc = subst (λ k → (z ≡ k) ∨ ( z << k )) (sf1=sf0 (o<→≤ u<px)) ( ChainP.fcy<sup is-sup fc )
-                    ... | tri≈ ¬a b ¬c | _ = case2 (init (subst (λ k → odef A k) b (ZChain.asupf zc) ) (sym (trans (sf1=sf0 u≤px) b )))
-                    ... | tri> ¬a ¬b c | _ = ⊥-elim ( ¬p<x<op ⟪ ZChain.supf-inject zc c , subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u<x  ⟫ )
+                    zc21 (init asp refl ) = ?
 
                  record STMP {z : Ordinal} (z≤x : z o≤ x ) : Set (Level.suc n) where
                      field
-                         tsup : MinSUP A (UnionCF A f mf ay supf1 z)
+                         tsup : MinSUP A (UnionCF A f supf1 z)
                          tsup=sup : supf1 z ≡ MinSUP.sup tsup
 
                  sup : {z : Ordinal} → (z≤x : z o≤ x ) → STMP z≤x
@@ -1241,27 +1066,26 @@
                  ... | tri< a ¬b ¬c = record { tsup = record { sup = MinSUP.sup m  ; asm = MinSUP.asm m
                          ; x≤sup = ms00 ; minsup = ms01 } ; tsup=sup = trans (sf1=sf0 (o<→≤ a) ) (ZChain.supf-is-minsup zc (o<→≤ a)) } where
                     m = ZChain.minsup zc (o<→≤ a)
-                    ms00 :  {x : Ordinal} → odef (UnionCF A f mf ay supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m)
-                    ms00 {w} ⟪ az , ch-init fc ⟫ = MinSUP.x≤sup m ?
-                    ms00 {w} ⟪ az , ch-is-sup u u<x is-sup fc1 ⟫ = MinSUP.x≤sup m ⟪ az , ch-is-sup u ? ? ? ⟫ 
+                    ms00 :  {x : Ordinal} → odef (UnionCF A f supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m)
+                    ms00 {w} ⟪ az , cp ⟫ = MinSUP.x≤sup m ⟪ az , ? ⟫ 
                     ms01 : {sup2 : Ordinal} → odef A sup2 → ({x : Ordinal} →
-                        odef (UnionCF A f mf ay supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2
+                        odef (UnionCF A f supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2
                     ms01 {sup2} us P = MinSUP.minsup m us ?
                  ... | tri≈ ¬a b ¬c = record { tsup = record { sup = MinSUP.sup m  ; asm = MinSUP.asm m
                          ; x≤sup = ms00 ; minsup = ms01 } ; tsup=sup = trans (sf1=sf0 (o≤-refl0 b) ) (ZChain.supf-is-minsup zc (o≤-refl0 b))  } where
                     m = ZChain.minsup zc (o≤-refl0 b)
-                    ms00 :  {x : Ordinal} → odef (UnionCF A f mf ay supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m)
+                    ms00 :  {x : Ordinal} → odef (UnionCF A f supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m)
                     ms00 {x} ux = MinSUP.x≤sup m ?
                     ms01 : {sup2 : Ordinal} → odef A sup2 → ({x : Ordinal} →
-                        odef (UnionCF A f mf ay supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2
+                        odef (UnionCF A f supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2
                     ms01 {sup2} us P = MinSUP.minsup m us ?
                  ... | tri> ¬a ¬b px<z = record { tsup = record { sup = sp1 ; asm = MinSUP.asm sup1
                          ; x≤sup = ms00 ; minsup = ms01 } ; tsup=sup = sf1=sp1 px<z } where
                     m = sup1
-                    ms00 :  {x : Ordinal} → odef (UnionCF A f mf ay supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m)
+                    ms00 :  {x : Ordinal} → odef (UnionCF A f supf1 z) x → (x ≡ MinSUP.sup m) ∨ (x << MinSUP.sup m)
                     ms00 {x} ux = MinSUP.x≤sup m ?
                     ms01 : {sup2 : Ordinal} → odef A sup2 → ({x : Ordinal} →
-                        odef (UnionCF A f mf ay supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2
+                        odef (UnionCF A f supf1 z) x → (x ≡ sup2) ∨ (x << sup2)) → MinSUP.sup m o≤ sup2
                     ms01 {sup2} us P = MinSUP.minsup m us ?
 
 
@@ -1272,7 +1096,7 @@
                  --     supf1 x ≡ supf0 px because of supfmax
 
                  cfcs : (mf< : <-monotonic-f A f) {a b w : Ordinal } 
-                     → a o< b → b o≤ x →  supf0 a o< b → FClosure A f (supf0 a) w → odef (UnionCF A f mf ay supf0 b) w
+                     → a o< b → b o≤ x →  supf0 a o< b → FClosure A f (supf0 a) w → odef (UnionCF A f supf0 b) w
                  cfcs mf< {a} {b} {w} a<b b≤x sa<b fc with trio< b px 
                  ... | tri< a ¬b ¬c = ZChain.cfcs zc mf< a<b (o<→≤ a) sa<b fc
                  ... | tri≈ ¬a refl ¬c = ZChain.cfcs zc mf< a<b o≤-refl sa<b fc 
@@ -1288,8 +1112,8 @@
                      --      supf a ≡ px    -- a o< px → odef U w
                      --                        a ≡ px → supf px ≡ px → odef U w
 
-                     cfcs0 : a ≡ px → odef (UnionCF A f mf ay supf0 b) w
-                     cfcs0 a=px = ⟪  A∋fc {A} _ f mf fc , ch-is-sup (supf0 px) spx<b cp fc1 ⟫ where
+                     cfcs0 : a ≡ px → odef (UnionCF A f supf0 b) w
+                     cfcs0 a=px = ⟪  A∋fc {A} _ f mf fc , ? ⟫ where
                          spx<b : supf0 px o< b
                          spx<b = subst (λ k → supf0 k o< b) a=px sa<b
                          cs01 : supf0 a ≡ supf0 (supf0 px)
@@ -1297,64 +1121,36 @@
                               (subst (λ k → supf0 px o< k ) (sym (Oprev.oprev=x op)) (ordtrans<-≤ spx<b b≤x))))
                          fc1 : FClosure A f (supf0 (supf0 px)) w
                          fc1 = subst (λ k → FClosure A f k w) cs01 fc
-                         m : MinSUP A (UnionCF A f mf ay supf0 (supf0 px))
+                         m : MinSUP A (UnionCF A f supf0 (supf0 px))
                          m = ZChain.minsup zc (zc-b<x _ (ordtrans<-≤ spx<b b≤x))
                          m=sa : MinSUP.sup m ≡ supf0 (supf0 px)
                          m=sa = begin 
                                 MinSUP.sup m ≡⟨ sym ( ZChain.supf-is-minsup zc (zc-b<x _ (ordtrans<-≤ spx<b b≤x) ))  ⟩ 
                                 supf0 (supf0 px)  ∎  where open ≡-Reasoning 
-                         cp : ChainP A f mf ay supf0 (supf0 px)
-                         cp = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) m=sa (MinSUP.x≤sup m ⟪ A∋fc _ f mf fc , ch-init fc ⟫ )
-                            ; order = order 
-                            ; supu=u = sym (trans (cong supf0 (sym a=px)) cs01) } where
-                             uz : {s z1 : Ordinal } → supf0 s o< supf0 (supf0 px) → FClosure A f (supf0 s) z1 
-                                 → odef (UnionCF A f mf ay supf0 (supf0 px)) z1
-                             uz {s} {z1} ss<sp fc = ZChain.cfcs zc mf< s<spx spx≤px 
-                                         (subst (λ k → supf0 s o< k) (sym (trans (cong supf0 (sym a=px)) cs01) ) ss<sp) fc where
-                                 s<spx : s o< supf0 px
-                                 s<spx = ZChain.supf-inject zc ss<sp 
-                                 spx≤px : supf0 px o≤ px
-                                 spx≤px = zc-b<x _ (ordtrans<-≤ spx<b b≤x)
-                             order : {s : Ordinal} {z1 : Ordinal} → supf0 s o< supf0 (supf0 px) →
-                                    FClosure A f (supf0 s) z1 → (z1 ≡ supf0 (supf0 px)) ∨ (z1 << supf0 (supf0 px))
-                             order {s} {z} s<u fc  = subst (λ k → (z ≡ k) ∨ ( z << k ) ) m=sa (MinSUP.x≤sup m (uz s<u fc) )
 
 
-                     cfcs1 : odef (UnionCF A f mf ay supf0 b) w
+                     cfcs1 : odef (UnionCF A f supf0 b) w
                      cfcs1 with trio< a px
                      ... | tri< a<px ¬b ¬c = cfcs2 where
                          sa<x : supf0 a o< x
                          sa<x = ordtrans<-≤ sa<b b≤x
-                         cfcs2 : odef (UnionCF A f mf ay supf0 b) w
+                         cfcs2 : odef (UnionCF A f supf0 b) w
                          cfcs2 with trio< (supf0 a) px
                          ... | tri< sa<x ¬b ¬c = chain-mono f mf ay (ZChain.supf zc) (ZChain.supf-mono zc) (o<→≤ px<b) 
                              ( ZChain.cfcs zc mf< a<px o≤-refl sa<x fc ) 
                          ... | tri> ¬a ¬b c = ⊥-elim ( ¬p<x<op ⟪ c , (zc-b<x _ sa<x)  ⟫ )
                          ... | tri≈ ¬a sa=px ¬c with trio< a px
-                         ... | tri< a<px ¬b ¬c = ⟪  A∋fc {A} _ f mf fc , ch-is-sup (supf0 a) sa<b cp fc1 ⟫ where
+                         ... | tri< a<px ¬b ¬c = ⟪  A∋fc {A} _ f mf fc , ? ⟫ where
                               cs01 : supf0 a ≡ supf0 (supf0 a)
                               cs01 =  sym ( ZChain.supf-idem zc mf< (zc-b<x _ (ordtrans<-≤ a<b b≤x)) (zc-b<x _ (ordtrans<-≤ sa<b b≤x)))  
                               fc1 : FClosure A f (supf0 (supf0 a)) w
                               fc1 = subst (λ k → FClosure A f k w) cs01 fc
-                              m : MinSUP A (UnionCF A f mf ay supf0 (supf0 a))
+                              m : MinSUP A (UnionCF A f supf0 (supf0 a))
                               m = ZChain.minsup zc (o≤-refl0 sa=px)
                               m=sa : MinSUP.sup m ≡ supf0 (supf0 a)
                               m=sa = begin 
                                     MinSUP.sup m ≡⟨ sym ( ZChain.supf-is-minsup zc (o≤-refl0 sa=px) )  ⟩ 
                                     supf0 (supf0 a)  ∎  where open ≡-Reasoning 
-                              cp : ChainP A f mf ay supf0 (supf0 a)
-                              cp = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) m=sa (MinSUP.x≤sup m ⟪  A∋fc _ f mf fc  , ch-init fc ⟫ )  
-                                ; order = order 
-                                ; supu=u = sym cs01 } where
-                                 uz : {s z1 : Ordinal } → supf0 s o< supf0 (supf0 a) → FClosure A f (supf0 s) z1 
-                                     → odef (UnionCF A f mf ay supf0 (supf0 a)) z1
-                                 uz {s} {z1} ss<sp fc = ZChain.cfcs zc mf< (ZChain.supf-inject zc ss<sp) 
-                                         (zc-b<x _ (ordtrans<-≤ sa<b b≤x)) ss<sa fc where
-                                    ss<sa : supf0 s o< supf0 a
-                                    ss<sa = subst (λ k → supf0 s o< k ) (sym cs01) ss<sp 
-                                 order : {s : Ordinal} {z1 : Ordinal} → supf0 s o< supf0 (supf0 a) →
-                                        FClosure A f (supf0 s) z1 → (z1 ≡ supf0 (supf0 a)) ∨ (z1 << supf0 (supf0 a))
-                                 order {s} {z} s<u fc  = subst (λ k → (z ≡ k) ∨ ( z << k ) ) m=sa (MinSUP.x≤sup m (uz s<u fc) )
                          ... | tri≈ ¬a a=px ¬c = cfcs0 a=px
                          ... | tri> ¬a ¬b c = ⊥-elim ( ¬p<x<op ⟪ c , (zc-b<x _ (ordtrans<-≤ a<b b≤x) )  ⟫ )
                      ... | tri≈ ¬a a=px ¬c = cfcs0 a=px
@@ -1368,26 +1164,12 @@
                       zc177 : supf0 z ≡ supf0 px
                       zc177 = ZChain.supfmax zc px<z  -- px o< z, px o< supf0 px
 
-                 zc11 : {z : Ordinal} → odef (UnionCF A f mf ay supf0 x) z → odef pchainpx z
-                 zc11 {z} ⟪ az , ch-init fc ⟫ = case1 ⟪ az , ch-init fc ⟫
-                 zc11 {z} ⟪ az , ch-is-sup u u<x is-sup fc ⟫ = zc21 fc where
-                    u≤px : u o≤ px
-                    u≤px = zc-b<x _ u<x
-                    zc21 : {z1 : Ordinal } → FClosure A f (supf0 u) z1 → odef pchainpx z1
-                    zc21 {z1} (fsuc z2 fc ) with zc21 fc
-                    ... | case1 ⟪ ua1 , ch-init fc₁ ⟫ = case1 ⟪ proj2 ( mf _ ua1)  , ch-init (fsuc _ fc₁)  ⟫
-                    ... | case1 ⟪ ua1 , ch-is-sup u u<x u1-is-sup fc₁ ⟫ = case1 ⟪ proj2 ( mf _ ua1)  , ch-is-sup u u<x u1-is-sup (fsuc _ fc₁) ⟫
-                    ... | case2 fc = case2 (fsuc _ fc)
-                    zc21 (init asp refl ) with trio< (supf0 u) (supf0 px) | inspect supf0 u
-                    ... | tri< a ¬b ¬c | _ = case1 ⟪ asp , ch-is-sup u u<px is-sup (init asp refl ) ⟫ where
-                        u<px :  u o< px
-                        u<px =  ZChain.supf-inject zc a
-                    ... | tri≈ ¬a b ¬c | _ = case2 (init (subst (λ k → odef A k) b (ZChain.asupf zc) ) (sym  b ))
-                    ... | tri> ¬a ¬b c | _ = ⊥-elim ( ¬p<x<op ⟪ ZChain.supf-inject zc c , subst (λ k → u o< k ) (sym (Oprev.oprev=x op)) u<x  ⟫ )
+                 zc11 : {z : Ordinal} → odef (UnionCF A f supf0 x) z → odef pchainpx z
+                 zc11 {z} ⟪ az , cp ⟫ = ? where
 
                  record STMP {z : Ordinal} (z≤x : z o≤ x ) : Set (Level.suc n) where
                      field
-                         tsup : MinSUP A (UnionCF A f mf ay supf0 z)
+                         tsup : MinSUP A (UnionCF A f supf0 z)
                          tsup=sup : supf0 z ≡ MinSUP.sup tsup
 
                  sup : {z : Ordinal} → (z≤x : z o≤ x ) → STMP z≤x
@@ -1400,7 +1182,7 @@
                      ... | case1 eq = eq
                      ... | case2 z<x = ⊥-elim (¬p<x<op ⟪ px<z , subst (λ k → z o< k ) (sym (Oprev.oprev=x op)) z<x ⟫ )
                      zc32 = ZChain.sup zc o≤-refl
-                     zc34 : ¬ (supf0 px ≡ px) → {w : HOD} → UnionCF A f mf ay supf0 z ∋ w → (w ≡ SUP.sup zc32) ∨ (w < SUP.sup zc32)
+                     zc34 : ¬ (supf0 px ≡ px) → {w : HOD} → UnionCF A f supf0 z ∋ w → (w ≡ SUP.sup zc32) ∨ (w < SUP.sup zc32)
                      zc34 ne {w} lt = ?
                      zc33 : supf0 z ≡ & (SUP.sup zc32)
                      zc33 = ? -- trans (sym (supfx (o≤-refl0 (sym zc30)))) ( ZChain.supf-is-minsup zc o≤-refl  )
@@ -1411,10 +1193,10 @@
                      ... | tri< a ¬b ¬c = zc36 ¬b
                      ... | tri> ¬a ¬b c = zc36 ¬b
                      ... | tri≈ ¬a b ¬c = record { tsup = ? ; tsup=sup = ?  } where
-                          zc37 : MinSUP A (UnionCF A f mf ay supf0 z)
+                          zc37 : MinSUP A (UnionCF A f supf0 z)
                           zc37 = record { sup = ? ; asm = ? ; x≤sup = ? ; minsup = ? }
                  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 supf0 b) supf0 ab ∧ (¬ HasPrev A (UnionCF A f 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 } , 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 } , proj2 is-sup ⟫
@@ -1489,14 +1271,14 @@
           ... | tri> ¬a ¬b c = spu
 
           pchain : HOD
-          pchain = UnionCF A f mf ay supf1 x
+          pchain = UnionCF A f supf1 x
 
           -- pchain ⊆ pchainx
 
           ptotal : IsTotalOrderSet pchain
           ptotal {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 supf1 ( (proj2 ca)) ( (proj2 cb))
+               uz01 = ? --  chain-total A f mf ay supf1 ( (proj2 ca)) ( (proj2 cb))
 
           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
@@ -1533,7 +1315,7 @@
           ... | tri> ¬a ¬b c = ?
 
           cfcs : (mf< : <-monotonic-f A f) {a b w : Ordinal } 
-                 → a o< b → b o≤ x →  supf1 a o< b → FClosure A f (supf1 a) w → odef (UnionCF A f mf ay supf1 b) w
+                 → a o< b → b o≤ x →  supf1 a o< b → FClosure A f (supf1 a) w → odef (UnionCF A f supf1 b) w
           cfcs mf< {a} {b} {w} a<b b≤x sa<b fc with osuc-≡< b≤x
           ... | case1 b=x with trio< a x 
           ... | tri< a<x ¬b ¬c = zc40 where
@@ -1557,37 +1339,11 @@
                sam<m = subst (λ k → k o< m ) (supf-unique A f mf ay zc42 (pzc (ob<x lim a<x)) (pzc (ob<x lim m<x)) (o<→≤ <-osuc)) ( omax-y _ _ )
                fcm : FClosure A f (ZChain.supf (pzc (ob<x lim m<x)) a) w
                fcm = subst (λ k → FClosure A f k w ) (zeq (ob<x lim a<x) (ob<x lim m<x) zc42 (o<→≤ <-osuc) ) fc
-               zcm : odef (UnionCF A f mf ay (ZChain.supf (pzc  (ob<x lim m<x))) (osuc (omax a sa))) w
+               zcm : odef (UnionCF A f (ZChain.supf (pzc  (ob<x lim m<x))) (osuc (omax a sa))) w
                zcm = ZChain.cfcs (pzc  (ob<x lim m<x)) mf< (o<→≤ (omax-x _ _)) o≤-refl (o<→≤ sam<m) fcm
-               zc40 : odef (UnionCF A f mf ay supf1 b) w
+               zc40 : odef (UnionCF A f supf1 b) w
                zc40 with ZChain.cfcs (pzc  (ob<x lim m<x)) mf< (o<→≤ (omax-x _ _)) o≤-refl (o<→≤ sam<m) fcm
-               ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 
-               ... | ⟪ az , ch-is-sup u u<x is-sup fc1 ⟫ = ⟪ az , ch-is-sup u u<b cp fc2 ⟫  where 
-                   zc55 : u o< osuc m
-                   zc55 = u<x
-                   u<b : u o< b 
-                   u<b = subst (λ k → u o< k ) (sym b=x) ( ordtrans u<x (ob<x lim m<x))
-                   fc1m : FClosure A f (ZChain.supf (pzc (ob<x lim m<x)) u) w
-                   fc1m = fc1
-                   fc1a : FClosure A f (ZChain.supf (pzc (ob<x lim a<x)) a) w
-                   fc1a = fc
-                   fc2 : FClosure A f (supf1 u) w
-                   fc2 = subst (λ k → FClosure A f k w) (trans (sym (zeq _ _ zc57 (o<→≤ <-osuc))) (sym (sf1=sf (ordtrans≤-< u<x m<x))) )  fc1 where
-                       zc57 : osuc u o≤ osuc m 
-                       zc57 = osucc u<x
-                   sb=sa : {a : Ordinal } → a o≤ m → supf1 a ≡ ZChain.supf (pzc (ob<x lim m<x)) a 
-                   sb=sa {a} a≤m = trans (sf1=sf (ordtrans≤-< a≤m m<x)) (zeq _ _ (osucc a≤m) (o<→≤ <-osuc))
-                   cp : ChainP A f mf ay supf1 u
-                   cp = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sym (sb=sa u<x)) (ChainP.fcy<sup is-sup fc )  
-                        ; order = order 
-                        ; supu=u = trans (sb=sa u<x ) (ChainP.supu=u is-sup)  } where
-                         order : {s : Ordinal} {z1 : Ordinal} → supf1 s o< supf1 u →
-                                FClosure A f (supf1 s) z1 → (z1 ≡ supf1 u) ∨ (z1 << supf1 u)
-                         order {s} {z} s<u fc  = subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sym (sb=sa u<x)) 
-                           (ChainP.order is-sup (subst₂ (λ j k → j o< k ) (sb=sa s≤m) (sb=sa u<x) s<u)  
-                              (subst (λ k → FClosure A f k z) (sb=sa s≤m ) fc )) where
-                              s≤m : s o≤ m 
-                              s≤m = ordtrans (supf-inject0 supf-mono  s<u ) u<x
+               ... | ⟪ az , cp ⟫ = ⟪ az , ? ⟫  
           ... | tri≈ ¬a b ¬c = ⊥-elim ( ¬a (ordtrans<-≤ a<b b≤x))
           ... | tri> ¬a ¬b c = ⊥-elim ( ¬a (ordtrans<-≤ a<b b≤x))
           cfcs mf< {a} {b} {w} a<b b≤x sa<b fc | case2 b<x = zc40 where
@@ -1597,26 +1353,14 @@
                fcb : FClosure A f (supfb a) w
                fcb = subst (λ k → FClosure A f k w) (sb=sa a<b) fc 
                --  supfb a o< b assures it is in Union b
-               zcb : odef (UnionCF A f mf ay supfb b) w
+               zcb : odef (UnionCF A f supfb b) w
                zcb = ZChain.cfcs (pzc (ob<x lim b<x)) mf< a<b (o<→≤ <-osuc) (subst (λ k → k o< b) (sb=sa a<b) sa<b) fcb
-               zc40 : odef (UnionCF A f mf ay supf1 b) w
+               zc40 : odef (UnionCF A f supf1 b) w
                zc40 with zcb
-               ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 
-               ... | ⟪ az , ch-is-sup u u<x is-sup fc1 ⟫ = ⟪ az , ch-is-sup u u<x cp (subst (λ k → FClosure A f k w) (sym (sb=sa u<x)) fc1 ) ⟫ where
-                   cp : ChainP A f mf ay supf1 u
-                   cp = record { fcy<sup = λ {z} fc → subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sym (sb=sa u<x)) (ChainP.fcy<sup is-sup fc )  
-                        ; order = order
-                        ; supu=u = trans (sb=sa u<x) (ChainP.supu=u is-sup)  } where
-                         order : {s : Ordinal} {z1 : Ordinal} → supf1 s o< supf1 u →
-                                FClosure A f (supf1 s) z1 → (z1 ≡ supf1 u) ∨ (z1 << supf1 u)
-                         order {s} {z} s<u fc  = subst (λ k → (z ≡ k) ∨ ( z << k ) ) (sym (sb=sa u<x)) 
-                           (ChainP.order is-sup (subst₂ (λ j k → j o< k ) (sb=sa s<b) (sb=sa u<x) s<u)  
-                              (subst (λ k → FClosure A f k z) (sb=sa s<b ) fc )) where
-                              s<b : s o< b 
-                              s<b = ordtrans (supf-inject0 supf-mono  s<u ) u<x
+               ... | ⟪ az , cp  ⟫ = ⟪ az , ? ⟫ 
 
           sup=u : {b : Ordinal} (ab : odef A b) →
-                b o≤ x → IsMinSUP A (UnionCF A f mf ay supf1 b) supf1 ab ∧ (¬ HasPrev A (UnionCF A f mf ay supf1 b) f b ) → supf1 b ≡ b
+                b o≤ x → IsMinSUP A (UnionCF A f supf1 b) supf1 ab ∧ (¬ HasPrev A (UnionCF A f supf1 b) f b ) → supf1 b ≡ b
           sup=u {b} ab b≤x is-sup with osuc-≡< b≤x
           ... | case1 b=x = ? where
                  zc31 : spu o≤ b
@@ -1633,8 +1377,8 @@
 
      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) (ZChain.f-total zc)
+         → MinSUP A (UnionCF A f (ZChain.supf zc) x)
+     msp0 f mf {x} ay zc = minsupP (UnionCF A f (ZChain.supf zc) x) (ZChain.chain⊆A zc) (ZChain.f-total zc)
 
      fixpoint :  ( f : Ordinal → Ordinal ) → (mf : ≤-monotonic-f A f ) (mf< : <-monotonic-f A f )  (zc : ZChain A f mf as0 (& A) )
             → (sp1 : MinSUP A (ZChain.chain zc))
@@ -1647,7 +1391,7 @@
            asp : odef A sp
            asp = MinSUP.asm sp1
            z10 :  {a b : Ordinal } → (ca : odef chain a ) → b o< (& A) → (ab : odef A b )
-              →  HasPrev A chain f b  ∨  IsSUP A (UnionCF A f mf as0 (ZChain.supf zc) b) ab
+              →  HasPrev A chain f b  ∨  IsSUP A (UnionCF A f (ZChain.supf zc) b) ab
               → * a < * b  → odef chain b
            z10 = ZChain1.is-max (SZ1 f mf mf< as0 zc (& A) o≤-refl )
            z22 : sp o< & A
@@ -1660,9 +1404,9 @@
                z13 with MinSUP.x≤sup sp1 ( ZChain.chain∋init zc )
                ... | case1 eq = ⊥-elim ( ne eq )
                ... | case2 lt = lt
-               z19 : IsSUP A (UnionCF A f mf as0 (ZChain.supf zc) sp) asp
+               z19 : IsSUP A (UnionCF A f (ZChain.supf zc) sp) asp
                z19 = record {   x≤sup = z20 }  where
-                   z20 : {y : Ordinal} → odef (UnionCF A f mf as0 (ZChain.supf zc) sp) y → (y ≡ sp) ∨ (y << sp)
+                   z20 : {y : Ordinal} → odef (UnionCF A f (ZChain.supf zc) sp) y → (y ≡ sp) ∨ (y << sp)
                    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 )