changeset 1297:ad9ed7c4a0b3

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 03 Jun 2023 08:13:50 +0900
parents 428227847d62
children 2c34f2b554cf
files src/OD.agda src/ODUtil.agda src/OrdUtil.agda src/Ordinals.agda src/PFOD.agda src/Tychonoff1.agda src/ZProduct.agda
diffstat 7 files changed, 282 insertions(+), 118 deletions(-) [+]
line wrap: on
line diff
--- a/src/OD.agda	Fri Jun 02 12:12:29 2023 +0900
+++ b/src/OD.agda	Sat Jun 03 08:13:50 2023 +0900
@@ -108,12 +108,8 @@
 
 -- possible order restriction (required in the axiom of infinite )
 
-record ODAxiom-ho< : Set (suc n) where
- field
-  ho< : {x : HOD} → & x o< next (odmax x)
-
-postulate  odAxiom-ho< : ODAxiom-ho<
-open ODAxiom-ho< odAxiom-ho<
+-- postulate  odAxiom-ho< : ODAxiom-ho<
+-- open ODAxiom-ho< odAxiom-ho<
 
 -- odmax minimality
 --
@@ -451,7 +447,6 @@
 -- {_} : ZFSet → ZFSet
 -- { x } = ( x ,  x )     -- better to use (x , x) directly
 
-
 data infinite-d  : ( x : Ordinal  ) → Set n where
     iφ :  infinite-d o∅
     isuc : {x : Ordinal  } →   infinite-d  x  →
@@ -465,28 +460,21 @@
 --
 --  Since we have Ord (next o∅), we don't need this, but ZF axiom requires this and ho<
 
+infinite-od : OD
+infinite-od = record { def = λ x → infinite-d x } 
+
+record ODAxiom-ho< : Set (suc n) where
+ field
+    omega : Ordinal  
+    ho< : {x : Ordinal } → infinite-d x →  x o< next omega
+
+postulate
+    odaxion-ho< : ODAxiom-ho< 
+
+open ODAxiom-ho< odaxion-ho<
+
 infinite : HOD
-infinite = record { od = record { def = λ x → infinite-d x } ; odmax = next o∅ ; <odmax = lemma }  where
-    u : (y : Ordinal ) → HOD
-    u y = Union (* y , (* y , * y))
-    --   next< : {x y z : Ordinal} → x o< next z  → y o< next x → y o< next z
-    lemma8 : {y : Ordinal} → & (* y , * y) o< next (odmax (* y , * y))
-    lemma8 = ho<
-    ---           (x,y) < next (omax x y) < next (osuc y) = next y
-    lemmaa : {x y : HOD} → & x o< & y → & (x , y) o< next (& y)
-    lemmaa {x} {y} x<y = subst (λ k → & (x , y) o< k ) (sym nexto≡) (subst (λ k → & (x , y) o< next k ) (sym (omax< _ _ x<y)) ho< )
-    lemma81 : {y : Ordinal} → & (* y , * y) o< next (& (* y))
-    lemma81 {y} = nexto=n (subst (λ k →  & (* y , * y) o< k ) (cong (λ k → next k) (omxx _)) lemma8)
-    lemma9 : {y : Ordinal} → & (* y , (* y , * y)) o< next (& (* y , * y))
-    lemma9 = lemmaa (c<→o< (case1 refl))
-    lemma71 : {y : Ordinal} → & (* y , (* y , * y)) o< next (& (* y))
-    lemma71 = next< lemma81 lemma9
-    lemma1 : {y : Ordinal} → & (u y) o< next (osuc (& (* y , (* y , * y))))
-    lemma1 = ho<
-    --- main recursion
-    lemma : {y : Ordinal} → infinite-d y → y o< next o∅
-    lemma {o∅} iφ = x<nx
-    lemma (isuc {y} x) = next< (lemma x) (next< (subst (λ k → & (* y , (* y , * y)) o< next k) &iso lemma71 ) (nexto=n lemma1))
+infinite = record { od = record { def = λ x → infinite-d x } ; odmax = next omega ; <odmax = ho<}  
 
 empty : (x : HOD  ) → ¬  (od∅ ∋ x)
 empty x = ¬x<0
--- a/src/ODUtil.agda	Fri Jun 02 12:12:29 2023 +0900
+++ b/src/ODUtil.agda	Sat Jun 03 08:13:50 2023 +0900
@@ -23,7 +23,7 @@
 open OD O
 open OD.OD
 open ODAxiom odAxiom
-open ODAxiom-ho< odAxiom-ho<
+-- open ODAxiom-ho< odAxiom-ho<
 
 open HOD
 open _∧_
@@ -75,20 +75,20 @@
    lemma {z} (case1 refl) = case1 refl
    lemma {z} (case2 refl) = case1 refl
 
-pair-<xy : {x y : HOD} → {n : Ordinal}  → & x o< next n →  & y o< next n  → & (x , y) o< next n
-pair-<xy {x} {y} {o} x<nn y<nn with trio< (& x) (& y) | inspect (omax (& x)) (& y)
-... | tri< a ¬b ¬c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (sym eq1) (osuc<nx y<nn)) ho<
-... | tri> ¬a ¬b c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (sym eq1) (osuc<nx x<nn)) ho<
-... | tri≈ ¬a b ¬c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (omax≡ _ _ b) (subst (λ k → osuc k o< next o) b (osuc<nx x<nn))) ho<
+-- pair-<xy : {x y : HOD} → {n : Ordinal}  → & x o< next n →  & y o< next n  → & (x , y) o< next n
+-- pair-<xy {x} {y} {o} x<nn y<nn with trio< (& x) (& y) | inspect (omax (& x)) (& y)
+-- ... | tri< a ¬b ¬c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (sym eq1) (osuc<nx y<nn)) ho<
+-- ... | tri> ¬a ¬b c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (sym eq1) (osuc<nx x<nn)) ho<
+-- ... | tri≈ ¬a b ¬c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (omax≡ _ _ b) (subst (λ k → osuc k o< next o) b (osuc<nx x<nn))) ho<
 
 --  another form of infinite
 -- pair-ord< :  {x : Ordinal } → Set n
