Mercurial > hg > Members > kono > Proof > ZF-in-agda
comparison OD.agda @ 423:9984cdd88da3
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 01 Aug 2020 18:05:23 +0900 |
parents | 44a484f17f26 |
children | cc7909f86841 |
comparison
equal
deleted
inserted
replaced
422:44a484f17f26 | 423:9984cdd88da3 |
---|---|
32 record _==_ ( a b : OD ) : Set n where | 32 record _==_ ( a b : OD ) : Set n where |
33 field | 33 field |
34 eq→ : ∀ { x : Ordinal } → def a x → def b x | 34 eq→ : ∀ { x : Ordinal } → def a x → def b x |
35 eq← : ∀ { x : Ordinal } → def b x → def a x | 35 eq← : ∀ { x : Ordinal } → def b x → def a x |
36 | 36 |
37 id : {A : Set n} → A → A | |
38 id x = x | |
39 | |
40 ==-refl : { x : OD } → x == x | 37 ==-refl : { x : OD } → x == x |
41 ==-refl {x} = record { eq→ = id ; eq← = id } | 38 ==-refl {x} = record { eq→ = λ x → x ; eq← = λ x → x } |
42 | 39 |
43 open _==_ | 40 open _==_ |
44 | 41 |
45 ==-trans : { x y z : OD } → x == y → y == z → x == z | 42 ==-trans : { x y z : OD } → x == y → y == z → x == z |
46 ==-trans x=y y=z = record { eq→ = λ {m} t → eq→ y=z (eq→ x=y t) ; eq← = λ {m} t → eq← x=y (eq← y=z t) } | 43 ==-trans x=y y=z = record { eq→ = λ {m} t → eq→ y=z (eq→ x=y t) ; eq← = λ {m} t → eq← x=y (eq← y=z t) } |
146 x c< a = a ∋ x | 143 x c< a = a ∋ x |
147 | 144 |
148 d→∋ : ( a : HOD ) { x : Ordinal} → odef a x → a ∋ (* x) | 145 d→∋ : ( a : HOD ) { x : Ordinal} → odef a x → a ∋ (* x) |
149 d→∋ a lt = subst (λ k → odef a k ) (sym &iso) lt | 146 d→∋ a lt = subst (λ k → odef a k ) (sym &iso) lt |
150 | 147 |
151 cseq : HOD → HOD | 148 -- odef-subst : {Z : HOD } {X : Ordinal }{z : HOD } {x : Ordinal }→ odef Z X → Z ≡ z → X ≡ x → odef z x |
152 cseq x = record { od = record { def = λ y → odef x (osuc y) } ; odmax = osuc (odmax x) ; <odmax = lemma } where | 149 -- odef-subst df refl refl = df |
153 lemma : {y : Ordinal} → def (od x) (osuc y) → y o< osuc (odmax x) | |
154 lemma {y} lt = ordtrans <-osuc (ordtrans (<odmax x lt) <-osuc ) | |
155 | |
156 odef-subst : {Z : HOD } {X : Ordinal }{z : HOD } {x : Ordinal }→ odef Z X → Z ≡ z → X ≡ x → odef z x | |
157 odef-subst df refl refl = df | |
158 | 150 |
159 otrans : {a x y : Ordinal } → odef (Ord a) x → odef (Ord x) y → odef (Ord a) y | 151 otrans : {a x y : Ordinal } → odef (Ord a) x → odef (Ord x) y → odef (Ord a) y |
160 otrans x<a y<x = ordtrans y<x x<a | 152 otrans x<a y<x = ordtrans y<x x<a |
161 | |
162 odef→o< : {X : HOD } → {x : Ordinal } → odef X x → x o< & X | |
163 odef→o< {X} {x} lt = o<-subst {_} {_} {x} {& X} ( c<→o< ( odef-subst {X} {x} lt (sym *iso) (sym &iso) )) &iso &iso | |
164 | |
165 odefo→o< : {X y : Ordinal } → odef (* X) y → y o< X | |
166 odefo→o< {X} {y} lt = subst₂ (λ j k → j o< k ) &iso &iso ( c<→o< (subst (λ k → odef (* X) k ) (sym &iso ) lt )) | |
167 | 153 |
168 -- If we have reverse of c<→o<, everything becomes Ordinal | 154 -- If we have reverse of c<→o<, everything becomes Ordinal |
169 o<→c<→HOD=Ord : ( o<→c< : {x y : Ordinal } → x o< y → odef (* y) x ) → {x : HOD } → x ≡ Ord (& x) | 155 o<→c<→HOD=Ord : ( o<→c< : {x y : Ordinal } → x o< y → odef (* y) x ) → {x : HOD } → x ≡ Ord (& x) |
170 o<→c<→HOD=Ord o<→c< {x} = ==→o≡ ( record { eq→ = lemma1 ; eq← = lemma2 } ) where | 156 o<→c<→HOD=Ord o<→c< {x} = ==→o≡ ( record { eq→ = lemma1 ; eq← = lemma2 } ) where |
171 lemma1 : {y : Ordinal} → odef x y → odef (Ord (& x)) y | 157 lemma1 : {y : Ordinal} → odef x y → odef (Ord (& x)) y |
177 orefl : { x : HOD } → { y : Ordinal } → & x ≡ y → & x ≡ y | 163 orefl : { x : HOD } → { y : Ordinal } → & x ≡ y → & x ≡ y |
178 orefl refl = refl | 164 orefl refl = refl |
179 | 165 |
180 ==-iso : { x y : HOD } → od (* (& x)) == od (* (& y)) → od x == od y | 166 ==-iso : { x y : HOD } → od (* (& x)) == od (* (& y)) → od x == od y |
181 ==-iso {x} {y} eq = record { | 167 ==-iso {x} {y} eq = record { |
182 eq→ = λ d → lemma ( eq→ eq (odef-subst d (sym *iso) refl )) ; | 168 eq→ = λ {z} d → lemma ( eq→ eq (subst (λ k → odef k z ) (sym *iso) d )) ; |
183 eq← = λ d → lemma ( eq← eq (odef-subst d (sym *iso) refl )) } | 169 eq← = λ {z} d → lemma ( eq← eq (subst (λ k → odef k z ) (sym *iso) d )) } |
184 where | 170 where |
185 lemma : {x : HOD } {z : Ordinal } → odef (* (& x)) z → odef x z | 171 lemma : {x : HOD } {z : Ordinal } → odef (* (& x)) z → odef x z |
186 lemma {x} {z} d = odef-subst d *iso refl | 172 lemma {x} {z} d = subst (λ k → odef k z) (*iso) d |
187 | 173 |
188 =-iso : {x y : HOD } → (od x == od y) ≡ (od (* (& x)) == od y) | 174 =-iso : {x y : HOD } → (od x == od y) ≡ (od (* (& x)) == od y) |
189 =-iso {_} {y} = cong ( λ k → od k == od y ) (sym *iso) | 175 =-iso {_} {y} = cong ( λ k → od k == od y ) (sym *iso) |
190 | 176 |
191 ord→== : { x y : HOD } → & x ≡ & y → od x == od y | 177 ord→== : { x y : HOD } → & x ≡ & y → od x == od y |
197 o≡→== {x} {.x} refl = ==-refl | 183 o≡→== {x} {.x} refl = ==-refl |
198 | 184 |
199 o∅≡od∅ : * (o∅ ) ≡ od∅ | 185 o∅≡od∅ : * (o∅ ) ≡ od∅ |
200 o∅≡od∅ = ==→o≡ lemma where | 186 o∅≡od∅ = ==→o≡ lemma where |
201 lemma0 : {x : Ordinal} → odef (* o∅) x → odef od∅ x | 187 lemma0 : {x : Ordinal} → odef (* o∅) x → odef od∅ x |
202 lemma0 {x} lt = o<-subst (c<→o< {* x} {* o∅} (odef-subst {* o∅} {x} lt refl (sym &iso)) ) &iso &iso | 188 lemma0 {x} lt with c<→o< {* x} {* o∅} (subst (λ k → odef (* o∅) k ) (sym &iso) lt) |
189 ... | t = subst₂ (λ j k → j o< k ) &iso &iso t | |
203 lemma1 : {x : Ordinal} → odef od∅ x → odef (* o∅) x | 190 lemma1 : {x : Ordinal} → odef od∅ x → odef (* o∅) x |
204 lemma1 {x} lt = ⊥-elim (¬x<0 lt) | 191 lemma1 {x} lt = ⊥-elim (¬x<0 lt) |
205 lemma : od (* o∅) == od od∅ | 192 lemma : od (* o∅) == od od∅ |
206 lemma = record { eq→ = lemma0 ; eq← = lemma1 } | 193 lemma = record { eq→ = lemma0 ; eq← = lemma1 } |
207 | 194 |
233 x , y = record { od = record { def = λ t → (t ≡ & x ) ∨ ( t ≡ & y ) } ; odmax = omax (& x) (& y) ; <odmax = lemma } where | 220 x , y = record { od = record { def = λ t → (t ≡ & x ) ∨ ( t ≡ & y ) } ; odmax = omax (& x) (& y) ; <odmax = lemma } where |
234 lemma : {t : Ordinal} → (t ≡ & x) ∨ (t ≡ & y) → t o< omax (& x) (& y) | 221 lemma : {t : Ordinal} → (t ≡ & x) ∨ (t ≡ & y) → t o< omax (& x) (& y) |
235 lemma {t} (case1 refl) = omax-x _ _ | 222 lemma {t} (case1 refl) = omax-x _ _ |
236 lemma {t} (case2 refl) = omax-y _ _ | 223 lemma {t} (case2 refl) = omax-y _ _ |
237 | 224 |
238 pair-xx<xy : {x y : HOD} → & (x , x) o< osuc (& (x , y) ) | |
239 pair-xx<xy {x} {y} = ⊆→o≤ lemma where | |
240 lemma : {z : Ordinal} → def (od (x , x)) z → def (od (x , y)) z | |
241 lemma {z} (case1 refl) = case1 refl | |
242 lemma {z} (case2 refl) = case1 refl | |
243 | |
244 pair-<xy : {x y : HOD} → {n : Ordinal} → & x o< next n → & y o< next n → & (x , y) o< next n | |
245 pair-<xy {x} {y} {o} x<nn y<nn with trio< (& x) (& y) | inspect (omax (& x)) (& y) | |
246 ... | tri< a ¬b ¬c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (sym eq1) (osuc<nx y<nn)) ho< | |
247 ... | tri> ¬a ¬b c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (sym eq1) (osuc<nx x<nn)) ho< | |
248 ... | tri≈ ¬a b ¬c | record { eq = eq1 } = next< (subst (λ k → k o< next o ) (omax≡ _ _ b) (subst (λ k → osuc k o< next o) b (osuc<nx x<nn))) ho< | |
249 | |
250 -- another form of infinite | |
251 -- pair-ord< : {x : Ordinal } → Set n | |
252 pair-ord< : {x : HOD } → ( {y : HOD } → & y o< next (odmax y) ) → & ( x , x ) o< next (& x) | |
253 pair-ord< {x} ho< = subst (λ k → & (x , x) o< k ) lemmab0 lemmab1 where | |
254 lemmab0 : next (odmax (x , x)) ≡ next (& x) | |
255 lemmab0 = trans (cong (λ k → next k) (omxx _)) (sym nexto≡) | |
256 lemmab1 : & (x , x) o< next ( odmax (x , x)) | |
257 lemmab1 = ho< | |
258 | |
259 pair<y : {x y : HOD } → y ∋ x → & (x , x) o< osuc (& y) | 225 pair<y : {x y : HOD } → y ∋ x → & (x , x) o< osuc (& y) |
260 pair<y {x} {y} y∋x = ⊆→o≤ lemma where | 226 pair<y {x} {y} y∋x = ⊆→o≤ lemma where |
261 lemma : {z : Ordinal} → def (od (x , x)) z → def (od y) z | 227 lemma : {z : Ordinal} → def (od (x , x)) z → def (od y) z |
262 lemma (case1 refl) = y∋x | 228 lemma (case1 refl) = y∋x |
263 lemma (case2 refl) = y∋x | 229 lemma (case2 refl) = y∋x |
277 field | 243 field |
278 incl : { x : HOD } → A ∋ x → B ∋ x | 244 incl : { x : HOD } → A ∋ x → B ∋ x |
279 | 245 |
280 open _⊆_ | 246 open _⊆_ |
281 infixr 220 _⊆_ | 247 infixr 220 _⊆_ |
282 | |
283 trans-⊆ : { A B C : HOD} → A ⊆ B → B ⊆ C → A ⊆ C | |
284 trans-⊆ A⊆B B⊆C = record { incl = λ x → incl B⊆C (incl A⊆B x) } | |
285 | |
286 refl-⊆ : {A : HOD} → A ⊆ A | |
287 refl-⊆ {A} = record { incl = λ x → x } | |
288 | |
289 od⊆→o≤ : {x y : HOD } → x ⊆ y → & x o< osuc (& y) | |
290 od⊆→o≤ {x} {y} lt = ⊆→o≤ {x} {y} (λ {z} x>z → subst (λ k → def (od y) k ) &iso (incl lt (d→∋ x x>z))) | |
291 | 248 |
292 -- if we have & (x , x) ≡ osuc (& x), ⊆→o≤ → c<→o< | 249 -- if we have & (x , x) ≡ osuc (& x), ⊆→o≤ → c<→o< |
293 ⊆→o≤→c<→o< : ({x : HOD} → & (x , x) ≡ osuc (& x) ) | 250 ⊆→o≤→c<→o< : ({x : HOD} → & (x , x) ≡ osuc (& x) ) |
294 → ({y z : HOD } → ({x : Ordinal} → def (od y) x → def (od z) x ) → & y o< osuc (& z) ) | 251 → ({y z : HOD } → ({x : Ordinal} → def (od y) x → def (od z) x ) → & y o< osuc (& z) ) |
295 → {x y : HOD } → def (od y) ( & x ) → & x o< & y | 252 → {x y : HOD } → def (od y) ( & x ) → & x o< & y |
303 lemma (case2 refl) = refl | 260 lemma (case2 refl) = refl |
304 y⊆x,x : {z : Ordinals.ord O} → def (od (x , x)) z → def (od y) z | 261 y⊆x,x : {z : Ordinals.ord O} → def (od (x , x)) z → def (od y) z |
305 y⊆x,x {z} lt = subst (λ k → def (od y) k ) (lemma lt) y∋x | 262 y⊆x,x {z} lt = subst (λ k → def (od y) k ) (lemma lt) y∋x |
306 lemma1 : osuc (& y) o< & (x , x) | 263 lemma1 : osuc (& y) o< & (x , x) |
307 lemma1 = subst (λ k → osuc (& y) o< k ) (sym (peq {x})) (osucc c ) | 264 lemma1 = subst (λ k → osuc (& y) o< k ) (sym (peq {x})) (osucc c ) |
308 | |
309 subset-lemma : {A x : HOD } → ( {y : HOD } → x ∋ y → (A ∩ x ) ∋ y ) ⇔ ( x ⊆ A ) | |
310 subset-lemma {A} {x} = record { | |
311 proj1 = λ lt → record { incl = λ x∋z → proj1 (lt x∋z) } | |
312 ; proj2 = λ x⊆A lt → ⟪ incl x⊆A lt , lt ⟫ | |
313 } | |
314 | |
315 power< : {A x : HOD } → x ⊆ A → Ord (osuc (& A)) ∋ x | |
316 power< {A} {x} x⊆A = ⊆→o≤ (λ {y} x∋y → subst (λ k → def (od A) k) &iso (lemma y x∋y ) ) where | |
317 lemma : (y : Ordinal) → def (od x) y → def (od A) (& (* y)) | |
318 lemma y x∋y = incl x⊆A (d→∋ x x∋y) | |
319 | |
320 open import Data.Unit | |
321 | 265 |
322 ε-induction : { ψ : HOD → Set n} | 266 ε-induction : { ψ : HOD → Set n} |
323 → ( {x : HOD } → ({ y : HOD } → x ∋ y → ψ y ) → ψ x ) | 267 → ( {x : HOD } → ({ y : HOD } → x ∋ y → ψ y ) → ψ x ) |
324 → (x : HOD ) → ψ x | 268 → (x : HOD ) → ψ x |
325 ε-induction {ψ} ind x = subst (λ k → ψ k ) *iso (ε-induction-ord (osuc (& x)) <-osuc ) where | 269 ε-induction {ψ} ind x = subst (λ k → ψ k ) *iso (ε-induction-ord (osuc (& x)) <-osuc ) where |
412 -- ωmax : Ordinal | 356 -- ωmax : Ordinal |
413 -- <ωmax : {y : Ordinal} → infinite-d y → y o< ωmax | 357 -- <ωmax : {y : Ordinal} → infinite-d y → y o< ωmax |
414 -- | 358 -- |
415 -- infinite : HOD | 359 -- infinite : HOD |
416 -- infinite = record { od = record { def = λ x → infinite-d x } ; odmax = ωmax ; <odmax = <ωmax } | 360 -- infinite = record { od = record { def = λ x → infinite-d x } ; odmax = ωmax ; <odmax = <ωmax } |
417 | |
418 odsuc : (y : HOD) → HOD | |
419 odsuc y = Union (y , (y , y)) | |
420 | 361 |
421 infinite : HOD | 362 infinite : HOD |
422 infinite = record { od = record { def = λ x → infinite-d x } ; odmax = next o∅ ; <odmax = lemma } where | 363 infinite = record { od = record { def = λ x → infinite-d x } ; odmax = next o∅ ; <odmax = lemma } where |
423 u : (y : Ordinal ) → HOD | 364 u : (y : Ordinal ) → HOD |
424 u y = Union (* y , (* y , * y)) | 365 u y = Union (* y , (* y , * y)) |
439 --- main recursion | 380 --- main recursion |
440 lemma : {y : Ordinal} → infinite-d y → y o< next o∅ | 381 lemma : {y : Ordinal} → infinite-d y → y o< next o∅ |
441 lemma {o∅} iφ = x<nx | 382 lemma {o∅} iφ = x<nx |
442 lemma (isuc {y} x) = next< (lemma x) (next< (subst (λ k → & (* y , (* y , * y)) o< next k) &iso lemma71 ) (nexto=n lemma1)) | 383 lemma (isuc {y} x) = next< (lemma x) (next< (subst (λ k → & (* y , (* y , * y)) o< next k) &iso lemma71 ) (nexto=n lemma1)) |
443 | 384 |
444 ω<next-o∅ : {y : Ordinal} → infinite-d y → y o< next o∅ | 385 empty : (x : HOD ) → ¬ (od∅ ∋ x) |
445 ω<next-o∅ {y} lt = <odmax infinite lt | 386 empty x = ¬x<0 |
446 | |
447 nat→ω : Nat → HOD | |
448 nat→ω Zero = od∅ | |
449 nat→ω (Suc y) = Union (nat→ω y , (nat→ω y , nat→ω y)) | |
450 | |
451 ω→nato : {y : Ordinal} → infinite-d y → Nat | |
452 ω→nato iφ = Zero | |
453 ω→nato (isuc lt) = Suc (ω→nato lt) | |
454 | |
455 ω→nat : (n : HOD) → infinite ∋ n → Nat | |
456 ω→nat n = ω→nato | |
457 | |
458 ω∋nat→ω : {n : Nat} → def (od infinite) (& (nat→ω n)) | |
459 ω∋nat→ω {Zero} = subst (λ k → def (od infinite) k) (sym ord-od∅) iφ | |
460 ω∋nat→ω {Suc n} = subst (λ k → def (od infinite) k) lemma (isuc ( ω∋nat→ω {n})) where | |
461 lemma : & (Union (* (& (nat→ω n)) , (* (& (nat→ω n)) , * (& (nat→ω n))))) ≡ & (nat→ω (Suc n)) | |
462 lemma = subst (λ k → & (Union (k , ( k , k ))) ≡ & (nat→ω (Suc n))) (sym *iso) refl | |
463 | 387 |
464 _=h=_ : (x y : HOD) → Set n | 388 _=h=_ : (x y : HOD) → Set n |
465 x =h= y = od x == od y | 389 x =h= y = od x == od y |
466 | |
467 infixr 200 _∈_ | |
468 -- infixr 230 _∩_ _∪_ | |
469 | 390 |
470 pair→ : ( x y t : HOD ) → (x , y) ∋ t → ( t =h= x ) ∨ ( t =h= y ) | 391 pair→ : ( x y t : HOD ) → (x , y) ∋ t → ( t =h= x ) ∨ ( t =h= y ) |
471 pair→ x y t (case1 t≡x ) = case1 (subst₂ (λ j k → j =h= k ) *iso *iso (o≡→== t≡x )) | 392 pair→ x y t (case1 t≡x ) = case1 (subst₂ (λ j k → j =h= k ) *iso *iso (o≡→== t≡x )) |
472 pair→ x y t (case2 t≡y ) = case2 (subst₂ (λ j k → j =h= k ) *iso *iso (o≡→== t≡y )) | 393 pair→ x y t (case2 t≡y ) = case2 (subst₂ (λ j k → j =h= k ) *iso *iso (o≡→== t≡y )) |
473 | 394 |
474 pair← : ( x y t : HOD ) → ( t =h= x ) ∨ ( t =h= y ) → (x , y) ∋ t | 395 pair← : ( x y t : HOD ) → ( t =h= x ) ∨ ( t =h= y ) → (x , y) ∋ t |
475 pair← x y t (case1 t=h=x) = case1 (cong (λ k → & k ) (==→o≡ t=h=x)) | 396 pair← x y t (case1 t=h=x) = case1 (cong (λ k → & k ) (==→o≡ t=h=x)) |
476 pair← x y t (case2 t=h=y) = case2 (cong (λ k → & k ) (==→o≡ t=h=y)) | 397 pair← x y t (case2 t=h=y) = case2 (cong (λ k → & k ) (==→o≡ t=h=y)) |
477 | |
478 pair1 : { x y : HOD } → (x , y ) ∋ x | |
479 pair1 = case1 refl | |
480 | |
481 pair2 : { x y : HOD } → (x , y ) ∋ y | |
482 pair2 = case2 refl | |
483 | |
484 single : {x y : HOD } → (x , x ) ∋ y → x ≡ y | |
485 single (case1 eq) = ==→o≡ ( ord→== (sym eq) ) | |
486 single (case2 eq) = ==→o≡ ( ord→== (sym eq) ) | |
487 | |
488 empty : (x : HOD ) → ¬ (od∅ ∋ x) | |
489 empty x = ¬x<0 | |
490 | 398 |
491 o<→c< : {x y : Ordinal } → x o< y → (Ord x) ⊆ (Ord y) | 399 o<→c< : {x y : Ordinal } → x o< y → (Ord x) ⊆ (Ord y) |
492 o<→c< lt = record { incl = λ z → ordtrans z lt } | 400 o<→c< lt = record { incl = λ z → ordtrans z lt } |
493 | 401 |
494 ⊆→o< : {x y : Ordinal } → (Ord x) ⊆ (Ord y) → x o< osuc y | 402 ⊆→o< : {x y : Ordinal } → (Ord x) ⊆ (Ord y) → x o< osuc y |
495 ⊆→o< {x} {y} lt with trio< x y | 403 ⊆→o< {x} {y} lt with trio< x y |
496 ⊆→o< {x} {y} lt | tri< a ¬b ¬c = ordtrans a <-osuc | 404 ⊆→o< {x} {y} lt | tri< a ¬b ¬c = ordtrans a <-osuc |
497 ⊆→o< {x} {y} lt | tri≈ ¬a b ¬c = subst ( λ k → k o< osuc y) (sym b) <-osuc | 405 ⊆→o< {x} {y} lt | tri≈ ¬a b ¬c = subst ( λ k → k o< osuc y) (sym b) <-osuc |
498 ⊆→o< {x} {y} lt | tri> ¬a ¬b c with (incl lt) (o<-subst c (sym &iso) refl ) | 406 ⊆→o< {x} {y} lt | tri> ¬a ¬b c with (incl lt) (o<-subst c (sym &iso) refl ) |
499 ... | ttt = ⊥-elim ( o<¬≡ refl (o<-subst ttt &iso refl )) | 407 ... | ttt = ⊥-elim ( o<¬≡ refl (o<-subst ttt &iso refl )) |
500 | |
501 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ ) | |
502 -- postulate f-extensionality : { n m : Level} → HE.Extensionality n m | |
503 | |
504 ω-prev-eq1 : {x y : Ordinal} → & (Union (* y , (* y , * y))) ≡ & (Union (* x , (* x , * x))) → ¬ (x o< y) | |
505 ω-prev-eq1 {x} {y} eq x<y = eq→ (ord→== eq) {& (* y)} (λ not2 → not2 (& (* y , * y)) | |
506 ⟪ case2 refl , subst (λ k → odef k (& (* y))) (sym *iso) (case1 refl)⟫ ) (λ u → lemma u ) where | |
507 lemma : (u : Ordinal) → ¬ def (od (* x , (* x , * x))) u ∧ def (od (* u)) (& (* y)) | |
508 lemma u t with proj1 t | |
509 lemma u t | case1 u=x = o<> (c<→o< {* y} {* u} (proj2 t)) (subst₂ (λ j k → j o< k ) | |
510 (trans (sym &iso) (trans (sym u=x) (sym &iso)) ) (sym &iso) x<y ) -- x ≡ & (* u) | |
511 lemma u t | case2 u=xx = o<¬≡ (lemma1 (subst (λ k → odef k (& (* y)) ) (trans (cong (λ k → * k ) u=xx) *iso ) (proj2 t))) x<y where | |
512 lemma1 : {x y : Ordinal } → (* x , * x ) ∋ * y → x ≡ y -- y = x ∈ ( x , x ) = u | |
513 lemma1 (case1 eq) = subst₂ (λ j k → j ≡ k ) &iso &iso (sym eq) | |
514 lemma1 (case2 eq) = subst₂ (λ j k → j ≡ k ) &iso &iso (sym eq) | |
515 | |
516 ω-prev-eq : {x y : Ordinal} → & (Union (* y , (* y , * y))) ≡ & (Union (* x , (* x , * x))) → x ≡ y | |
517 ω-prev-eq {x} {y} eq with trio< x y | |
518 ω-prev-eq {x} {y} eq | tri< a ¬b ¬c = ⊥-elim (ω-prev-eq1 eq a) | |
519 ω-prev-eq {x} {y} eq | tri≈ ¬a b ¬c = b | |
520 ω-prev-eq {x} {y} eq | tri> ¬a ¬b c = ⊥-elim (ω-prev-eq1 (sym eq) c) | |
521 | |
522 ω-∈s : (x : HOD) → Union ( x , (x , x)) ∋ x | |
523 ω-∈s x not = not (& (x , x)) ⟪ case2 refl , subst (λ k → odef k (& x) ) (sym *iso) (case1 refl) ⟫ | |
524 | |
525 ωs≠0 : (x : HOD) → ¬ ( Union ( x , (x , x)) ≡ od∅ ) | |
526 ωs≠0 y eq = ⊥-elim ( ¬x<0 (subst (λ k → & y o< k ) ord-od∅ (c<→o< (subst (λ k → odef k (& y )) eq (ω-∈s y) ))) ) | |
527 | |
528 nat→ω-iso : {i : HOD} → (lt : infinite ∋ i ) → nat→ω ( ω→nat i lt ) ≡ i | |
529 nat→ω-iso {i} = ε-induction1 {λ i → (lt : infinite ∋ i ) → nat→ω ( ω→nat i lt ) ≡ i } ind i where | |
530 ind : {x : HOD} → ({y : HOD} → x ∋ y → (lt : infinite ∋ y) → nat→ω (ω→nat y lt) ≡ y) → | |
531 (lt : infinite ∋ x) → nat→ω (ω→nat x lt) ≡ x | |
532 ind {x} prev lt = ind1 lt *iso where | |
533 ind1 : {ox : Ordinal } → (ltd : infinite-d ox ) → * ox ≡ x → nat→ω (ω→nato ltd) ≡ x | |
534 ind1 {o∅} iφ refl = sym o∅≡od∅ | |
535 ind1 (isuc {x₁} ltd) ox=x = begin | |
536 nat→ω (ω→nato (isuc ltd) ) | |
537 ≡⟨⟩ | |
538 Union (nat→ω (ω→nato ltd) , (nat→ω (ω→nato ltd) , nat→ω (ω→nato ltd))) | |
539 ≡⟨ cong (λ k → Union (k , (k , k ))) lemma ⟩ | |
540 Union (* x₁ , (* x₁ , * x₁)) | |
541 ≡⟨ trans ( sym *iso) ox=x ⟩ | |
542 x | |
543 ∎ where | |
544 open ≡-Reasoning | |
545 lemma0 : x ∋ * x₁ | |
546 lemma0 = subst (λ k → odef k (& (* x₁))) (trans (sym *iso) ox=x) (λ not → not | |
547 (& (* x₁ , * x₁)) ⟪ pair2 , subst (λ k → odef k (& (* x₁))) (sym *iso) pair1 ⟫ ) | |
548 lemma1 : infinite ∋ * x₁ | |
549 lemma1 = subst (λ k → odef infinite k) (sym &iso) ltd | |
550 lemma3 : {x y : Ordinal} → (ltd : infinite-d x ) (ltd1 : infinite-d y ) → y ≡ x → ltd ≅ ltd1 | |
551 lemma3 iφ iφ refl = HE.refl | |
552 lemma3 iφ (isuc {y} ltd1) eq = ⊥-elim ( ¬x<0 (subst₂ (λ j k → j o< k ) &iso eq (c<→o< (ω-∈s (* y)) ))) | |
553 lemma3 (isuc {y} ltd) iφ eq = ⊥-elim ( ¬x<0 (subst₂ (λ j k → j o< k ) &iso (sym eq) (c<→o< (ω-∈s (* y)) ))) | |
554 lemma3 (isuc {x} ltd) (isuc {y} ltd1) eq with lemma3 ltd ltd1 (ω-prev-eq (sym eq)) | |
555 ... | t = HE.cong₂ (λ j k → isuc {j} k ) (HE.≡-to-≅ (ω-prev-eq eq)) t | |
556 lemma2 : {x y : Ordinal} → (ltd : infinite-d x ) (ltd1 : infinite-d y ) → y ≡ x → ω→nato ltd ≡ ω→nato ltd1 | |
557 lemma2 {x} {y} ltd ltd1 eq = lemma6 eq (lemma3 {x} {y} ltd ltd1 eq) where | |
558 lemma6 : {x y : Ordinal} → {ltd : infinite-d x } {ltd1 : infinite-d y } → y ≡ x → ltd ≅ ltd1 → ω→nato ltd ≡ ω→nato ltd1 | |
559 lemma6 refl HE.refl = refl | |
560 lemma : nat→ω (ω→nato ltd) ≡ * x₁ | |
561 lemma = trans (cong (λ k → nat→ω k) (lemma2 {x₁} {_} ltd (subst (λ k → infinite-d k ) (sym &iso) ltd) &iso ) ) ( prev {* x₁} lemma0 lemma1 ) | |
562 | |
563 ω→nat-iso : {i : Nat} → ω→nat ( nat→ω i ) (ω∋nat→ω {i}) ≡ i | |
564 ω→nat-iso {i} = lemma i (ω∋nat→ω {i}) *iso where | |
565 lemma : {x : Ordinal } → ( i : Nat ) → (ltd : infinite-d x ) → * x ≡ nat→ω i → ω→nato ltd ≡ i | |
566 lemma {x} Zero iφ eq = refl | |
567 lemma {x} (Suc i) iφ eq = ⊥-elim ( ωs≠0 (nat→ω i) (trans (sym eq) o∅≡od∅ )) -- Union (nat→ω i , (nat→ω i , nat→ω i)) ≡ od∅ | |
568 lemma Zero (isuc {x} ltd) eq = ⊥-elim ( ωs≠0 (* x) (subst (λ k → k ≡ od∅ ) *iso eq )) | |
569 lemma (Suc i) (isuc {x} ltd) eq = cong (λ k → Suc k ) (lemma i ltd (lemma1 eq) ) where -- * x ≡ nat→ω i | |
570 lemma1 : * (& (Union (* x , (* x , * x)))) ≡ Union (nat→ω i , (nat→ω i , nat→ω i)) → * x ≡ nat→ω i | |
571 lemma1 eq = subst (λ k → * x ≡ k ) *iso (cong (λ k → * k) | |
572 ( ω-prev-eq (subst (λ k → _ ≡ k ) &iso (cong (λ k → & k ) (sym | |
573 (subst (λ k → _ ≡ Union ( k , ( k , k ))) (sym *iso ) eq )))))) | |
574 | 408 |
575 ψiso : {ψ : HOD → Set n} {x y : HOD } → ψ x → x ≡ y → ψ y | 409 ψiso : {ψ : HOD → Set n} {x y : HOD } → ψ x → x ≡ y → ψ y |
576 ψiso {ψ} t refl = t | 410 ψiso {ψ} t refl = t |
577 selection : {ψ : HOD → Set n} {X y : HOD} → ((X ∋ y) ∧ ψ y) ⇔ (Select X ψ ∋ y) | 411 selection : {ψ : HOD → Set n} {X y : HOD} → ((X ∋ y) ∧ ψ y) ⇔ (Select X ψ ∋ y) |
578 selection {ψ} {X} {y} = ⟪ | 412 selection {ψ} {X} {y} = ⟪ |
586 sup-c< : (ψ : HOD → HOD) → {X x : HOD} → X ∋ x → & (ψ x) o< (sup-o X (λ y X∋y → & (ψ (* y)))) | 420 sup-c< : (ψ : HOD → HOD) → {X x : HOD} → X ∋ x → & (ψ x) o< (sup-o X (λ y X∋y → & (ψ (* y)))) |
587 sup-c< ψ {X} {x} lt = subst (λ k → & (ψ k) o< _ ) *iso (sup-o< X lt ) | 421 sup-c< ψ {X} {x} lt = subst (λ k → & (ψ k) o< _ ) *iso (sup-o< X lt ) |
588 replacement← : {ψ : HOD → HOD} (X x : HOD) → X ∋ x → Replace X ψ ∋ ψ x | 422 replacement← : {ψ : HOD → HOD} (X x : HOD) → X ∋ x → Replace X ψ ∋ ψ x |
589 replacement← {ψ} X x lt = ⟪ sup-c< ψ {X} {x} lt , lemma ⟫ where | 423 replacement← {ψ} X x lt = ⟪ sup-c< ψ {X} {x} lt , lemma ⟫ where |
590 lemma : def (in-codomain X ψ) (& (ψ x)) | 424 lemma : def (in-codomain X ψ) (& (ψ x)) |
591 lemma not = ⊥-elim ( not ( & x ) (⟪ lt , cong (λ k → & (ψ k)) (sym *iso)⟫ )) | 425 lemma not = ⊥-elim ( not ( & x ) ⟪ lt , cong (λ k → & (ψ k)) (sym *iso)⟫ ) |
592 replacement→ : {ψ : HOD → HOD} (X x : HOD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : HOD) → ¬ (x =h= ψ y)) | 426 replacement→ : {ψ : HOD → HOD} (X x : HOD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : HOD) → ¬ (x =h= ψ y)) |
593 replacement→ {ψ} X x lt = contra-position lemma (lemma2 (proj2 lt)) where | 427 replacement→ {ψ} X x lt = contra-position lemma (lemma2 (proj2 lt)) where |
594 lemma2 : ¬ ((y : Ordinal) → ¬ odef X y ∧ ((& x) ≡ & (ψ (* y)))) | 428 lemma2 : ¬ ((y : Ordinal) → ¬ odef X y ∧ ((& x) ≡ & (ψ (* y)))) |
595 → ¬ ((y : Ordinal) → ¬ odef X y ∧ (* (& x) =h= ψ (* y))) | 429 → ¬ ((y : Ordinal) → ¬ odef X y ∧ (* (& x) =h= ψ (* y))) |
596 lemma2 not not2 = not ( λ y d → not2 y (⟪ proj1 d , lemma3 (proj2 d)⟫)) where | 430 lemma2 not not2 = not ( λ y d → not2 y ⟪ proj1 d , lemma3 (proj2 d)⟫) where |
597 lemma3 : {y : Ordinal } → (& x ≡ & (ψ (* y))) → (* (& x) =h= ψ (* y)) | 431 lemma3 : {y : Ordinal } → (& x ≡ & (ψ (* y))) → (* (& x) =h= ψ (* y)) |
598 lemma3 {y} eq = subst (λ k → * (& x) =h= k ) *iso (o≡→== eq ) | 432 lemma3 {y} eq = subst (λ k → * (& x) =h= k ) *iso (o≡→== eq ) |
599 lemma : ( (y : HOD) → ¬ (x =h= ψ y)) → ( (y : Ordinal) → ¬ odef X y ∧ (* (& x) =h= ψ (* y)) ) | 433 lemma : ( (y : HOD) → ¬ (x =h= ψ y)) → ( (y : Ordinal) → ¬ odef X y ∧ (* (& x) =h= ψ (* y)) ) |
600 lemma not y not2 = not (* y) (subst (λ k → k =h= ψ (* y)) *iso ( proj2 not2 )) | 434 lemma not y not2 = not (* y) (subst (λ k → k =h= ψ (* y)) *iso ( proj2 not2 )) |
601 | 435 |
607 --- A ∩ x = record { def = λ y → odef A y ∧ odef x y } subset of A | 441 --- A ∩ x = record { def = λ y → odef A y ∧ odef x y } subset of A |
608 -- | 442 -- |
609 -- | 443 -- |
610 ∩-≡ : { a b : HOD } → ({x : HOD } → (a ∋ x → b ∋ x)) → a =h= ( b ∩ a ) | 444 ∩-≡ : { a b : HOD } → ({x : HOD } → (a ∋ x → b ∋ x)) → a =h= ( b ∩ a ) |
611 ∩-≡ {a} {b} inc = record { | 445 ∩-≡ {a} {b} inc = record { |
612 eq→ = λ {x} x<a → ⟪ odef-subst {_} {_} {b} {x} (inc (d→∋ a x<a)) refl &iso , x<a ⟫ ; | 446 eq→ = λ {x} x<a → ⟪ (subst (λ k → odef b k ) &iso (inc (d→∋ a x<a))) , x<a ⟫ ; |
613 eq← = λ {x} x<a∩b → proj2 x<a∩b } | 447 eq← = λ {x} x<a∩b → proj2 x<a∩b } |
614 -- | 448 -- |
615 -- Transitive Set case | 449 -- Transitive Set case |
616 -- we have t ∋ x → Ord a ∋ x means t is a subset of Ord a, that is (Ord a) ∩ t =h= t | 450 -- we have t ∋ x → Ord a ∋ x means t is a subset of Ord a, that is (Ord a) ∩ t =h= t |
617 -- OPwr (Ord a) is a sup of (Ord a) ∩ t, so OPwr (Ord a) ∋ t | 451 -- OPwr (Ord a) is a sup of (Ord a) ∩ t, so OPwr (Ord a) ∋ t |
618 -- OPwr A = Ord ( sup-o ( λ x → & ( A ∩ (* x )) ) ) | 452 -- OPwr A = Ord ( sup-o ( λ x → & ( A ∩ (* x )) ) ) |
619 -- | 453 -- |
620 ord-power← : (a : Ordinal ) (t : HOD) → ({x : HOD} → (t ∋ x → (Ord a) ∋ x)) → OPwr (Ord a) ∋ t | 454 ord-power← : (a : Ordinal ) (t : HOD) → ({x : HOD} → (t ∋ x → (Ord a) ∋ x)) → OPwr (Ord a) ∋ t |
621 ord-power← a t t→A = odef-subst {_} {_} {OPwr (Ord a)} {& t} | 455 ord-power← a t t→A = subst (λ k → odef (OPwr (Ord a)) k ) (lemma1 lemma-eq) lemma where |
622 lemma refl (lemma1 lemma-eq )where | |
623 lemma-eq : ((Ord a) ∩ t) =h= t | 456 lemma-eq : ((Ord a) ∩ t) =h= t |
624 eq→ lemma-eq {z} w = proj2 w | 457 eq→ lemma-eq {z} w = proj2 w |
625 eq← lemma-eq {z} w = ⟪ odef-subst {_} {_} {(Ord a)} {z} ( t→A (d→∋ t w)) refl &iso , w ⟫ | 458 eq← lemma-eq {z} w = ⟪ subst (λ k → odef (Ord a) k ) &iso ( t→A (d→∋ t w)) , w ⟫ |
626 lemma1 : {a : Ordinal } { t : HOD } | 459 lemma1 : {a : Ordinal } { t : HOD } |
627 → (eq : ((Ord a) ∩ t) =h= t) → & ((Ord a) ∩ (* (& t))) ≡ & t | 460 → (eq : ((Ord a) ∩ t) =h= t) → & ((Ord a) ∩ (* (& t))) ≡ & t |
628 lemma1 {a} {t} eq = subst (λ k → & ((Ord a) ∩ k) ≡ & t ) (sym *iso) (cong (λ k → & k ) (==→o≡ eq )) | 461 lemma1 {a} {t} eq = subst (λ k → & ((Ord a) ∩ k) ≡ & t ) (sym *iso) (cong (λ k → & k ) (==→o≡ eq )) |
629 lemma2 : (& t) o< (osuc (& (Ord a))) | 462 lemma2 : (& t) o< (osuc (& (Ord a))) |
630 lemma2 = ⊆→o≤ {t} {Ord a} (λ {x} x<t → subst (λ k → def (od (Ord a)) k) &iso (t→A (d→∋ t x<t))) | 463 lemma2 = ⊆→o≤ {t} {Ord a} (λ {x} x<t → subst (λ k → def (od (Ord a)) k) &iso (t→A (d→∋ t x<t))) |
716 lemmaj = subst₂ (λ j k → j o< k ) &iso lemmak lt | 549 lemmaj = subst₂ (λ j k → j o< k ) &iso lemmak lt |
717 lemma1 : & t o< sup-o (OPwr (Ord (& A))) (λ x lt → & (A ∩ (* x))) | 550 lemma1 : & t o< sup-o (OPwr (Ord (& A))) (λ x lt → & (A ∩ (* x))) |
718 lemma1 = subst (λ k → & k o< sup-o (OPwr (Ord (& A))) (λ x lt → & (A ∩ (* x)))) | 551 lemma1 = subst (λ k → & k o< sup-o (OPwr (Ord (& A))) (λ x lt → & (A ∩ (* x)))) |
719 lemma4 (sup-o< (OPwr (Ord (& A))) lemma7 ) | 552 lemma4 (sup-o< (OPwr (Ord (& A))) lemma7 ) |
720 lemma2 : def (in-codomain (OPwr (Ord (& A))) (_∩_ A)) (& t) | 553 lemma2 : def (in-codomain (OPwr (Ord (& A))) (_∩_ A)) (& t) |
721 lemma2 not = ⊥-elim ( not (& t) (⟪ lemma3 , lemma6 ⟫) ) where | 554 lemma2 not = ⊥-elim ( not (& t) ⟪ lemma3 , lemma6 ⟫ ) where |
722 lemma6 : & t ≡ & (A ∩ * (& t)) | 555 lemma6 : & t ≡ & (A ∩ * (& t)) |
723 lemma6 = cong ( λ k → & k ) (==→o≡ (subst (λ k → t =h= (A ∩ k)) (sym *iso) ( ∩-≡ {t} {A} t→A ))) | 556 lemma6 = cong ( λ k → & k ) (==→o≡ (subst (λ k → t =h= (A ∩ k)) (sym *iso) ( ∩-≡ {t} {A} t→A ))) |
724 | 557 |
725 | |
726 ord⊆power : (a : Ordinal) → (Ord (osuc a)) ⊆ (Power (Ord a)) | |
727 ord⊆power a = record { incl = λ {x} lt → power← (Ord a) x (lemma lt) } where | |
728 lemma : {x y : HOD} → & x o< osuc a → x ∋ y → Ord a ∋ y | |
729 lemma lt y<x with osuc-≡< lt | |
730 lemma lt y<x | case1 refl = c<→o< y<x | |
731 lemma lt y<x | case2 x<a = ordtrans (c<→o< y<x) x<a | |
732 | |
733 continuum-hyphotheis : (a : Ordinal) → Set (suc n) | |
734 continuum-hyphotheis a = Power (Ord a) ⊆ Ord (osuc a) | |
735 | 558 |
736 extensionality0 : {A B : HOD } → ((z : HOD) → (A ∋ z) ⇔ (B ∋ z)) → A =h= B | 559 extensionality0 : {A B : HOD } → ((z : HOD) → (A ∋ z) ⇔ (B ∋ z)) → A =h= B |
737 eq→ (extensionality0 {A} {B} eq ) {x} d = odef-iso {A} {B} (sym &iso) (proj1 (eq (* x))) d | 560 eq→ (extensionality0 {A} {B} eq ) {x} d = odef-iso {A} {B} (sym &iso) (proj1 (eq (* x))) d |
738 eq← (extensionality0 {A} {B} eq ) {x} d = odef-iso {B} {A} (sym &iso) (proj2 (eq (* x))) d | 561 eq← (extensionality0 {A} {B} eq ) {x} d = odef-iso {B} {A} (sym &iso) (proj2 (eq (* x))) d |
739 | 562 |
740 extensionality : {A B w : HOD } → ((z : HOD ) → (A ∋ z) ⇔ (B ∋ z)) → (w ∋ A) ⇔ (w ∋ B) | 563 extensionality : {A B w : HOD } → ((z : HOD ) → (A ∋ z) ⇔ (B ∋ z)) → (w ∋ A) ⇔ (w ∋ B) |
741 proj1 (extensionality {A} {B} {w} eq ) d = subst (λ k → w ∋ k) ( ==→o≡ (extensionality0 {A} {B} eq) ) d | 564 proj1 (extensionality {A} {B} {w} eq ) d = subst (λ k → w ∋ k) ( ==→o≡ (extensionality0 {A} {B} eq) ) d |
742 proj2 (extensionality {A} {B} {w} eq ) d = subst (λ k → w ∋ k) (sym ( ==→o≡ (extensionality0 {A} {B} eq) )) d | 565 proj2 (extensionality {A} {B} {w} eq ) d = subst (λ k → w ∋ k) (sym ( ==→o≡ (extensionality0 {A} {B} eq) )) d |
743 | 566 |
744 infinity∅ : infinite ∋ od∅ | 567 infinity∅ : infinite ∋ od∅ |
745 infinity∅ = odef-subst {_} {_} {infinite} {& (od∅ )} iφ refl lemma where | 568 infinity∅ = subst (λ k → odef infinite k ) lemma iφ where |
746 lemma : o∅ ≡ & od∅ | 569 lemma : o∅ ≡ & od∅ |
747 lemma = let open ≡-Reasoning in begin | 570 lemma = let open ≡-Reasoning in begin |
748 o∅ | 571 o∅ |
749 ≡⟨ sym &iso ⟩ | 572 ≡⟨ sym &iso ⟩ |
750 & ( * o∅ ) | 573 & ( * o∅ ) |
751 ≡⟨ cong ( λ k → & k ) o∅≡od∅ ⟩ | 574 ≡⟨ cong ( λ k → & k ) o∅≡od∅ ⟩ |
752 & od∅ | 575 & od∅ |
753 ∎ | 576 ∎ |
754 infinity : (x : HOD) → infinite ∋ x → infinite ∋ Union (x , (x , x )) | 577 infinity : (x : HOD) → infinite ∋ x → infinite ∋ Union (x , (x , x )) |
755 infinity x lt = odef-subst {_} {_} {infinite} {& (Union (x , (x , x )))} ( isuc {& x} lt ) refl lemma where | 578 infinity x lt = subst (λ k → odef infinite k ) lemma (isuc {& x} lt) where |
756 lemma : & (Union (* (& x) , (* (& x) , * (& x)))) | 579 lemma : & (Union (* (& x) , (* (& x) , * (& x)))) |
757 ≡ & (Union (x , (x , x))) | 580 ≡ & (Union (x , (x , x))) |
758 lemma = cong (λ k → & (Union ( k , ( k , k ) ))) *iso | 581 lemma = cong (λ k → & (Union ( k , ( k , k ) ))) *iso |
759 | 582 |
760 isZF : IsZF (HOD ) _∋_ _=h=_ od∅ _,_ Union Power Select Replace infinite | 583 isZF : IsZF (HOD ) _∋_ _=h=_ od∅ _,_ Union Power Select Replace infinite |
772 ; infinity∅ = infinity∅ | 595 ; infinity∅ = infinity∅ |
773 ; infinity = infinity | 596 ; infinity = infinity |
774 ; selection = λ {X} {ψ} {y} → selection {X} {ψ} {y} | 597 ; selection = λ {X} {ψ} {y} → selection {X} {ψ} {y} |
775 ; replacement← = replacement← | 598 ; replacement← = replacement← |
776 ; replacement→ = λ {ψ} → replacement→ {ψ} | 599 ; replacement→ = λ {ψ} → replacement→ {ψ} |
777 -- ; choice-func = choice-func | |
778 -- ; choice = choice | |
779 } | 600 } |
780 | 601 |
781 HOD→ZF : ZF | 602 HOD→ZF : ZF |
782 HOD→ZF = record { | 603 HOD→ZF = record { |
783 ZFSet = HOD | 604 ZFSet = HOD |