changeset 1487:1925debf28bb

Tychonoff start
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 01 Jul 2024 16:37:12 +0900
parents 49c3ef1e9b4f
children 33116eb3abd1
files src/Tychonoff.agda
diffstat 1 files changed, 117 insertions(+), 83 deletions(-) [+]
line wrap: on
line diff
--- a/src/Tychonoff.agda	Mon Jul 01 16:07:57 2024 +0900
+++ b/src/Tychonoff.agda	Mon Jul 01 16:37:12 2024 +0900
@@ -1,40 +1,66 @@
-{-# OPTIONS --allow-unsolved-metas #-}
+{-# OPTIONS --cubical-compatible --safe #-}
+open import Level
+open import Ordinals
+open import logic
+open import Relation.Nullary
+
 open import Level
 open import Ordinals
-module Tychonoff {n : Level } (O : Ordinals {n})   where
+import HODBase
+import OD
+open import Relation.Nullary
+module Tychonoff {n : Level } (O : Ordinals {n})   (HODAxiom : HODBase.ODAxiom O)  (ho< : OD.ODAxiom-ho< O HODAxiom )
+       (AC : OD.AxiomOfChoice O HODAxiom ) where
+
+
+open import  Relation.Binary.PropositionalEquality hiding ( [_] )
+open import Relation.Binary.Definitions
+
+open import Data.Empty
+
+import OrdUtil
+
+open Ordinals.Ordinals  O
+open Ordinals.IsOrdinals isOrdinal
+import ODUtil
 
 open import logic
+open import nat
+
+open OrdUtil O
+open ODUtil O HODAxiom  ho<
+
 open _∧_
 open _∨_
 open Bool
 
-import OD
-open import Relation.Nullary
-open import Data.Empty
-open import Relation.Binary.Core
-open import Relation.Binary.Definitions
+open  HODBase._==_
+
+open HODBase.ODAxiom HODAxiom  
+open OD O HODAxiom
+
+open HODBase.HOD
+
+open AxiomOfChoice AC
+open import ODC O HODAxiom AC as ODC
+
+open import Level
+open import Ordinals
+
+open import Relation.Nullary 
+-- open import Relation.Binary hiding ( _⇔_ )
+open import Data.Empty 
 open import Relation.Binary.PropositionalEquality
-import BAlgebra
-open BAlgebra O
-open inOrdinal O
-open OD O
-open OD.OD
-open ODAxiom odAxiom
-import OrdUtil
-import ODUtil
-open Ordinals.Ordinals  O
-open Ordinals.IsOrdinals isOrdinal
--- open Ordinals.IsNext isNext
-open OrdUtil O
-open ODUtil O
+open import Data.Nat renaming ( zero to Zero ; suc to Suc ;  ℕ to Nat ; _⊔_ to _n⊔_ ) 
+import BAlgebra 
 
-import ODC
-open ODC O
+open import ZProduct O HODAxiom ho<
+open import filter O HODAxiom ho< AC
+open import filter-util O HODAxiom ho< AC
 
-open import filter O
-open import filter-util O
-open import ZProduct O
-open import Topology O
+import Relation.Binary.Reasoning.Setoid as EqHOD
+
+open import Topology O HODAxiom ho< AC
 
 open Filter
 open Topology
@@ -108,17 +134,17 @@
    --   if 0 < X then 0 < x ∧ P ∋ xfrom fip
    --   if 0 ≡ X then ¬ odef X x
    fip03 {X} CX fip {x} xx with trio< o∅ X
-   ... | tri< 0<X ¬b ¬c = ⊥-elim ( ¬∅∋ (subst₂ (λ j k → odef j k ) (trans (trans (sym *iso) (cong (*) P=0)) o∅≡od∅ ) (sym &iso)
-        ( cs⊆L TP (subst (λ k → odef (CS TP) k ) (sym &iso) (CX xx))  xe ))) where
+   ... | tri< 0<X ¬b ¬c = ? where -- ⊥-elim ( ¬∅∋ (subst₂ (λ j k → odef j k ) (trans (trans (sym *iso) (cong (*) P=0)) o∅≡od∅ ) (sym &iso)
+        -- ( cs⊆L TP (subst (λ k → odef (CS TP) k ) (sym &iso) (CX xx))  xe ))) where
       0<x : o∅ o< x
       0<x = fip (gi xx )
       e : HOD  -- we have an element of x
-      e = ODC.minimal O (* x) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<x) )
+      e = minimal (* x) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<x) )
       xe : odef (* x) (& e)