-pair-ord< : {x : HOD } → ( {y : HOD } → & y o< next (odmax y) ) → & ( x , x ) o< next (& x)
-pair-ord< {x} ho< = subst (λ k → & (x , x) o< k ) lemmab0 lemmab1  where
-       lemmab0 : next (odmax (x , x)) ≡ next (& x)
-       lemmab0 = trans (cong (λ k → next k) (omxx _)) (sym nexto≡)
-       lemmab1 : & (x , x) o< next ( odmax (x , x))
-       lemmab1 = ho<
+-- pair-ord< : {x : HOD } → ( {y : HOD } → & y o< next (odmax y) ) → & ( x , x ) o< next (& x)
+-- pair-ord< {x} ho< = subst (λ k → & (x , x) o< k ) lemmab0 lemmab1  where
+--        lemmab0 : next (odmax (x , x)) ≡ next (& x)
+--        lemmab0 = trans (cong (λ k → next k) (omxx _)) (sym nexto≡)
+--        lemmab1 : & (x , x) o< next ( odmax (x , x))
+--        lemmab1 = ho<
 
 trans-⊆ :  { A B C : HOD} → A ⊆ B → B ⊆ C → A ⊆ C
 trans-⊆ A⊆B B⊆C ab = B⊆C (A⊆B ab)
@@ -115,8 +115,13 @@
     ; proj2 = λ x⊆A lt → ⟪ x⊆A lt , lt ⟫
    }
 
-ω<next-o∅ : {y : Ordinal} → infinite-d y → y o< next o∅
-ω<next-o∅ {y} lt = <odmax infinite lt
+--postulate
+--    odaxion-ho< : ODAxiom-ho< 
+--
+--open ODAxiom-ho< odaxion-ho<
+
+-- ω<next-o∅ : {y : Ordinal} → infinite-d y → y o< next omega
+-- ω<next-o∅ {y} lt = <odmax infinite lt
 
 nat→ω : Nat → HOD
 nat→ω Zero = od∅
--- a/src/OrdUtil.agda	Fri Jun 02 12:12:29 2023 +0900
+++ b/src/OrdUtil.agda	Sat Jun 03 08:13:50 2023 +0900
@@ -259,29 +259,29 @@
 nexto∅ {x} | tri≈ ¬a b ¬c = subst (λ k → k o< next x) (sym b) x<nx
 nexto∅ {x} | tri> ¬a ¬b c = ⊥-elim ( ¬x<0 c )
 
-next< : {x y z : Ordinal} → x o< next z  → y o< next x → y o< next z
-next< {x} {y} {z} x<nz y<nx with trio< y (next z)
-next< {x} {y} {z} x<nz y<nx | tri< a ¬b ¬c = a
-next< {x} {y} {z} x<nz y<nx | tri≈ ¬a b ¬c = ⊥-elim (¬nx<nx x<nz (subst (λ k → k o< next x) b y<nx)
-   (λ w nz=ow → o<¬≡ nz=ow (subst₂ (λ j k → j o< k ) (sym nz=ow) nz=ow (osuc<nx (subst (λ k → w o< k ) (sym nz=ow) <-osuc) ))))
-next< {x} {y} {z} x<nz y<nx | tri> ¬a ¬b c = ⊥-elim (¬nx<nx x<nz (ordtrans c y<nx )
-   (λ w nz=ow → o<¬≡ (sym nz=ow) (osuc<nx (subst (λ k → w o< k ) (sym nz=ow) <-osuc ))))
+-- next< : {x y z : Ordinal} → x o< next z  → y o< next x → y o< next z
+-- next< {x} {y} {z} x<nz y<nx with trio< y (next z)
+-- next< {x} {y} {z} x<nz y<nx | tri< a ¬b ¬c = a
+-- next< {x} {y} {z} x<nz y<nx | tri≈ ¬a b ¬c = ⊥-elim (¬nx<nx x<nz (subst (λ k → k o< next x) b y<nx)
+--    (λ w nz=ow → o<¬≡ nz=ow (subst₂ (λ j k → j o< k ) (sym nz=ow) nz=ow (osuc<nx (subst (λ k → w o< k ) (sym nz=ow) <-osuc) ))))
+-- next< {x} {y} {z} x<nz y<nx | tri> ¬a ¬b c = ⊥-elim (¬nx<nx x<nz (ordtrans c y<nx )
+--    (λ w nz=ow → o<¬≡ (sym nz=ow) (osuc<nx (subst (λ k → w o< k ) (sym nz=ow) <-osuc ))))
 
 osuc< : {x y : Ordinal} → osuc x ≡ y → x o< y
 osuc< {x} {y} refl = <-osuc
 
-nexto=n : {x y : Ordinal} → x o< next (osuc y)  → x o< next y
-nexto=n {x} {y} x<noy = next< (osuc<nx x<nx) x<noy
+-- nexto=n : {x y : Ordinal} → x o< next (osuc y)  → x o< next y
+-- nexto=n {x} {y} x<noy = next< (osuc<nx x<nx) x<noy
 
-nexto≡ : {x : Ordinal} → next x ≡ next (osuc x)
-nexto≡ {x} with trio< (next x) (next (osuc x) )
+-- nexto≡ : {x : Ordinal} → next x ≡ next (osuc x)
+-- nexto≡ {x} with trio< (next x) (next (osuc x) )
 --    next x o< next (osuc x ) ->  osuc x o< next x o< next (osuc x) -> next x ≡ osuc z -> z o o< next x -> osuc z o< next x -> next x o< next x
-nexto≡ {x} | tri< a ¬b ¬c = ⊥-elim (¬nx<nx (osuc<nx  x<nx ) a
-   (λ z eq → o<¬≡ (sym eq) (osuc<nx  (osuc< (sym eq)))))
-nexto≡ {x} | tri≈ ¬a b ¬c = b
+-- nexto≡ {x} | tri< a ¬b ¬c = ⊥-elim (¬nx<nx (osuc<nx  x<nx ) a
+--    (λ z eq → o<¬≡ (sym eq) (osuc<nx  (osuc< (sym eq)))))
+-- nexto≡ {x} | tri≈ ¬a b ¬c = b
 --    next (osuc x) o< next x ->  osuc x o< next (osuc x) o< next x -> next (osuc x) ≡ osuc z -> z o o< next (osuc x) ...
-nexto≡ {x} | tri> ¬a ¬b c = ⊥-elim (¬nx<nx (ordtrans <-osuc x<nx) c
-   (λ z eq → o<¬≡ (sym eq) (osuc<nx  (osuc< (sym eq)))))
+-- nexto≡ {x} | tri> ¬a ¬b c = ⊥-elim (¬nx<nx (ordtrans <-osuc x<nx) c
+--    (λ z eq → o<¬≡ (sym eq) (osuc<nx  (osuc< (sym eq)))))
 
 next-is-limit : {x y : Ordinal} → ¬ (next x ≡ osuc y)
 next-is-limit {x} {y} eq = o<¬≡ (sym eq) (osuc<nx y<nx) where
