annotate generic-filter.agda @ 413:b00d58b3dc57

generic filter on going
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 30 Jul 2020 08:15:56 +0900
parents 38eded55c72d
children 44a484f17f26
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
392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
43 open import Data.List hiding (filter)
387
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 open _f⊆_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
64 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
65
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
66 ODSuc : (y : HOD) → infinite ∋ y → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
67 ODSuc y lt = Union (y , (y , y))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
68
366
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
69 data Hω2 : (i : Nat) ( x : Ordinal ) → Set n where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
70 hφ : Hω2 0 o∅
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
71 h0 : {i : Nat} {x : Ordinal } → Hω2 i x →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
72 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
73 h1 : {i : Nat} {x : Ordinal } → Hω2 i x →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
74 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
75 he : {i : Nat} {x : Ordinal } → Hω2 i x →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
76 Hω2 (Suc i) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
77
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
78 record Hω2r (x : Ordinal) : Set n where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
79 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
80 count : Nat
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
81 hω2 : Hω2 count x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
82
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
83 open Hω2r
363
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
84
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 331
diff changeset
85 HODω2 : HOD
366
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
86 HODω2 = record { od = record { def = λ x → Hω2r x } ; odmax = next o∅ ; <odmax = odmax0 } where
393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 392
diff changeset
87 P : (i j : Nat) (x : Ordinal ) → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 392
diff changeset
88 P i j x = ((nat→ω i , nat→ω i) , (nat→ω i , nat→ω j)) , ord→od x
394
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
89 nat1 : (i : Nat) (x : Ordinal) → od→ord (nat→ω i) o< next x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
90 nat1 i x = next< nexto∅ ( <odmax infinite (ω∋nat→ω {i}))
393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 392
diff changeset
91 lemma1 : (i j : Nat) (x : Ordinal ) → osuc (od→ord (P i j x)) o< next x
394
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
92 lemma1 i j x = osuc<nx (pair-<xy (pair-<xy (pair-<xy (nat1 i x) (nat1 i x) ) (pair-<xy (nat1 i x) (nat1 j x) ) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
93 (subst (λ k → k o< next x) (sym diso) x<nx ))
393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 392
diff changeset
94 lemma : (i j : Nat) (x : Ordinal ) → od→ord (Union (P i j x)) o< next x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 392
diff changeset
95 lemma i j x = next< (lemma1 i j x ) ho<
366
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
96 odmax0 : {y : Ordinal} → Hω2r y → y o< next o∅
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
97 odmax0 {y} r with hω2 r
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
98 ... | hφ = x<nx
393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 392
diff changeset
99 ... | 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: 392
diff changeset
100 ... | h1 {i} {x} t = next< (odmax0 record { count = i ; hω2 = t }) (lemma i 1 x)
366
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 365
diff changeset
101 ... | 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
102
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
103 3→Hω2 : List (Maybe Two) → HOD
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
104 3→Hω2 t = list→hod t 0 where
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
105 list→hod : List (Maybe Two) → Nat → HOD
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
106 list→hod [] _ = od∅
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
107 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
108 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
109 list→hod (nothing ∷ t) i = list→hod t (Suc i )
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
110
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
111 Hω2→3 : (x : HOD) → HODω2 ∋ x → List (Maybe Two)
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
112 Hω2→3 x = lemma where
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
113 lemma : { y : Ordinal } → Hω2r y → List (Maybe Two)
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
114 lemma record { count = 0 ; hω2 = hφ } = []
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
115 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
116 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
117 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
118
370
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 368
diff changeset
119 ω→2 : HOD
394
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
120 ω→2 = Power infinite
368
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 367
diff changeset
121
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
122 ω→2f : (x : HOD) → ω→2 ∋ x → Nat → Two
394
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
123 ω→2f x lt n with ODC.∋-p O x (nat→ω n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
124 ω→2f x lt n | yes p = i1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 393
diff changeset
125 ω→2f x lt n | no ¬p = i0
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
126
395
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
127 fω→2-sel : ( f : Nat → Two ) (x : HOD) → Set n
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
128 fω→2-sel f x = (infinite ∋ x) ∧ ( (lt : odef infinite (od→ord x) ) → f (ω→nat x lt) ≡ i1 )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
129
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
130 fω→2 : (Nat → Two) → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
131 fω→2 f = Select infinite (fω→2-sel f)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
132
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
133 open _==_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
134
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
135 postulate f-extensionality : { n m : Level} → Relation.Binary.PropositionalEquality.Extensionality n m
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
136
396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 395
diff changeset
137 ω2∋f : (f : Nat → Two) → ω→2 ∋ fω→2 f
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 395
diff changeset
138 ω2∋f f = power← infinite (fω→2 f) (λ {x} lt → proj1 ((proj2 (selection {fω→2-sel f} {infinite} )) lt))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 395
diff changeset
139
411
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 410
diff changeset
140 ω→2f≡i1 : (X i : HOD) → (iω : infinite ∋ i) → (lt : ω→2 ∋ X ) → ω→2f X lt (ω→nat i iω) ≡ i1 → X ∋ i
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 410
diff changeset
141 ω→2f≡i1 X i iω lt eq with ODC.∋-p O X (nat→ω (ω→nat i iω))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 410
diff changeset
142 ω→2f≡i1 X i iω lt eq | yes p = subst (λ k → X ∋ k ) (nat→ω-iso iω) p
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 410
diff changeset
143
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 410
diff changeset
144 open _⊆_
396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 395
diff changeset
145
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
146 -- someday ...
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
147 postulate
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
148 ω→2f-iso : (X : HOD) → ( lt : ω→2 ∋ X ) → fω→2 ( ω→2f X lt ) =h= X
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
149 fω→2-iso : (f : Nat → Two) → ω→2f ( fω→2 f ) (ω2∋f f) ≡ f
395
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 394
diff changeset
150
385
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
151 ↑n : (f n : HOD) → ((ω→2 ∋ f ) ∧ (infinite ∋ n)) → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 384
diff changeset
152 ↑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
153
386
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
154 record CountableOrdinal : Set (suc (suc n)) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
155 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
156 ctl→ : Nat → Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
157 ctl← : Ordinal → Nat
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
158 ctl-iso→ : { x : Ordinal } → ctl→ (ctl← x ) ≡ x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
159 ctl-iso← : { x : Nat } → ctl← (ctl→ x ) ≡ x
388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
160
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
161 record CountableHOD : Set (suc (suc n)) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
162 field
390
d58edc4133b0 generic filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
163 mhod : HOD
d58edc4133b0 generic filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
164 mtl→ : Nat → Ordinal
d58edc4133b0 generic filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
165 mtl→∈P : (i : Nat) → odef mhod (mtl→ i)
d58edc4133b0 generic filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
166 mtl← : (x : Ordinal) → odef mhod x → Nat
d58edc4133b0 generic filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
167 mtl-iso→ : { x : Ordinal } → (lt : odef mhod x ) → mtl→ (mtl← x lt ) ≡ x
d58edc4133b0 generic filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 389
diff changeset
168 mtl-iso← : { x : Nat } → mtl← (mtl→ x ) (mtl→∈P x) ≡ x
388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
169
386
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
170
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
171 open CountableOrdinal
388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
172 open CountableHOD
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
173
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
174 ----
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
175 -- a(n) ∈ M
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
176 -- ∃ q ∈ Power P → q ∈ a(n) ∧ p(n) ⊆ q
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
177 --
391
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
178 PGHOD : (i : Nat) → (C : CountableOrdinal) → (P : HOD) → (p : Ordinal) → HOD
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
179 PGHOD i C P p = record { od = record { def = λ x →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
180 odef P x ∧ odef (ord→od (ctl→ C i)) x ∧ ( (y : Ordinal ) → odef (ord→od p) y → odef (ord→od x) y ) }
391
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
181 ; odmax = odmax P ; <odmax = λ {y} lt → <odmax P (proj1 lt) }
388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
182
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
183 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
184 -- p(n+1) = if PGHOD n qn otherwise p(n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
185 --
391
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
186 next-p : (C : CountableOrdinal) (P : HOD ) (i : Nat) → (p : Ordinal) → Ordinal
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
187 next-p C P i p with ODC.decp O ( PGHOD i C P p =h= od∅ )
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
188 next-p C P i p | yes y = p
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
189 next-p C P i p | no not = od→ord (ODC.minimal O (PGHOD i C P p ) not)
387
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 386
diff changeset
190
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
191 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
192 -- ascendant search on p(n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
193 --
391
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
194 find-p : (C : CountableOrdinal) (P : HOD ) (i : Nat) → (x : Ordinal) → Ordinal
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
195 find-p C P Zero x = x
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
196 find-p C P (Suc i) x = find-p C P i ( next-p C P i x )
388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
197
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
198 ---
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
199 -- G = { r ∈ Power P | ∃ n → r ⊆ p(n) }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
200 --
391
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
201 record PDN (C : CountableOrdinal) (P : HOD ) (x : Ordinal) : Set n where
388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
202 field
391
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
203 gr : Nat
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
204 pn<gr : (y : Ordinal) → odef (ord→od x) y → odef (ord→od (find-p C P gr o∅)) y
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
205 px∈ω : odef (Power P) x
388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
206
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
207 open PDN
386
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
208
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
209 ---
413
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
210 -- G as a HOD
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
211 --
391
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
212 PDHOD : (C : CountableOrdinal) → (P : HOD ) → HOD
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
213 PDHOD C P = record { od = record { def = λ x → PDN C P x }
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
214 ; odmax = odmax (Power P) ; <odmax = λ {y} lt → <odmax (Power P) {y} (PDN.px∈ω lt) } where
388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 387
diff changeset
215
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
216 open PDN
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
217
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
218 ----
413
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
219 -- Generic Filter on Power P for HOD's Countable Ordinal (G ⊆ Power P ≡ G i.e. Nat → P → Set )
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
220 --
413
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
221 -- p 0 ≡ ∅
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
222 -- p (suc n) = if ∃ q ∈ ord→od ( ctl→ n ) ∧ p n ⊆ q → q (axiom of choice)
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
223 --- else p n
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
224
391
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
225 P-GenericFilter : (C : CountableOrdinal) → (P : HOD ) → GenericFilter P
e98b5774d180 generic filter defined
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 390
diff changeset
226 P-GenericFilter C P = record {
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
227 genf = record { filter = PDHOD C P ; f⊆PL = f⊆PL ; filter1 = {!!} ; filter2 = {!!} }
386
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 385
diff changeset
228 ; generic = λ D → {!!}
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
229 } where
413
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
230 P∅ : {P : HOD} → odef (Power P) o∅
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
231 P∅ {P} = subst (λ k → odef (Power P) k ) ord-od∅ (lemma o∅ o∅≡od∅) where
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
232 lemma : (x : Ordinal ) → ord→od x ≡ od∅ → odef (Power P) (od→ord od∅)
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
233 lemma x eq = power← P od∅ (λ {x} lt → ⊥-elim (¬x<0 lt ))
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
234 x<y→∋ : {x y : Ordinal} → odef (ord→od x) y → ord→od x ∋ ord→od y
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
235 x<y→∋ {x} {y} lt = subst (λ k → odef (ord→od x) k ) (sym diso) lt
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
236 find-p-⊆P : (C : CountableOrdinal) (P : HOD ) (i : Nat) → (x y : Ordinal) → odef (Power P) x → odef (ord→od (find-p C P i x)) y → odef P y
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
237 find-p-⊆P C P Zero x y Px Py = subst (λ k → odef P k ) diso
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
238 ( incl (ODC.power→⊆ O P (ord→od x) (d→∋ (Power P) Px)) (x<y→∋ Py))
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
239 find-p-⊆P C P (Suc i) x y Px Py = find-p-⊆P C P i (next-p C P i x) y {!!} {!!}
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
240 f⊆PL : PDHOD C P ⊆ Power P
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
241 f⊆PL = record { incl = λ {x} lt → power← P x (λ {y} y<x →
413
b00d58b3dc57 generic filter on going
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 412
diff changeset
242 find-p-⊆P C P (gr lt) o∅ (od→ord y) P∅ (pn<gr lt (od→ord y) (subst (λ k → odef k (od→ord y)) (sym oiso) y<x))) }
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
243
392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
244
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
245 open GenericFilter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
246 open Filter
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
247
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
248 record Incompatible (P : HOD ) : Set (suc (suc n)) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
249 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
250 except : HOD → ( HOD ∧ HOD )
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
251 incompatible : { p : HOD } → Power P ∋ p → Power P ∋ proj1 (except p ) → Power P ∋ proj2 (except p )
392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
252 → ( p ⊆ proj1 (except p) ) ∧ ( p ⊆ proj2 (except p) )
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
253 → ∀ ( r : HOD ) → Power P ∋ r → ¬ (( proj1 (except p) ⊆ r ) ∧ ( proj2 (except p) ⊆ r ))
392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
254
412
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 411
diff changeset
255 lemma725 : (M : CountableHOD ) (C : CountableOrdinal) (P : HOD ) → mhod M ∋ Power P
392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
256 → Incompatible P → ¬ ( mhod M ∋ filter ( genf ( P-GenericFilter C P )))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
257 lemma725 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
258
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
259 lemma725-1 : Incompatible HODω2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
260 lemma725-1 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
261
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
262 lemma726 : (C : CountableOrdinal) (P : HOD )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
263 → Union ( filter ( genf ( P-GenericFilter C HODω2 ))) =h= ω→2
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
264 lemma726 = {!!}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
265
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
266 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
267 -- val x G = { val y G | ∃ p → G ∋ p → x ∋ < y , p > }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
268 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
269
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
270
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
271
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 391
diff changeset
272