-      xe = ODC.x∋minimal O (* x) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<x) )
+      xe = x∋minimal (* x) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<x) )
    ... | tri≈ ¬a 0=X ¬c = ⊥-elim ( ¬∅∋ (subst₂ (λ j k → odef j k ) ( begin
            * X ≡⟨ cong (*) (sym 0=X) ⟩
-           * o∅ ≡⟨  o∅≡od∅ ⟩
+           * o∅ ≡⟨ ? ⟩ --  o∅≡od∅ ⟩
            od∅ ∎ ) (sym &iso) xx ) ) where open ≡-Reasoning
    ... | tri> ¬a ¬b c = ⊥-elim ( ¬x<0 c )
 ... | tri> ¬a ¬b 0<P = record { limit = λ CSX fip → limit CSX fip ; is-limit =  uf01 } where
@@ -131,22 +157,22 @@
      N⊆PP CSX fp nx b xb  = FBase.u⊆P nx xb
      -- filter base is not empty,  it is necessary to maximize fip filter 
      nc : {X : Ordinal} → o∅ o< X → (CSX : * X ⊆ CS TP) → (fip : fip CSX) → HOD
-     nc {X} 0<X CSX fip = ODC.minimal O (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) ) -- an element of X
+     nc {X} 0<X CSX fip = minimal (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) ) -- an element of X
      N∋nc :{X : Ordinal} → (0<X : o∅ o< X) → (CSX : * X ⊆ CS TP)
         → (fip : fip CSX) → odef (N CSX fip) (& (nc 0<X CSX fip) )
      N∋nc {X} 0<X CSX fip = record { b = X ; x =  & e ;  b⊆X = λ x → x ; sb = gi Xe ; u⊆P = nn02 ; x⊆u = λ x → x } where
           e : HOD  -- we have an element of X
-          e = ODC.minimal O (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) )
+          e = minimal (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) )
           Xe : odef (* X) (& e)
-          Xe = ODC.x∋minimal O (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) )
-          nn01 = ODC.minimal O (* (& e)) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) (fip (gi Xe))) )
+          Xe = x∋minimal (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) )
+          nn01 = minimal (* (& e)) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) (fip (gi Xe))) )
           nn02 : * (& (nc 0<X CSX fip)) ⊆ P
-          nn02 = subst (λ k → k ⊆ P ) (sym *iso) (cs⊆L TP (CSX Xe ) )
+          nn02 = ? -- subst (λ k → k ⊆ P ) (sym *iso) (cs⊆L TP (CSX Xe ) )
 
      0<PP : o∅ o< & (Power P)     -- Power P contaisn od∅, so it is not empty
      0<PP = subst (λ k → k o< & (Power P)) &iso ( c<→o< (subst (λ k → odef (Power P) k) (sym &iso) nn00 )) where
           nn00 : odef (Power P) o∅
-          nn00 x lt with subst (λ k → odef k x) o∅≡od∅ lt
+          nn00 x lt with subst (λ k → odef k x) ? lt -- o∅≡od∅ lt
           ... | x<0 = ⊥-elim ( ¬x<0 x<0)
      --
      -- FIP defines a filter
@@ -155,32 +181,33 @@
      F {X} CSX fp = record { filter = N CSX fp ; f⊆L = N⊆PP CSX fp ; filter1 = f1 ; filter2 = f2 } where
          f1 :  {p q : HOD} → Power P ∋ q → N CSX fp ∋ p → p ⊆ q → N CSX fp ∋ q
          f1 {p} {q} Xq record { b = b ; x = x ; b⊆X = b⊆X ; sb = sb ; u⊆P = Xp ; x⊆u = x⊆p } p⊆q =
-                       record { b = b ; x = x ; b⊆X = b⊆X ; sb = sb ; u⊆P = subst (λ k → k ⊆ P) (sym *iso) f10 ; x⊆u = λ {z} xp →
-                            subst (λ k → odef k z) (sym *iso) (p⊆q (subst (λ k → odef k z) *iso (x⊆p xp)))  } where
+                       record { b = b ; x = x ; b⊆X = b⊆X ; sb = sb ; u⊆P = ? -- subst (λ k → k ⊆ P) (sym *iso) f10 
+                          ; x⊆u = λ {z} xp → ? } where
+                            -- subst (λ k → odef k z) (sym *iso) (p⊆q (subst (λ k → odef k z) *iso (x⊆p xp)))  } where
               f10 : q ⊆ P
               f10 {x} qx = subst (λ k → odef P k) &iso (power→ P _ Xq (subst (λ k → odef q k) (sym &iso) qx  ))
          f2 : {p q : HOD} → N CSX fp ∋ p → N CSX fp ∋ q → Power P ∋ (p ∩ q) → N CSX fp ∋ (p ∩ q)
          f2 {p} {q} Np Nq Xpq = record { b = & Np+Nq ; x = & xp∧xq ; b⊆X = f20 ; sb = sbpq ; u⊆P = p∩q⊆p ; x⊆u = f22 } where
               p∩q⊆p : * (& (p ∩ q)) ⊆ P