@@ -291,33 +291,33 @@
 omax<next : {x y : Ordinal} → x o< y → omax x y o< next y
 omax<next {x} {y} x<y = subst (λ k → k o< next y ) (omax< _ _ x<y ) (osuc<nx x<nx)
 
-x<ny→≡next : {x y : Ordinal} → x o< y → y o< next x → next x ≡ next y
-x<ny→≡next {x} {y} x<y y<nx with trio< (next x) (next y)
-x<ny→≡next {x} {y} x<y y<nx | tri< a ¬b ¬c =          -- x < y < next x <  next y ∧ next x = osuc z
-     ⊥-elim ( ¬nx<nx y<nx a (λ z eq →  o<¬≡ (sym eq) (osuc<nx (subst (λ k → z o< k ) (sym eq) <-osuc ))))
-x<ny→≡next {x} {y} x<y y<nx | tri≈ ¬a b ¬c = b
-x<ny→≡next {x} {y} x<y y<nx | tri> ¬a ¬b c =          -- x < y < next y < next x
-     ⊥-elim ( ¬nx<nx (ordtrans x<y x<nx) c (λ z eq →  o<¬≡ (sym eq) (osuc<nx (subst (λ k → z o< k ) (sym eq) <-osuc ))))
+-- x<ny→≡next : {x y : Ordinal} → x o< y → y o< next x → next x ≡ next y
+-- x<ny→≡next {x} {y} x<y y<nx with trio< (next x) (next y)
+-- x<ny→≡next {x} {y} x<y y<nx | tri< a ¬b ¬c =          -- x < y < next x <  next y ∧ next x = osuc z
+--      ⊥-elim ( ¬nx<nx y<nx a (λ z eq →  o<¬≡ (sym eq) (osuc<nx (subst (λ k → z o< k ) (sym eq) <-osuc ))))
+-- x<ny→≡next {x} {y} x<y y<nx | tri≈ ¬a b ¬c = b
+-- x<ny→≡next {x} {y} x<y y<nx | tri> ¬a ¬b c =          -- x < y < next y < next x
+--      ⊥-elim ( ¬nx<nx (ordtrans x<y x<nx) c (λ z eq →  o<¬≡ (sym eq) (osuc<nx (subst (λ k → z o< k ) (sym eq) <-osuc ))))
 
-≤next : {x y : Ordinal} → x o≤ y → next x o≤ next y
-≤next {x} {y} x≤y with trio< (next x) y
-≤next {x} {y} x≤y | tri< a ¬b ¬c = ordtrans a (ordtrans x<nx <-osuc )
-≤next {x} {y} x≤y | tri≈ ¬a refl ¬c = (ordtrans x<nx <-osuc )
-≤next {x} {y} x≤y | tri> ¬a ¬b c with osuc-≡< x≤y
-≤next {x} {y} x≤y | tri> ¬a ¬b c | case1 refl = o≤-refl -- x = y < next x
-≤next {x} {y} x≤y | tri> ¬a ¬b c | case2 x<y = o≤-refl0 (x<ny→≡next x<y c) -- x ≤ y < next x
+-- ≤next : {x y : Ordinal} → x o≤ y → next x o≤ next y
+-- ≤next {x} {y} x≤y with trio< (next x) y
+-- ≤next {x} {y} x≤y | tri< a ¬b ¬c = ordtrans a (ordtrans x<nx <-osuc )
+-- ≤next {x} {y} x≤y | tri≈ ¬a refl ¬c = (ordtrans x<nx <-osuc )
+-- ≤next {x} {y} x≤y | tri> ¬a ¬b c with osuc-≡< x≤y
+-- ≤next {x} {y} x≤y | tri> ¬a ¬b c | case1 refl = o≤-refl -- x = y < next x
+-- ≤next {x} {y} x≤y | tri> ¬a ¬b c | case2 x<y = o≤-refl0 (x<ny→≡next x<y c) -- x ≤ y < next x
 
-x<ny→≤next : {x y : Ordinal} → x o< next y → next x o≤ next y
-x<ny→≤next {x} {y} x<ny with trio< x y
-x<ny→≤next {x} {y} x<ny | tri< a ¬b ¬c =  ≤next (ordtrans a <-osuc )
-x<ny→≤next {x} {y} x<ny | tri≈ ¬a refl ¬c =  o≤-refl
-x<ny→≤next {x} {y} x<ny | tri> ¬a ¬b c = o≤-refl0 (sym ( x<ny→≡next c x<ny ))
+-- x<ny→≤next : {x y : Ordinal} → x o< next y → next x o≤ next y
+-- x<ny→≤next {x} {y} x<ny with trio< x y
+-- x<ny→≤next {x} {y} x<ny | tri< a ¬b ¬c =  ≤next (ordtrans a <-osuc )
+-- x<ny→≤next {x} {y} x<ny | tri≈ ¬a refl ¬c =  o≤-refl
+-- x<ny→≤next {x} {y} x<ny | tri> ¬a ¬b c = o≤-refl0 (sym ( x<ny→≡next c x<ny ))
 
-omax<nomax : {x y : Ordinal} → omax x y o< next (omax x y )
-omax<nomax {x} {y} with trio< x y
-omax<nomax {x} {y} | tri< a ¬b ¬c    = subst (λ k → osuc y o< k ) nexto≡ (osuc<nx x<nx )
-omax<nomax {x} {y} | tri≈ ¬a refl ¬c = subst (λ k → osuc x o< k ) nexto≡ (osuc<nx x<nx )
-omax<nomax {x} {y} | tri> ¬a ¬b c    = subst (λ k → osuc x o< k ) nexto≡ (osuc<nx x<nx )
+-- omax<nomax : {x y : Ordinal} → omax x y o< next (omax x y )
+-- omax<nomax {x} {y} with trio< x y
+-- omax<nomax {x} {y} | tri< a ¬b ¬c    = subst (λ k → osuc y o< k ) nexto≡ (osuc<nx x<nx )
+-- omax<nomax {x} {y} | tri≈ ¬a refl ¬c = subst (λ k → osuc x o< k ) nexto≡ (osuc<nx x<nx )
+-- omax<nomax {x} {y} | tri> ¬a ¬b c    = subst (λ k → osuc x o< k ) nexto≡ (osuc<nx x<nx )
 
 omax<nx : {x y z : Ordinal} → x o< next z → y o< next z → omax x y o< next z
 omax<nx {x} {y} {z} x<nz y<nz with trio< x y
