annotate src/maximum-filter.agda @ 1205:83ac320583f8

...
author kono
date Fri, 03 Mar 2023 10:42:58 +0800
parents 6216562a2bce
children 45cd80181a29
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
457
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 456
diff changeset
1 {-# OPTIONS --allow-unsolved-metas #-}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 456
diff changeset
2
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 open import Level
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import Ordinals
1153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1141
diff changeset
5 module maximum-filter {n : Level } (O : Ordinals {n}) where
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import zf
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import logic
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 import OD
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 open import Relation.Nullary
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 open import Data.Empty
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 open import Relation.Binary.Core
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 open import Relation.Binary.PropositionalEquality
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
15 import BAlgebra
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1096
diff changeset
17 open BAlgebra O
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 open inOrdinal O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 open OD O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 open OD.OD
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 open ODAxiom odAxiom
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 import OrdUtil
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 import ODUtil
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 open Ordinals.Ordinals O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 open Ordinals.IsOrdinals isOrdinal
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 open Ordinals.IsNext isNext
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 open OrdUtil O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 open ODUtil O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 import ODC
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 open ODC O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 open _∧_
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 open _∨_
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 open Bool
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39
1153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1141
diff changeset
40 open import filter O
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 open Filter
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
1153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1141
diff changeset
45 open import Relation.Binary
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1141
diff changeset
46 open import Relation.Binary.Structures
1126
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1125
diff changeset
47
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1125
diff changeset
48 PO : IsStrictPartialOrder _≡_ _⊂_
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1125
diff changeset
49 PO = record { isEquivalence = record { refl = refl ; sym = sym ; trans = trans }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1125
diff changeset
50 ; trans = λ {a} {b} {c} → trans-⊂ {a} {b} {c}
1133
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1132
diff changeset
51 ; irrefl = λ x=y x<y → o<¬≡ (cong (&) x=y) (proj1 x<y)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1132
diff changeset
52 ; <-resp-≈ = record { fst = ( λ {x} {y} {y1} y=y1 xy1 → subst (λ k → x ⊂ k) y=y1 xy1 )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1132
diff changeset
53 ; snd = (λ {x} {x1} {y} x=x1 x1y → subst (λ k → k ⊂ x) x=x1 x1y ) } }
1126
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1125
diff changeset
54
1153
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1141
diff changeset
55 import zorn
1126
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1125
diff changeset
56 open zorn O _⊂_ PO
574
9084a26445a7 ZC data won't work
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 516
diff changeset
57
1158
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1155
diff changeset
58
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1155
diff changeset
59 -- all filter contains F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1155
diff changeset
60 F⊆X : { L P : HOD } (LP : L ⊆ Power P) → Filter {L} {P} LP → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1155
diff changeset
61 F⊆X {L} {P} LP F = record { od = record { def = λ x → IsFilter {L} {P} LP x ∧ ( filter F ⊆ * x) } ; odmax = osuc (& L)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1155
diff changeset
62 ; <odmax = λ {x} lt → fx00 lt } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1155
diff changeset
63 fx00 : {x : Ordinal } → IsFilter LP x ∧ filter F ⊆ * x → x o< osuc (& L)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1155
diff changeset
64 fx00 {x} lt = subst (λ k → k o< osuc (& L)) &iso ( ⊆→o≤ (IsFilter.f⊆L (proj1 lt )) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1155
diff changeset
65
1155
c4fd0bfdfbae FIP to Filter done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1153
diff changeset
66 F→Maximum : {L P : HOD} (LP : L ⊆ Power P) → ({p q : HOD} → L ∋ p → L ∋ q → L ∋ (p ∩ q))
1136
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1135
diff changeset
67 → (F : Filter {L} {P} LP) → o∅ o< & L → {y : Ordinal } → odef (filter F) y → (¬ (filter F ∋ od∅)) → MaximumFilter {L} {P} LP F
1155
c4fd0bfdfbae FIP to Filter done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1153
diff changeset
68 F→Maximum {L} {P} LP CAP F 0<L {y} 0<F Fprop = record { mf = mf ; F⊆mf = subst (λ k → filter F ⊆ k ) (sym *iso) mf52
1140
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
69 ; proper = subst (λ k → ¬ ( odef (filter mf ) k)) (sym ord-od∅) ( IsFilter.proper imf) ; is-maximum = mf50 } where
1133
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1132
diff changeset
70 FX : HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1132
diff changeset
71 FX = F⊆X {L} {P} LP F
1137
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
72 oF = & (filter F)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
73 mf11 : { p q : Ordinal } → odef L q → odef (* oF) p → (* p) ⊆ (* q) → odef (* oF) q
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
74 mf11 {p} {q} Lq Fp p⊆q = subst₂ (λ j k → odef j k ) (sym *iso) &iso ( filter1 F (subst (λ k → odef L k) (sym &iso) Lq)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
75 (subst₂ (λ j k → odef j k ) *iso (sym &iso) Fp) p⊆q )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
76 mf12 : { p q : Ordinal } → odef (* oF) p → odef (* oF) q → odef L (& ((* p) ∩ (* q))) → odef (* oF) (& ((* p) ∩ (* q)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
77 mf12 {p} {q} Fp Fq Lpq = subst (λ k → odef k (& ((* p) ∩ (* q))) ) (sym *iso)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
78 ( filter2 F (subst₂ (λ j k → odef j k ) *iso (sym &iso) Fp) (subst₂ (λ j k → odef j k ) *iso (sym &iso) Fq) Lpq)
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
79 FX∋F : odef FX (& (filter F))
1137
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
80 FX∋F = ⟪ record { f⊆L = subst (λ k → k ⊆ L) (sym *iso) (f⊆L F) ; filter1 = mf11 ; filter2 = mf12
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
81 ; proper = subst₂ (λ j k → ¬ (odef j k) ) (sym *iso) ord-od∅ Fprop }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
82 , subst (λ k → filter F ⊆ k ) (sym *iso) ( λ x → x ) ⟫
1139
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1138
diff changeset
83 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1138
diff changeset
84 -- if filter B (which contains F) is transitive, Union B is also a filter which contains F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1138
diff changeset
85 -- and this is a SUP
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1138
diff changeset
86 --
1133
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1132
diff changeset
87 SUP⊆ : (B : HOD) → B ⊆ FX → IsTotalOrderSet B → SUP FX B
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
88 SUP⊆ B B⊆FX OB with trio< (& B) o∅
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
89 ... | tri< a ¬b ¬c = ⊥-elim (¬x<0 a )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
90 ... | tri≈ ¬a b ¬c = record { sup = filter F ; isSUP = record { ax = FX∋F ; x≤sup = λ {y} zy → ⊥-elim (o<¬≡ (sym b) (∈∅< zy)) } }
1140
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
91 ... | tri> ¬a ¬b 0<B = record { sup = Union B ; isSUP = record { ax = mf13 ; x≤sup = mf40 } } where
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
92 mf20 : HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
93 mf20 = ODC.minimal O B (λ eq → (o<¬≡ (cong (&) (sym (==→o≡ eq))) (subst (λ k → k o< & B) (sym ord-od∅) 0<B )))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
94 mf18 : odef B (& mf20 )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
95 mf18 = ODC.x∋minimal O B (λ eq → (o<¬≡ (cong (&) (sym (==→o≡ eq))) (subst (λ k → k o< & B) (sym ord-od∅) 0<B )))
1137
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
96 mf16 : Union B ⊆ L
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
97 mf16 record { owner = b ; ao = Bb ; ox = bx } = IsFilter.f⊆L ( proj1 ( B⊆FX Bb )) bx
1137
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
98 mf17 : {p q : Ordinal} → odef L q → odef (* (& (Union B))) p → * p ⊆ * q → odef (* (& (Union B))) q
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
99 mf17 {p} {q} Lq bp p⊆q with subst (λ k → odef k p ) *iso bp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
100 ... | record { owner = owner ; ao = ao ; ox = ox } = subst (λ k → odef k q) (sym *iso)
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
101 record { owner = owner ; ao = ao ; ox = IsFilter.filter1 mf30 Lq ox p⊆q } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
102 mf30 : IsFilter {L} {P} LP owner
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
103 mf30 = proj1 ( B⊆FX ao )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
104 mf31 : {p q : Ordinal} → odef (* (& (Union B))) p → odef (* (& (Union B))) q → odef L (& ((* p) ∩ (* q))) → odef (* (& (Union B))) (& ((* p) ∩ (* q)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
105 mf31 {p} {q} bp bq Lpq with subst (λ k → odef k p ) *iso bp | subst (λ k → odef k q ) *iso bq
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
106 ... | record { owner = bp ; ao = Bbp ; ox = bbp } | record { owner = bq ; ao = Bbq ; ox = bbq }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
107 with OB (subst (λ k → odef B k) (sym &iso) Bbp) (subst (λ k → odef B k) (sym &iso) Bbq)
1140
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
108 ... | tri< bp⊂bq ¬b ¬c = subst₂ (λ j k → odef j k ) (sym *iso) refl record { owner = bq ; ao = Bbq ; ox = mf36 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
109 mf36 : odef (* bq) (& ((* p) ∩ (* q)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
110 mf36 = IsFilter.filter2 mf30 (proj2 bp⊂bq bbp) bbq Lpq where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
111 mf30 : IsFilter {L} {P} LP bq
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
112 mf30 = proj1 ( B⊆FX Bbq )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
113 ... | tri≈ ¬a bq=bp ¬c = subst₂ (λ j k → odef j k ) (sym *iso) refl record { owner = bp ; ao = Bbp ; ox = mf36 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
114 mf36 : odef (* bp) (& ((* p) ∩ (* q)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
115 mf36 = IsFilter.filter2 mf30 bbp (subst (λ k → odef k q) (sym bq=bp) bbq) Lpq where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
116 mf30 : IsFilter {L} {P} LP bp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
117 mf30 = proj1 ( B⊆FX Bbp )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
118 ... | tri> ¬a ¬b bq⊂bp = subst₂ (λ j k → odef j k ) (sym *iso) refl record { owner = bp ; ao = Bbp ; ox = mf36 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
119 mf36 : odef (* bp) (& ((* p) ∩ (* q)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
120 mf36 = IsFilter.filter2 mf30 bbp (proj2 bq⊂bp bbq) Lpq where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
121 mf30 : IsFilter {L} {P} LP bp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
122 mf30 = proj1 ( B⊆FX Bbp )
1139
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1138
diff changeset
123 mf32 : ¬ odef (Union B) o∅
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1138
diff changeset
124 mf32 record { owner = owner ; ao = bo ; ox = o0 } with proj1 ( B⊆FX bo )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1138
diff changeset
125 ... | record { f⊆L = f⊆L ; filter1 = filter1 ; filter2 = filter2 ; proper = proper } = ⊥-elim ( proper o0 )
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
126 mf14 : IsFilter LP (& (Union B))
1139
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1138
diff changeset
127 mf14 = record { f⊆L = subst (λ k → k ⊆ L) (sym *iso) mf16 ; filter1 = mf17 ; filter2 = mf31 ; proper = subst (λ k → ¬ odef k o∅) (sym *iso) mf32 }
1137
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
128 mf15 : filter F ⊆ Union B
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
129 mf15 {x} Fx = record { owner = & mf20 ; ao = mf18 ; ox = subst (λ k → odef k x) (sym *iso) (mf22 Fx) } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
130 mf22 : odef (filter F) x → odef mf20 x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
131 mf22 Fx = subst (λ k → odef k x) *iso ( proj2 (B⊆FX mf18) Fx )
1137
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
132 mf13 : odef FX (& (Union B))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1136
diff changeset
133 mf13 = ⟪ mf14 , subst (λ k → filter F ⊆ k ) (sym *iso) mf15 ⟫
1140
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
134 mf42 : {z : Ordinal} → odef B z → * z ⊆ Union B
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
135 mf42 {z} Bz {x} zx = record { owner = _ ; ao = Bz ; ox = zx }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
136 mf40 : {z : Ordinal} → odef B z → (z ≡ & (Union B)) ∨ ( * z ⊂ * (& (Union B)) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
137 mf40 {z} Bz with B⊆FX Bz
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
138 ... | ⟪ filterz , F⊆z ⟫ with osuc-≡< ( ⊆→o≤ {* z} {Union B} (mf42 Bz) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
139 ... | case1 eq = case1 (trans (sym &iso) eq )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
140 ... | case2 lt = case2 ⟪ subst₂ (λ j k → j o< & k ) refl (sym *iso) lt , subst (λ k → * z ⊆ k) (sym *iso) (mf42 Bz) ⟫
1134
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
141 mx : Maximal FX
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
142 mx = Zorn-lemma (∈∅< FX∋F) SUP⊆
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
143 imf : IsFilter {L} {P} LP (& (Maximal.maximal mx))
1134
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
144 imf = proj1 (Maximal.as mx)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
145 mf00 : (* (& (Maximal.maximal mx))) ⊆ L
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
146 mf00 = IsFilter.f⊆L imf
1134
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
147 mf01 : { p q : HOD } → L ∋ q → (* (& (Maximal.maximal mx))) ∋ p → p ⊆ q → (* (& (Maximal.maximal mx))) ∋ q
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
148 mf01 {p} {q} Lq Fq p⊆q = IsFilter.filter1 imf Lq Fq
1134
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
149 (λ {x} lt → subst (λ k → odef k x) (sym *iso) ( p⊆q (subst (λ k → odef k x) *iso lt ) ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
150 mf02 : { p q : HOD } → (* (& (Maximal.maximal mx))) ∋ p → (* (& (Maximal.maximal mx))) ∋ q → L ∋ (p ∩ q)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
151 → (* (& (Maximal.maximal mx))) ∋ (p ∩ q)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
152 mf02 {p} {q} Fp Fq Lpq = subst₂ (λ j k → odef (* (& (Maximal.maximal mx))) (& (j ∩ k ))) *iso *iso (
1138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1137
diff changeset
153 IsFilter.filter2 imf Fp Fq (subst₂ (λ j k → odef L (& (j ∩ k ))) (sym *iso) (sym *iso) Lpq ))
1134
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
154 mf : Filter {L} {P} LP
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
155 mf = record { filter = * (& (Maximal.maximal mx)) ; f⊆L = mf00
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
156 ; filter1 = mf01
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
157 ; filter2 = mf02 }
1141
e9a05e7c4e35 Maximal Filter and Ultra Filter generation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1140
diff changeset
158 mf52 : filter F ⊆ Maximal.maximal mx
e9a05e7c4e35 Maximal Filter and Ultra Filter generation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1140
diff changeset
159 mf52 = subst (λ k → filter F ⊆ k ) *iso (proj2 mf53) where
e9a05e7c4e35 Maximal Filter and Ultra Filter generation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1140
diff changeset
160 mf53 : FX ∋ Maximal.maximal mx
e9a05e7c4e35 Maximal Filter and Ultra Filter generation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1140
diff changeset
161 mf53 = Maximal.as mx
1140
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
162 mf50 : (f : Filter LP) → ¬ (filter f ∋ od∅) → filter F ⊆ filter f → ¬ (* (& (zorn.Maximal.maximal mx)) ⊂ filter f)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
163 mf50 f proper F⊆f = subst (λ k → ¬ ( k ⊂ filter f )) (sym *iso) (Maximal.¬maximal<x mx ⟪ Filter-is-Filter {L} {P} LP f proper , mf51 ⟫ ) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1139
diff changeset
164 mf51 : filter F ⊆ * (& (filter f))
1141
e9a05e7c4e35 Maximal Filter and Ultra Filter generation done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1140
diff changeset
165 mf51 = subst (λ k → filter F ⊆ k ) (sym *iso) F⊆f
1134
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1133
diff changeset
166
1155
c4fd0bfdfbae FIP to Filter done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1153
diff changeset
167 F→ultra : {L P : HOD} (LP : L ⊆ Power P) → (CAP : {p q : HOD} → L ∋ p → L ∋ q → L ∋ (p ∩ q))
1136
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1135
diff changeset
168 → (F : Filter {L} {P} LP) → (0<L : o∅ o< & L) → {y : Ordinal} → (0<F : odef (filter F) y) → (proper : ¬ (filter F ∋ od∅))
1155
c4fd0bfdfbae FIP to Filter done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1153
diff changeset
169 → ultra-filter ( MaximumFilter.mf (F→Maximum {L} {P} LP CAP F 0<L 0<F proper ))
c4fd0bfdfbae FIP to Filter done
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1153
diff changeset
170 F→ultra {L} {P} LP CAP F 0<L 0<F proper = max→ultra {L} {P} LP CAP F 0<F (F→Maximum {L} {P} LP CAP F 0<L 0<F proper )
481
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 480
diff changeset
171
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 480
diff changeset
172