-              p∩q⊆p {x} pqx = subst (λ k → odef P k) &iso (power→ P _ Xpq (subst₂ (λ j k → odef j k ) *iso (sym &iso) pqx ))
+              p∩q⊆p {x} pqx = ? -- subst (λ k → odef P k) &iso (power→ P _ Xpq (subst₂ (λ j k → odef j k ) *iso (sym &iso) pqx ))
               Np+Nq = * (FBase.b Np) ∪ * (FBase.b Nq)
               xp∧xq = * (FBase.x Np) ∩ * (FBase.x Nq)
               sbpq : Subbase (* (& Np+Nq)) (& xp∧xq)
-              sbpq = subst₂ (λ j k → Subbase j k ) (sym *iso) refl (  g∩ (sb⊆ case1 (FBase.sb Np)) (sb⊆ case2 (FBase.sb Nq)))
+              sbpq = ? -- subst₂ (λ j k → Subbase j k ) (sym *iso) refl (  g∩ (sb⊆ case1 (FBase.sb Np)) (sb⊆ case2 (FBase.sb Nq)))
               f20 : * (& Np+Nq) ⊆ * X
-              f20 {x} npq with subst (λ k → odef k x) *iso npq
+              f20 {x} npq with eq→ *iso npq
               ... | case1 np = FBase.b⊆X Np np
               ... | case2 nq = FBase.b⊆X Nq nq
               f22 : * (& xp∧xq) ⊆ * (& (p ∩ q))
-              f22 = subst₂ ( λ j k → j ⊆ k ) (sym *iso) (sym *iso) (λ {w} xpq
-                 → ⟪ subst (λ k → odef k w) *iso ( FBase.x⊆u Np (proj1 xpq)) ,  subst (λ k → odef k w) *iso ( FBase.x⊆u Nq (proj2 xpq)) ⟫ )
+              f22 = ? -- subst₂ ( λ j k → j ⊆ k ) (sym *iso) (sym *iso) (λ {w} xpq
+                 -- → ⟪ subst (λ k → odef k w) *iso ( FBase.x⊆u Np (proj1 xpq)) ,  subst (λ k → odef k w) *iso ( FBase.x⊆u Nq (proj2 xpq)) ⟫ )
      --
      -- it contains no empty sets becase it is a finite intersection ( Subbase (* X) x )
      --
      proper : {X : Ordinal} → (CSX : * X ⊆ CS TP) → (fip : fip {X} CSX) → ¬ (N CSX fip ∋ od∅)
      proper {X} CSX fip record { b = b ; x = x ; b⊆X = b⊆X ; sb = sb ; u⊆P = u⊆P ; x⊆u = x⊆u } = o≤> x≤0 (fip (fp00 _ _ b⊆X sb)) where
           x≤0 : x o< osuc  o∅
-          x≤0 = subst₂ (λ j k → j o< osuc k) &iso (trans (cong (&) *iso) ord-od∅ ) (⊆→o≤ (x⊆u))
+          x≤0 = ? -- subst₂ (λ j k → j o< osuc k) &iso (trans (cong (&) *iso) ord-od∅ ) (⊆→o≤ (x⊆u))
           fp00 : (b x : Ordinal) → * b ⊆ * X → Subbase (* b) x → Subbase (* X) x
           fp00 b y b<X (gi by ) = gi ( b<X by )
           fp00 b _ b<X (g∩ {y} {z} sy sz ) = g∩ (fp00 _ _ b<X sy) (fp00 _ _ b<X sz)
@@ -198,6 +225,7 @@
      -- ultraf : {X : Ordinal} → (0<X : o∅ o< X ) → (CSX : * X ⊆ CS TP) → (fp : fip {X} CSX) → ultra-filter ( mf 0<X CSX fp)
      -- ultraf {X} 0<X CSX fp = F→ultra {Power P} {P} (λ x → x) (CAP P) (F CSX fp)  0<PP (N∋nc 0<X CSX fp) (proper CSX fp)
 
+     
      postulate 
         maxf   : {X : Ordinal} → o∅ o< X → (CSX : * X ⊆ CS TP) → (fp : fip {X} CSX) → MaximumFilter (λ x → x) (F CSX fp)
      mf     : {X : Ordinal} → o∅ o< X → (CSX : * X ⊆ CS TP) → (fp : fip {X} CSX) → Filter {Power P} {P} (λ x → x)