@@ -325,11 +325,11 @@
 omax<nx {x} {y} {z} x<nz y<nz | tri≈ ¬a refl ¬c = osuc<nx y<nz
 omax<nx {x} {y} {z} x<nz y<nz | tri> ¬a ¬b c = osuc<nx x<nz
 
-nn<omax : {x nx ny : Ordinal} → x o< next nx → x o< next ny → x o< next (omax nx ny)
-nn<omax {x} {nx} {ny} xnx xny with trio< nx ny
-nn<omax {x} {nx} {ny} xnx xny | tri< a ¬b ¬c = subst (λ k → x o< k ) nexto≡ xny
-nn<omax {x} {nx} {ny} xnx xny | tri≈ ¬a refl ¬c = subst (λ k → x o< k ) nexto≡ xny
-nn<omax {x} {nx} {ny} xnx xny | tri> ¬a ¬b c = subst (λ k → x o< k ) nexto≡ xnx
+-- nn<omax : {x nx ny : Ordinal} → x o< next nx → x o< next ny → x o< next (omax nx ny)
+-- nn<omax {x} {nx} {ny} xnx xny with trio< nx ny
+-- nn<omax {x} {nx} {ny} xnx xny | tri< a ¬b ¬c = subst (λ k → x o< k ) nexto≡ xny
+-- nn<omax {x} {nx} {ny} xnx xny | tri≈ ¬a refl ¬c = subst (λ k → x o< k ) nexto≡ xny
+-- nn<omax {x} {nx} {ny} xnx xny | tri> ¬a ¬b c = subst (λ k → x o< k ) nexto≡ xnx
 
 record OrdinalSubset (maxordinal : Ordinal) : Set (suc n) where
   field
--- a/src/Ordinals.agda	Fri Jun 02 12:12:29 2023 +0900
+++ b/src/Ordinals.agda	Sat Jun 03 08:13:50 2023 +0900
@@ -34,7 +34,9 @@
    field
      x<nx :    { y : ord } → (y o< next y )
      osuc<nx : { x y : ord } → x o< next y → osuc x o< next y 
-     ¬nx<nx :  {x y : ord} → y o< x → x o< next y →  ¬ ((z : ord) → ¬ (x ≡ osuc z)) 
+     --
+     -- this means we have some non constructive previous, it looks bad
+     -- ¬nx<nx :  {x y : ord} → y o< x → x o< next y →  ¬ ((z : ord) → ¬ (x ≡ osuc z)) 
 
 record Ordinals {n : Level} : Set (suc (suc n)) where
    field
--- a/src/PFOD.agda	Fri Jun 02 12:12:29 2023 +0900
+++ b/src/PFOD.agda	Sat Jun 03 08:13:50 2023 +0900
@@ -22,7 +22,7 @@
 open OD O
 open OD.OD
 open ODAxiom odAxiom
-open ODAxiom-ho< odAxiom-ho<
+-- open ODAxiom-ho< odAxiom-ho<
 import OrdUtil
 import ODUtil
 open Ordinals.Ordinals  O
@@ -73,19 +73,19 @@
 HODω2 = record { od = record { def = λ x → Hω2r x } ; odmax = next o∅ ; <odmax = odmax0 } where
     P  : (i j : Nat) (x : Ordinal ) → HOD
     P  i j x = ((nat→ω i , nat→ω i) , (nat→ω i , nat→ω j)) , * x
-    nat1 : (i : Nat) (x : Ordinal) → & (nat→ω i) o< next x
-    nat1 i x =  next< nexto∅ ( <odmax infinite (ω∋nat→ω {i}))
+    -- nat1 : (i : Nat) (x : Ordinal) → & (nat→ω i) o< next x
+    -- nat1 i x =  next< nexto∅ ( <odmax infinite (ω∋nat→ω {i}))
     lemma1 : (i j : Nat) (x : Ordinal ) → osuc (& (P i j x)) o< next x
-    lemma1 i j x = osuc<nx (pair-<xy (pair-<xy (pair-<xy (nat1 i x) (nat1 i x) ) (pair-<xy (nat1 i x) (nat1 j x) ) )
-         (subst (λ k → k o< next x) (sym &iso) x<nx ))
+    lemma1 i j x = ? -- osuc<nx (pair-<xy (pair-<xy (pair-<xy (nat1 i x) (nat1 i x) ) (pair-<xy (nat1 i x) (nat1 j x) ) )
+    --      (subst (λ k → k o< next x) (sym &iso) x<nx ))
     lemma : (i j : Nat) (x : Ordinal ) → & (Union (P i j x)) o< next x
-    lemma i j x = next< (lemma1 i j x ) ho<
+    lemma i j x = ? -- next< (lemma1 i j x ) ho<
     odmax0 :  {y : Ordinal} → Hω2r y → y o< next o∅ 
     odmax0 {y} r with hω2 r
     ... | hφ = x<nx
-    ... | h0 {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) (lemma i 0 x)
-    ... | h1 {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) (lemma i 1 x)
-    ... | he {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) x<nx
+    ... | h0 {i} {x} t = ? -- jnext< (odmax0 record { count = i ; hω2 = t }) (lemma i 0 x)
+    ... | h1 {i} {x} t = ? -- jnext< (odmax0 record { count = i ; hω2 = t }) (lemma i 1 x)
+    ... | he {i} {x} t = ? -- jnext< (odmax0 record { count = i ; hω2 = t }) x<nx
 
 3→Hω2 : List (Maybe Two) → HOD
 3→Hω2 t = list→hod t 0 where
--- a/src/Tychonoff1.agda	Fri Jun 02 12:12:29 2023 +0900
+++ b/src/Tychonoff1.agda	Sat Jun 03 08:13:50 2023 +0900
@@ -37,28 +37,94 @@
 
 open Filter
 
-Filter-Proj1 : {P Q : HOD } → 
+filter-⊆ : {P Q : HOD } → (F : Filter {Power (ZFP P Q)} {ZFP P Q} (λ x → x)) →  {x : HOD} → filter F ∋ x  →  { z : Ordinal } 
+    → odef x z → odef (ZFP P Q) z
+filter-⊆ {P} {Q} F {x} fx {z} xz  = f⊆L F fx _ (subst (λ k → odef k z) (sym *iso) xz )
+
+rcp :  {P Q : HOD } → (F : Filter {Power (ZFP P Q)} {ZFP P Q} (λ x → x)) → RXCod (filter F) P (λ x fx → ZP-proj1 P Q x (filter-⊆ F fx))
+rcp {P} {Q} F = record { ≤COD = λ {x} fx {z} ly → ZP1.aa ly }
+
+Filter-Proj1 : {P Q a : HOD } → ZFP P Q ∋ a → 
      (F : Filter {Power (ZFP P Q)} {ZFP P Q} (λ x → x))  
       →    Filter {Power P} {P} (λ x → x) 
