comparison src/Topology.agda @ 1476:32001d93755b

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 28 Jun 2024 20:55:38 +0900
parents 47d3cc596d68
children 0b30bb7c7501
comparison
equal deleted inserted replaced
1475:6752e2ff4dc6 1476:32001d93755b
1 {-# OPTIONS --allow-unsolved-metas #-} 1 {-# OPTIONS --cubical-compatible --safe #-}
2
3 open import Level 2 open import Level
4 open import Ordinals 3 open import Ordinals
5 module Topology {n : Level } (O : Ordinals {n}) where
6
7 open import logic 4 open import logic
5 open import Relation.Nullary
6
7 open import Level
8 open import Ordinals
9 import HODBase
10 import OD
11 open import Relation.Nullary
12 module Topology {n : Level } (O : Ordinals {n} ) (HODAxiom : HODBase.ODAxiom O) (ho< : OD.ODAxiom-ho< O HODAxiom )
13 (AC : OD.AxiomOfChoice O HODAxiom ) where
14
15
16 open import Relation.Binary.PropositionalEquality hiding ( [_] )
17 open import Relation.Binary.Definitions
18
19 open import Data.Empty
20
21 import OrdUtil
22
23 open Ordinals.Ordinals O
24 open Ordinals.IsOrdinals isOrdinal
25 import ODUtil
26
27 open import logic
28 open import nat
29
30 open OrdUtil O
31 open ODUtil O HODAxiom ho<
32
8 open _∧_ 33 open _∧_
9 open _∨_ 34 open _∨_
10 open Bool 35 open Bool
11 36
12 import OD 37 open HODBase._==_
13 open import Relation.Nullary 38
14 open import Data.Empty 39 open HODBase.ODAxiom HODAxiom
15 open import Relation.Binary.Core 40 open OD O HODAxiom
16 open import Relation.Binary.Definitions 41
42 open HODBase.HOD
43
44 open AxiomOfChoice AC
45 open import ODC O HODAxiom AC as ODC
46
47 open import Level
48 open import Ordinals
49
50 import filter
51
52 open import Relation.Nullary
53 -- open import Relation.Binary hiding ( _⇔_ )
54 open import Data.Empty
17 open import Relation.Binary.PropositionalEquality 55 open import Relation.Binary.PropositionalEquality
18 import BAlgebra 56 open import Data.Nat renaming ( zero to Zero ; suc to Suc ; ℕ to Nat ; _⊔_ to _n⊔_ )
19 open BAlgebra O 57 import BAlgebra
20 open inOrdinal O 58
21 open OD O 59 open import ZProduct O HODAxiom ho<
22 open OD.OD 60 open import filter O HODAxiom ho< AC
23 open ODAxiom odAxiom 61
24 import OrdUtil
25 import ODUtil
26 open Ordinals.Ordinals O
27 open Ordinals.IsOrdinals isOrdinal
28 -- open Ordinals.IsNext isNext
29 open OrdUtil O
30 open ODUtil O
31
32 import ODC
33 open ODC O
34
35 open import filter O
36 open import ZProduct O
37 62
38 record Topology ( L : HOD ) : Set (suc n) where 63 record Topology ( L : HOD ) : Set (suc n) where
39 field 64 field
40 OS : HOD 65 OS : HOD
41 OS⊆PL : OS ⊆ Power L 66 OS⊆PL : OS ⊆ Power L
43 o∪ : { P : HOD } → P ⊆ OS → OS ∋ Union P 68 o∪ : { P : HOD } → P ⊆ OS → OS ∋ Union P
44 OS∋od∅ : OS ∋ od∅ -- OS ∋ Union od∅ 69 OS∋od∅ : OS ∋ od∅ -- OS ∋ Union od∅
45 --- we may add 70 --- we may add
46 -- OS∋L : OS ∋ L 71 -- OS∋L : OS ∋ L
47 -- closed Set 72 -- closed Set
73 open BAlgebra O HODAxiom ho< L ?
48 CS : HOD 74 CS : HOD
49 CS = record { od = record { def = λ x → (* x ⊆ L) ∧ odef OS (& ( L \ (* x ))) } ; odmax = osuc (& L) ; <odmax = tp02 } where 75 CS = record { od = record { def = λ x → (* x ⊆ L) ∧ odef OS (& ( L \ (* x ))) } ; odmax = osuc (& L) ; <odmax = tp02 } where
50 tp02 : {y : Ordinal } → (* y ⊆ L) ∧ odef OS (& (L \ * y)) → y o< osuc (& L) 76 tp02 : {y : Ordinal } → (* y ⊆ L) ∧ odef OS (& (L \ * y)) → y o< osuc (& L)
51 tp02 {y} nop = subst (λ k → k o≤ & L ) &iso ( ⊆→o≤ (λ {x} yx → proj1 nop yx )) 77 tp02 {y} nop = subst (λ k → k o≤ & L ) &iso ( ⊆→o≤ (λ {x} yx → proj1 nop yx ))
52 os⊆L : {x : HOD} → OS ∋ x → x ⊆ L 78 os⊆L : {x : HOD} → OS ∋ x → x ⊆ L
53 os⊆L {x} Ox {y} xy = ( OS⊆PL Ox ) _ (subst (λ k → odef k y) (sym *iso) xy ) 79 os⊆L {x} Ox {y} xy = ( OS⊆PL Ox ) _ (subst (λ k → odef k y) ? xy )
54 cs⊆L : {x : HOD} → CS ∋ x → x ⊆ L 80 cs⊆L : {x : HOD} → CS ∋ x → x ⊆ L
55 cs⊆L {x} Cx {y} xy = proj1 Cx (subst (λ k → odef k y ) (sym *iso) xy ) 81 cs⊆L {x} Cx {y} xy = proj1 Cx (subst (λ k → odef k y ) ? xy )
56 CS∋L : CS ∋ L 82 CS∋L : CS ∋ L
57 CS∋L = ⟪ subst (λ k → k ⊆ L) (sym *iso) (λ x → x) , subst (λ k → odef OS (& k)) (sym lem0) OS∋od∅ ⟫ where 83 CS∋L = ⟪ subst (λ k → k ⊆ L) ? (λ x → x) , subst (λ k → odef OS (& k)) (sym lem0) OS∋od∅ ⟫ where
58 lem0 : L \ * (& L) ≡ od∅ 84 lem0 : L \ * (& L) ≡ od∅
59 lem0 = subst (λ k → L \ k ≡ od∅) (sym *iso) L\L=0 85 lem0 = subst (λ k → L \ k ≡ od∅) ? ? -- L\L=0
60 CS⊆PL : CS ⊆ Power L 86 CS⊆PL : CS ⊆ Power L
61 CS⊆PL {x} Cx y xy = proj1 Cx xy 87 CS⊆PL {x} Cx y xy = proj1 Cx xy
62 P\CS=OS : {cs : HOD} → CS ∋ cs → OS ∋ ( L \ cs ) 88 P\CS=OS : {cs : HOD} → CS ∋ cs → OS ∋ ( L \ cs )
63 P\CS=OS {cs} ⟪ cs⊆L , olcs ⟫ = subst (λ k → odef OS k) (cong (λ k → & ( L \ k)) *iso) olcs 89 P\CS=OS {cs} ⟪ cs⊆L , olcs ⟫ = subst (λ k → odef OS k) ? olcs
64 P\OS=CS : {cs : HOD} → OS ∋ cs → CS ∋ ( L \ cs ) 90 P\OS=CS : {cs : HOD} → OS ∋ cs → CS ∋ ( L \ cs )
65 P\OS=CS {os} oos = ⟪ subst (λ k → k ⊆ L) (sym *iso) proj1 91 P\OS=CS {os} oos = ⟪ subst (λ k → k ⊆ L) ? proj1
66 , subst (λ k → odef OS k) (cong (&) (trans (sym (L\Lx=x (os⊆L oos))) (cong (λ k → L \ k) (sym *iso)) )) oos ⟫ 92 , subst (λ k → odef OS k) (cong (&) (trans (sym ?) (cong (λ k → L \ k) ?) )) oos ⟫
67 93
68 open Topology 94 open Topology
69 95
70 -- Closure ( Intersection of Closed Set which include A ) 96 -- Closure ( Intersection of Closed Set which include A )
71 97
72 Cl : {L : HOD} → (top : Topology L) → (A : HOD) → HOD 98 Cl : {L : HOD} → (top : Topology L) → (A : HOD) → HOD
73 Cl {L} top A = record { od = record { def = λ x → odef L x ∧ ( (c : Ordinal) → odef (CS top) c → A ⊆ * c → odef (* c) x ) } 99 Cl {L} top A = record { od = record { def = λ x → odef L x ∧ ( (c : Ordinal) → odef (CS top) c → A ⊆ * c → odef (* c) x ) }
74 ; odmax = & L ; <odmax = odef∧< } 100 ; odmax = & L ; <odmax = odef∧< }
75 101
76 ClL : {L : HOD} → (top : Topology L) → Cl top L ≡ L 102 ClL : {L : HOD} → (top : Topology L) → Cl top L =h= L
77 ClL {L} top = ==→o≡ ( record { eq→ = λ {x} ic 103 ClL {L} top = record { eq→ = λ {x} ic
78 → subst (λ k → odef k x) *iso ((proj2 ic) (& L) (CS∋L top) (subst (λ k → L ⊆ k) (sym *iso) ( λ x → x))) 104 → subst (λ k → odef k x) ? ((proj2 ic) (& L) (CS∋L top) (subst (λ k → L ⊆ k) ? ( λ x → x)))
79 ; eq← = λ {x} lx → ⟪ lx , ( λ c cs l⊆c → l⊆c lx) ⟫ } ) 105 ; eq← = λ {x} lx → ⟪ lx , ( λ c cs l⊆c → l⊆c lx) ⟫ }
80 106
81 -- Closure is Closed Set 107 -- Closure is Closed Set
82 108
83 CS∋Cl : {L : HOD} → (top : Topology L) → (A : HOD) → CS top ∋ Cl top A 109 CS∋Cl : {L : HOD} → (top : Topology L) → (A : HOD) → CS top ∋ Cl top A
84 CS∋Cl {L} top A = subst (λ k → CS top ∋ k) (==→o≡ cc00) (P\OS=CS top UOCl-is-OS) where 110 CS∋Cl {L} top A = subst (λ k → CS top ∋ k) ? (P\OS=CS top UOCl-is-OS) where
111 open BAlgebra O HODAxiom ho< L ?
85 OCl : HOD -- set of open set which it not contains A 112 OCl : HOD -- set of open set which it not contains A
86 OCl = record { od = record { def = λ o → odef (OS top) o ∧ ( A ⊆ (L \ * o) ) } ; odmax = & (OS top) ; <odmax = odef∧< } 113 OCl = record { od = record { def = λ o → odef (OS top) o ∧ ( A ⊆ (L \ * o) ) } ; odmax = & (OS top) ; <odmax = odef∧< }
87 OCl⊆OS : OCl ⊆ OS top 114 OCl⊆OS : OCl ⊆ OS top
88 OCl⊆OS ox = proj1 ox 115 OCl⊆OS ox = proj1 ox
89 UOCl-is-OS : OS top ∋ Union OCl 116 UOCl-is-OS : OS top ∋ Union OCl
91 cc00 : (L \ Union OCl) =h= Cl top A 118 cc00 : (L \ Union OCl) =h= Cl top A
92 cc00 = record { eq→ = cc01 ; eq← = cc03 } where 119 cc00 = record { eq→ = cc01 ; eq← = cc03 } where
93 cc01 : {x : Ordinal} → odef (L \ Union OCl) x → odef L x ∧ ((c : Ordinal) → odef (CS top) c → A ⊆ * c → odef (* c) x) 120 cc01 : {x : Ordinal} → odef (L \ Union OCl) x → odef L x ∧ ((c : Ordinal) → odef (CS top) c → A ⊆ * c → odef (* c) x)
94 cc01 {x} ⟪ Lx , nul ⟫ = ⟪ Lx , ( λ c cc ac → cc02 c cc ac nul ) ⟫ where 121 cc01 {x} ⟪ Lx , nul ⟫ = ⟪ Lx , ( λ c cc ac → cc02 c cc ac nul ) ⟫ where
95 cc02 : (c : Ordinal) → odef (CS top) c → A ⊆ * c → ¬ odef (Union OCl) x → odef (* c) x 122 cc02 : (c : Ordinal) → odef (CS top) c → A ⊆ * c → ¬ odef (Union OCl) x → odef (* c) x
96 cc02 c cc ac nox with ODC.∋-p O (* c) (* x) 123 cc02 c cc ac nox with ODC.∋-p (* c) (* x)
97 ... | yes y = subst (λ k → odef (* c) k) &iso y 124 ... | yes y = subst (λ k → odef (* c) k) &iso y
98 ... | no ncx = ⊥-elim ( nox record { owner = & ( L \ * c) ; ao = ⟪ proj2 cc , cc07 ⟫ ; ox = subst (λ k → odef k x) (sym *iso) cc06 } ) where 125 ... | no ncx = ⊥-elim ( nox record { owner = & ( L \ * c) ; ao = ⟪ proj2 cc , cc07 ⟫ ; ox = subst (λ k → odef k x) ? cc06 } ) where
99 cc06 : odef (L \ * c) x 126 cc06 : odef (L \ * c) x
100 cc06 = ⟪ Lx , subst (λ k → ¬ odef (* c) k) &iso ncx ⟫ 127 cc06 = ⟪ Lx , subst (λ k → ¬ odef (* c) k) &iso ncx ⟫
101 cc08 : * c ⊆ L 128 cc08 : * c ⊆ L
102 cc08 = cs⊆L top (subst (λ k → odef (CS top) k ) (sym &iso) cc ) 129 cc08 = cs⊆L top (subst (λ k → odef (CS top) k ) (sym &iso) cc )
103 cc07 : A ⊆ (L \ * (& (L \ * c))) 130 cc07 : A ⊆ (L \ * (& (L \ * c)))
104 cc07 {z} az = subst (λ k → odef k z ) ( 131 cc07 {z} az = subst (λ k → odef k z ) (
105 begin * c ≡⟨ sym ( L\Lx=x cc08 ) ⟩ 132 begin * c ≡⟨ sym ? ⟩
106 L \ (L \ * c) ≡⟨ cong (λ k → L \ k ) (sym *iso) ⟩ 133 L \ (L \ * c) ≡⟨ cong (λ k → L \ k ) ? ⟩
107 L \ * (& (L \ * c)) ∎ ) ( ac az ) where open ≡-Reasoning 134 L \ * (& (L \ * c)) ∎ ) ( ac az ) where open ≡-Reasoning
108 cc03 : {x : Ordinal} → odef L x ∧ ((c : Ordinal) → odef (CS top) c → A ⊆ * c → odef (* c) x) → odef (L \ Union OCl) x 135 cc03 : {x : Ordinal} → odef L x ∧ ((c : Ordinal) → odef (CS top) c → A ⊆ * c → odef (* c) x) → odef (L \ Union OCl) x
109 cc03 {x} ⟪ Lx , ccx ⟫ = ⟪ Lx , cc04 ⟫ where 136 cc03 {x} ⟪ Lx , ccx ⟫ = ⟪ Lx , cc04 ⟫ where
110 -- if x is in Cl A, it is in some c : CS, OCl says it is not , i.e. L \ o ∋ x, so it is in (L \ Union OCl) x 137 -- if x is in Cl A, it is in some c : CS, OCl says it is not , i.e. L \ o ∋ x, so it is in (L \ Union OCl) x
111 cc04 : ¬ odef (Union OCl) x 138 cc04 : ¬ odef (Union OCl) x
112 cc04 record { owner = o ; ao = ⟪ oo , A⊆L-o ⟫ ; ox = ox } = proj2 ( subst (λ k → odef k x) *iso cc05) ox where 139 cc04 record { owner = o ; ao = ⟪ oo , A⊆L-o ⟫ ; ox = ox } = proj2 ( subst (λ k → odef k x) ? cc05) ox where
113 cc05 : odef (* (& (L \ * o))) x 140 cc05 : odef (* (& (L \ * o))) x
114 cc05 = ccx (& (L \ * o)) (P\OS=CS top (subst (λ k → odef (OS top) k) (sym &iso) oo)) (subst (λ k → A ⊆ k) (sym *iso) A⊆L-o) 141 cc05 = ccx (& (L \ * o)) (P\OS=CS top (subst (λ k → odef (OS top) k) (sym &iso) oo)) (subst (λ k → A ⊆ k) ? A⊆L-o)
115 142
116 CS∋x→Clx=x : {L x : HOD} → (top : Topology L) → CS top ∋ x → Cl top x ≡ x 143 CS∋x→Clx=x : {L x : HOD} → (top : Topology L) → CS top ∋ x → Cl top x =h= x
117 CS∋x→Clx=x {L} {x} top cx = ==→o≡ record { eq→ = cc10 ; eq← = cc11 } where 144 CS∋x→Clx=x {L} {x} top cx = record { eq→ = cc10 ; eq← = cc11 } where
118 cc10 : {y : Ordinal} → odef L y ∧ ((c : Ordinal) → odef (CS top) c → x ⊆ * c → odef (* c) y) → odef x y 145 cc10 : {y : Ordinal} → odef L y ∧ ((c : Ordinal) → odef (CS top) c → x ⊆ * c → odef (* c) y) → odef x y
119 cc10 {y} ⟪ Ly , cc ⟫ = subst (λ k → odef k y) *iso ( cc (& x) cx (λ {z} xz → subst (λ k → odef k z) (sym *iso) xz ) ) 146 cc10 {y} ⟪ Ly , cc ⟫ = subst (λ k → odef k y) ? ( cc (& x) cx (λ {z} xz → subst (λ k → odef k z) ? xz ) )
120 cc11 : {y : Ordinal} → odef x y → odef L y ∧ ((c : Ordinal) → odef (CS top) c → x ⊆ * c → odef (* c) y) 147 cc11 : {y : Ordinal} → odef x y → odef L y ∧ ((c : Ordinal) → odef (CS top) c → x ⊆ * c → odef (* c) y)
121 cc11 {y} xy = ⟪ cs⊆L top cx xy , (λ c oc x⊆c → x⊆c xy ) ⟫ 148 cc11 {y} xy = ⟪ cs⊆L top cx xy , (λ c oc x⊆c → x⊆c xy ) ⟫
122 149
123 -- Subbase P 150 -- Subbase P
124 -- A set of countable intersection of P will be a base (x ix an element of the base) 151 -- A set of countable intersection of P will be a base (x ix an element of the base)
134 sbp P {x} (gi {y} px) = x 161 sbp P {x} (gi {y} px) = x
135 sbp P {.(& (* _ ∩ * _))} (g∩ sb sb₁) = sbp P sb 162 sbp P {.(& (* _ ∩ * _))} (g∩ sb sb₁) = sbp P sb
136 163
137 is-sbp : (P : HOD) {x y : Ordinal } → (px : Subbase P x) → odef (* x) y → odef P (sbp P px ) ∧ odef (* (sbp P px)) y 164 is-sbp : (P : HOD) {x y : Ordinal } → (px : Subbase P x) → odef (* x) y → odef P (sbp P px ) ∧ odef (* (sbp P px)) y
138 is-sbp P {x} (gi px) xy = ⟪ px , xy ⟫ 165 is-sbp P {x} (gi px) xy = ⟪ px , xy ⟫
139 is-sbp P {.(& (* _ ∩ * _))} (g∩ {x} {y} px px₁) xy = is-sbp P px (proj1 (subst (λ k → odef k _ ) *iso xy)) 166 is-sbp P {.(& (* _ ∩ * _))} (g∩ {x} {y} px px₁) xy = is-sbp P px (proj1 (subst (λ k → odef k _ ) ? xy))
140 167
141 sb⊆ : {P Q : HOD} {x : Ordinal } → P ⊆ Q → Subbase P x → Subbase Q x 168 sb⊆ : {P Q : HOD} {x : Ordinal } → P ⊆ Q → Subbase P x → Subbase Q x
142 sb⊆ {P} {Q} P⊆Q (gi px) = gi (P⊆Q px) 169 sb⊆ {P} {Q} P⊆Q (gi px) = gi (P⊆Q px)
143 sb⊆ {P} {Q} P⊆Q (g∩ px qx) = g∩ (sb⊆ P⊆Q px) (sb⊆ P⊆Q qx) 170 sb⊆ {P} {Q} P⊆Q (g∩ px qx) = g∩ (sb⊆ P⊆Q px) (sb⊆ P⊆Q qx)
144 171
171 198
172 InducedTopology : (L P : HOD) → IsSubBase L P → Topology L 199 InducedTopology : (L P : HOD) → IsSubBase L P → Topology L
173 InducedTopology L P isb = record { OS = SO L P ; OS⊆PL = tp00 200 InducedTopology L P isb = record { OS = SO L P ; OS⊆PL = tp00
174 ; o∪ = tp02 ; o∩ = tp01 ; OS∋od∅ = tp03 } where 201 ; o∪ = tp02 ; o∩ = tp01 ; OS∋od∅ = tp03 } where
175 tp03 : {x : Ordinal } → odef (* (& od∅)) x → Base L P (& od∅) x 202 tp03 : {x : Ordinal } → odef (* (& od∅)) x → Base L P (& od∅) x
176 tp03 {x} 0x = ⊥-elim ( empty (* x) ( subst₂ (λ j k → odef j k ) *iso (sym &iso) 0x )) 203 tp03 {x} 0x = ⊥-elim ( empty (* x) ( subst₂ (λ j k → odef j k ) ? (sym &iso) 0x ))
177 tp00 : SO L P ⊆ Power L 204 tp00 : SO L P ⊆ Power L
178 tp00 {u} ou x ux with ou ux 205 tp00 {u} ou x ux with ou ux
179 ... | record { b = b ; u⊆L = u⊆L ; sb = sb ; b⊆u = b⊆u ; bx = bx } = u⊆L (b⊆u bx) 206 ... | record { b = b ; u⊆L = u⊆L ; sb = sb ; b⊆u = b⊆u ; bx = bx } = u⊆L (b⊆u bx)
180 tp01 : {p q : HOD} → SO L P ∋ p → SO L P ∋ q → SO L P ∋ (p ∩ q) 207 tp01 : {p q : HOD} → SO L P ∋ p → SO L P ∋ q → SO L P ∋ (p ∩ q)
181 tp01 {p} {q} op oq {x} ux = record { b = b ; u⊆L = subst (λ k → k ⊆ L) (sym *iso) ul 208 tp01 {p} {q} op oq {x} ux = record { b = b ; u⊆L = subst (λ k → k ⊆ L) ? ul
182 ; sb = g∩ (Base.sb (op px)) (Base.sb (oq qx)) ; b⊆u = tp08 ; bx = tp14 } where 209 ; sb = g∩ (Base.sb (op px)) (Base.sb (oq qx)) ; b⊆u = tp08 ; bx = tp14 } where
183 px : odef (* (& p)) x 210 px : odef (* (& p)) x
184 px = subst (λ k → odef k x ) (sym *iso) ( proj1 (subst (λ k → odef k _ ) *iso ux ) ) 211 px = subst (λ k → odef k x ) ? ( proj1 (subst (λ k → odef k _ ) ? ux ) )
185 qx : odef (* (& q)) x 212 qx : odef (* (& q)) x
186 qx = subst (λ k → odef k x ) (sym *iso) ( proj2 (subst (λ k → odef k _ ) *iso ux ) ) 213 qx = subst (λ k → odef k x ) ? ( proj2 (subst (λ k → odef k _ ) ? ux ) )
187 b : Ordinal 214 b : Ordinal
188 b = & (* (Base.b (op px)) ∩ * (Base.b (oq qx))) 215 b = & (* (Base.b (op px)) ∩ * (Base.b (oq qx)))
189 tp08 : * b ⊆ * (& (p ∩ q) ) 216 tp08 : * b ⊆ * (& (p ∩ q) )
190 tp08 = subst₂ (λ j k → j ⊆ k ) (sym *iso) (sym *iso) (⊆∩-dist {(* (Base.b (op px)) ∩ * (Base.b (oq qx)))} {p} {q} tp09 tp10 ) where 217 tp08 = subst₂ (λ j k → j ⊆ k ) ? ? (⊆∩-dist {(* (Base.b (op px)) ∩ * (Base.b (oq qx)))} {p} {q} tp09 tp10 ) where
191 tp11 : * (Base.b (op px)) ⊆ * (& p ) 218 tp11 : * (Base.b (op px)) ⊆ * (& p )
192 tp11 = Base.b⊆u (op px) 219 tp11 = Base.b⊆u (op px)
193 tp12 : * (Base.b (oq qx)) ⊆ * (& q ) 220 tp12 : * (Base.b (oq qx)) ⊆ * (& q )
194 tp12 = Base.b⊆u (oq qx) 221 tp12 = Base.b⊆u (oq qx)
195 tp09 : (* (Base.b (op px)) ∩ * (Base.b (oq qx))) ⊆ p 222 tp09 : (* (Base.b (op px)) ∩ * (Base.b (oq qx))) ⊆ p
196 tp09 = ⊆∩-incl-1 {* (Base.b (op px))} {* (Base.b (oq qx))} {p} (subst (λ k → (* (Base.b (op px))) ⊆ k ) *iso tp11) 223 tp09 = ⊆∩-incl-1 {* (Base.b (op px))} {* (Base.b (oq qx))} {p} (subst (λ k → (* (Base.b (op px))) ⊆ k ) ? tp11)
197 tp10 : (* (Base.b (op px)) ∩ * (Base.b (oq qx))) ⊆ q 224 tp10 : (* (Base.b (op px)) ∩ * (Base.b (oq qx))) ⊆ q
198 tp10 = ⊆∩-incl-2 {* (Base.b (oq qx))} {* (Base.b (op px))} {q} (subst (λ k → (* (Base.b (oq qx))) ⊆ k ) *iso tp12) 225 tp10 = ⊆∩-incl-2 {* (Base.b (oq qx))} {* (Base.b (op px))} {q} (subst (λ k → (* (Base.b (oq qx))) ⊆ k ) ? tp12)
199 tp14 : odef (* (& (* (Base.b (op px)) ∩ * (Base.b (oq qx))))) x 226 tp14 : odef (* (& (* (Base.b (op px)) ∩ * (Base.b (oq qx))))) x
200 tp14 = subst (λ k → odef k x ) (sym *iso) ⟪ Base.bx (op px) , Base.bx (oq qx) ⟫ 227 tp14 = subst (λ k → odef k x ) ? ⟪ Base.bx (op px) , Base.bx (oq qx) ⟫
201 ul : (p ∩ q) ⊆ L 228 ul : (p ∩ q) ⊆ L
202 ul = subst (λ k → k ⊆ L ) *iso (λ {z} pq → (Base.u⊆L (op px)) (pz pq) ) where 229 ul = subst (λ k → k ⊆ L ) ? (λ {z} pq → (Base.u⊆L (op px)) (pz pq) ) where
203 pz : {z : Ordinal } → odef (* (& (p ∩ q))) z → odef (* (& p)) z 230 pz : {z : Ordinal } → odef (* (& (p ∩ q))) z → odef (* (& p)) z
204 pz {z} pq = subst (λ k → odef k z ) (sym *iso) ( proj1 (subst (λ k → odef k _ ) *iso pq ) ) 231 pz {z} pq = subst (λ k → odef k z ) ? ( proj1 (subst (λ k → odef k _ ) ? pq ) )
205 tp02 : { q : HOD} → q ⊆ SO L P → SO L P ∋ Union q 232 tp02 : { q : HOD} → q ⊆ SO L P → SO L P ∋ Union q
206 tp02 {q} q⊆O {x} ux with subst (λ k → odef k x) *iso ux 233 tp02 {q} q⊆O {x} = ? -- ux with subst (λ k → odef k x) ? ux
207 ... | record { owner = y ; ao = qy ; ox = yx } with q⊆O qy yx 234 -- . | record { owner = y ; ao = qy ; ox = yx } with q⊆O qy yx
208 ... | record { b = b ; u⊆L = u⊆L ; sb = sb ; b⊆u = b⊆u ; bx = bx } = record { b = b ; u⊆L = subst (λ k → k ⊆ L) (sym *iso) tp04 235 -- . | record { b = b ; u⊆L = u⊆L ; sb = sb ; b⊆u = b⊆u ; bx = bx } = record { b = b ; u⊆L = subst (λ k → k ⊆ L) ? tp04
209 ; sb = sb ; b⊆u = subst ( λ k → * b ⊆ k ) (sym *iso) tp06 ; bx = bx } where 236 -- ; sb = sb ; b⊆u = subst ( λ k → * b ⊆ k ) ? tp06 ; bx = bx } where
210 tp05 : Union q ⊆ L 237 -- tp05 : Union q ⊆ L
211 tp05 {z} record { owner = y ; ao = qy ; ox = yx } with q⊆O qy yx 238 -- tp05 {z} record { owner = y ; ao = qy ; ox = yx } with q⊆O qy yx
212 ... | record { b = b ; u⊆L = u⊆L ; sb = sb ; b⊆u = b⊆u ; bx = bx } 239 -- ... | record { b = b ; u⊆L = u⊆L ; sb = sb ; b⊆u = b⊆u ; bx = bx }
213 = IsSubBase.P⊆PL isb (proj1 (is-sbp P sb bx )) _ (proj2 (is-sbp P sb bx )) 240 -- = IsSubBase.P⊆PL isb (proj1 (is-sbp P sb bx )) _ (proj2 (is-sbp P sb bx ))
214 tp04 : Union q ⊆ L 241 -- tp04 : Union q ⊆ L
215 tp04 = tp05 242 -- tp04 = tp05
216 tp06 : * b ⊆ Union q 243 -- tp06 : * b ⊆ Union q
217 tp06 {z} bz = record { owner = y ; ao = qy ; ox = b⊆u bz } 244 -- tp06 {z} bz = record { owner = y ; ao = qy ; ox = b⊆u bz }
218 245
219 -- Product Topology 246 -- Product Topology
220 247
221 open ZFProduct 248 open ZFProduct
222 249
238 prod : x ≡ & (ZFP P (* q )) 265 prod : x ≡ & (ZFP P (* q ))
239 266
240 pbase⊆PL : {P Q : HOD} → (TP : Topology P) → (TQ : Topology Q) → {x : Ordinal } → BaseP TP Q x ∨ BaseQ P TQ x → odef (Power (ZFP P Q)) x 267 pbase⊆PL : {P Q : HOD} → (TP : Topology P) → (TQ : Topology Q) → {x : Ordinal } → BaseP TP Q x ∨ BaseQ P TQ x → odef (Power (ZFP P Q)) x
241 pbase⊆PL {P} {Q} TP TQ {z} (case1 record { p = p ; op = op ; prod = prod }) = subst (λ k → odef (Power (ZFP P Q)) k ) (sym prod) tp01 where 268 pbase⊆PL {P} {Q} TP TQ {z} (case1 record { p = p ; op = op ; prod = prod }) = subst (λ k → odef (Power (ZFP P Q)) k ) (sym prod) tp01 where
242 tp01 : odef (Power (ZFP P Q)) (& (ZFP (* p) Q)) 269 tp01 : odef (Power (ZFP P Q)) (& (ZFP (* p) Q))
243 tp01 w wz with subst (λ k → odef k w ) *iso wz 270 tp01 w wz = ?
244 ... | ab-pair {a} {b} pa qb = ZFP→ (subst (λ k → odef P k ) (sym &iso) tp03 ) (subst (λ k → odef Q k ) (sym &iso) qb ) where 271 -- tp01 w wz with subst (λ k → odef k w ) ? wz
245 tp03 : odef P a 272 -- ... | ab-pair {a} {b} pa qb = ZFP→ (subst (λ k → odef P k ) (sym &iso) tp03 ) (subst (λ k → odef Q k ) (sym &iso) qb ) where
246 tp03 = os⊆L TP (subst (λ k → odef (OS TP) k) (sym &iso) op) pa 273 -- tp03 : odef P a
274 -- tp03 = os⊆L TP (subst (λ k → odef (OS TP) k) (sym &iso) op) pa
247 pbase⊆PL {P} {Q} TP TQ {z} (case2 record { q = q ; oq = oq ; prod = prod }) = subst (λ k → odef (Power (ZFP P Q)) k ) (sym prod) tp01 where 275 pbase⊆PL {P} {Q} TP TQ {z} (case2 record { q = q ; oq = oq ; prod = prod }) = subst (λ k → odef (Power (ZFP P Q)) k ) (sym prod) tp01 where
248 tp01 : odef (Power (ZFP P Q)) (& (ZFP P (* q) )) 276 tp01 : odef (Power (ZFP P Q)) (& (ZFP P (* q) ))
249 tp01 w wz with subst (λ k → odef k w ) *iso wz 277 tp01 w wz = ? -- with subst (λ k → odef k w ) ? wz
250 ... | ab-pair {a} {b} pa qb = ZFP→ (subst (λ k → odef P k ) (sym &iso) pa ) (subst (λ k → odef Q k ) (sym &iso) tp03 ) where 278 -- ... | ab-pair {a} {b} pa qb = ZFP→ (subst (λ k → odef P k ) (sym &iso) pa ) (subst (λ k → odef Q k ) (sym &iso) tp03 ) where
251 tp03 : odef Q b 279 -- tp03 : odef Q b
252 tp03 = os⊆L TQ (subst (λ k → odef (OS TQ) k) (sym &iso) oq) qb 280 -- tp03 = os⊆L TQ (subst (λ k → odef (OS TQ) k) (sym &iso) oq) qb
253 281
254 pbase : {P Q : HOD} → Topology P → Topology Q → HOD 282 pbase : {P Q : HOD} → Topology P → Topology Q → HOD
255 pbase {P} {Q} TP TQ = record { od = record { def = λ x → BaseP TP Q x ∨ BaseQ P TQ x } ; odmax = & (Power (ZFP P Q)) ; <odmax = tp00 } where 283 pbase {P} {Q} TP TQ = record { od = record { def = λ x → BaseP TP Q x ∨ BaseQ P TQ x } ; odmax = & (Power (ZFP P Q)) ; <odmax = tp00 } where
256 tp00 : {y : Ordinal} → BaseP TP Q y ∨ BaseQ P TQ y → y o< & (Power (ZFP P Q)) 284 tp00 : {y : Ordinal} → BaseP TP Q y ∨ BaseQ P TQ y → y o< & (Power (ZFP P Q))
257 tp00 {y} bpq = odef< ( pbase⊆PL TP TQ bpq ) 285 tp00 {y} bpq = odef< ( pbase⊆PL TP TQ bpq )
311 fip01 xcp = record { cover = λ Lx → ⊥-elim (fip02 Lx) ; P∋cover = λ Lx → ⊥-elim (fip02 Lx) ; isCover = λ Lx → ⊥-elim (fip02 Lx) } 339 fip01 xcp = record { cover = λ Lx → ⊥-elim (fip02 Lx) ; P∋cover = λ Lx → ⊥-elim (fip02 Lx) ; isCover = λ Lx → ⊥-elim (fip02 Lx) }
312 fip00 : {X : Ordinal} (xo : * X ⊆ OS top) (xcp : * X covers L) → Finite-∪ (* X) o∅ 340 fip00 : {X : Ordinal} (xo : * X ⊆ OS top) (xcp : * X covers L) → Finite-∪ (* X) o∅
313 fip00 {X} xo xcp = fin-e 341 fip00 {X} xo xcp = fin-e
314 ... | tri> ¬a ¬b 0<L = record { finCover = finCover ; isCover = isCover1 ; isFinite = isFinite } where 342 ... | tri> ¬a ¬b 0<L = record { finCover = finCover ; isCover = isCover1 ; isFinite = isFinite } where
315 -- set of coset of X 343 -- set of coset of X
344 open BAlgebra O HODAxiom ho< L ?
316 CX : {X : Ordinal} → * X ⊆ OS top → Ordinal 345 CX : {X : Ordinal} → * X ⊆ OS top → Ordinal
317 CX {X} ox = & ( Replace (* X) (λ z → L \ z ) RC\ ) 346 CX {X} ox = & ( Replace (* X) (λ z → L \ z ) RC\ )
318 CCX : {X : Ordinal} → (os : * X ⊆ OS top) → * (CX os) ⊆ CS top 347 CCX : {X : Ordinal} → (os : * X ⊆ OS top) → * (CX os) ⊆ CS top
319 CCX {X} os {x} ox with subst (λ k → odef k x) *iso ox 348 CCX {X} os {x} ox = ? -- with subst (λ k → odef k x) ? ox
320 ... | record { z = z ; az = az ; x=ψz = x=ψz } = ⟪ fip05 , fip06 ⟫ where -- x ≡ & (L \ * z) 349 -- ... | record { z = z ; az = az ; x=ψz = x=ψz } = ⟪ fip05 , fip06 ⟫ where -- x ≡ & (L \ * z)
321 fip07 : z ≡ & (L \ * x) 350 -- fip07 : z ≡ & (L \ * x)
322 fip07 = subst₂ (λ j k → j ≡ k) &iso (cong (λ k → & ( L \ k )) (cong (*) (sym x=ψz))) ( cong (&) ( ==→o≡ record { eq→ = fip09 ; eq← = fip08 } )) where 351 -- fip07 = subst₂ (λ j k → j ≡ k) &iso (cong (λ k → & ( L \ k )) (cong (*) (sym x=ψz))) ( cong (&) ( ==→o≡ record { eq→ = fip09 ; eq← = fip08 } )) where
323 fip08 : {x : Ordinal} → odef L x ∧ (¬ odef (* (& (L \ * z))) x) → odef (* z) x 352 -- fip08 : {x : Ordinal} → odef L x ∧ (¬ odef (* (& (L \ * z))) x) → odef (* z) x
324 fip08 {x} ⟪ Lx , not ⟫ with subst (λ k → (¬ odef k x)) *iso not -- ( odef L x ∧ odef (* z) x → ⊥) → ⊥ 353 -- fip08 {x} ⟪ Lx , not ⟫ with subst (λ k → (¬ odef k x)) ? not -- ( odef L x ∧ odef (* z) x → ⊥) → ⊥
325 ... | Lx∧¬zx = ODC.double-neg-elim O ( λ nz → Lx∧¬zx ⟪ Lx , nz ⟫ ) 354 -- ... | Lx∧¬zx = ODC.double-neg-elim O ( λ nz → Lx∧¬zx ⟪ Lx , nz ⟫ )
326 fip09 : {x : Ordinal} → odef (* z) x → odef L x ∧ (¬ odef (* (& (L \ * z))) x) 355 -- fip09 : {x : Ordinal} → odef (* z) x → odef L x ∧ (¬ odef (* (& (L \ * z))) x)
327 fip09 {w} zw = ⟪ os⊆L top (os (subst (λ k → odef (* X) k) (sym &iso) az)) zw , subst (λ k → ¬ odef k w) (sym *iso) fip10 ⟫ where 356 -- fip09 {w} zw = ⟪ os⊆L top (os (subst (λ k → odef (* X) k) (sym &iso) az)) zw , subst (λ k → ¬ odef k w) ? fip10 ⟫ where
328 fip10 : ¬ (odef (L \ * z) w) 357 -- fip10 : ¬ (odef (L \ * z) w)
329 fip10 ⟪ Lw , nzw ⟫ = nzw zw 358 -- fip10 ⟪ Lw , nzw ⟫ = nzw zw
330 fip06 : odef (OS top) (& (L \ * x)) 359 -- fip06 : odef (OS top) (& (L \ * x))
331 fip06 = os ( subst (λ k → odef (* X) k ) fip07 az ) 360 -- fip06 = os ( subst (λ k → odef (* X) k ) fip07 az )
332 fip05 : * x ⊆ L 361 -- fip05 : * x ⊆ L
333 fip05 {w} xw = proj1 ( subst (λ k → odef k w) (trans (cong (*) x=ψz) *iso ) xw ) 362 -- fip05 {w} xw = proj1 ( subst (λ k → odef k w) (trans (cong (*) x=ψz) ? ) xw )
363
334 -- 364 --
335 -- X covres L means Intersection of (CX X) contains nothing 365 -- X covres L means Intersection of (CX X) contains nothing
336 -- then some finite Intersection of (CX X) contains nothing ( contraposition of FIP .i.e. CFIP) 366 -- then some finite Intersection of (CX X) contains nothing ( contraposition of FIP .i.e. CFIP)
337 -- it means there is a finite cover 367 -- it means there is a finite cover
338 -- 368 --
339 finCoverBase : {X : Ordinal } → * X ⊆ OS top → * X covers L → Subbase (Replace (* X) (λ z → L \ z) RC\ ) o∅ 369 finCoverBase : {X : Ordinal } → * X ⊆ OS top → * X covers L → Subbase (Replace (* X) (λ z → L \ z) RC\ ) o∅
340 finCoverBase {X} ox oc with ODC.p∨¬p O (Subbase (Replace (* X) (λ z → L \ z) RC\ ) o∅) 370 finCoverBase {X} ox oc with p∨¬p (Subbase (Replace (* X) (λ z → L \ z) RC\ ) o∅)
341 ... | case1 sb = sb 371 ... | case1 sb = sb
342 ... | case2 ¬sb = ⊥-elim (¬¬cover fip25 fip20) where 372 ... | case2 ¬sb = ⊥-elim (¬¬cover fip25 fip20) where
343 ¬¬cover : {z : Ordinal } → odef L z → ¬ ( {y : Ordinal } → (Xy : odef (* X) y) → ¬ ( odef (* y) z )) 373 ¬¬cover : {z : Ordinal } → odef L z → ¬ ( {y : Ordinal } → (Xy : odef (* X) y) → ¬ ( odef (* y) z ))
344 ¬¬cover {z} Lz nc = nc ( P∋cover oc Lz ) (isCover oc _ ) 374 ¬¬cover {z} Lz nc = nc ( P∋cover oc Lz ) (isCover oc _ )
345 -- ¬sb → we have finite intersection 375 -- ¬sb → we have finite intersection
346 fip02 : {x : Ordinal} → Subbase (* (CX ox)) x → o∅ o< x 376 fip02 : {x : Ordinal} → Subbase (* (CX ox)) x → o∅ o< x
347 fip02 {x} sc with trio< x o∅ 377 fip02 {x} sc with trio< x o∅
348 ... | tri< a ¬b ¬c = ⊥-elim ( ¬x<0 a ) 378 ... | tri< a ¬b ¬c = ⊥-elim ( ¬x<0 a )
349 ... | tri> ¬a ¬b c = c 379 ... | tri> ¬a ¬b c = c
350 ... | tri≈ ¬a b ¬c = ⊥-elim (¬sb (subst₂ (λ j k → Subbase j k ) *iso b sc )) 380 ... | tri≈ ¬a b ¬c = ⊥-elim (¬sb (subst₂ (λ j k → Subbase j k ) ? b sc ))
351 -- we have some intersection because L is not empty (if we have an element of L, we don't need choice) 381 -- we have some intersection because L is not empty (if we have an element of L, we don't need choice)
352 fip26 : odef (* (CX ox)) (& (L \ * ( cover oc ( ODC.x∋minimal O L (0<P→ne 0<L) ) ))) 382 fip26 : odef (* (CX ox)) (& (L \ * ( cover oc ( x∋minimal L (0<P→ne 0<L) ) )))
353 fip26 = subst (λ k → odef k (& (L \ * ( cover oc ( ODC.x∋minimal O L (0<P→ne 0<L) ) )) )) (sym *iso) 383 fip26 = subst (λ k → odef k (& (L \ * ( cover oc ( x∋minimal L (0<P→ne 0<L) ) )) )) ?
354 record { z = cover oc (x∋minimal L (0<P→ne 0<L)) ; az = P∋cover oc (x∋minimal L (0<P→ne 0<L)) ; x=ψz = refl } 384 record { z = cover oc (x∋minimal L (0<P→ne 0<L)) ; az = P∋cover oc (x∋minimal L (0<P→ne 0<L)) ; x=ψz = refl }
355 fip25 : odef L( FIP.limit fip (CCX ox) fip02 ) 385 fip25 : odef L( FIP.limit fip (CCX ox) fip02 )
356 fip25 = FIP.L∋limit fip (CCX ox) fip02 fip26 386 fip25 = FIP.L∋limit fip (CCX ox) fip02 fip26
357 fip20 : {y : Ordinal } → (Xy : odef (* X) y) → ¬ ( odef (* y) ( FIP.limit fip (CCX ox) fip02 )) 387 fip20 : {y : Ordinal } → (Xy : odef (* X) y) → ¬ ( odef (* y) ( FIP.limit fip (CCX ox) fip02 ))
358 fip20 {y} Xy yl = proj2 fip21 yl where 388 fip20 {y} Xy yl = proj2 fip21 yl where
359 fip22 : odef (* (CX ox)) (& ( L \ * y )) 389 fip22 : odef (* (CX ox)) (& ( L \ * y ))
360 fip22 = subst (λ k → odef k (& ( L \ * y ))) (sym *iso) record { z = y ; az = Xy ; x=ψz = refl } 390 fip22 = subst (λ k → odef k (& ( L \ * y ))) ? record { z = y ; az = Xy ; x=ψz = refl }
361 fip21 : odef (L \ * y) ( FIP.limit fip (CCX ox) fip02 ) 391 fip21 : odef (L \ * y) ( FIP.limit fip (CCX ox) fip02 )
362 fip21 = subst (λ k → odef k ( FIP.limit fip (CCX ox) fip02 ) ) *iso ( FIP.is-limit fip (CCX ox) fip02 fip22 ) 392 fip21 = subst (λ k → odef k ( FIP.limit fip (CCX ox) fip02 ) ) ? ( FIP.is-limit fip (CCX ox) fip02 fip22 )
363 -- create HOD from Subbase ( finite intersection ) 393 -- create HOD from Subbase ( finite intersection )
364 finCoverSet : {X : Ordinal } → (x : Ordinal) → Subbase (Replace (* X) (λ z → L \ z) RC\ ) x → HOD 394 finCoverSet : {X : Ordinal } → (x : Ordinal) → Subbase (Replace (* X) (λ z → L \ z) RC\ ) x → HOD
365 finCoverSet {X} x (gi rx) = ( L \ * x ) , ( L \ * x ) 395 finCoverSet {X} x (gi rx) = ( L \ * x ) , ( L \ * x )
366 finCoverSet {X} x∩y (g∩ {x} {y} sx sy) = finCoverSet {X} x sx ∪ finCoverSet {X} y sy 396 finCoverSet {X} x∩y (g∩ {x} {y} sx sy) = finCoverSet {X} x sx ∪ finCoverSet {X} y sy
367 -- 397 --
372 isFinite : {X : Ordinal} (xo : * X ⊆ OS top) (xcp : * X covers L) → Finite-∪ (* X) (finCover xo xcp) 402 isFinite : {X : Ordinal} (xo : * X ⊆ OS top) (xcp : * X covers L) → Finite-∪ (* X) (finCover xo xcp)
373 isFinite {X} xo xcp = fip60 o∅ (finCoverBase xo xcp) where 403 isFinite {X} xo xcp = fip60 o∅ (finCoverBase xo xcp) where
374 fip60 : (x : Ordinal) → (sb : Subbase (Replace (* X) (λ z → L \ z) RC\ ) x ) → Finite-∪ (* X) (& (finCoverSet {X} x sb)) 404 fip60 : (x : Ordinal) → (sb : Subbase (Replace (* X) (λ z → L \ z) RC\ ) x ) → Finite-∪ (* X) (& (finCoverSet {X} x sb))
375 fip60 x (gi rx) = subst (λ k → Finite-∪ (* X) k) fip62 (fin-i (fip61 rx)) where 405 fip60 x (gi rx) = subst (λ k → Finite-∪ (* X) k) fip62 (fin-i (fip61 rx)) where
376 fip62 : & (* (& (L \ * x)) , * (& (L \ * x))) ≡ & ((L \ * x) , (L \ * x)) 406 fip62 : & (* (& (L \ * x)) , * (& (L \ * x))) ≡ & ((L \ * x) , (L \ * x))
377 fip62 = cong₂ (λ j k → & (j , k )) *iso *iso 407 fip62 = cong₂ (λ j k → & (j , k )) ? ?
378 fip61 : odef (Replace (* X) (_\_ L) RC\ ) x → odef (* X) ( & ((L \ * x ) )) 408 fip61 : odef (Replace (* X) (_\_ L) RC\ ) x → odef (* X) ( & ((L \ * x ) ))
379 fip61 record { z = z1 ; az = az1 ; x=ψz = x=ψz1 } = subst (λ k → odef (* X) k) fip33 az1 where 409 fip61 record { z = z1 ; az = az1 ; x=ψz = x=ψz1 } = subst (λ k → odef (* X) k) fip33 az1 where
380 fip34 : * z1 ⊆ L 410 fip34 : * z1 ⊆ L
381 fip34 {w} wz1 = os⊆L top (subst (λ k → odef (OS top) k) (sym &iso) (xo az1)) wz1 411 fip34 {w} wz1 = os⊆L top (subst (λ k → odef (OS top) k) (sym &iso) (xo az1)) wz1
382 fip33 : z1 ≡ & (L \ * x) 412 fip33 : z1 ≡ & (L \ * x)
383 fip33 = begin 413 fip33 = begin
384 z1 ≡⟨ sym &iso ⟩ 414 z1 ≡⟨ sym &iso ⟩
385 & (* z1) ≡⟨ cong (&) (sym (L\Lx=x fip34 )) ⟩ 415 & (* z1) ≡⟨ cong (&) ? ⟩
386 & (L \ ( L \ * z1)) ≡⟨ cong (λ k → & ( L \ k )) (sym *iso) ⟩ 416 & (L \ ( L \ * z1)) ≡⟨ cong (λ k → & ( L \ k )) ? ⟩
387 & (L \ * (& ( L \ * z1))) ≡⟨ cong (λ k → & ( L \ * k )) (sym x=ψz1) ⟩ 417 & (L \ * (& ( L \ * z1))) ≡⟨ cong (λ k → & ( L \ * k )) (sym x=ψz1) ⟩
388 & (L \ * x ) ∎ where open ≡-Reasoning 418 & (L \ * x ) ∎ where open ≡-Reasoning
389 fip60 x∩y (g∩ {x} {y} sx sy) = subst (λ k → Finite-∪ (* X) k) fip62 ( fin-∪ (fip60 x sx) (fip60 y sy) ) where 419 fip60 x∩y (g∩ {x} {y} sx sy) = subst (λ k → Finite-∪ (* X) k) fip62 ( fin-∪ (fip60 x sx) (fip60 y sy) ) where
390 fip62 : & (* (& (finCoverSet x sx)) ∪ * (& (finCoverSet y sy))) ≡ & (finCoverSet x sx ∪ finCoverSet y sy) 420 fip62 : & (* (& (finCoverSet x sx)) ∪ * (& (finCoverSet y sy))) ≡ & (finCoverSet x sx ∪ finCoverSet y sy)
391 fip62 = cong (&) ( begin 421 fip62 = cong (&) ( begin
392 (* (& (finCoverSet x sx)) ∪ * (& (finCoverSet y sy))) ≡⟨ cong₂ _∪_ *iso *iso ⟩ 422 (* (& (finCoverSet x sx)) ∪ * (& (finCoverSet y sy))) ≡⟨ cong₂ _∪_ ? ? ⟩
393 finCoverSet x sx ∪ finCoverSet y sy ∎ ) where open ≡-Reasoning 423 finCoverSet x sx ∪ finCoverSet y sy ∎ ) where open ≡-Reasoning
394 -- is also a cover 424 -- is also a cover
395 isCover1 : {X : Ordinal} (xo : * X ⊆ OS top) (xcp : * X covers L) → * (finCover xo xcp) covers L 425 isCover1 : {X : Ordinal} (xo : * X ⊆ OS top) (xcp : * X covers L) → * (finCover xo xcp) covers L
396 isCover1 {X} xo xcp = subst₂ (λ j k → j covers k ) (sym *iso) (subst (λ k → L \ k ≡ L) (sym o∅≡od∅) L\0=L) 426 isCover1 {X} xo xcp = subst₂ (λ j k → j covers k ) ? (subst (λ k → L \ k ≡ L) ? ? ) -- L\0=L)
397 (fip70 o∅ (finCoverBase xo xcp)) where 427 (fip70 o∅ (finCoverBase xo xcp)) where
398 fip70 : (x : Ordinal) → (sb : Subbase (Replace (* X) (λ z → L \ z) RC\ ) x ) → (finCoverSet {X} x sb) covers (L \ * x) 428 fip70 : (x : Ordinal) → (sb : Subbase (Replace (* X) (λ z → L \ z) RC\ ) x ) → (finCoverSet {X} x sb) covers (L \ * x)
399 fip70 x (gi rx) = fip73 where 429 fip70 x (gi rx) = fip73 where
400 fip73 : ((L \ * x) , (L \ * x)) covers (L \ * x) -- obvious 430 fip73 : ((L \ * x) , (L \ * x)) covers (L \ * x) -- obvious
401 fip73 = record { cover = λ _ → & (L \ * x) ; P∋cover = λ _ → case1 refl 431 fip73 = record { cover = λ _ → & (L \ * x) ; P∋cover = λ _ → case1 refl
402 ; isCover = λ {x} lt → subst (λ k → odef k x) (sym *iso) lt } 432 ; isCover = λ {x} lt → subst (λ k → odef k x) ? lt }
403 fip70 x∩y (g∩ {x} {y} sx sy) = subst (λ k → finCoverSet (& (* x ∩ * y)) (g∩ sx sy) covers 433 fip70 x∩y (g∩ {x} {y} sx sy) = subst (λ k → finCoverSet (& (* x ∩ * y)) (g∩ sx sy) covers
404 (L \ k)) (sym *iso) ( fip43 {_} {L} {* x} {* y} (fip71 (fip70 x sx)) (fip72 (fip70 y sy)) ) where 434 (L \ k)) ? ( fip43 {_} {L} {* x} {* y} (fip71 (fip70 x sx)) (fip72 (fip70 y sy)) ) where
405 fip71 : {a b c : HOD} → a covers c → (a ∪ b) covers c 435 fip71 : {a b c : HOD} → a covers c → (a ∪ b) covers c
406 fip71 {a} {b} {c} cov = record { cover = cover cov ; P∋cover = λ lt → case1 (P∋cover cov lt) 436 fip71 {a} {b} {c} cov = record { cover = cover cov ; P∋cover = λ lt → case1 (P∋cover cov lt)
407 ; isCover = isCover cov } 437 ; isCover = isCover cov }
408 fip72 : {a b c : HOD} → a covers c → (b ∪ a) covers c 438 fip72 : {a b c : HOD} → a covers c → (b ∪ a) covers c
409 fip72 {a} {b} {c} cov = record { cover = cover cov ; P∋cover = λ lt → case2 (P∋cover cov lt) 439 fip72 {a} {b} {c} cov = record { cover = cover cov ; P∋cover = λ lt → case2 (P∋cover cov lt)
410 ; isCover = isCover cov } 440 ; isCover = isCover cov }
411 fip45 : {L a b : HOD} → (L \ (a ∩ b)) ⊆ ( (L \ a) ∪ (L \ b)) 441 fip45 : {L a b : HOD} → (L \ (a ∩ b)) ⊆ ( (L \ a) ∪ (L \ b))
412 fip45 {L} {a} {b} {x} Lab with ODC.∋-p O b (* x) 442 fip45 {L} {a} {b} {x} Lab with ∋-p b (* x)
413 ... | yes bx = case1 ⟪ proj1 Lab , (λ ax → proj2 Lab ⟪ ax , subst (λ k → odef b k) &iso bx ⟫ ) ⟫ 443 ... | yes bx = case1 ⟪ proj1 Lab , (λ ax → proj2 Lab ⟪ ax , subst (λ k → odef b k) &iso bx ⟫ ) ⟫
414 ... | no ¬bx = case2 ⟪ proj1 Lab , subst (λ k → ¬ ( odef b k)) &iso ¬bx ⟫ 444 ... | no ¬bx = case2 ⟪ proj1 Lab , subst (λ k → ¬ ( odef b k)) &iso ¬bx ⟫
415 fip43 : {A L a b : HOD } → A covers (L \ a) → A covers (L \ b ) → A covers ( L \ ( a ∩ b ) ) 445 fip43 : {A L a b : HOD } → A covers (L \ a) → A covers (L \ b ) → A covers ( L \ ( a ∩ b ) )
416 fip43 {A} {L} {a} {b} ca cb = record { cover = fip44 ; P∋cover = fip46 ; isCover = fip47 } where 446 fip43 {A} {L} {a} {b} ca cb = record { cover = fip44 ; P∋cover = fip46 ; isCover = fip47 } where
417 fip44 : {x : Ordinal} → odef (L \ (a ∩ b)) x → Ordinal 447 fip44 : {x : Ordinal} → odef (L \ (a ∩ b)) x → Ordinal
425 fip47 : {x : Ordinal} (lt : odef (L \ (a ∩ b)) x) → odef (* (fip44 lt)) x 455 fip47 : {x : Ordinal} (lt : odef (L \ (a ∩ b)) x) → odef (* (fip44 lt)) x
426 fip47 {x} Lab with fip45 {L} {a} {b} Lab 456 fip47 {x} Lab with fip45 {L} {a} {b} Lab
427 ... | case1 La = isCover ca La 457 ... | case1 La = isCover ca La
428 ... | case2 Lb = isCover cb Lb 458 ... | case2 Lb = isCover cb Lb
429 459
430 open _==_
431
432 Compact→FIP : {L : HOD} → (top : Topology L ) → Compact top → FIP top 460 Compact→FIP : {L : HOD} → (top : Topology L ) → Compact top → FIP top
433 Compact→FIP {L} top compact with trio< (& L) o∅ 461 Compact→FIP {L} top compact with trio< (& L) o∅
434 ... | tri< a ¬b ¬c = ⊥-elim ( ¬x<0 a ) 462 ... | tri< a ¬b ¬c = ⊥-elim ( ¬x<0 a )
435 ... | tri≈ ¬a L=0 ¬c = record { limit = λ {X} CX fip → o∅ ; is-limit = λ {X} CX fip xx → ⊥-elim (fip000 CX fip xx) } where 463 ... | tri≈ ¬a L=0 ¬c = record { limit = λ {X} CX fip → o∅ ; is-limit = λ {X} CX fip xx → ⊥-elim (fip000 CX fip xx) } where
436 -- empty L case 464 -- empty L case
437 -- if 0 < X then 0 < x ∧ L ∋ xfrom fip 465 -- if 0 < X then 0 < x ∧ L ∋ xfrom fip
438 -- if 0 ≡ X then ¬ odef X x 466 -- if 0 ≡ X then ¬ odef X x
439 fip000 : {X x : Ordinal} (CX : * X ⊆ CS top) → ({y : Ordinal} → Subbase (* X) y → o∅ o< y) → ¬ odef (* X) x 467 fip000 : {X x : Ordinal} (CX : * X ⊆ CS top) → ({y : Ordinal} → Subbase (* X) y → o∅ o< y) → ¬ odef (* X) x
440 fip000 {X} {x} CX fip xx with trio< o∅ X 468 fip000 {X} {x} CX fip xx with trio< o∅ X
441 ... | tri< 0<X ¬b ¬c = ¬∅∋ (subst₂ (λ j k → odef j k ) (trans (trans (sym *iso) (cong (*) L=0)) o∅≡od∅ ) (sym &iso) 469 ... | tri< 0<X ¬b ¬c = ¬∅∋ (subst₂ (λ j k → odef j k ) (trans (trans ? (cong (*) L=0)) ? ) (sym &iso)
442 ( cs⊆L top (subst (λ k → odef (CS top) k ) (sym &iso) (CX xx)) Xe )) where 470 ( cs⊆L top (subst (λ k → odef (CS top) k ) (sym &iso) (CX xx)) Xe )) where
443 0<x : o∅ o< x 471 0<x : o∅ o< x
444 0<x = fip (gi xx ) 472 0<x = fip (gi xx )
445 e : HOD -- we have an element of x 473 e : HOD -- we have an element of x
446 e = ODC.minimal O (* x) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<x) ) 474 e = minimal (* x) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<x) )
447 Xe : odef (* x) (& e) 475 Xe : odef (* x) (& e)
448 Xe = ODC.x∋minimal O (* x) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<x) ) 476 Xe = x∋minimal (* x) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<x) )
449 ... | tri≈ ¬a 0=X ¬c = ⊥-elim ( ¬∅∋ (subst₂ (λ j k → odef j k ) ( begin 477 ... | tri≈ ¬a 0=X ¬c = ⊥-elim ( ¬∅∋ (subst₂ (λ j k → odef j k ) ( begin
450 * X ≡⟨ cong (*) (sym 0=X) ⟩ 478 * X ≡⟨ cong (*) (sym 0=X) ⟩
451 * o∅ ≡⟨ o∅≡od∅ ⟩ 479 * o∅ ≡⟨ ? ⟩
452 od∅ ∎ ) (sym &iso) xx ) ) where open ≡-Reasoning 480 od∅ ∎ ) (sym &iso) xx ) ) where open ≡-Reasoning
453 ... | tri> ¬a ¬b c = ⊥-elim ( ¬x<0 c ) 481 ... | tri> ¬a ¬b c = ⊥-elim ( ¬x<0 c )
454 ... | tri> ¬a ¬b 0<L = record { limit = limit ; is-limit = fip00 } where 482 ... | tri> ¬a ¬b 0<L = record { limit = limit ; is-limit = fip00 } where
455 -- set of coset of X 483 -- set of coset of X
484 open BAlgebra O HODAxiom ho< L ?
456 OX : {X : Ordinal} → * X ⊆ CS top → Ordinal 485 OX : {X : Ordinal} → * X ⊆ CS top → Ordinal
457 OX {X} ox = & ( Replace (* X) (λ z → L \ z ) RC\) 486 OX {X} ox = & ( Replace (* X) (λ z → L \ z ) RC\)
458 OOX : {X : Ordinal} → (cs : * X ⊆ CS top) → * (OX cs) ⊆ OS top 487 OOX : {X : Ordinal} → (cs : * X ⊆ CS top) → * (OX cs) ⊆ OS top
459 OOX {X} cs {x} ox with subst (λ k → odef k x) *iso ox 488 OOX {X} cs {x} ox = ? -- with subst (λ k → odef k x) ? ox
460 ... | record { z = z ; az = az ; x=ψz = x=ψz } = subst (λ k → odef (OS top) k) (sym x=ψz) ( P\CS=OS top (cs comp01)) where 489 -- ... | record { z = z ; az = az ; x=ψz = x=ψz } = subst (λ k → odef (OS top) k) (sym x=ψz) ( P\CS=OS top (cs comp01)) where
461 comp01 : odef (* X) (& (* z)) 490 -- comp01 : odef (* X) (& (* z))
462 comp01 = subst (λ k → odef (* X) k) (sym &iso) az 491 -- comp01 = subst (λ k → odef (* X) k) (sym &iso) az
463 -- if all finite intersection of X contains something, 492 -- if all finite intersection of X contains something,
464 -- there is no finite cover. From Compactness, (OX X) is not a cover of L ( contraposition of Compact) 493 -- there is no finite cover. From Compactness, (OX X) is not a cover of L ( contraposition of Compact)
465 -- it means there is a limit 494 -- it means there is a limit
466 record NC {X : Ordinal} (CX : * X ⊆ CS top) (fip : {x : Ordinal} → Subbase (* X) x → o∅ o< x) (0<X : o∅ o< X) : Set n where 495 record NC {X : Ordinal} (CX : * X ⊆ CS top) (fip : {x : Ordinal} → Subbase (* X) x → o∅ o< x) (0<X : o∅ o< X) : Set n where
467 field -- find an element x, which is not covered (which is a limit point) 496 field -- find an element x, which is not covered (which is a limit point)
469 yx : {y : Ordinal} (Xy : odef (* X) y) → odef (* y) x 498 yx : {y : Ordinal} (Xy : odef (* X) y) → odef (* y) x
470 has-intersection : {X : Ordinal} (CX : * X ⊆ CS top) (fip : {x : Ordinal} → Subbase (* X) x → o∅ o< x) 499 has-intersection : {X : Ordinal} (CX : * X ⊆ CS top) (fip : {x : Ordinal} → Subbase (* X) x → o∅ o< x)
471 → (0<X : o∅ o< X ) → NC CX fip 0<X 500 → (0<X : o∅ o< X ) → NC CX fip 0<X
472 has-intersection {X} CX fip 0<X = intersection where 501 has-intersection {X} CX fip 0<X = intersection where
473 e : HOD -- we have an element of X 502 e : HOD -- we have an element of X
474 e = ODC.minimal O (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) ) 503 e = minimal (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) )
475 Xe : odef (* X) (& e) 504 Xe : odef (* X) (& e)
476 Xe = ODC.x∋minimal O (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) ) 505 Xe = x∋minimal (* X) (0<P→ne (subst (λ k → o∅ o< k) (sym &iso) 0<X) )
477 no-cover : ¬ ( (* (OX CX)) covers L ) 506 no-cover : ¬ ( (* (OX CX)) covers L )
478 no-cover cov = ⊥-elim (no-finite-cover (Compact.isCover compact (OOX CX) cov)) where 507 no-cover cov = ⊥-elim (no-finite-cover (Compact.isCover compact (OOX CX) cov)) where
479 -- construct Subase from Finite-∪ 508 -- construct Subase from Finite-∪
480 fp01 : Ordinal 509 fp01 : Ordinal
481 fp01 = Compact.finCover compact (OOX CX) cov 510 fp01 = Compact.finCover compact (OOX CX) cov
488 fp02 t fin-e = record { i = & ( L \ e) ; sb = gi (subst (λ k → odef (* X) k) fp21 Xe) ; t⊆i = fp23 } where 517 fp02 t fin-e = record { i = & ( L \ e) ; sb = gi (subst (λ k → odef (* X) k) fp21 Xe) ; t⊆i = fp23 } where
489 -- t ≡ o∅, no cover. Any subst of L is ok and we have e ⊆ L 518 -- t ≡ o∅, no cover. Any subst of L is ok and we have e ⊆ L
490 fp22 : e ⊆ L 519 fp22 : e ⊆ L
491 fp22 {x} lt = cs⊆L top (CX Xe) lt 520 fp22 {x} lt = cs⊆L top (CX Xe) lt
492 fp21 : & e ≡ & (L \ * (& (L \ e))) 521 fp21 : & e ≡ & (L \ * (& (L \ e)))
493 fp21 = cong (&) (trans (sym (L\Lx=x fp22)) (cong (λ k → L \ k) (sym *iso))) 522 fp21 = cong (&) (trans (sym ?) (cong (λ k → L \ k) ?))
494 fp23 : (L \ * (& (L \ e))) ⊆ (L \ Union (* o∅)) 523 fp23 : (L \ * (& (L \ e))) ⊆ (L \ Union (* o∅))
495 fp23 {x} ⟪ Lx , _ ⟫ = ⟪ Lx , ( λ lt → ⊥-elim ( ¬∅∋ (subst₂ (λ j k → odef j k ) o∅≡od∅ (sym &iso) (Own.ao lt )))) ⟫ 524 fp23 {x} ⟪ Lx , _ ⟫ = ⟪ Lx , ( λ lt → ⊥-elim ( ¬∅∋ (subst₂ (λ j k → odef j k ) ? (sym &iso) (Own.ao lt )))) ⟫
496 fp02 t (fin-i {x} tx ) = record { i = x ; sb = gi fp03 ; t⊆i = fp24 } where 525 fp02 t (fin-i {x} tx ) = record { i = x ; sb = gi fp03 ; t⊆i = fp24 } where
497 -- we have a single cover x, L \ * x is single finite intersection 526 -- we have a single cover x, L \ * x is single finite intersection
498 fp24 : (L \ * x) ⊆ (L \ Union (* (& (* x , * x)))) 527 fp24 : (L \ * x) ⊆ (L \ Union (* (& (* x , * x))))
499 fp24 {y} ⟪ Lx , not ⟫ = ⟪ Lx , subst (λ k → ¬ odef (Union k) y) (sym *iso) fp25 ⟫ where 528 fp24 {y} ⟪ Lx , not ⟫ = ⟪ Lx , subst (λ k → ¬ odef (Union k) y) ? fp25 ⟫ where
500 fp25 : ¬ odef (Union (* x , * x)) y 529 fp25 : ¬ odef (Union (* x , * x)) y
501 fp25 record { owner = .(& (* x)) ; ao = (case1 refl) ; ox = ox } = not (subst (λ k → odef k y) *iso ox ) 530 fp25 record { owner = .(& (* x)) ; ao = (case1 refl) ; ox = ox } = not (subst (λ k → odef k y) ? ox )
502 fp25 record { owner = .(& (* x)) ; ao = (case2 refl) ; ox = ox } = not (subst (λ k → odef k y) *iso ox ) 531 fp25 record { owner = .(& (* x)) ; ao = (case2 refl) ; ox = ox } = not (subst (λ k → odef k y) ? ox )
503 fp03 : odef (* X) (& (L \ * x)) -- becase x is an element of Replace (* X) (λ z → L \ z ) 532 fp03 : odef (* X) (& (L \ * x)) -- becase x is an element of Replace (* X) (λ z → L \ z )
504 fp03 with subst (λ k → odef k x ) *iso tx 533 fp03 = ? -- with subst (λ k → odef k x ) ? tx
505 ... | record { z = z1 ; az = az1 ; x=ψz = x=ψz1 } = subst (λ k → odef (* X) k) fip33 az1 where 534 -- ... | record { z = z1 ; az = az1 ; x=ψz = x=ψz1 } = subst (λ k → odef (* X) k) fip33 az1 where
506 fip34 : * z1 ⊆ L 535 -- fip34 : * z1 ⊆ L
507 fip34 {w} wz1 = cs⊆L top (subst (λ k → odef (CS top) k) (sym &iso) (CX az1) ) wz1 536 -- fip34 {w} wz1 = cs⊆L top (subst (λ k → odef (CS top) k) (sym &iso) (CX az1) ) wz1
508 fip33 : z1 ≡ & (L \ * x) 537 -- fip33 : z1 ≡ & (L \ * x)
509 fip33 = begin 538 -- fip33 = begin
510 z1 ≡⟨ sym &iso ⟩ 539 -- z1 ≡⟨ sym &iso ⟩
511 & (* z1) ≡⟨ cong (&) (sym (L\Lx=x fip34 )) ⟩ 540 -- & (* z1) ≡⟨ cong (&) (sym (L\Lx=x fip34 )) ⟩
512 & (L \ ( L \ * z1)) ≡⟨ cong (λ k → & ( L \ k )) (sym *iso) ⟩ 541 -- & (L \ ( L \ * z1)) ≡⟨ cong (λ k → & ( L \ k )) ? ⟩
513 & (L \ * (& ( L \ * z1))) ≡⟨ cong (λ k → & ( L \ * k )) (sym x=ψz1) ⟩ 542 -- & (L \ * (& ( L \ * z1))) ≡⟨ cong (λ k → & ( L \ * k )) (sym x=ψz1) ⟩
514 & (L \ * x ) ∎ where open ≡-Reasoning 543 -- & (L \ * x ) ∎ where open ≡-Reasoning
515 fp02 t (fin-∪ {tx} {ty} ux uy ) = record { i = & (* (SB.i (fp02 tx ux)) ∪ * (SB.i (fp02 ty uy))) ; sb = fp11 ; t⊆i = fp35 } where 544 fp02 t (fin-∪ {tx} {ty} ux uy ) = record { i = & (* (SB.i (fp02 tx ux)) ∪ * (SB.i (fp02 ty uy))) ; sb = fp11 ; t⊆i = fp35 } where
516 fp35 : (L \ * (& (* (SB.i (fp02 tx ux)) ∪ * (SB.i (fp02 ty uy))))) ⊆ (L \ Union (* (& (* tx ∪ * ty)))) 545 fp35 : (L \ * (& (* (SB.i (fp02 tx ux)) ∪ * (SB.i (fp02 ty uy))))) ⊆ (L \ Union (* (& (* tx ∪ * ty))))
517 fp35 = subst₂ (λ j k → (L \ j ) ⊆ (L \ Union k)) (sym *iso) (sym *iso) fp36 where 546 fp35 = subst₂ (λ j k → (L \ j ) ⊆ (L \ Union k)) ? ? fp36 where
518 fp40 : {z tz : Ordinal } → Finite-∪ (* (OX CX)) tz → odef (Union (* tz )) z → odef L z 547 fp40 : {z tz : Ordinal } → Finite-∪ (* (OX CX)) tz → odef (Union (* tz )) z → odef L z
519 fp40 {z} {.(Ordinals.o∅ O)} fin-e record { owner = owner ; ao = ao ; ox = ox } 548 fp40 {z} {.(Ordinals.o∅ O)} fin-e record { owner = owner ; ao = ao ; ox = ox }
520 = ⊥-elim ( ¬∅∋ (subst₂ (λ j k → odef j k ) o∅≡od∅ (sym &iso) ao )) 549 = ⊥-elim ( ¬∅∋ (subst₂ (λ j k → odef j k ) ? (sym &iso) ao ))
521 fp40 {z} {.(& (* _ , * _))} (fin-i {w} x) uz = fp41 x (subst (λ k → odef (Union k) z) *iso uz) where 550 fp40 {z} {.(& (* _ , * _))} (fin-i {w} x) uz = fp41 x (subst (λ k → odef (Union k) z) ? uz) where
522 fp41 : (x : odef (* (OX CX)) w) → (uz : odef (Union (* w , * w)) z ) → odef L z 551 fp41 : (x : odef (* (OX CX)) w) → (uz : odef (Union (* w , * w)) z ) → odef L z
523 fp41 x record { owner = .(& (* w)) ; ao = (case1 refl) ; ox = ox } = 552 fp41 x record { owner = .(& (* w)) ; ao = (case1 refl) ; ox = ox } =
524 os⊆L top (OOX CX (subst (λ k → odef (* (OX CX)) k) (sym &iso) x )) (subst (λ k → odef k z) *iso ox ) 553 os⊆L top (OOX CX (subst (λ k → odef (* (OX CX)) k) (sym &iso) x )) (subst (λ k → odef k z) ? ox )
525 fp41 x record { owner = .(& (* w)) ; ao = (case2 refl) ; ox = ox } = 554 fp41 x record { owner = .(& (* w)) ; ao = (case2 refl) ; ox = ox } =
526 os⊆L top (OOX CX (subst (λ k → odef (* (OX CX)) k) (sym &iso) x )) (subst (λ k → odef k z) *iso ox ) 555 os⊆L top (OOX CX (subst (λ k → odef (* (OX CX)) k) (sym &iso) x )) (subst (λ k → odef k z) ? ox )
527 fp40 {z} {.(& (* _ ∪ * _))} (fin-∪ {x1} {y1} ftx fty) uz with subst (λ k → odef (Union k) z ) *iso uz 556 fp40 {z} {.(& (* _ ∪ * _))} (fin-∪ {x1} {y1} ftx fty) uz = ? -- with subst (λ k → odef (Union k) z ) ? uz
528 ... | record { owner = o ; ao = case1 x1o ; ox = oz } = fp40 ftx record { owner = o ; ao = x1o ; ox = oz } 557 -- ... | record { owner = o ; ao = case1 x1o ; ox = oz } = fp40 ftx record { owner = o ; ao = x1o ; ox = oz }
529 ... | record { owner = o ; ao = case2 y1o ; ox = oz } = fp40 fty record { owner = o ; ao = y1o ; ox = oz } 558 -- ... | record { owner = o ; ao = case2 y1o ; ox = oz } = fp40 fty record { owner = o ; ao = y1o ; ox = oz }
530 fp36 : (L \ (* (SB.i (fp02 tx ux)) ∪ * (SB.i (fp02 ty uy)))) ⊆ (L \ Union (* tx ∪ * ty)) 559 fp36 : (L \ (* (SB.i (fp02 tx ux)) ∪ * (SB.i (fp02 ty uy)))) ⊆ (L \ Union (* tx ∪ * ty))
531 fp36 {z} ⟪ Lz , not ⟫ = ⟪ Lz , fp37 ⟫ where 560 fp36 {z} ⟪ Lz , not ⟫ = ⟪ Lz , fp37 ⟫ where
532 fp37 : ¬ odef (Union (* tx ∪ * ty)) z 561 fp37 : ¬ odef (Union (* tx ∪ * ty)) z
533 fp37 record { owner = owner ; ao = (case1 ax) ; ox = ox } = not (case1 (fp39 record { owner = _ ; ao = ax ; ox = ox }) ) where 562 fp37 record { owner = owner ; ao = (case1 ax) ; ox = ox } = not (case1 (fp39 record { owner = _ ; ao = ax ; ox = ox }) ) where
534 fp38 : (L \ (* (SB.i (fp02 tx ux)))) ⊆ (L \ Union (* tx)) 563 fp38 : (L \ (* (SB.i (fp02 tx ux)))) ⊆ (L \ Union (* tx))
535 fp38 = SB.t⊆i (fp02 tx ux) 564 fp38 = SB.t⊆i (fp02 tx ux)
536 fp39 : Union (* tx) ⊆ (* (SB.i (fp02 tx ux))) 565 fp39 : Union (* tx) ⊆ (* (SB.i (fp02 tx ux)))
537 fp39 {w} txw with ∨L\X {L} {* (SB.i (fp02 tx ux))} (fp40 ux txw) 566 fp39 {w} txw = ? -- with ∨L\X {L} {* (SB.i (fp02 tx ux))} (fp40 ux txw)
538 ... | case1 sb = sb 567 -- ... | case1 sb = sb
539 ... | case2 lsb = ⊥-elim ( proj2 (fp38 lsb) txw ) 568 -- ... | case2 lsb = ⊥-elim ( proj2 (fp38 lsb) txw )
540 fp37 record { owner = owner ; ao = (case2 ax) ; ox = ox } = not (case2 (fp39 record { owner = _ ; ao = ax ; ox = ox }) ) where 569 fp37 record { owner = owner ; ao = (case2 ax) ; ox = ox } = not (case2 (fp39 record { owner = _ ; ao = ax ; ox = ox }) ) where
541 fp38 : (L \ (* (SB.i (fp02 ty uy)))) ⊆ (L \ Union (* ty)) 570 fp38 : (L \ (* (SB.i (fp02 ty uy)))) ⊆ (L \ Union (* ty))
542 fp38 = SB.t⊆i (fp02 ty uy) 571 fp38 = SB.t⊆i (fp02 ty uy)
543 fp39 : Union (* ty) ⊆ (* (SB.i (fp02 ty uy))) 572 fp39 : Union (* ty) ⊆ (* (SB.i (fp02 ty uy)))
544 fp39 {w} tyw with ∨L\X {L} {* (SB.i (fp02 ty uy))} (fp40 uy tyw) 573 fp39 {w} tyw = ? -- with ∨L\X {L} {* (SB.i (fp02 ty uy))} (fp40 uy tyw)
545 ... | case1 sb = sb 574 -- ... | case1 sb = sb
546 ... | case2 lsb = ⊥-elim ( proj2 (fp38 lsb) tyw ) 575 -- ... | case2 lsb = ⊥-elim ( proj2 (fp38 lsb) tyw )
547 fp04 : {tx ty : Ordinal} → & (* (& (L \ * tx)) ∩ * (& (L \ * ty))) ≡ & (L \ * (& (* tx ∪ * ty))) 576 fp04 : {tx ty : Ordinal} → & (* (& (L \ * tx)) ∩ * (& (L \ * ty))) ≡ & (L \ * (& (* tx ∪ * ty)))
548 fp04 {tx} {ty} = cong (&) ( ==→o≡ record { eq→ = fp05 ; eq← = fp09 } ) where 577 fp04 {tx} {ty} = ? where -- cong (&) ( ==→o≡ record { eq→ = fp05 ; eq← = fp09 } ) where
549 fp05 : {x : Ordinal} → odef (* (& (L \ * tx)) ∩ * (& (L \ * ty))) x → odef (L \ * (& (* tx ∪ * ty))) x 578 fp05 : {x : Ordinal} → odef (* (& (L \ * tx)) ∩ * (& (L \ * ty))) x → odef (L \ * (& (* tx ∪ * ty))) x
550 fp05 {x} lt with subst₂ (λ j k → odef (j ∩ k) x ) *iso *iso lt 579 fp05 {x} lt = ? -- with subst₂ (λ j k → odef (j ∩ k) x ) ? ? lt
551 ... | ⟪ ⟪ Lx , ¬tx ⟫ , ⟪ Ly , ¬ty ⟫ ⟫ = subst (λ k → odef (L \ k) x) (sym *iso) ⟪ Lx , fp06 ⟫ where 580 -- ... | ⟪ ⟪ Lx , ¬tx ⟫ , ⟪ Ly , ¬ty ⟫ ⟫ = subst (λ k → odef (L \ k) x) ? ⟪ Lx , fp06 ⟫ where
552 fp06 : ¬ odef (* tx ∪ * ty) x 581 -- fp06 : ¬ odef (* tx ∪ * ty) x
553 fp06 (case1 tx) = ¬tx tx 582 -- fp06 (case1 tx) = ¬tx tx
554 fp06 (case2 ty) = ¬ty ty 583 -- fp06 (case2 ty) = ¬ty ty
555 fp09 : {x : Ordinal} → odef (L \ * (& (* tx ∪ * ty))) x → odef (* (& (L \ * tx)) ∩ * (& (L \ * ty))) x 584 fp09 : {x : Ordinal} → odef (L \ * (& (* tx ∪ * ty))) x → odef (* (& (L \ * tx)) ∩ * (& (L \ * ty))) x
556 fp09 {x} lt with subst (λ k → odef (L \ k) x) (*iso) lt 585 fp09 {x} lt with subst (λ k → odef (L \ k) x) ? lt
557 ... | ⟪ Lx , ¬tx∨ty ⟫ = subst₂ (λ j k → odef (j ∩ k) x ) (sym *iso) (sym *iso) 586 ... | ⟪ Lx , ¬tx∨ty ⟫ = subst₂ (λ j k → odef (j ∩ k) x ) ? ?
558 ⟪ ⟪ Lx , ( λ tx → ¬tx∨ty (case1 tx)) ⟫ , ⟪ Lx , ( λ ty → ¬tx∨ty (case2 ty)) ⟫ ⟫ 587 ⟪ ⟪ Lx , ( λ tx → ¬tx∨ty (case1 tx)) ⟫ , ⟪ Lx , ( λ ty → ¬tx∨ty (case2 ty)) ⟫ ⟫
559 fp11 : Subbase (* X) (& (L \ * (& ((* (SB.i (fp02 tx ux)) ∪ * (SB.i (fp02 ty uy))))))) 588 fp11 : Subbase (* X) (& (L \ * (& ((* (SB.i (fp02 tx ux)) ∪ * (SB.i (fp02 ty uy)))))))
560 fp11 = subst (λ k → Subbase (* X) k ) fp04 ( g∩ (SB.sb (fp02 tx ux)) (SB.sb (fp02 ty uy )) ) 589 fp11 = subst (λ k → Subbase (* X) k ) fp04 ( g∩ (SB.sb (fp02 tx ux)) (SB.sb (fp02 ty uy )) )
561 -- 590 --
562 -- becase of fip, finite cover cannot be a cover 591 -- becase of fip, finite cover cannot be a cover
566 0<sb : {i : Ordinal } → (sb : Subbase (* X) (& (L \ * i))) → o∅ o< & (L \ * i) 595 0<sb : {i : Ordinal } → (sb : Subbase (* X) (& (L \ * i))) → o∅ o< & (L \ * i)
567 0<sb {i} sb = fip sb 596 0<sb {i} sb = fip sb
568 sb : SB (Compact.finCover compact (OOX CX) cov) 597 sb : SB (Compact.finCover compact (OOX CX) cov)
569 sb = fp02 fp01 (Compact.isFinite compact (OOX CX) cov) 598 sb = fp02 fp01 (Compact.isFinite compact (OOX CX) cov)
570 no-finite-cover : ¬ ( (* (Compact.finCover compact (OOX CX) cov)) covers L ) 599 no-finite-cover : ¬ ( (* (Compact.finCover compact (OOX CX) cov)) covers L )
571 no-finite-cover fcovers = ⊥-elim ( o<¬≡ (cong (&) (sym (==→o≡ f22))) f25 ) where 600 no-finite-cover fcovers = ? where -- ⊥-elim ( o<¬≡ (cong (&) (sym (==→o≡ f22))) f25 ) where
572 f23 : (L \ * (SB.i sb)) ⊆ ( L \ Union (* (Compact.finCover compact (OOX CX) cov))) 601 f23 : (L \ * (SB.i sb)) ⊆ ( L \ Union (* (Compact.finCover compact (OOX CX) cov)))
573 f23 = SB.t⊆i sb 602 f23 = SB.t⊆i sb
574 f22 : (L \ Union (* (Compact.finCover compact (OOX CX) cov))) =h= od∅ 603 f22 : (L \ Union (* (Compact.finCover compact (OOX CX) cov))) =h= od∅
575 f22 = record { eq→ = λ lt → ⊥-elim ( f24 lt) ; eq← = λ lt → ⊥-elim (¬x<0 lt) } where 604 f22 = record { eq→ = λ lt → ⊥-elim ( f24 lt) ; eq← = λ lt → ⊥-elim (¬x<0 lt) } where
576 f24 : {x : Ordinal } → ¬ ( odef (L \ Union (* (Compact.finCover compact (OOX CX) cov))) x ) 605 f24 : {x : Ordinal } → ¬ ( odef (L \ Union (* (Compact.finCover compact (OOX CX) cov))) x )
579 f25 = ordtrans<-≤ (subst (λ k → k o< & (L \ * (SB.i sb))) (sym ord-od∅) (0<sb (SB.sb sb) ) ) ( begin 608 f25 = ordtrans<-≤ (subst (λ k → k o< & (L \ * (SB.i sb))) (sym ord-od∅) (0<sb (SB.sb sb) ) ) ( begin
580 & (L \ * (SB.i sb)) ≤⟨ ⊆→o≤ f23 ⟩ 609 & (L \ * (SB.i sb)) ≤⟨ ⊆→o≤ f23 ⟩
581 & (L \ Union (* (Compact.finCover compact (OOX CX) cov))) ∎ ) where open o≤-Reasoning O 610 & (L \ Union (* (Compact.finCover compact (OOX CX) cov))) ∎ ) where open o≤-Reasoning O
582 -- if we have no cover, we can consruct NC 611 -- if we have no cover, we can consruct NC
583 intersection : NC CX fip 0<X 612 intersection : NC CX fip 0<X
584 intersection with ODC.p∨¬p O (NC CX fip 0<X) 613 intersection with p∨¬p (NC CX fip 0<X)
585 ... | case1 nc = nc 614 ... | case1 nc = nc
586 ... | case2 ¬nc = ⊥-elim ( no-cover record { cover = λ Lx → & (L \ coverf Lx) ; P∋cover = fp22 ; isCover = fp23 } ) where 615 ... | case2 ¬nc = ⊥-elim ( no-cover record { cover = λ Lx → & (L \ coverf Lx) ; P∋cover = fp22 ; isCover = fp23 } ) where
587 coverSet : {x : Ordinal} → odef L x → HOD 616 coverSet : {x : Ordinal} → odef L x → HOD
588 coverSet {x} Lx = record { od = record { def = λ y → odef (* X) y ∧ odef (L \ * y) x } ; odmax = X 617 coverSet {x} Lx = record { od = record { def = λ y → odef (* X) y ∧ odef (L \ * y) x } ; odmax = X
589 ; <odmax = λ {x} lt → subst (λ k → x o< k) &iso ( odef< (proj1 lt)) } 618 ; <odmax = λ {x} lt → subst (λ k → x o< k) &iso ( odef< (proj1 lt)) }
590 fp17 : {x : Ordinal} → (Lx : odef L x ) → ¬ ( coverSet Lx =h= od∅ ) 619 fp17 : {x : Ordinal} → (Lx : odef L x ) → ¬ ( coverSet Lx =h= od∅ )
591 fp17 {x} Lx eq = ⊥-elim (¬nc record { x = x ; yx = fp19 } ) where 620 fp17 {x} Lx eq = ⊥-elim (¬nc record { x = x ; yx = fp19 } ) where
592 fp19 : {y : Ordinal} → odef (* X) y → odef (* y) x 621 fp19 : {y : Ordinal} → odef (* X) y → odef (* y) x
593 fp19 {y} Xy with ∨L\X {L} {* y} {x} Lx 622 fp19 {y} Xy = ? -- with ∨L\X {L} {* y} {x} Lx
594 ... | case1 yx = yx 623 -- ... | case1 yx = yx
595 ... | case2 lyx = ⊥-elim ( ¬x<0 {y} ( eq→ eq fp20 )) where 624 -- ... | case2 lyx = ⊥-elim ( ¬x<0 {y} ( eq→ eq fp20 )) where
596 fp20 : odef (* X) y ∧ odef (L \ * y) x 625 -- fp20 : odef (* X) y ∧ odef (L \ * y) x
597 fp20 = ⟪ Xy , lyx ⟫ 626 -- fp20 = ⟪ Xy , lyx ⟫
598 coverf : {x : Ordinal} → (Lx : odef L x ) → HOD 627 coverf : {x : Ordinal} → (Lx : odef L x ) → HOD
599 coverf Lx = ODC.minimal O (coverSet Lx) (fp17 Lx) 628 coverf Lx = minimal (coverSet Lx) (fp17 Lx)
600 fp22 : {x : Ordinal} (lt : odef L x) → odef (* (OX CX)) (& (L \ coverf lt)) 629 fp22 : {x : Ordinal} (lt : odef L x) → odef (* (OX CX)) (& (L \ coverf lt))
601 fp22 {x} Lx = subst (λ k → odef k (& (L \ coverf Lx ))) (sym *iso) record { z = _ ; az = fp25 ; x=ψz = fp24 } where 630 fp22 {x} Lx = subst (λ k → odef k (& (L \ coverf Lx ))) ? record { z = _ ; az = fp25 ; x=ψz = fp24 } where
602 fp24 : & (L \ coverf Lx) ≡ & (L \ * (& (coverf Lx))) 631 fp24 : & (L \ coverf Lx) ≡ & (L \ * (& (coverf Lx)))
603 fp24 = cong (λ k → & ( L \ k )) (sym *iso) 632 fp24 = cong (λ k → & ( L \ k )) ?
604 fp25 : odef (* X) (& (coverf Lx)) 633 fp25 : odef (* X) (& (coverf Lx))
605 fp25 = proj1 ( ODC.x∋minimal O (coverSet Lx) (fp17 Lx) ) 634 fp25 = proj1 ( x∋minimal (coverSet Lx) (fp17 Lx) )
606 fp23 : {x : Ordinal} (lt : odef L x) → odef (* (& (L \ coverf lt))) x 635 fp23 : {x : Ordinal} (lt : odef L x) → odef (* (& (L \ coverf lt))) x
607 fp23 {x} Lx = subst (λ k → odef k x) (sym *iso) ⟪ Lx , fp26 ⟫ where 636 fp23 {x} Lx = subst (λ k → odef k x) ? ⟪ Lx , fp26 ⟫ where
608 fp26 : ¬ odef (coverf Lx) x 637 fp26 : ¬ odef (coverf Lx) x
609 fp26 = subst (λ k → ¬ odef k x ) *iso (proj2 (proj2 ( ODC.x∋minimal O (coverSet Lx) (fp17 Lx) )) ) 638 fp26 = subst (λ k → ¬ odef k x ) ? (proj2 (proj2 ( x∋minimal (coverSet Lx) (fp17 Lx) )) )
610 limit : {X : Ordinal} (CX : * X ⊆ CS top) (fip : {x : Ordinal} → Subbase (* X) x → o∅ o< x) → Ordinal 639 limit : {X : Ordinal} (CX : * X ⊆ CS top) (fip : {x : Ordinal} → Subbase (* X) x → o∅ o< x) → Ordinal
611 limit {X} CX fip with trio< X o∅ 640 limit {X} CX fip with trio< X o∅
612 ... | tri< a ¬b ¬c = ⊥-elim ( ¬x<0 a ) 641 ... | tri< a ¬b ¬c = ⊥-elim ( ¬x<0 a )
613 ... | tri≈ ¬a b ¬c = o∅ 642 ... | tri≈ ¬a b ¬c = o∅
614 ... | tri> ¬a ¬b c = NC.x ( has-intersection CX fip c) 643 ... | tri> ¬a ¬b c = NC.x ( has-intersection CX fip c)
645 NF⊆PP : NF ⊆ Power P 674 NF⊆PP : NF ⊆ Power P
646 NF⊆PP = nf00 675 NF⊆PP = nf00
647 f1 : {p q : HOD} → Power P ∋ q → NF ∋ p → p ⊆ q → NF ∋ q 676 f1 : {p q : HOD} → Power P ∋ q → NF ∋ p → p ⊆ q → NF ∋ q
648 f1 {p} {q} Pq Np p⊆q = record { u = Neighbor.u Np ; ou = Neighbor.ou Np ; ux = Neighbor.ux Np ; v⊆P = Pq _ ; u⊆v = f11 } where 677 f1 {p} {q} Pq Np p⊆q = record { u = Neighbor.u Np ; ou = Neighbor.ou Np ; ux = Neighbor.ux Np ; v⊆P = Pq _ ; u⊆v = f11 } where
649 f11 : * (Neighbor.u Np) ⊆ * (& q) 678 f11 : * (Neighbor.u Np) ⊆ * (& q)
650 f11 {x} ux = subst (λ k → odef k x ) (sym *iso) ( p⊆q (subst (λ k → odef k x) *iso (Neighbor.u⊆v Np ux)) ) 679 f11 {x} ux = subst (λ k → odef k x ) ? ( p⊆q (subst (λ k → odef k x) ? (Neighbor.u⊆v Np ux)) )
651 f2 : {p q : HOD} → NF ∋ p → NF ∋ q → Power P ∋ (p ∩ q) → NF ∋ (p ∩ q) 680 f2 : {p q : HOD} → NF ∋ p → NF ∋ q → Power P ∋ (p ∩ q) → NF ∋ (p ∩ q)
652 f2 {p} {q} Np Nq Ppq = record { u = upq ; ou = ou ; ux = ux ; v⊆P = Ppq _ ; u⊆v = f20 } where 681 f2 {p} {q} Np Nq Ppq = record { u = upq ; ou = ou ; ux = ux ; v⊆P = Ppq _ ; u⊆v = f20 } where
653 upq : Ordinal 682 upq : Ordinal
654 upq = & ( * (Neighbor.u Np) ∩ * (Neighbor.u Nq) ) 683 upq = & ( * (Neighbor.u Np) ∩ * (Neighbor.u Nq) )
655 ou : odef (OS TP) upq 684 ou : odef (OS TP) upq
656 ou = o∩ TP (subst (λ k → odef (OS TP) k) (sym &iso) (Neighbor.ou Np)) (subst (λ k → odef (OS TP) k) (sym &iso) (Neighbor.ou Nq)) 685 ou = o∩ TP (subst (λ k → odef (OS TP) k) (sym &iso) (Neighbor.ou Np)) (subst (λ k → odef (OS TP) k) (sym &iso) (Neighbor.ou Nq))
657 ux : odef (* upq) x 686 ux : odef (* upq) x
658 ux = subst ( λ k → odef k x ) (sym *iso) ⟪ Neighbor.ux Np , Neighbor.ux Nq ⟫ 687 ux = subst ( λ k → odef k x ) ? ⟪ Neighbor.ux Np , Neighbor.ux Nq ⟫
659 f20 : * upq ⊆ * (& (p ∩ q)) 688 f20 : * upq ⊆ * (& (p ∩ q))
660 f20 = subst₂ (λ j k → j ⊆ k ) (sym *iso) (sym *iso) ( λ {x} pq 689 f20 = subst₂ (λ j k → j ⊆ k ) ? ? ( λ {x} pq
661 → ⟪ subst (λ k → odef k x) *iso (Neighbor.u⊆v Np (proj1 pq)) , subst (λ k → odef k x) *iso (Neighbor.u⊆v Nq (proj2 pq)) ⟫ ) 690 → ⟪ subst (λ k → odef k x) ? (Neighbor.u⊆v Np (proj1 pq)) , subst (λ k → odef k x) ? (Neighbor.u⊆v Nq (proj2 pq)) ⟫ )
662 691
663 CAP : (P : HOD) {p q : HOD } → Power P ∋ p → Power P ∋ q → Power P ∋ (p ∩ q) 692 CAP : (P : HOD) {p q : HOD } → Power P ∋ p → Power P ∋ q → Power P ∋ (p ∩ q)
664 CAP P {p} {q} Pp Pq x pqx with subst (λ k → odef k x ) *iso pqx 693 CAP P {p} {q} Pp Pq x pqx with subst (λ k → odef k x ) ? pqx
665 ... | ⟪ px , qx ⟫ = Pp _ (subst (λ k → odef k x) (sym *iso) px ) 694 ... | ⟪ px , qx ⟫ = Pp _ (subst (λ k → odef k x) ? px )
666 695
667 NEG : (P : HOD) {p : HOD } → Power P ∋ p → Power P ∋ (P \ p ) 696 NEG : (P : HOD) {p : HOD } → Power P ∋ p → Power P ∋ (P \ p )
668 NEG P {p} Pp x vx with subst (λ k → odef k x) *iso vx 697 NEG P {p} Pp x vx with subst (λ k → odef k x) ? vx
669 ... | ⟪ Px , npx ⟫ = Px 698 ... | ⟪ Px , npx ⟫ = Px
670 699