changeset 1034:84881efe649b

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 01 Dec 2022 18:00:44 +0900
parents 2da8dcbb0825
children 2144ef00cab9
files src/zorn.agda
diffstat 1 files changed, 64 insertions(+), 95 deletions(-) [+]
line wrap: on
line diff
--- a/src/zorn.agda	Thu Dec 01 11:31:15 2022 +0900
+++ b/src/zorn.agda	Thu Dec 01 18:00:44 2022 +0900
@@ -514,7 +514,12 @@
                  supfa x ∎ ) a ) where 
                     open o≤-Reasoning O
                     z53 : {z : Ordinal } →  odef (UnionCF A f ay (ZChain.supf zb) x) z →  odef (UnionCF A f ay (ZChain.supf za) x) z
-                    z53 {z} ⟪ as , cp ⟫ =  ⟪ as , ?  ⟫ 
+                    z53 ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫ 
+                    z53 {z} ⟪ as , ch-is-sup u u<x su=u fc ⟫ = ⟪ as , ch-is-sup u u<x (trans ua=ub su=u) z55 ⟫ where
+                        ua=ub : supfa u ≡ supfb u
+                        ua=ub = prev u u<x (ordtrans u<x x≤xa )
+                        z55 : FClosure A f (ZChain.supf za u) z
+                        z55 = subst (λ k → FClosure A f k z ) (sym ua=ub) fc
            ... | tri> ¬a ¬b c = ⊥-elim ( o≤> (
                begin
                  supfa x  ≡⟨ sax=spa ⟩
@@ -523,17 +528,12 @@
                  supfb x ∎ ) c ) where 
                     open o≤-Reasoning O
                     z53 : {z : Ordinal } →  odef (UnionCF A f ay (ZChain.supf za) x) z →  odef (UnionCF A f ay (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 ay supf0 z ≡ UnionCF A f ay 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 ∧ ? → odef A x ∧ ?
-      ueq← {z} ⟪ ab , cp ⟫ = ⟪ ab , ? ⟫ 
-      ueq→  : {x : Ordinal} → odef A x ∧ ? → odef A x ∧ ?
-      ueq→ {z} ⟪ ab , cp ⟫ = ⟪ ab , ? ⟫ 
+                    z53 ⟪ as , ch-init fc ⟫ = ⟪ as , ch-init fc ⟫ 
+                    z53 {z} ⟪ as , ch-is-sup u u<x su=u fc ⟫ =  ⟪ as , ch-is-sup u u<x (trans ub=ua su=u) z55  ⟫ where
+                        ub=ua : supfb u ≡ supfa u
+                        ub=ua = sym ( prev u u<x (ordtrans u<x x≤xa ))
+                        z55 : FClosure A f (ZChain.supf zb u) z
+                        z55 = subst (λ k → FClosure A f k z ) (sym ub=ua) fc
 
 Zorn-lemma : { A : HOD }
     → o∅ o< & A
@@ -607,9 +607,9 @@
              S = supP B  B⊆A total
              s1 = & (SUP.sup S)
              m05 : {w : Ordinal } → odef B w → (w ≡ s1 ) ∨ (w << s1 )
-             m05 {w} bw with SUP.x≤sup S ? -- ? (subst (λ k → odef B k) (sym &iso) bw )
-             ... | case1 eq = case1 ( subst₂ (λ j k → j ≡ k ) &iso refl ?) -- (cong (&) eq) )
-             ... | case2 lt = case2 ? -- ( subst (λ k → _ < k ) (sym *iso) lt )
+             m05 {w} bw with SUP.x≤sup S bw 
+             ... | case1 eq = case1 ( subst₂ (λ j k → j ≡ k ) &iso refl (trans &iso eq)) 
+             ... | case2 lt = case2 lt 
          m02 : MinSUP A B
          m02 = dont-or (m00 (& A)) m03
 
@@ -652,7 +652,10 @@
             → HasPrev A (UnionCF A f ay (ZChain.supf zc) x) f b
             → * a < * b → odef (UnionCF A f ay (ZChain.supf zc) x) b
         is-max-hp x {a} {b} ua ab has-prev a<b with HasPrev.ay has-prev
-        ... | ⟪ ab0 , cp ⟫ = ⟪ ab , ? ⟫
+        ... | ⟪ 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 su=u fc ⟫ = ⟪ ab , subst (λ k → UChain ay x k )
+                      (sym (HasPrev.x=fy has-prev)) ( ch-is-sup u u<x su=u (fsuc _ fc))  ⟫
+
 
         supf = ZChain.supf zc
 
@@ -662,7 +665,7 @@
                px = Oprev.oprev op
                is-max :  {a : Ordinal} {b : Ordinal} → odef (UnionCF A f ay supf x) a →
                   b o< x → (ab : odef A b) →
-                  HasPrev A (UnionCF A f ay supf x) f b  ∨ IsSUP A (UnionCF A f ay supf b) ? →
+                  HasPrev A (UnionCF A f ay supf x) f b  ∨ IsSUP A (UnionCF A f ay supf b) b →
                   * a < * b → odef (UnionCF A f 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
@@ -674,7 +677,7 @@
                   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 ⟫
+                  m05 =  ZChain.sup=u zc ab (o<→≤ (z09 ab) ) ⟪ record { ax = ab ; x≤sup = λ {z} uz → IsSUP.x≤sup (proj2 is-sup) uz  }  , m04 ⟫
                   m10 : odef (UnionCF A f ay 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
@@ -690,7 +693,7 @@
                           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 ⟫
+                          m05 =  ZChain.sup=u zc ab (o<→≤ (z09 ab) ) ⟪ record { ax = ab ; 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 ay supf x) z
@@ -703,8 +706,8 @@
                   * a < * b → odef (UnionCF A f 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
-               is-max {a} {b} ua b<x ab P a<b | case2 is-sup with IsSUP.x≤sup (proj2 is-sup) (ZChain.chain∋init zc ? )
-               ... | case1 b=y = ⟪ subst (λ k → odef A k ) b=y ay , ?  ⟫
+               is-max {a} {b} ua b<x ab P a<b | case2 is-sup with IsSUP.x≤sup (proj2 is-sup) (ZChain.chain∋init zc (ordtrans b<x x≤A) )
+               ... | 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 with osuc-≡< (ZChain.supf-mono zc (o<→≤ b<x))
                ... | case2 sb<sx = m10 where
                   m09 : b o< & A
@@ -802,28 +805,22 @@
           --
 
           pchainpx : HOD
-          pchainpx = record { od = record { def = λ z →  (odef A z ∧ ? )
+          pchainpx = record { od = record { def = λ z →  (odef A z  ∧ UChain  ay px z )
                 ∨ FClosure A f (supf0 px) z  } ; odmax = & A ; <odmax = zc00 } where
-               zc00 : {z : Ordinal } → (odef A z ∧ ? ) ∨ FClosure A f (supf0 px) z → z o< & A
+               zc00 : {z : Ordinal } → (odef A z ∧ UChain ay px 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 ∧ ? → FClosure A f (supf0 px) b → a ≤ b
+          zc02 : { a b : Ordinal } → odef A a ∧ UChain ay px 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
              zc05 : {b : Ordinal } → FClosure A f (supf0 px) b → a ≤ b
              zc05 (fsuc b1 fb ) with proj1 ( mf b1 (A∋fc (supf0 px) f mf fb ))
-             ... | case1 eq = subst (λ k → a ≤ k ) (subst₂ (λ j k → j ≡ k) &iso &iso ?) (zc05 fb)
+             ... | case1 eq = subst (λ k → a ≤ k ) eq (zc05 fb)
              ... | case2 lt = ≤-ftrans (zc05 fb) (case2 lt)
-             zc05 (init b1 refl) with MinSUP.x≤sup (ZChain.minsup zc o≤-refl)
-                (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 )
+             zc05 (init b1 refl) = MinSUP.x≤sup (ZChain.minsup zc o≤-refl) ca
 
           ptotal : IsTotalOrderSet pchainpx
-          ptotal (case1 a) (case1 b) =  subst₂ (λ j k → Tri (j < k) (j ≡ k) (k < j)) *iso *iso
-                   ?
+          ptotal (case1 a) (case1 b) =  ZChain.f-total zc a 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
@@ -848,17 +845,23 @@
           sup1 = minsupP pchainpx pcha ptotal
           sp1 = MinSUP.sup sup1
 
-          sfpx≤sp1 : supf0 px ≤ sp1
-          sfpx≤sp1 = MinSUP.x≤sup sup1 (case2 (init (ZChain.asupf zc {px}) refl ))
-
           --
           --     supf0 px o≤ sp1
           --
 
+          sfpx≤sp1 : supf0 px ≤ sp1
+          sfpx≤sp1 = MinSUP.x≤sup sup1 (case2 (init (ZChain.asupf zc {px}) refl ))
+
+          m13 : supf0 px o≤ sp1
+          m13 = IsMinSUP.minsup (ZChain.is-minsup zc o≤-refl ) (MinSUP.as sup1)  m14 where
+             m14 : {z : Ordinal} → odef (UnionCF A f ay (ZChain.supf zc) px) z → (z ≡ sp1) ∨ (z << sp1)
+             m14 {z} ⟪ as , ch-init fc ⟫ = ?
+             m14 {z} ⟪ as , ch-is-sup u u<x su=u fc ⟫ = ? 
+
           zc41 : ZChain A f mf ay x
           zc41 with zc43 x sp1
           zc41 | (case2 sp≤x ) =  record { supf = supf1 ; sup=u = ? ; asupf = asupf1 ; supf-mono = supf1-mono ; order = ?
-              ; supfmax = ? ; minsup = ? ; supf-is-minsup = ? ; cfcs = cfcs  }  where
+              ; supfmax = ? ; is-minsup = ? ;  cfcs = cfcs  }  where
 
                  supf1 : Ordinal → Ordinal
                  supf1 z with trio< z px
@@ -937,7 +940,7 @@
                       --       supf0 a ≡ supf0 (supf0 a) ≡ supf0 px o< x
                       z50 : odef (UnionCF A f ay supf1 b) w
                       z50 with osuc-≡< px≤sa
-                      ... | case1 px=sa = ⟪ A∋fc {A} _ f mf fc , ?  ⟫ where
+                      ... | case1 px=sa = ⟪ A∋fc {A} _ f mf fc , cp  ⟫ 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
@@ -955,45 +958,14 @@
                                 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 ay supf0 px)
-                          m = ZChain.minsup zc o≤-refl
-                          m=spx : MinSUP.sup m ≡ supf1 (supf0 px)
-                          m=spx = begin 
-                                MinSUP.sup m ≡⟨ sym ( ZChain.supf-is-minsup zc o≤-refl)  ⟩ 
-                                supf0 px ≡⟨ cong supf0 px=sa  ⟩ 
-                                supf0 (supf0 a) ≡⟨ sym (sf1=sf0 sa≤px)  ⟩
-                                supf1 (supf0 a) ≡⟨ cong supf1 (sym spx=sa)  ⟩
-                                supf1 (supf0 px)  ∎  where open ≡-Reasoning 
                           z53 : supf1 (supf0 px) ≡ supf0 px
                           z53 = begin
                                 supf1 (supf0 px)  ≡⟨ cong supf1 spx=sa ⟩ 
                                 supf1 (supf0 a)  ≡⟨ sf1=sf0 sa≤px ⟩ 
                                 supf0 (supf0 a)  ≡⟨ sym ( cong supf0 px=sa ) ⟩ 
                                 supf0 px  ∎  where open ≡-Reasoning 
-                          cp : ?
-                          cp = ? where
-                             uz : {s z1 : Ordinal } → supf1 s o< supf1 (supf0 px) → FClosure A f (supf1 s) z1 → odef (UnionCF A f ay 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
-                                s<spx = supf-inject0 supf1-mono ss<sp
-                                s<px : s o< px
-                                s<px = osucprev ( begin
-                                     osuc s  ≤⟨  osucc s<spx   ⟩  
-                                     supf0 px  ≡⟨ spx=sa  ⟩ 
-                                     supf0 a ≡⟨ sym px=sa  ⟩ 
-                                     px ∎ )   where open o≤-Reasoning O
-                                ss<px : supf0 s o< px
-                                ss<px = osucprev ( begin
-                                     osuc (supf0 s)  ≡⟨ cong osuc (sym (sf1=sf0 (o<→≤ s<px)))  ⟩ 
-                                     osuc (supf1 s)  ≤⟨ osucc ss<sp  ⟩ 
-                                     supf1 (supf0 px)  ≡⟨ sym z52  ⟩ 
-                                     supf1 a  ≡⟨ sf1=sf0 a≤px  ⟩ 
-                                     supf0 a  ≡⟨ sym px=sa  ⟩ 
-                                     px ∎ )   where open o≤-Reasoning O
-                             order : {s : Ordinal} {z1 : Ordinal} → supf1 s o< supf1 (supf0 px) →
-                                    FClosure A f (supf1 s) z1 → (z1 ≡ supf1 (supf0 px)) ∨ (z1 << supf1 (supf0 px))
-                             order {s} {z} s<u fc  = subst (λ k → (z ≡ k) ∨ ( z << k ) ) m=spx (MinSUP.x≤sup m (uz s<u fc) )
+                          cp : UChain ay b w
+                          cp = ch-is-sup (supf0 px) z51 z53 (subst (λ k → FClosure A f k w) z52 fc) 
                       ... | case2 px<sa = ⊥-elim ( ¬p<x<op ⟪ px<sa , subst₂ (λ j k → j o< k ) (sf1=sf0 a≤px) (sym (Oprev.oprev=x op)) z53 ⟫  ) where
                           z53  : supf1 a o< x
                           z53  = ordtrans<-≤ sa<b b≤x
@@ -1002,9 +974,19 @@
                       z50 : odef (UnionCF A f ay 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 , cp ⟫ = ⟪ az , ?  ⟫  -- u o< px → u o< b ?
+                      ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 
+                      ... | ⟪ az , ch-is-sup u u<b su=u fc ⟫ = ⟪ az , ch-is-sup u u<b (trans (sym (sf=eq u<x)) su=u) (fcpu fc u≤px )  ⟫ where
+                           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 
                       z50 | case1 eq with ZChain.cfcs zc mf< a<px o≤-refl sa<px fc  
-                      ... | ⟪ az , cp ⟫ = ⟪ az , ? ⟫  -- u o< px → u o< b ?
+                      ... | ⟪ az , ch-init fc ⟫ = ⟪ az , ch-init fc ⟫ 
+                      ... | ⟪ az , ch-is-sup u u<px su=u fc ⟫ = ⟪ az , ch-is-sup u u<b (trans (sym (sf=eq u<x)) su=u) (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 )
                  ... | tri≈ ¬a a=px ¬c = csupf1 where
                       -- a ≡ px , b ≡ x, sp o≤ x 
                       px<b : px o< b
@@ -1020,7 +1002,7 @@
                       z53 = A∋fc {A} _ f mf fc
                       csupf1 : odef (UnionCF A f ay supf1 b) w
                       csupf1 with trio< (supf0 px) x
-                      ... | tri< sfpx<x ¬b ¬c = ⟪ z53 , ? ⟫  where
+                      ... | tri< sfpx<x ¬b ¬c = ⟪ z53 , ch-is-sup spx (subst (λ k → spx o< k) (sym b=x) sfpx<x) z52 fc1 ⟫  where
                           spx = supf0 px
                           spx≤px : supf0 px o≤ px
                           spx≤px = zc-b<x _ sfpx<x
@@ -1028,39 +1010,26 @@
                           z52 = trans (sf1=sf0 (zc-b<x _ sfpx<x)) ( ZChain.supf-idem zc mf< o≤-refl (zc-b<x _ sfpx<x ) )
                           fc1 : FClosure A f (supf1 spx) w
                           fc1 = subst (λ k → FClosure A f k w ) (trans (cong supf0 a=px) (sym z52) ) fc
-                          order : {s z1 : Ordinal} → supf1 s o< supf1 spx → FClosure A f (supf1 s) z1 → (z1 ≡ supf1 spx) ∨ (z1 << supf1 spx)
-                          order {s} {z1} ss<spx fcs = subst (λ k → (z1 ≡ k) ∨ (z1 << k )) 
-                                   (trans (sym (ZChain.supf-is-minsup zc spx≤px )) (sym (sf1=sf0 spx≤px) ) )
-                                   (MinSUP.x≤sup (ZChain.minsup zc spx≤px) (ZChain.cfcs zc mf< (supf-inject0 supf1-mono ss<spx) 
-                                       spx≤px ss0<spx (fcup fcs (ordtrans (supf-inject0 supf1-mono ss<spx) spx≤px ) ))) where
-                                          ss0<spx : supf0 s o< spx
-                                          ss0<spx = osucprev ( begin
-                                            osuc (supf0 s)  ≡⟨ cong osuc (sym (sf1=sf0 ( begin
-                                               s <⟨ supf-inject0 supf1-mono ss<spx ⟩
-                                               supf0 px  ≤⟨ spx≤px ⟩
-                                               px ∎ ) )) ⟩
-                                            osuc (supf1 s)  ≤⟨ osucc ss<spx ⟩
-                                            supf1 spx  ≡⟨ sf1=sf0 spx≤px  ⟩
-                                            supf0 spx  ≤⟨ ZChain.supf-mono zc spx≤px ⟩
-                                            supf0 px  ∎  ) where open o≤-Reasoning O
                       ... | 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
-                          m12 with osuc-≡< ? -- sfpx≤sp1
+                          m12 with osuc-≡< m13
                           ... | case1 eq = eq
-                          ... | case2 lt = ⊥-elim ( o≤> sp≤x (subst (λ k → k o< sp1) spx=x lt )) -- supf0 px o< sp1 , x o< sp1
+                          ... | case2 lt = ⊥-elim ( o≤> sp≤x (subst (λ k → k o< sp1) spx=x lt )) 
                           m10 : f (supf0 px) ≡ supf0 px
                           m10 = fc-stop A f mf (ZChain.asupf zc) m11 m12 where
                               m11 : {z : Ordinal} → FClosure A f (supf0 px) z → (z ≡ sp1) ∨ (z << sp1)
                               m11 {z} fc = MinSUP.x≤sup sup1 (case2 fc)  
-                      ... | tri> ¬a ¬b c = ⊥-elim ( o<¬≡ refl (ordtrans<-≤ c (OrdTrans ? sp≤x)))   -- x o< supf0 px o≤ sp1 ≤ x
+                      ... | tri> ¬a ¬b c = ⊥-elim ( o<¬≡ refl (ordtrans<-≤ c (OrdTrans m13 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 ay supf1 x) z → odef pchainpx z
-                 zc11 {z} ⟪ az , cp ⟫ = zc21 ? where
-                    zc21 : {z1 : Ordinal } → FClosure A f (supf1 ?) z1 → odef pchainpx z1
+                 zc11 {z} ⟪ az , ch-init fc ⟫ = case1 ⟪ az , ch-init fc ⟫
+                 zc11 {z} ⟪ az , ch-is-sup u u<x su=u fc ⟫ = zc21 fc where
+                    zc21 : {z1 : Ordinal } → FClosure A f (supf1 u) z1 → odef pchainpx z1
                     zc21 {z1} (fsuc z2 fc ) with zc21 fc
-                    ... | case1 ⟪ ua1 , cp  ⟫ = case1 ⟪ proj2 ( mf _ ua1)  , ? ⟫
+                    ... | case1 ⟪ ua1 , ch-init fc₁ ⟫ = case1 ⟪ proj2 ( mf _ ua1)  , ch-init (fsuc _ fc₁)  ⟫
+                    ... | case1 ⟪ ua1 ,  ch-is-sup u u<x su=u fc₁   ⟫ = case1 ⟪ proj2 ( mf _ ua1)  ,  ch-is-sup u u<x su=u (fsuc _ fc₁) ⟫
                     ... | case2 fc = case2 (fsuc _ fc)
                     zc21 (init asp refl ) = ?