-Filter-Proj1 = ?
+Filter-Proj1 {P} {Q} pqa F = record { filter = FP ; f⊆L = fp00 ; filter1 = f1 ; filter2 = f2 }  where
+    FP : HOD
+    FP = Replace' (filter F) (λ x fx → ZP-proj1 P Q x (filter-⊆ F fx)) {P} (rcp  F)
+    isP→PxQ : {x : HOD} → (x⊆P : x ⊆ P ) → ZFP x Q ⊆ ZFP P Q
+    isP→PxQ {x} x⊆P (ab-pair p q) = ab-pair (x⊆P p) q
+    isQ→PxQ : {x : HOD} → (x⊆P : x ⊆ Q ) → ZFP P x ⊆ ZFP P Q
+    isQ→PxQ {x} x⊆Q (ab-pair p q) = ab-pair p (x⊆Q q) 
+    fp00 : FP ⊆ Power P 
+    fp00 {x} record { z = z ; az = az ; x=ψz = x=ψz } w xw with subst (λ k → odef k w) (trans (cong (*) x=ψz) *iso ) xw
+    ... | record { b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab } = aa
+    f0 :  {p q : HOD} → Power (ZFP P Q) ∋ q → filter F ∋ p → p ⊆ q → filter F ∋ q
+    f0 {p} {q} PQq fp p⊆q = filter1 F PQq fp p⊆q 
+    f1 :  {p q : HOD} → Power P ∋ q → FP ∋ p → p ⊆ q → FP ∋ q
+    f1 {p} {q} Pq record { z = z ; az = az ; x=ψz = x=ψz } p⊆q = record { z = & (ZFP q Q) ; az = fp01 ty05 ty06 ; x=ψz = q=proj1 } where
+       PQq : Power (ZFP P Q) ∋ ZFP q Q
+       PQq z zpq = isP→PxQ {* (& q)} (Pq _) ( subst (λ k → odef k z ) (trans *iso (cong (λ k → ZFP k Q) (sym *iso))) zpq )
+       q⊆P : q ⊆ P
+       q⊆P {w} qw = Pq _ (subst (λ k → odef k w ) (sym *iso) qw )
+       p⊆P : p ⊆ P
+       p⊆P {w} pw = q⊆P (p⊆q pw)
+       p=proj1 : & p ≡ & (ZP-proj1 P Q (* z) (filter-⊆ F (subst (odef (filter F)) (sym &iso) az)))
+       p=proj1 = x=ψz
+       p⊆ZP : (* z) ⊆ ZFP p Q
+       p⊆ZP = subst (λ k → (* z) ⊆ ZFP k Q) (sym (&≡&→≡ p=proj1)) ZP-proj1⊆ZFP 
+       ty05 : filter F ∋  ZFP p Q
+       ty05 = filter1 F (λ z wz → isP→PxQ p⊆P (subst (λ k → odef k z) *iso wz)) (subst (λ k → odef (filter F) k) (sym &iso) az) p⊆ZP
+       ty06 : ZFP p Q ⊆ ZFP q Q
+       ty06 (ab-pair wp wq ) = ab-pair (p⊆q wp) wq
+       fp01 : filter F ∋ ZFP p Q → ZFP p Q ⊆ ZFP q Q → filter F ∋ ZFP q Q
+       fp01 fzp zp⊆zq = filter1 F PQq fzp zp⊆zq
+       q=proj1 : & q ≡ & (ZP-proj1 P Q (* (& (ZFP q Q))) (filter-⊆ F (subst (odef (filter F)) (sym &iso) (fp01 ty05 ty06))))
+       q=proj1 = cong (&) (ZP-proj1=rev (zp2 pqa) q⊆P *iso )
+    f2 : {p q : HOD} → FP ∋ p → FP ∋ q → Power P ∋ (p ∩ q) → FP ∋ (p ∩ q)
+    f2 {p} {q} record { z = zp ; az = fzp ; x=ψz = x=ψzp } record { z = zq ; az = fzq ; x=ψz = x=ψzq } Ppq 
+         = record { z = _ ; az = ty50 ; x=ψz = pq=proj1 } where
+       p⊆P : {zp : Ordinal} {p : HOD} (fzp : odef (filter F) zp) → ( & p ≡ &
+            (ZP-proj1 P Q (* zp) (filter-⊆ F (subst (odef (filter F)) (sym &iso) fzp)))) → p ⊆ P
+       p⊆P {zp} {p} fzp p=proj1 {x} px with subst (λ k → odef k x) (&≡&→≡ p=proj1) px
+       ... | record { b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab } = aa
+       x⊆pxq : {zp : Ordinal} {p : HOD} (fzp : odef (filter F) zp) → ( & p ≡ &
+            (ZP-proj1 P Q (* zp) (filter-⊆ F (subst (odef (filter F)) (sym &iso) fzp)))) → * zp ⊆ ZFP p Q
+       x⊆pxq {zp} {p} fzp p=proj1 = subst (λ k → (* zp) ⊆ ZFP k Q) (sym (&≡&→≡ p=proj1)) ZP-proj1⊆ZFP
+       ty54 : Power (ZFP P Q) ∋ (ZFP p Q ∩ ZFP q Q)
+       ty54 z xz = subst (λ k → ZFProduct P Q k ) (zp-iso pqz) (ab-pair pqz1 pqz2 ) where
+         pqz :  odef (ZFP (p ∩ q) Q)  z
+         pqz = subst (λ k → odef k z ) (trans *iso (sym (proj1 ZFP∩) ))  xz
+         pqz1 : odef P (zπ1 pqz)
+         pqz1 = p⊆P fzp x=ψzp (proj1 (zp1 pqz))
+         pqz2 : odef Q (zπ2 pqz)
+         pqz2 = zp2 pqz
+       ty53 : filter F ∋ ZFP p Q
+       ty53 = filter1 F (λ z wz → isP→PxQ (p⊆P fzp x=ψzp)
+         (subst (λ k → odef k z) *iso wz))
+         (subst (λ k → odef (filter F) k) (sym &iso) fzp ) (x⊆pxq fzp x=ψzp)
+       ty52 : filter F ∋ ZFP q Q
+       ty52 = filter1 F (λ z wz → isP→PxQ (p⊆P fzq x=ψzq)
+         (subst (λ k → odef k z) *iso wz))
+         (subst (λ k → odef (filter F) k) (sym &iso) fzq ) (x⊆pxq fzq x=ψzq)
+       ty51 : filter F ∋ ( ZFP p Q ∩ ZFP q Q )
+       ty51 = filter2 F ty53 ty52 ty54
+       ty50 : filter F ∋ ZFP (p ∩ q) Q
+       ty50 = subst (λ k → filter F ∋ k ) (sym (proj1 ZFP∩)) ty51
+       pq=proj1 : & (p ∩ q) ≡ & (ZP-proj1 P Q (* (& (ZFP (p ∩ q) Q))) (filter-⊆ F (subst (odef (filter F)) (sym &iso) ty50)))
+       pq=proj1 = cong (&) (ZP-proj1=rev (zp2 pqa) (λ {x} pqx → Ppq _ (subst (λ k → odef k x) (sym *iso) pqx)) *iso )
 
 Filter-Proj1-UF : {P Q : HOD } → 
      (F : Filter {Power (ZFP P Q)} {ZFP P Q} (λ x → x))  (UF : ultra-filter F)
       →   (FP :  Filter {Power P} {P} (λ x → x) ) →   ultra-filter FP
 Filter-Proj1-UF = ?
 