@@ -215,12 +243,14 @@
      --
      -- the limit is an limit of entire elements of X
      --
+     open BAlgebra O HODAxiom ho< P (LDec P)
+
      uf01 :  {X : Ordinal} (CSX : * X ⊆ CS TP) (fp : fip {X} CSX) {x : Ordinal} → odef (* X) x → odef (* x) (limit CSX fp)
      uf01 {X} CSX fp {x} xx with trio< o∅ X
      ... | tri> ¬a ¬b c = ⊥-elim ( ¬x<0 c )
      ... | tri≈ ¬a 0=X ¬c = ⊥-elim ( ¬a (subst (λ k → o∅ o< k) &iso ( ∈∅< xx )))
      --  0<X  limit is in * x or P \ * x
-     ... | tri< 0<X ¬b ¬c with ∨L\X {P} {* x} {UFLP.limit ( uflp  ( mf 0<X CSX fp ) (ultraf 0<X CSX fp))}
+     ... | tri< 0<X ¬b ¬c with ∨L\X {* x} {UFLP.limit ( uflp  ( mf 0<X CSX fp ) (ultraf 0<X CSX fp))}
          (UFLP.P∋limit ( uflp  ( mf 0<X CSX fp ) (ultraf 0<X CSX fp)))
      ... | case1 lt = lt -- odef (* x) y
      ... | case2 nlxy = ⊥-elim (MaximumFilter.proper (maxf 0<X CSX fp) uf11 ) where
@@ -235,16 +265,17 @@
         uf10 = nlxy
         uf03 : Neighbor TP y (& (P \ * x ))
         uf03 = record { u = _ ; ou = P\CS=OS TP (CSX (subst (λ k → odef (* X) k ) (sym &iso) xx))
-           ; ux = subst (λ k → odef k y) (sym *iso) uf10
-           ; v⊆P = λ {z} xz → proj1 (subst(λ k → odef k z) *iso xz )
+           ; ux = ? -- subst (λ k → odef k y) (sym *iso) uf10
+           ; v⊆P = ? -- λ {z} xz → proj1 (subst(λ k → odef k z) *iso xz )
            ; u⊆v = λ x → x  }
         uf07 : * (& (* x , * x)) ⊆ * X
-        uf07 {y} lt with subst (λ k → odef k y) *iso lt
+        uf07 {y} lt with eq→ *iso lt
         ... | case1 refl = subst (λ k → odef (* X) k ) (sym &iso) xx
         ... | case2 refl = subst (λ k → odef (* X) k ) (sym &iso) xx
         uf05 : odef (filter (MaximumFilter.mf (maxf 0<X CSX fp))) x
         uf05 = MaximumFilter.F⊆mf (maxf 0<X CSX fp) record { b = & (* x , * x) ; b⊆X = uf07
-           ; sb = gi (subst (λ k → odef k x) (sym *iso) (case1 (sym &iso)) )  ; u⊆P = x⊆P ; x⊆u = λ x → x  }
+           ; sb = ? --- gi (subst (λ k → odef k x) (sym *iso) (case1 (sym &iso)) )  
+           ; u⊆P = x⊆P ; x⊆u = λ x → x  }
         -- if we postulate maximum filter, uf061 is an error
         -- uf061 : odef (filter (MaximumFilter.mf (maxf 0<X CSX fp))) (& (* (& (P \ * x ))))
         -- uf061 = UFLP.is-limit ( uflp (mf 0<X CSX fp) (ultraf 0<X CSX fp)) {& (P \ * x)} uf03
@@ -254,11 +285,11 @@
         uf06 : odef (filter (MaximumFilter.mf (maxf 0<X CSX fp))) (& (P \ * x ))
         uf06 = subst (λ k → odef (filter (MaximumFilter.mf (maxf 0<X CSX fp))) k) &iso uf063
         uf13 : & ((* x) ∩ (P \ * x )) ≡ o∅
-        uf13 = subst₂ (λ j k → j ≡ k ) refl ord-od∅ (cong (&) ( ==→o≡ record { eq→ = uf14 ; eq← = λ {x} lt → ⊥-elim (¬x<0 lt) }  ) ) where
+        uf13 = subst₂ (λ j k → j ≡ k ) refl ord-od∅ (cong (&) ? ) where -- ( ==→o≡ record { eq→ = uf14 ; eq← = λ {x} lt → ⊥-elim (¬x<0 lt) }  ) ) where
            uf14 : {y : Ordinal} → odef (* x ∩ (P \ * x)) y → odef od∅ y
            uf14 {y} ⟪ xy , ⟪ Px , ¬xy ⟫ ⟫ = ⊥-elim ( ¬xy xy )
         uf12 : odef (Power P) (& ((* x) ∩ (P \ * x )))
