comparison filter.agda @ 379:7b6592f0851a

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 21 Jul 2020 02:19:07 +0900
parents 8cade5f660bd
children 0a116938a564
comparison
equal deleted inserted replaced
378:853ead1b56b8 379:7b6592f0851a
125 lemma p p⊆L = subst (λ k → filter P ∋ k ) (==→o≡ (p+1-p=1 p⊆L)) f∋L 125 lemma p p⊆L = subst (λ k → filter P ∋ k ) (==→o≡ (p+1-p=1 p⊆L)) f∋L
126 126
127 record Dense (P : HOD ) : Set (suc n) where 127 record Dense (P : HOD ) : Set (suc n) where
128 field 128 field
129 dense : HOD 129 dense : HOD
130 incl : dense ⊆ Power P 130 d⊆P : dense ⊆ Power P
131 dense-f : HOD → HOD 131 dense-f : HOD → HOD
132 dense-d : { p : HOD} → p ⊆ P → dense ∋ dense-f p 132 dense-d : { p : HOD} → p ⊆ P → dense ∋ dense-f p
133 dense-p : { p : HOD} → p ⊆ P → p ⊆ (dense-f p) 133 dense-p : { p : HOD} → p ⊆ P → p ⊆ (dense-f p)
134 134
135 record Ideal ( L : HOD ) : Set (suc n) where 135 record Ideal ( L : HOD ) : Set (suc n) where
144 proper-ideal : {L : HOD} → (P : Ideal L ) → {p : HOD} → Set n 144 proper-ideal : {L : HOD} → (P : Ideal L ) → {p : HOD} → Set n
145 proper-ideal {L} P {p} = ideal P ∋ od∅ 145 proper-ideal {L} P {p} = ideal P ∋ od∅
146 146
147 prime-ideal : {L : HOD} → Ideal L → ∀ {p q : HOD } → Set n 147 prime-ideal : {L : HOD} → Ideal L → ∀ {p q : HOD } → Set n
148 prime-ideal {L} P {p} {q} = ideal P ∋ ( p ∩ q) → ( ideal P ∋ p ) ∨ ( ideal P ∋ q ) 148 prime-ideal {L} P {p} {q} = ideal P ∋ ( p ∩ q) → ( ideal P ∋ p ) ∨ ( ideal P ∋ q )
149
150 -------
151 -- the set of finite partial functions from ω to 2
152 --
153 --
154
155 import OPair
156 open OPair O
157
158 data Two : Set n where
159 i0 : Two
160 i1 : Two
161
162 record PFunc : Set (suc n) where
163 field
164 restrict : Nat → Set n
165 map : (x : Nat ) → restrict x → Two
166
167 open PFunc
168
169 record _f⊆_ (f g : PFunc) : Set (suc n) where
170 field
171 extend : (x : Nat) → (fr : restrict f x ) → restrict g x
172 feq : (x : Nat) → (fr : restrict f x ) → map f x fr ≡ map g x (extend x fr)
173
174 open _f⊆_
175 149
176 record F-Filter {n : Level} (L : Set n) (PL : (L → Set n) → Set n) ( _⊆_ : L → L → Set n) (_∩_ : L → L → L ) : Set (suc n) where 150 record F-Filter {n : Level} (L : Set n) (PL : (L → Set n) → Set n) ( _⊆_ : L → L → Set n) (_∩_ : L → L → L ) : Set (suc n) where
177 field 151 field
178 filter : L → Set n 152 filter : L → Set n
179 f⊆P : PL filter 153 f⊆P : PL filter
186 ; f⊆P = λ x f∋x → power→⊆ _ _ (incl ( f⊆PL f ) (lower f∋x )) 160 ; f⊆P = λ x f∋x → power→⊆ _ _ (incl ( f⊆PL f ) (lower f∋x ))
187 ; filter1 = λ {p} {q} q⊆L f∋p p⊆q → lift ( filter1 f (q⊆L q refl-⊆) (lower f∋p) p⊆q) 161 ; filter1 = λ {p} {q} q⊆L f∋p p⊆q → lift ( filter1 f (q⊆L q refl-⊆) (lower f∋p) p⊆q)
188 ; filter2 = λ {p} {q} f∋p f∋q → lift ( filter2 f (lower f∋p) (lower f∋q)) 162 ; filter2 = λ {p} {q} f∋p f∋q → lift ( filter2 f (lower f∋p) (lower f∋q))
189 } 163 }
190 164
165 record F-Dense {n : Level} (L : Set n) (PL : (L → Set n) → Set n) ( _⊆_ : L → L → Set n) (_∩_ : L → L → L ) : Set (suc n) where
166 field
167 dense : L → Set n
168 d⊆P : PL dense
169 dense-f : L → L
170 dense-d : { p : L} → PL (λ x → p ⊆ x ) → dense ( dense-f p )
171 dense-p : { p : L} → PL (λ x → p ⊆ x ) → p ⊆ (dense-f p)
172
173 Dense-is-F : {L : HOD} → (f : Dense L ) → F-Dense HOD (λ p → (x : HOD) → p x → x ⊆ L ) _⊆_ _∩_
174 Dense-is-F {L} f = record {
175 dense = λ x → Lift (suc n) ((dense f) ∋ x)
176 ; d⊆P = λ x f∋x → power→⊆ _ _ (incl ( d⊆P f ) (lower f∋x ))
177 ; dense-f = λ x → dense-f f x
178 ; dense-d = λ {p} d → lift ( dense-d f (d p refl-⊆ ) )
179 ; dense-p = λ {p} d → dense-p f (d p refl-⊆)
180 } where open Dense
181
182 -------
183 -- the set of finite partial functions from ω to 2
184 --
185 --
186
187 data Two : Set n where
188 i0 : Two
189 i1 : Two
190
191 data Three : Set n where
192 j0 : Three
193 j1 : Three
194 j2 : Three
195
196 open import Data.List hiding (map)
197
198 import OPair
199 open OPair O
200
201 record PFunc : Set (suc n) where
202 field
203 dom : Nat → Set n
204 map : (x : Nat ) → dom x → Two
205 meq : {x : Nat } → { p q : dom x } → map x p ≡ map x q
206
207 open PFunc
208
209 data Findp : List Three → (x : Nat) → Set n where
210 v0 : {n : List Three} → Findp ( j0 ∷ n ) Zero
211 v1 : {n : List Three} → Findp ( j1 ∷ n ) Zero
212 vn : {n : List Three} {d : Three} → {x : Nat} → Findp n x → Findp (d ∷ n) (Suc x)
213
214 FPFunc→PFunc : List Three → PFunc
215 FPFunc→PFunc fp = record { dom = λ x → findp fp x ; map = λ x p → find fp x p ; meq = λ {x} {p} {q} → feq fp } where
216 findp : List Three → (x : Nat) → Set n
217 findp n x = Findp n x
218 find : (n : List Three ) → (x : Nat) → Findp n x → Two
219 find (j0 ∷ _) 0 v0 = i0
220 find (j1 ∷ _) 0 v1 = i1
221 find (d ∷ n) (Suc x) (vn {n} {d} {x} p) = find n x p
222 feq : (n : List Three) → {x : Nat} {p q : Findp n x } → find n x p ≡ find n x q
223 feq n {0} {v0} {v0} = refl
224 feq n {0} {v1} {v1} = refl
225 feq [] {Suc x} {()}
226 feq (_ ∷ n) {Suc x} {vn p} {vn q} = subst₂ (λ j k → j ≡ k ) {!!} {!!} (feq n {x} {p} {q})
227
228 record _f⊆_ (f g : PFunc) : Set (suc n) where
229 field
230 extend : {x : Nat} → (fr : dom f x ) → dom g x
231 feq : {x : Nat} → {fr : dom f x } → map f x fr ≡ map g x (extend fr)
232
233 open _f⊆_
234
191 min = Data.Nat._⊓_ 235 min = Data.Nat._⊓_
192 -- m≤m⊔n = Data.Nat._⊔_ 236 -- m≤m⊔n = Data.Nat._⊔_
193 open import Data.Nat.Properties 237 open import Data.Nat.Properties
194 238
195 _f∩_ : (f g : PFunc) → PFunc 239 _f∩_ : (f g : PFunc) → PFunc
196 f f∩ g = record { restrict = λ x → (restrict f x ) ∧ (restrict g x ) ∧ ((fr : restrict f x ) → (gr : restrict g x ) → map f x fr ≡ map g x gr) 240 f f∩ g = record { dom = λ x → (dom f x ) ∧ (dom g x ) ∧ ((fr : dom f x ) → (gr : dom g x ) → map f x fr ≡ map g x gr)
197 ; map = λ x p → map f x (proj1 p) } 241 ; map = λ x p → map f x (proj1 p) ; meq = meq f }
198 242
199 _↑_ : (Nat → Two) → Nat → PFunc 243 _↑_ : (Nat → Two) → Nat → PFunc
200 f ↑ i = record { restrict = λ x → Lift n (x ≤ i) ; map = λ x _ → f x } 244 f ↑ i = record { dom = λ x → Lift n (x ≤ i) ; map = λ x _ → f x ; meq = λ {x} {p} {q} → refl }
201 245
202 record Gf (f : Nat → Two) (p : PFunc ) : Set (suc n) where 246 record Gf (f : Nat → Two) (p : PFunc ) : Set (suc n) where
203 field 247 field
204 gn : Nat 248 gn : Nat
205 f<n : (f ↑ gn) f⊆ p 249 f<n : (f ↑ gn) f⊆ p
250
251 record FiniteF (p : PFunc ) : Set (suc n) where
252 field
253 f-max : Nat
254 f-func : Nat → Two
255 f-p⊆f : p f⊆ (f-func ↑ f-max)
256 f-f⊆p : (f-func ↑ f-max) f⊆ p
257
258 open FiniteF
259
260 Dense-Gf : F-Dense PFunc (λ x → Lift (suc n) One) _f⊆_ _f∩_
261 Dense-Gf = record {
262 dense = λ x → FiniteF x
263 ; d⊆P = lift OneObj
264 ; dense-f = λ x → record { dom = {!!} ; map = {!!} }
265 ; dense-d = λ {p} d → {!!}
266 ; dense-p = λ {p} d → {!!}
267 }
206 268
207 open Gf 269 open Gf
208 270
209 GF : (Nat → Two ) → F-Filter PFunc (λ x → Lift (suc n) One ) _f⊆_ _f∩_ 271 GF : (Nat → Two ) → F-Filter PFunc (λ x → Lift (suc n) One ) _f⊆_ _f∩_
210 GF f = record { 272 GF f = record {
212 ; f⊆P = lift OneObj 274 ; f⊆P = lift OneObj
213 ; filter1 = λ {p} {q} _ fp p⊆q → record { gn = gn fp ; f<n = f1 fp p⊆q } 275 ; filter1 = λ {p} {q} _ fp p⊆q → record { gn = gn fp ; f<n = f1 fp p⊆q }
214 ; filter2 = λ {p} {q} fp fq → record { gn = min (gn fp) (gn fq) ; f<n = f2 fp fq } 276 ; filter2 = λ {p} {q} fp fq → record { gn = min (gn fp) (gn fq) ; f<n = f2 fp fq }
215 } where 277 } where
216 f1 : {p q : PFunc } → (fp : Gf f p ) → ( p⊆q : p f⊆ q ) → (f ↑ gn fp) f⊆ q 278 f1 : {p q : PFunc } → (fp : Gf f p ) → ( p⊆q : p f⊆ q ) → (f ↑ gn fp) f⊆ q
217 f1 {p} {q} fp p⊆q = record { extend = λ x x<g → extend p⊆q x (extend (f<n fp ) x x<g) ; feq = λ x fr → {!!} } where 279 f1 {p} {q} fp p⊆q = record { extend = λ {x} x<g → extend p⊆q (extend (f<n fp ) x<g) ; feq = λ {x} {fr} → lemma {x} {fr} } where
280 lemma : {x : Nat} {fr : Lift n (x ≤ gn fp)} → map (f ↑ gn fp) x fr ≡ map q x (extend p⊆q (extend (f<n fp) fr))
281 lemma {x} {fr} = begin
282 map (f ↑ gn fp) x fr
283 ≡⟨ feq (f<n fp ) ⟩
284 map p x (extend (f<n fp) fr)
285 ≡⟨ feq p⊆q ⟩
286 map q x (extend p⊆q (extend (f<n fp) fr))
287 ∎ where open ≡-Reasoning
218 f2 : {p q : PFunc } → (fp : Gf f p ) → (fq : Gf f q ) → (f ↑ (min (gn fp) (gn fq))) f⊆ (p f∩ q) 288 f2 : {p q : PFunc } → (fp : Gf f p ) → (fq : Gf f q ) → (f ↑ (min (gn fp) (gn fq))) f⊆ (p f∩ q)
219 f2 {p} {q} fp fq = record { extend = λ x x<g → record { 289 f2 {p} {q} fp fq = record { extend = λ {x} x<g → lemma2 x<g ; feq = λ {x} {fr} → lemma3 fr } where
220 proj1 = extend (f<n fp ) x (lift ( ≤-trans (lower x<g) (m⊓n≤m _ _))) 290 fmin = f ↑ (min (gn fp) (gn fq))
221 ; proj2 = record {proj1 = extend (f<n fq ) x (lift ( ≤-trans (lower x<g) (m⊓n≤n _ _))) 291 lemma1 : {x : Nat} → ( x<g : Lift n (x ≤ min (gn fp) (gn fq)) ) → (fr : dom p x) (gr : dom q x) → map p x fr ≡ map q x gr
222 ; proj2 = {!!} }} ; 292 lemma1 {x} x<g fr gr = begin
223 feq = λ x fr → {!!} } where 293 map p x fr
294 ≡⟨ meq p ⟩
295 map p x (extend (f<n fp) (lift ( ≤-trans (lower x<g) (m⊓n≤m _ _))))
296 ≡⟨ sym (feq (f<n fp)) ⟩
297 map (f ↑ (min (gn fp) (gn fq))) x x<g
298 ≡⟨ feq (f<n fq) ⟩
299 map q x (extend (f<n fq) (lift ( ≤-trans (lower x<g) (m⊓n≤n _ _))))
300 ≡⟨ meq q ⟩
301 map q x gr
302 ∎ where open ≡-Reasoning
303 lemma2 : {x : Nat} → ( x<g : Lift n (x ≤ min (gn fp) (gn fq)) ) → dom (p f∩ q) x
304 lemma2 x<g = record { proj1 = extend (f<n fp ) (lift ( ≤-trans (lower x<g) (m⊓n≤m _ _))) ;
305 proj2 = record {proj1 = extend (f<n fq ) (lift ( ≤-trans (lower x<g) (m⊓n≤n _ _))) ; proj2 = lemma1 x<g }}
306 f∩→⊆ : (p q : PFunc ) → (p f∩ q ) f⊆ q
307 f∩→⊆ p q = record {
308 extend = λ {x} pq → proj1 (proj2 pq)
309 ; feq = λ {x} {fr} → (proj2 (proj2 fr)) (proj1 fr) (proj1 (proj2 fr))
310 }
311 lemma3 : {x : Nat} → ( fr : Lift n (x ≤ min (gn fp) (gn fq))) → map (f ↑ min (gn fp) (gn fq)) x fr ≡ map (p f∩ q) x (lemma2 fr)
312 lemma3 {x} fr =
313 map (f ↑ min (gn fp) (gn fq)) x fr
314 ≡⟨ feq (f<n fq) ⟩
315 map q x (extend (f<n fq) ( lift (≤-trans (lower fr) (m⊓n≤n _ _)) ))
316 ≡⟨ sym (feq (f∩→⊆ p q ) {x} {lemma2 fr} ) ⟩
317 map (p f∩ q) x (lemma2 fr)
318 ∎ where open ≡-Reasoning
319
224 320
225 ODSuc : (y : HOD) → infinite ∋ y → HOD 321 ODSuc : (y : HOD) → infinite ∋ y → HOD
226 ODSuc y lt = Union (y , (y , y)) 322 ODSuc y lt = Union (y , (y , y))
227 323
228 data Hω2 : (i : Nat) ( x : Ordinal ) → Set n where 324 data Hω2 : (i : Nat) ( x : Ordinal ) → Set n where
253 ... | h0 {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) (lemma {i} {0} {x}) 349 ... | h0 {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) (lemma {i} {0} {x})
254 ... | h1 {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) (lemma {i} {1} {x}) 350 ... | h1 {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) (lemma {i} {1} {x})
255 ... | he {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) x<nx 351 ... | he {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) x<nx
256 352
257 ω→2 : HOD 353 ω→2 : HOD
258 ω→2 = Replace (Power infinite) (λ p p⊆i → Replace infinite (λ x i∋x → < x , repl p x > )) where 354 ω→2 = Replace (Power infinite) (λ p → Replace infinite (λ x → < x , repl p x > )) where
259 repl : HOD → HOD → HOD 355 repl : HOD → HOD → HOD
260 repl p x with ODC.∋-p O p x 356 repl p x with ODC.∋-p O p x
261 ... | yes _ = nat→ω 1 357 ... | yes _ = nat→ω 1
262 ... | no _ = nat→ω 0 358 ... | no _ = nat→ω 0
263 359