-filter-⊆ : {P Q : HOD } → (F : Filter {Power (ZFP P Q)} {ZFP P Q} (λ x → x)) →  {x : HOD} → filter F ∋ x  →  { z : Ordinal } 
-    → odef x z → odef (ZFP P Q) z
-filter-⊆ {P} {Q} F {x} fx {z} xz  = f⊆L F fx _ (subst (λ k → odef k z) (sym *iso) xz )
-
 rcf :  {P Q : HOD } → (F : Filter {Power (ZFP P Q)} {ZFP P Q} (λ x → x)) → RXCod (filter F) (ZFP Q P) (λ x fx → ZPmirror P Q x (filter-⊆ F fx))
 rcf {P} {Q} F = record { ≤COD = λ {x} fx {z} ly → ZPmirror⊆ZFPBA P Q x (filter-⊆ F fx) ly }
 
-Filter-sym : {P Q a : HOD } → ZFP P Q ∋ a → 
+Filter-sym : {P Q : HOD } → 
      (F : Filter {Power (ZFP P Q)} {ZFP P Q} (λ x → x))  
      → Filter {Power (ZFP Q P)} {ZFP Q P} (λ x → x)
-Filter-sym {P} {Q} {z} pqz F = 
-    record { filter = fqp ; f⊆L = fqp<P ; filter1 = f1 ; filter2 = ? }  where
+Filter-sym {P} {Q} F = 
+    record { filter = fqp ; f⊆L = fqp<P ; filter1 = f1 ; filter2 = f2 }  where
     fqp : HOD
     fqp = Replace' (filter F) (λ x fx → ZPmirror P Q x (filter-⊆ F fx)) {ZFP Q P} (rcf  F)
     fqp<P : fqp ⊆ Power (ZFP Q P)
@@ -67,7 +133,9 @@
             (subst (λ k → odef k w) (trans (cong (*) x=ψz) *iso ) xw) 
     f1 : {p q : HOD} → Power (ZFP Q P) ∋ q → fqp ∋ p → p ⊆ q → fqp ∋ q
     f1 {p} {q} QPq fqp p⊆q = record { z = _ ; az = fis00 {ZPmirror Q P p p⊆ZQP } {ZPmirror Q P q q⊆ZQP } fig01 fig03 fis04 
-      ; x=ψz = ? }  where
+      ; x=ψz = fis05 }  where
+         fis00 : {p q : HOD} → Power (ZFP P Q) ∋ q → filter F ∋ p → p ⊆ q → filter F ∋ q
+         fis00 = filter1 F 
          q⊆ZQP : q ⊆ ZFP Q P
          q⊆ZQP {x} qx = QPq _ (subst (λ k → odef k x) (sym *iso) qx) 
          p⊆ZQP : p ⊆ ZFP Q P
@@ -76,20 +144,44 @@
          fig06 = Replaced1.x=ψz fqp
          fig03 : filter F ∋  ZPmirror Q P p p⊆ZQP
          fig03 with Replaced1.az fqp 
-         ... | fz = subst (λ k → odef (filter F) k ) ?  fz where
-             fig07 :  Replaced1.z fqp ≡ & (ZPmirror Q P p (λ px → QPq x (subst (λ k → def (HOD.od k) x) (sym *iso) (p⊆q px))))
-             fig07 = ?
+         ... | fz = subst (λ k → odef (filter F) k ) fig07  fz where
+             fig07 :  Replaced1.z fqp ≡ & (ZPmirror Q P p (λ {x} px → QPq x (subst (λ k → def (HOD.od k) x ) (sym *iso) (p⊆q px))))
+             fig07 = trans (sym &iso) ( sym (cong (&) (ZPmirror-rev (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (sym fig06) )))))
          fig01 : Power (ZFP P Q) ∋ ZPmirror Q P q q⊆ZQP
-         fig01 x xz  = ? -- 
-         fis00 : {p q : HOD} → Power (ZFP P Q) ∋ q → filter F ∋ p → p ⊆ q → filter F ∋ q
-         fis00 = filter1 F 
+         fig01 x xz  = ZPmirror⊆ZFPBA Q P q q⊆ZQP (subst (λ k → odef k x) *iso xz)
          fis04 : ZPmirror Q P p (λ z → q⊆ZQP (p⊆q z)) ⊆ ZPmirror Q P q q⊆ZQP
-         fis04 = ? 
+         fis04 = ZPmirror-⊆ p⊆q
          fis05 : & q ≡ & (ZPmirror P Q (* (& (ZPmirror Q P q q⊆ZQP)))
              (filter-⊆ F (subst (odef (filter F)) (sym &iso) (fis00 fig01 fig03 fis04))))