-        uf12 z pz with subst (λ k → odef k z) *iso pz
+        uf12 z pz with eq→ *iso pz
         ... | ⟪ xz , ⟪ Pz , ¬xz ⟫ ⟫ = Pz
         uf11 : filter (MaximumFilter.mf (maxf 0<X CSX fp)) ∋ od∅
         uf11 = subst (λ k → odef (filter (MaximumFilter.mf (maxf 0<X CSX fp))) k ) (trans uf13 (sym ord-od∅))
@@ -278,12 +309,12 @@
 --
 FIP→UFLP : {P : HOD} (TP : Topology P) →  FIP TP
    →  (F : Filter {Power P} {P} (λ x → x)) (UF : ultra-filter F ) → UFLP {P} TP F UF
-FIP→UFLP {P} TP fip F UF = record { limit = FIP.limit fip (subst (λ k → k ⊆ CS TP) (sym *iso) CF⊆CS) ufl01
+FIP→UFLP {P} TP fip F UF = record { limit = FIP.limit fip (subst (λ k → k ⊆ CS TP) ? CF⊆CS) ufl01
    ; P∋limit = ufl10 ; is-limit = ufl00 } where
      F∋P : odef (filter F) (& P)
-     F∋P with ultra-filter.ultra UF {od∅} (λ z az → ⊥-elim (¬x<0 (subst (λ k → odef k z) *iso az)) )  (λ z az → proj1 (subst (λ k → odef k z) *iso az ) )
+     F∋P with ultra-filter.ultra UF {od∅} (λ z az → ⊥-elim (¬x<0 (eq→ *iso az)) )  (λ z az → proj1 (eq→ *iso az ) )
      ... | case1 fp = ⊥-elim ( ultra-filter.proper UF fp )
-     ... | case2 flp = subst (λ k → odef (filter F) k) (cong (&) (==→o≡ fl20))  flp where
+     ... | case2 flp = subst (λ k → odef (filter F) k) (==→o≡ fl20)  flp where
          fl20 :  (P \ Ord o∅) =h=  P
          fl20 = record { eq→ = λ {x} lt → proj1 lt ; eq← = λ {x} lt → ⟪ lt , (λ lt → ⊥-elim (¬x<0 lt) )  ⟫  }
      0<P : o∅ o< & P
@@ -302,10 +333,10 @@
      -- it is set of closed set and has FIP ( F is proper )
      --
      ufl08  : {z : Ordinal} → odef (Power P) (& (Cl TP (* z)))
-     ufl08 {z} w zw with subst (λ k → odef k w ) *iso zw
+     ufl08 {z} w zw with eq→ *iso zw
      ... | t = proj1 t
      fx→px : {x : Ordinal} → odef (filter F) x → Power P ∋ * x
-     fx→px {x} fx z xz = f⊆L F fx _ (subst (λ k → odef k z) *iso xz )
+     fx→px {x} fx z xz = f⊆L F fx _ (eq→ *iso xz )
      F∋sb : {x : Ordinal} → Subbase CF x → odef (filter F) x
      F∋sb {x} (gi record { z = z ; az = az ; x=ψz = x=ψz }) = ufl07 where
         ufl09 : * z ⊆ P
@@ -313,10 +344,11 @@
         ufl07 : odef (filter F) x
         ufl07 = subst (λ k → odef (filter F) k) &iso ( filter1 F (subst (λ k → odef (Power P) k) (trans (sym x=ψz) (sym &iso))  ufl08  )
             (subst (λ k → odef (filter F) k) (sym &iso) az)
-            (subst (λ k → * z ⊆ k ) (trans (sym *iso) (sym (cong (*) x=ψz)) ) (x⊆Clx TP {* z} ufl09 ) ))
+            (subst (λ k → * z ⊆ k ) ? -- (trans (sym *iso) (sym (cong (*) x=ψz)) ) 
+               (x⊆Clx TP {* z} ufl09 ) ))
      F∋sb  (g∩ {x} {y} sx sy) = filter2 F (subst (λ k → odef (filter F) k) (sym &iso) (F∋sb sx))
         (subst (λ k → odef (filter F) k) (sym &iso) (F∋sb sy))
-            (λ z xz → fx→px (F∋sb sx) _ (subst (λ k → odef k _) (sym *iso) (proj1 (subst (λ k → odef k z) *iso xz) )))
+            (λ z xz → fx→px (F∋sb sx) _ (eq← *iso (proj1 (eq→ *iso xz) )))
      ufl01 : {x : Ordinal} → Subbase (* (& CF)) x → o∅ o< x
      ufl01 {x} sb = ufl04  where
         ufl04 : o∅ o< x
