annotate generic-filter.agda @ 387:8b0715e28b33

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 25 Jul 2020 09:09:00 +0900
parents filter.agda@24a66a246316
children 19687f3304c9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
190
6e778b0a7202 add filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 open import Level
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
2 open import Ordinals
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
3 module generic-filter {n : Level } (O : Ordinals {n}) where
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
4
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
5 import filter
190
6e778b0a7202 add filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 open import zf
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
7 open import logic
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
8 open import partfunc {n} O
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
9 import OD
193
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 191
diff changeset
10
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
11 open import Relation.Nullary
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
12 open import Relation.Binary
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
13 open import Data.Empty
190
6e778b0a7202 add filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 open import Relation.Binary
6e778b0a7202 add filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 open import Relation.Binary.Core
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
16 open import Relation.Binary.PropositionalEquality
191
9eb6a8691f02 choice function cannot jump between ordinal level
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 190
diff changeset
17 open import Data.Nat renaming ( zero to Zero ; suc to Suc ; ℕ to Nat ; _⊔_ to _n⊔_ )
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
18 import BAlgbra
293
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 292
diff changeset
19
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 292
diff changeset
20 open BAlgbra O
191
9eb6a8691f02 choice function cannot jump between ordinal level
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 190
diff changeset
21
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
22 open inOrdinal O
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
23 open OD O
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
24 open OD.OD
277
d9d3654baee1 seperate choice from LEM
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 276
diff changeset
25 open ODAxiom odAxiom
190
6e778b0a7202 add filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
294
4340ffcfa83d ultra-filter P → prime-filter P done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
27 import ODC
4340ffcfa83d ultra-filter P → prime-filter P done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 293
diff changeset
28
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
29 open filter O
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
30
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
31 open _∧_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
32 open _∨_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
33 open Bool
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 193
diff changeset
34
265
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 236
diff changeset
35
331
12071f79f3cf HOD done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 329
diff changeset
36 open HOD
12071f79f3cf HOD done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 329
diff changeset
37
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
38 -------
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
39 -- the set of finite partial functions from ω to 2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
40 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
41 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
42
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
43 open import Data.List
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
44 open import Data.Maybe
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
45
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
46 import OPair
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
47 open OPair O
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
48
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
49 open PFunc
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
50
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
51 _f∩_ : (f g : PFunc (Lift n Nat) (Lift n Two) ) → PFunc (Lift n Nat) (Lift n Two)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
52 f f∩ g = record { dom = λ x → (dom f x ) ∧ (dom g x ) ∧ ((fr : dom f x ) → (gr : dom g x ) → pmap f x fr ≡ pmap g x gr)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
53 ; pmap = λ x p → pmap f x (proj1 p) ; meq = meq f }
381
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
54
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
55 _↑_ : (Nat → Two) → Nat → PFunc (Lift n Nat) (Lift n Two)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
56 _↑_ f i = record { dom = λ x → Lift n (lower x ≤ i) ; pmap = λ x _ → lift (f (lower x)) ; meq = λ {x} {p} {q} → refl }
381
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
57
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
58 record _f⊆_ (f g : PFunc (Lift n Nat) (Lift n Two) ) : Set (suc n) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
59 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
60 extend : {x : Nat} → (fr : dom f (lift x) ) → dom g (lift x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
61 feq : {x : Nat} → {fr : dom f (lift x) } → pmap f (lift x) fr ≡ pmap g (lift x) (extend fr)
381
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
62
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
63 record Gf (f : Nat → Two) (p : PFunc (Lift n Nat) (Lift n Two) ) : Set (suc n) where
375
8cade5f660bd Select : (X : HOD ) → ((x : HOD ) → X ∋ x → Set n ) → HOD does not work
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 374
diff changeset
64 field
8cade5f660bd Select : (X : HOD ) → ((x : HOD ) → X ∋ x → Set n ) → HOD does not work
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 374
diff changeset
65 gn : Nat
8cade5f660bd Select : (X : HOD ) → ((x : HOD ) → X ∋ x → Set n ) → HOD does not work
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 374
diff changeset
66 f<n : (f ↑ gn) f⊆ p
8cade5f660bd Select : (X : HOD ) → ((x : HOD ) → X ∋ x → Set n ) → HOD does not work
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 374
diff changeset
67
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
68 record FiniteF (p : PFunc (Lift n Nat) (Lift n Two) ) : Set (suc n) where
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
69 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
70 f-max : Nat
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
71 f-func : Nat → Two
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
72 f-p⊆f : p f⊆ (f-func ↑ f-max)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
73 f-f⊆p : (f-func ↑ f-max) f⊆ p
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
74
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
75 open FiniteF
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
76
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
77
381
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
78 -- Dense-Gf : {n : Level} → F-Dense (PFunc {n}) (λ x → Lift (suc n) (One {n})) _f⊆_ _f∩_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
79 -- Dense-Gf = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
80 -- dense = λ x → FiniteF x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
81 -- ; d⊆P = lift OneObj
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
82 -- ; dense-f = λ x → record { dom = {!!} ; pmap = {!!} }
381
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
83 -- ; dense-d = λ {p} d → {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
84 -- ; dense-p = λ {p} d → {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
85 -- }
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
86
375
8cade5f660bd Select : (X : HOD ) → ((x : HOD ) → X ∋ x → Set n ) → HOD does not work
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 374
diff changeset
87 open Gf
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
88 open _f⊆_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
89 open import Data.Nat.Properties
375
8cade5f660bd Select : (X : HOD ) → ((x : HOD ) → X ∋ x → Set n ) → HOD does not work
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 374
diff changeset
90
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
91 GF : (Nat → Two ) → F-Filter (PFunc (Lift n Nat) (Lift n Two)) (λ x → Lift (suc n) (One {n}) ) _f⊆_ _f∩_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
92 GF f = record {
372
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 371
diff changeset
93 filter = λ p → Gf f p
374
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
94 ; f⊆P = lift OneObj
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
95 ; filter1 = λ {p} {q} _ fp p⊆q → record { gn = gn fp ; f<n = f1 fp p⊆q }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 373
diff changeset
96 ; filter2 = λ {p} {q} fp fq → record { gn = min (gn fp) (gn fq) ; f<n = f2 fp fq }
372
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 371
diff changeset
97 } where
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
98 f1 : {p q : PFunc (Lift n Nat) (Lift n Two) } → (fp : Gf f p ) → ( p⊆q : p f⊆ q ) → (f ↑ gn fp) f⊆ q
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
99 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
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
100 lemma : {x : Nat} {fr : Lift n (x ≤ gn fp)} → pmap (f ↑ gn fp) (lift x) fr ≡ pmap q (lift x) (extend p⊆q (extend (f<n fp) fr))
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
101 lemma {x} {fr} = begin
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
102 pmap (f ↑ gn fp) (lift x) fr
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
103 ≡⟨ feq (f<n fp ) ⟩
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
104 pmap p (lift x) (extend (f<n fp) fr)
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
105 ≡⟨ feq p⊆q ⟩
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
106 pmap q (lift x) (extend p⊆q (extend (f<n fp) fr))
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
107 ∎ where open ≡-Reasoning
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
108 f2 : {p q : PFunc (Lift n Nat) (Lift n Two) } → (fp : Gf f p ) → (fq : Gf f q ) → (f ↑ (min (gn fp) (gn fq))) f⊆ (p f∩ q)
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
109 f2 {p} {q} fp fq = record { extend = λ {x} x<g → lemma2 x<g ; feq = λ {x} {fr} → lemma3 fr } where
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
110 fmin : PFunc (Lift n Nat) (Lift n Two)
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
111 fmin = f ↑ (min (gn fp) (gn fq))
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
112 lemma1 : {x : Nat} → ( x<g : Lift n (x ≤ min (gn fp) (gn fq)) ) → (fr : dom p (lift x)) (gr : dom q (lift x)) → pmap p (lift x) fr ≡ pmap q (lift x) gr
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
113 lemma1 {x} x<g fr gr = begin
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
114 pmap p (lift x) fr
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
115 ≡⟨ meq p ⟩
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
116 pmap p (lift x) (extend (f<n fp) (lift ( ≤-trans (lower x<g) (m⊓n≤m _ _))))
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
117 ≡⟨ sym (feq (f<n fp)) ⟩
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
118 pmap (f ↑ (min (gn fp) (gn fq))) (lift x) x<g
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
119 ≡⟨ feq (f<n fq) ⟩
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
120 pmap q (lift x) (extend (f<n fq) (lift ( ≤-trans (lower x<g) (m⊓n≤n _ _))))
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
121 ≡⟨ meq q ⟩
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
122 pmap q (lift x) gr
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
123 ∎ where open ≡-Reasoning
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
124 lemma2 : {x : Nat} → ( x<g : Lift n (x ≤ min (gn fp) (gn fq)) ) → dom (p f∩ q) (lift x)
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
125 lemma2 x<g = record { proj1 = extend (f<n fp ) (lift ( ≤-trans (lower x<g) (m⊓n≤m _ _))) ;
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
126 proj2 = record {proj1 = extend (f<n fq ) (lift ( ≤-trans (lower x<g) (m⊓n≤n _ _))) ; proj2 = lemma1 x<g }}
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
127 f∩→⊆ : (p q : PFunc (Lift n Nat) (Lift n Two) ) → (p f∩ q ) f⊆ q
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
128 f∩→⊆ p q = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
129 extend = λ {x} pq → proj1 (proj2 pq)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
130 ; feq = λ {x} {fr} → (proj2 (proj2 fr)) (proj1 fr) (proj1 (proj2 fr))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
131 }
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
132 lemma3 : {x : Nat} → ( fr : Lift n (x ≤ min (gn fp) (gn fq))) → pmap (f ↑ min (gn fp) (gn fq)) (lift x) fr ≡ pmap (p f∩ q) (lift x) (lemma2 fr)
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
133 lemma3 {x} fr =
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
134 pmap (f ↑ min (gn fp) (gn fq)) (lift x) fr
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
135 ≡⟨ feq (f<n fq) ⟩
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
136 pmap q (lift x) (extend (f<n fq) ( lift (≤-trans (lower fr) (m⊓n≤n _ _)) ))
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
137 ≡⟨ sym (feq (f∩→⊆ p q ) {x} {lemma2 fr} ) ⟩
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
138 pmap (p f∩ q) (lift x) (lemma2 fr)
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
139 ∎ where open ≡-Reasoning
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
140
370
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 368
diff changeset
141
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
142 ODSuc : (y : HOD) → infinite ∋ y → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
143 ODSuc y lt = Union (y , (y , y))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
144
366
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
145 data Hω2 : (i : Nat) ( x : Ordinal ) → Set n where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
146 hφ : Hω2 0 o∅
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
147 h0 : {i : Nat} {x : Ordinal } → Hω2 i x →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
148 Hω2 (Suc i) (od→ord (Union ((< nat→ω i , nat→ω 0 >) , ord→od x )))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
149 h1 : {i : Nat} {x : Ordinal } → Hω2 i x →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
150 Hω2 (Suc i) (od→ord (Union ((< nat→ω i , nat→ω 1 >) , ord→od x )))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
151 he : {i : Nat} {x : Ordinal } → Hω2 i x →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
152 Hω2 (Suc i) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
154 record Hω2r (x : Ordinal) : Set n where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
155 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
156 count : Nat
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
157 hω2 : Hω2 count x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
158
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
159 open Hω2r
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
160
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
161 HODω2 : HOD
366
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
162 HODω2 = record { od = record { def = λ x → Hω2r x } ; odmax = next o∅ ; <odmax = odmax0 } where
365
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
163 ω<next : {y : Ordinal} → infinite-d y → y o< next o∅
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
164 ω<next = ω<next-o∅ ho<
366
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
165 lemma : {i j : Nat} {x : Ordinal } → od→ord (Union (< nat→ω i , nat→ω j > , ord→od x)) o< next x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
166 lemma = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
167 odmax0 : {y : Ordinal} → Hω2r y → y o< next o∅
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
168 odmax0 {y} r with hω2 r
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
169 ... | hφ = x<nx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
170 ... | h0 {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) (lemma {i} {0} {x})
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
171 ... | h1 {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) (lemma {i} {1} {x})
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
172 ... | he {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) x<nx
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
173
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
174 3→Hω2 : List (Maybe Two) → HOD
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
175 3→Hω2 t = list→hod t 0 where
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
176 list→hod : List (Maybe Two) → Nat → HOD
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
177 list→hod [] _ = od∅
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
178 list→hod (just i0 ∷ t) i = Union (< nat→ω i , nat→ω 0 > , ( list→hod t (Suc i) ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
179 list→hod (just i1 ∷ t) i = Union (< nat→ω i , nat→ω 1 > , ( list→hod t (Suc i) ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
180 list→hod (nothing ∷ t) i = list→hod t (Suc i )
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
181
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
182 Hω2→3 : (x : HOD) → HODω2 ∋ x → List (Maybe Two)
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
183 Hω2→3 x = lemma where
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
184 lemma : { y : Ordinal } → Hω2r y → List (Maybe Two)
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
185 lemma record { count = 0 ; hω2 = hφ } = []
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
186 lemma record { count = (Suc i) ; hω2 = (h0 hω3) } = just i0 ∷ lemma record { count = i ; hω2 = hω3 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
187 lemma record { count = (Suc i) ; hω2 = (h1 hω3) } = just i1 ∷ lemma record { count = i ; hω2 = hω3 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
188 lemma record { count = (Suc i) ; hω2 = (he hω3) } = nothing ∷ lemma record { count = i ; hω2 = hω3 }
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
189
370
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 368
diff changeset
190 ω→2 : HOD
379
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 375
diff changeset
191 ω→2 = Replace (Power infinite) (λ p → Replace infinite (λ x → < x , repl p x > )) where
370
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 368
diff changeset
192 repl : HOD → HOD → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 368
diff changeset
193 repl p x with ODC.∋-p O p x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 368
diff changeset
194 ... | yes _ = nat→ω 1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 368
diff changeset
195 ... | no _ = nat→ω 0
368
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 367
diff changeset
196
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
197 ω→2f : (x : HOD) → ω→2 ∋ x → Nat → Two
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
198 ω→2f x = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
199
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
200 ↑n : (f n : HOD) → ((ω→2 ∋ f ) ∧ (infinite ∋ n)) → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
201 ↑n f n lt = 3→Hω2 ( ω→2f f (proj1 lt) 3↑ (ω→nat n (proj2 lt) ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
202
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
203 record Gfo (x : Ordinal) : Set n where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
204 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
205 gfunc : Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
206 gmax : Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
207 gcond : (odef ω→2 gfunc) ∧ (odef infinite gmax)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
208 gfdef : {!!} -- ( ↑n (ord→od gfunc) (ord→od gmax) (subst₂ ? ? ? gcond) ) ⊆ ord→od x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
209 pcond : odef HODω2 x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
210
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
211 open Gfo
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
212
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
213 HODGf : HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
214 HODGf = record { od = record { def = λ x → Gfo x } ; odmax = next o∅ ; <odmax = {!!} }
368
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 367
diff changeset
215
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 367
diff changeset
216 G : (Nat → Two) → Filter HODω2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 367
diff changeset
217 G f = record {
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
218 filter = HODGf
365
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
219 ; f⊆PL = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
220 ; filter1 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
221 ; filter2 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
222 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
223 filter0 : HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
224 filter0 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
225 f⊆PL1 : filter0 ⊆ Power HODω2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
226 f⊆PL1 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
227 filter11 : { p q : HOD } → q ⊆ HODω2 → filter0 ∋ p → p ⊆ q → filter0 ∋ q
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
228 filter11 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
229 filter12 : { p q : HOD } → filter0 ∋ p → filter0 ∋ q → filter0 ∋ (p ∩ q)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
230 filter12 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 364
diff changeset
231
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
232 -- the set of finite partial functions from ω to 2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
233
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
234 Hω2f : Set (suc n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
235 Hω2f = (Nat → Set n) → Two
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
236
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
237 Hω2f→Hω2 : Hω2f → HOD
381
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 380
diff changeset
238 Hω2f→Hω2 p = {!!} -- record { od = record { def = λ x → (p {!!} ≡ i0 ) ∨ (p {!!} ≡ i1 )}; odmax = {!!} ; <odmax = {!!} }
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
239
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
240
386
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
241 record CountableOrdinal : Set (suc (suc n)) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
242 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
243 ctl→ : Nat → Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
244 ctl← : Ordinal → Nat
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
245 ctl-iso→ : { x : Ordinal } → ctl→ (ctl← x ) ≡ x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
246 ctl-iso← : { x : Nat } → ctl← (ctl→ x ) ≡ x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
247
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
248 open CountableOrdinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
249
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
250 PGOD : (i : Nat) → (C : CountableOrdinal) → (p : Ordinal) → ( q : Ordinal ) → Set n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
251 PGOD i C p q = ¬ ( odef (ord→od (ctl→ C i)) q ∧ ( (x : Ordinal ) → odef (ord→od p) x → odef (ord→od q) x ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
252
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
253 PGHOD : (i : Nat) → (C : CountableOrdinal) → (p : Ordinal) → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
254 PGHOD i C p = record { od = record { def = λ x → PGOD i C {!!} {!!} } ; odmax = {!!} ; <odmax = {!!} }
386
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
255
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
256 ord-compare : (i : Nat) → (C : CountableOrdinal) → (p : Ordinal) → ( q : Ordinal ) → Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
257 ord-compare i C p q with ODC.p∨¬p O ( (q : Ordinal ) → PGOD i C p q )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
258 ord-compare i C p q | case1 y = p
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
259 ord-compare i C p q | case2 n = od→ord (ODC.minimal O (PGHOD i C p ) (∅< (subst₂ (λ j k → odef j {!!} ) refl {!!} n)) )
386
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
260
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
261 data PD (P : HOD) (C : CountableOrdinal) : (x : Ordinal) (i : Nat) → Set (suc n) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
262 pd0 : PD P C o∅ 0
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
263 -- pdq : {q pnx : Ordinal } {n : Nat} → (pn : PD P C pnx n ) → odef (ctl→ C n) q → ord→od p0x ⊆ ord→od q → PD P C q (suc n)
386
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
264
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
265 P-GenericFilter : {P : HOD} → (C : CountableOrdinal) → GenericFilter P
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
266 P-GenericFilter {P} C = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
267 genf = record { filter = {!!} ; f⊆PL = {!!} ; filter1 = {!!} ; filter2 = {!!} }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
268 ; generic = λ D → {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
269 }