-         fis05 = ?
-
-
+         fis05 = cong (&) (sym ( ZPmirror-rev (sym *iso) ))
+    f2 : {p q : HOD} → fqp ∋ p → fqp ∋ q → Power (ZFP Q P) ∋ (p ∩ q) → fqp ∋ (p ∩ q)
+    f2 {p} {q} fp fq QPpq = record { z = _ ; az = fis12 {ZPmirror Q P p p⊆ZQP} {ZPmirror Q P q q⊆ZQP} fig03 fig04 fig01
+      ; x=ψz = fis05 }  where
+         fis12 : {p q : HOD} → filter F ∋ p → filter F ∋ q → Power (ZFP P Q) ∋ (p ∩ q) → filter F ∋ (p ∩ q)
+         fis12 {p} {q} fp fq PQpq = filter2 F fp fq PQpq
+         p⊆ZQP : p ⊆ ZFP Q P
+         p⊆ZQP {z} px = fqp<P fp _ (subst (λ k → odef k z) (sym *iso) px)
+         q⊆ZQP : q ⊆ ZFP Q P
+         q⊆ZQP {z} qx = fqp<P fq _ (subst (λ k → odef k z) (sym *iso) qx)
+         pq⊆ZQP : (p ∩ q) ⊆ ZFP Q P
+         pq⊆ZQP {z} pqx = QPpq _ (subst (λ k → odef k z) (sym *iso) pqx)
+         fig06 : & p ≡ & (ZPmirror P Q (* (Replaced1.z fp)) (filter-⊆ F (subst (odef (filter F)) (sym &iso) (Replaced1.az fp))))
+         fig06 = Replaced1.x=ψz fp
+         fig09 : & q ≡ & (ZPmirror P Q (* (Replaced1.z fq)) (filter-⊆ F (subst (odef (filter F)) (sym &iso) (Replaced1.az fq))))
+         fig09 = Replaced1.x=ψz fq
+         fig03 : filter F ∋  ZPmirror Q P p p⊆ZQP
+         fig03 = subst (λ k → odef (filter F) k ) fig07 ( Replaced1.az fp )  where
+             fig07 :  Replaced1.z fp ≡ & (ZPmirror Q P p p⊆ZQP )
+             fig07 = trans (sym &iso) ( sym (cong (&) (ZPmirror-rev (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (sym fig06) )))))
+         fig04 : filter F ∋  ZPmirror Q P q q⊆ZQP
+         fig04 = subst (λ k → odef (filter F) k ) fig08 ( Replaced1.az fq )  where
+             fig08 :  Replaced1.z fq ≡ & (ZPmirror Q P q q⊆ZQP )
+             fig08 = trans (sym &iso) ( sym (cong (&) (ZPmirror-rev (subst₂ (λ j k → j ≡ k) *iso *iso (cong (*) (sym fig09) )))))
+         fig01 : Power (ZFP P Q) ∋ ( ZPmirror Q P p p⊆ZQP ∩ ZPmirror Q P q q⊆ZQP )
+         fig01 x xz  = ZPmirror⊆ZFPBA Q P q q⊆ZQP (proj2 (subst (λ k → odef k x) *iso xz))
+         fis05 : & (p ∩ q) ≡ & (ZPmirror P Q (* (& (ZPmirror Q P p p⊆ZQP ∩ ZPmirror Q P q q⊆ZQP))) 
+             (filter-⊆ F (subst (odef (filter F)) (sym &iso) (fis12 fig03 fig04 fig01) )))
+         fis05 = cong (&) (sym ( ZPmirror-rev {Q} {P} {_} {_} {pq⊆ZQP} (trans ZPmirror-∩ (sym *iso) ) ))
 
 Filter-sym-UF : {P Q : HOD } → 
      (F : Filter {Power (ZFP P Q)} {ZFP P Q} (λ x → x))  (UF : ultra-filter F)
@@ -100,5 +192,5 @@
 Filter-Proj2 : {P Q a : HOD } → ZFP P Q ∋ a → 
      (F : Filter {Power (ZFP P Q)} {ZFP P Q} (λ x → x))  
       →    Filter {Power Q} {Q} (λ x → x) 
-Filter-Proj2 {P} {Q} {a} pqa F = Filter-Proj1 {Q} {P} (Filter-sym pqa F )
+Filter-Proj2 {P} {Q} {a} pqa F = Filter-Proj1 {Q} {P} ? (Filter-sym F )
 
--- a/src/ZProduct.agda	Fri Jun 02 12:12:29 2023 +0900
+++ b/src/ZProduct.agda	Sat Jun 03 08:13:50 2023 +0900
@@ -242,6 +242,41 @@
             * x ≡⟨ sym (cong (*) (ty32 pp qx  )) ⟩
             * (zπ2 (subst (odef (ZFP P Q)) (sym &iso) (ab-pair pp qx  ))) ∎ where open ≡-Reasoning
 
+record ZP1 (A B C : HOD) ( cab : C ⊆ ZFP A B ) (a : Ordinal) : Set n where
+    field
+       b : Ordinal
+       aa : odef A a
+       bb : odef B b
+       c∋ab : odef C (& < * a , * b > )
+
+ZP-proj1 : (A B C : HOD) → C  ⊆ ZFP A B → HOD
+ZP-proj1 A B C cab = record { od = record { def = λ x → ZP1 A B C cab x } ; odmax = & A ; <odmax = λ lt → odef< (ZP1.aa lt) } 
+
+ZP-proj1⊆ZFP : {A B C : HOD} → {cab : C ⊆ ZFP A B} → C ⊆ ZFP (ZP-proj1 A B C cab) B
+ZP-proj1⊆ZFP {A} {B} {C} {cab} {c} cc with cab cc
+... | ab-pair {a} {b} aa bb = ab-pair record { b = _ ; aa = aa ; bb = bb ; c∋ab = cc }  bb
+
+ZP-proj1=rev : {A B a m : HOD} {b : Ordinal } → {cab : m ⊆ ZFP A B} → odef B b → a ⊆ A → m ≡ ZFP a B → a ≡ ZP-proj1 A B m cab 
+ZP-proj1=rev {A} {B} {a} {m} {b} {cab} bb a⊆A refl = ==→o≡ record { eq→ = zp00 ; eq← = zp01 } where
+     zp00 : {x : Ordinal } → odef a x → ZP1 A B (ZFP a B) cab x
+     zp00 {x} ax = record { b = _ ; aa = a⊆A ax ; bb = bb ; c∋ab = ab-pair ax bb  }  
+     zp01 : {x : Ordinal } → ZP1 A B (ZFP a B) cab x → odef a x
+     zp01 {x} record { b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab }  = zp02 c∋ab refl where
+        zp02 : {z : Ordinal } → odef (ZFP a B) z → z ≡ & < * x , * b > → odef a x
+        zp02 {.(& < * _ , * _ >)} (ab-pair {a1} {b1} aa1 bb1) eq = subst (λ k → odef a k) (*≡*→≡ zp03) aa1 where
+           zp03 : * a1 ≡ * x
+           zp03 = proj1 (prod-≡ (&≡&→≡ eq))
+
+record ZP2 (A B C : HOD) ( cab : C ⊆ ZFP A B ) (b : Ordinal) : Set n where
+    field
+       a : Ordinal
+       aa : odef A a
+       bb : odef B b
+       c∋ab : odef C (& < * a , * b > )
+
+ZP-proj2 : (A B C : HOD) → C  ⊆ ZFP A B → HOD
+ZP-proj2 A B C cab = record { od = record { def = λ x → ZP2 A B C cab x } ; odmax = & B ; <odmax = λ lt → odef< (ZP2.bb lt) } 
+
 record Func (A B : HOD) : Set n where
     field
        func : {x : Ordinal } → odef A x → Ordinal