@@ -326,19 +358,21 @@
            begin
            x  ≡⟨ sym b ⟩
            o∅ ≡⟨ sym ord-od∅ ⟩
-           & od∅  ∎ ) (F∋sb (subst (λ k → Subbase k x) *iso sb )) ))  where open ≡-Reasoning
+           & od∅  ∎ ) ? -- (F∋sb (subst (λ k → Subbase k x) *iso sb ))
+              ))  where open ≡-Reasoning
         ... | tri> ¬a ¬b c = ⊥-elim (¬x<0 c)
-     ufl10 : odef P (FIP.limit fip (subst (λ k → k ⊆ CS TP) (sym *iso) CF⊆CS) ufl01)
-     ufl10 = FIP.L∋limit fip (subst (λ k → k ⊆ CS TP) (sym *iso) CF⊆CS) ufl01 {& P} ufl11  where
+     ufl10 : odef P (FIP.limit fip (subst (λ k → k ⊆ CS TP) ? CF⊆CS) ufl01)
+     ufl10 = FIP.L∋limit fip (subst (λ k → k ⊆ CS TP) ? CF⊆CS) ufl01 {& P} ufl11  where
          ufl11 : odef (* (& CF)) (& P)
-         ufl11 = subst (λ k → odef k (& P)) (sym *iso) record { z = _ ; az  = F∋P ; x=ψz = sym (cong (&) (trans (cong (Cl TP) *iso) (ClL TP)))   }
+         ufl11 = eq← *iso record { z = _ ; az  = F∋P ; x=ψz = sym (cong (&) (trans (cong (Cl TP) ? ) ? -- (ClL TP)
+            ))   }
      --
      -- so we have a limit
      --
      limit : Ordinal
-     limit = FIP.limit fip (subst (λ k → k ⊆ CS TP) (sym *iso) CF⊆CS) ufl01
+     limit = FIP.limit fip (subst (λ k → k ⊆ CS TP) ? CF⊆CS) ufl01
      ufl02 : {y : Ordinal } → odef (* (& CF)) y → odef (* y) limit
-     ufl02 = FIP.is-limit fip (subst (λ k → k ⊆ CS TP) (sym *iso) CF⊆CS) ufl01
+     ufl02 = FIP.is-limit fip (subst (λ k → k ⊆ CS TP) ? CF⊆CS) ufl01
      --
      -- Neigbor of limit ⊆ Filter
      --
@@ -350,23 +384,23 @@
      --      this contradicts ufl02
      pp :  {v : Ordinal} → (nei : Neighbor TP limit v ) → Power P ∋ (* (Neighbor.u nei))
      pp {v} record { u = u ; ou = ou ; ux = ux ; v⊆P = v⊆P ; u⊆v = u⊆v } z pz
-        = os⊆L TP (subst (λ k → odef (OS TP) k) (sym &iso) ou ) (subst (λ k → odef k z) *iso pz )
+        = os⊆L TP (subst (λ k → odef (OS TP) k) (sym &iso) ou ) (eq→ *iso pz )
      ufl00 :  {v : Ordinal} → Neighbor TP limit v → filter F ∋ * v
      ufl00 {v} nei with ultra-filter.ultra UF (pp nei ) (NEG P (pp nei ))
      ... | case1 fu = subst (λ k → odef (filter F) k) &iso
-       ( filter1 F (subst (λ k → odef (Power P) k ) (sym &iso) px)  fu (subst (λ k → u ⊆ k ) (sym *iso) (Neighbor.u⊆v nei))) where
+       ( filter1 F (subst (λ k → odef (Power P) k ) (sym &iso) px)  fu (subst (λ k → u ⊆ k ) ? (Neighbor.u⊆v nei))) where
          u = * (Neighbor.u nei)
          px : Power P ∋ * v
-         px z vz = Neighbor.v⊆P nei (subst (λ k → odef k z) *iso vz )
+         px z vz = Neighbor.v⊆P nei (eq→ *iso vz )
      ... | case2 nfu = ⊥-elim ( ¬P\u∋limit P\u∋limit ) where
          u = * (Neighbor.u nei)
          P\u : HOD
          P\u = P \ u
          P\u∋limit : odef P\u limit
-         P\u∋limit = subst (λ k → odef k limit) *iso ( ufl02 (subst (λ k → odef k (& P\u)) (sym *iso) ufl03 )) where
+         P\u∋limit = eq→ *iso ( ufl02 (subst (λ k → odef k (& P\u)) ? ufl03 )) where
              ufl04 : & P\u ≡ & (Cl TP (* (& P\u)))
-             ufl04 = cong (&) (sym (trans (cong (Cl TP) *iso)
-                (CS∋x→Clx=x TP (P\OS=CS TP (subst (λ k → odef (OS TP) k) (sym &iso) (Neighbor.ou nei) )))))
+             ufl04 = cong (&) (sym (trans (cong (Cl TP) ? ) ? ))
+                -- (CS∋x→Clx=x TP (P\OS=CS TP (subst (λ k → odef (OS TP) k) (sym &iso) (Neighbor.ou nei) )))))
              ufl03 : odef CF (& P\u )
              ufl03 = record { z = _ ; az = nfu ; x=ψz = ufl04 }
          ¬P\u∋limit : ¬ odef P\u limit
@@ -397,9 +431,9 @@
              → UFLP (ProductTopology TP TQ) F UF
      uflPQ F UF = record { limit = & < * ( UFLP.limit uflp ) , * ( UFLP.limit uflq ) >  ; P∋limit = Pf ; is-limit = isL } where
          F∋PQ : odef (filter F) (& (ZFP P Q))
-         F∋PQ with ultra-filter.ultra UF {od∅} (λ z az → ⊥-elim (¬x<0 (subst (λ k → odef k z) *iso az)) )  (λ z az → proj1 (subst (λ k → odef k z) *iso az ) )
+         F∋PQ with ultra-filter.ultra UF {od∅} (λ z az → ⊥-elim (¬x<0 (eq→ *iso az)) )  (λ z az → proj1 (eq→ *iso az ) )
          ... | case1 fp = ⊥-elim ( ultra-filter.proper UF fp )
-         ... | case2 flp = subst (λ k → odef (filter F) k) (cong (&) (==→o≡ fl20))  flp where
+         ... | case2 flp = subst (λ k → odef (filter F) k) (==→o≡ fl20)  flp where
              fl20 :  (ZFP P Q \ Ord o∅) =h=  ZFP P Q
              fl20 = record { eq→ = λ {x} lt → proj1 lt ; eq← = λ {x} lt → ⟪ lt , (λ lt → ⊥-elim (¬x<0 lt) )  ⟫  }
          0<PQ : o∅ o< & (ZFP P Q)
@@ -408,15 +442,15 @@
          ... | tri≈ ¬a b ¬c = ⊥-elim (ultra-filter.proper UF (subst (λ k → odef (filter F) k) (trans (sym b) (sym ord-od∅)) F∋PQ) )
          ... | tri> ¬a ¬b c = ⊥-elim (¬x<0 c)
          apq : HOD
-         apq = ODC.minimal O (ZFP P Q) (0<P→ne 0<PQ)
+         apq = minimal (ZFP P Q) (0<P→ne 0<PQ)
          is-apq : ZFP P Q ∋ apq
-         is-apq = ODC.x∋minimal O (ZFP P Q) (0<P→ne 0<PQ)
+         is-apq = x∋minimal (ZFP P Q) (0<P→ne 0<PQ)
          ap : odef P ( zπ1 is-apq  )
          ap = zp1 is-apq
          aq : odef Q ( zπ2 is-apq  )
          aq = zp2 is-apq
          F⊆pxq : {x : HOD } → filter F ∋ x →  x ⊆ ZFP P Q
-         F⊆pxq {x} fx {y} xy = f⊆L F fx y (subst (λ k → odef k y) (sym *iso) xy)
+         F⊆pxq {x} fx {y} xy = f⊆L F fx y (eq← *iso xy)
 
          ---
          --- FP is a P-projection of F, which is a ultra filter
@@ -448,7 +482,7 @@
          Pf = ab-pair (UFLP.P∋limit uflp) (UFLP.P∋limit uflq)
 
          isL : {v : Ordinal} → Neighbor (ProductTopology TP TQ) (& < * (UFLP.limit uflp) , * (UFLP.limit uflq) >) v → filter F ∋ * v
-         isL {v} nei = filter1 F (λ z xz → Neighbor.v⊆P nei (subst (λ k → odef k z) *iso xz))
+         isL {v} nei = filter1 F (λ z xz → Neighbor.v⊆P nei (eq→ *iso xz))
                 (subst (λ k → odef (filter F) k) (sym &iso) (F∋base pqb b∋l )) bpq⊆v where
              --
              -- Product Topolgy's open set contains a subbase which is an element of ZPF p Q or ZPF P q
@@ -473,13 +507,13 @@
                  --  subbase of product topology which includes lim is in FP, so in F
                  --
                  isl00 : odef (ZFP (* (BaseP.p px)) Q) lim