@@ -392,6 +427,48 @@
         zs02 = cong₂ (λ j k → & < j , k >) (sym (proj2 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso  *iso  (cong (*) x=ba)))))  
                                            (sym (proj1 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso  *iso  (cong (*) x=ba))))) 
 
+ZPmirror-rev : {A B C m : HOD}  → {cab : C  ⊆ ZFP A B } → ZPmirror A B C cab ≡ m 
+       → {m⊆Z : m ⊆ ZFP B A } → ZPmirror B A m m⊆Z   ≡ C  
+ZPmirror-rev {A} {B} {C} {m} {cab} eq {m⊆Z} = ==→o≡ record { eq→  = zs02 ; eq← = zs04 } where
+    zs02 : {x : Ordinal} → ZPC B A m m⊆Z x → odef C x
+    zs02 {x} record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab ; x=ba = x=ba } with subst (λ k → odef k (& < * a , * b > )) (sym eq) c∋ab 
+    ... | record { a = b1 ; b = a1 ; aa = bb1 ; bb = aa1 ; c∋ab = c∋ab1 ; x=ba = x=ba1 } = subst (λ k → odef C k) zs03  c∋ab1 where
+        a=a1 : * a ≡ * a1 
+        a=a1 = proj1 (prod-≡ (subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) x=ba1)))
+        b=b1 : * b ≡ * b1 
+        b=b1 = proj2 (prod-≡ (subst₂ (λ j k → j ≡ k ) *iso *iso (cong (*) x=ba1)))
+        zs03 : & < * b1 , * a1 > ≡ x
+        zs03 = begin
+          & < * b1 , * a1 > ≡⟨ cong₂ (λ j k → & < j , k >) (sym b=b1) (sym a=a1)  ⟩ 
+          & < * b , * a > ≡⟨ sym x=ba ⟩ 
+          x ∎ where open ≡-Reasoning
+    zs04 : {x : Ordinal} → odef C x → ZPC B A m m⊆Z x 
+    zs04 {x} cx with cab cx 
+    ... | ab-pair {a} {b} aa bb  = record { a = b ; b = a ; aa = bb ; bb = aa 
+      ; c∋ab = subst (λ k → odef k (& < * b , * a >)) eq zs05 ; x=ba = refl } where
+        zs05 : odef (ZPmirror A B C cab)  (& < * b , * a >)
+        zs05 = record { a = _ ; b = _ ; aa = aa ; bb = bb ; c∋ab = cx ; x=ba = refl } 
+
+ZPmirror-⊆ : {A B C D : HOD}  → (C⊆D : C ⊆ D) → {cab : C  ⊆ ZFP A B } {dab : D  ⊆ ZFP A B } → ZPmirror A B C cab ⊆ ZPmirror A B D dab
+ZPmirror-⊆ {A} {B} {C} {D} C⊆D {cab} {dab} {x} record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab ; x=ba = x=ba } = 
+        record { a = _ ; b = _ ; aa = aa ; bb = bb ; c∋ab = C⊆D c∋ab ; x=ba = x=ba } 
+
+ZPmirror-∩ : {A B C D : HOD}  → {cdab : (C ∩ D) ⊆ ZFP A B } {cab : C  ⊆ ZFP A B } {dab : D  ⊆ ZFP A B } 
+        → ZPmirror A B (C ∩ D) cdab ≡ ZPmirror A B C cab ∩ ZPmirror A B D dab
+ZPmirror-∩ {A} {B} {C} {D} {cdab} {cab} {dab} = ==→o≡ record { eq→ = za06 ; eq← = za07 } where
+        za06 :  ZPmirror A B (C ∩ D) cdab ⊆ ( ZPmirror A B C cab ∩ ZPmirror A B D dab )
+        za06 {x} record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab ; x=ba = x=ba } = ⟪
+             record { a = _ ; b = _ ; aa = aa ; bb = bb ; c∋ab = proj1 c∋ab ; x=ba = x=ba } ,
+             record { a = _ ; b = _ ; aa = aa ; bb = bb ; c∋ab = proj2 c∋ab ; x=ba = x=ba } ⟫
+        za07 :  ( ZPmirror A B C cab ∩ ZPmirror A B D dab ) ⊆ ZPmirror A B (C ∩ D) cdab 
+        za07 {x} ⟪ record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = c∋ab1 ; x=ba = x=ba } ,
+             record { a = a' ; b = b' ; aa = aa' ; bb = bb' ; c∋ab = c∋ab2 ; x=ba = x=ba' } ⟫ =
+             record { a = a ; b = b ; aa = aa ; bb = bb ; c∋ab = ⟪ c∋ab1 , subst (λ k → odef D k) (sym zs02) c∋ab2 ⟫ ; x=ba = x=ba } where
+            zs02 : & < * a , * b > ≡ & < * a' , * b' >
+            zs02 = cong₂ (λ j k → & < j , k >) (sym (proj2 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso  *iso  (cong (*) (trans (sym x=ba') x=ba))))))  
+                                           (sym (proj1 (prod-≡ (subst₂ (λ j k → j ≡ k) *iso  *iso  (cong (*) (trans (sym x=ba') x=ba)))))) 
+
+
 ZFP∩  : {A B C : HOD} → ( ZFP (A ∩ B) C ≡ ZFP A C ∩ ZFP B C ) ∧ ( ZFP C (A ∩ B) ≡ ZFP C A  ∩ ZFP C B )
 proj1 (ZFP∩ {A} {B} {C} ) = ==→o≡ record { eq→ = zfp00  ; eq← = zfp01 } where
    zfp00 : {x : Ordinal} → ZFProduct (A ∩ B) C x → odef (ZFP A C ∩ ZFP B C) x