-                 isl00 = subst (λ k → odef k lim ) (trans (cong (*) (BaseP.prod px)) *iso )  bl
+                 isl00 = subst (λ k → odef k lim ) (trans (cong (*) (BaseP.prod px)) ? )  bl
                  px∋limit : odef (* (BaseP.p px)) (UFLP.limit uflp)
                  px∋limit = isl01 isl00 refl where
                     isl01 : {x : Ordinal } → odef (ZFP (* (BaseP.p px)) Q) x → x ≡ lim →  odef (* (BaseP.p px)) (UFLP.limit uflp)
                     isl01 (ab-pair {a} {b} bx qx) ab=lim = subst (λ k → odef (* (BaseP.p px)) k) a=lim bx where
                        a=lim : a ≡ UFLP.limit uflp
-                       a=lim = subst₂ (λ j k → j ≡ k ) &iso &iso (cong (&) (proj1 ( prod-≡ (subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) ab=lim) ) )))
+                       a=lim = subst₂ (λ j k → j ≡ k ) &iso &iso ? -- (cong (&) (proj1 ( prod-≡ (subst₂ (λ j k → j ≡ k ) ? ? (cong (*) ab=lim) ) )))
                  fp∋b : filter FP ∋ * (BaseP.p px)
                  fp∋b = UFLP.is-limit uflp record { u = _ ; ou = BaseP.op px ; ux = px∋limit
                      ; v⊆P = λ {x} lt → os⊆L TP (subst (λ k → odef (OS TP) k) (sym &iso) (BaseP.op px)) lt ; u⊆v = λ x → x }
@@ -487,13 +521,13 @@
                  f∋b = FPSet⊆F1 (subst (λ k → odef (filter FP) k ) &iso fp∋b )
              F∋base {b} (gi (case2 qx)) bl  = subst (λ k → odef (filter F) k) (sym (BaseQ.prod qx)) f∋b where
                  isl00 : odef (ZFP P (* (BaseQ.q qx))) lim
-                 isl00 = subst (λ k → odef k lim ) (trans (cong (*) (BaseQ.prod qx)) *iso )  bl
+                 isl00 = subst (λ k → odef k lim ) (trans (cong (*) (BaseQ.prod qx)) ? )  bl
                  qx∋limit : odef (* (BaseQ.q qx)) (UFLP.limit uflq)
                  qx∋limit = isl01 isl00 refl where
                     isl01 : {x : Ordinal } → odef (ZFP P (* (BaseQ.q qx)) ) x → x ≡ lim →  odef (* (BaseQ.q qx)) (UFLP.limit uflq)
                     isl01 (ab-pair {a} {b} px bx) ab=lim = subst (λ k → odef (* (BaseQ.q qx)) k) b=lim bx where
                        b=lim : b ≡ UFLP.limit uflq
-                       b=lim = subst₂ (λ j k → j ≡ k ) &iso &iso (cong (&) (proj2 ( prod-≡ (subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) ab=lim) ) )))
+                       b=lim = ? -- subst₂ (λ j k → j ≡ k ) &iso &iso (cong (&) (proj2 ( prod-≡ (subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) ab=lim) ) )))
                  fp∋b : filter FQ ∋ * (BaseQ.q qx)
                  fp∋b = UFLP.is-limit uflq record { u = _ ; ou = BaseQ.oq qx ; ux = qx∋limit
                      ; v⊆P = λ {x} lt → os⊆L TQ (subst (λ k → odef (OS TQ) k) (sym &iso) (BaseQ.oq qx)) lt ; u⊆v = λ x → x }
@@ -502,9 +536,9 @@
              F∋base (g∩ {x} {y} b1 b2) bl = F∋x∩y where
                  -- filter contains finite intersection
                  fb01 :  odef (filter F) x
-                 fb01 = F∋base b1 (proj1 (subst (λ k → odef k lim) *iso bl))
+                 fb01 = F∋base b1 (proj1 (eq→ *iso bl))
                  fb02 :  odef (filter F) y
-                 fb02 = F∋base b2 (proj2 (subst (λ k → odef k lim) *iso bl))
+                 fb02 = F∋base b2 (proj2 (eq→ *iso bl))
                  F∋x∩y : odef (filter F) (& (* x ∩ * y))
                  F∋x∩y = filter2 F (subst (λ k → odef (filter F) k) (sym &iso) fb01) (subst (λ k → odef (filter F) k) (sym &iso) fb02)
                     (CAP (ZFP P Q) (subst (λ k → odef (Power (ZFP P Q)) k) (sym &iso) (f⊆L F fb01))