Mercurial > hg > Members > kono > Proof > ZF-in-agda
comparison HOD.agda @ 144:3ba37037faf4
Union again
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Jul 2019 13:21:14 +0900 |
parents | 21b9e78e9359 |
children | f0fa9a755513 |
comparison
equal
deleted
inserted
replaced
143:21b9e78e9359 | 144:3ba37037faf4 |
---|---|
290 ; Select = Select | 290 ; Select = Select |
291 ; Replace = Replace | 291 ; Replace = Replace |
292 ; infinite = Ord omega | 292 ; infinite = Ord omega |
293 ; isZF = isZF | 293 ; isZF = isZF |
294 } where | 294 } where |
295 ZFSet = OD {suc n} | |
295 Select : (X : OD {suc n} ) → ((x : OD {suc n} ) → Set (suc n) ) → OD {suc n} | 296 Select : (X : OD {suc n} ) → ((x : OD {suc n} ) → Set (suc n) ) → OD {suc n} |
296 Select X ψ = record { def = λ x → ( def X x ∧ ψ ( ord→od x )) } | 297 Select X ψ = record { def = λ x → ( def X x ∧ ψ ( ord→od x )) } |
297 Replace : OD {suc n} → (OD {suc n} → OD {suc n} ) → OD {suc n} | 298 Replace : OD {suc n} → (OD {suc n} → OD {suc n} ) → OD {suc n} |
298 Replace X ψ = record { def = λ x → (x o< sup-o ( λ x → od→ord (ψ (ord→od x )))) ∧ def (in-codomain X ψ) x } | 299 Replace X ψ = record { def = λ x → (x o< sup-o ( λ x → od→ord (ψ (ord→od x )))) ∧ def (in-codomain X ψ) x } |
299 _,_ : OD {suc n} → OD {suc n} → OD {suc n} | 300 _,_ : OD {suc n} → OD {suc n} → OD {suc n} |
300 x , y = Ord (omax (od→ord x) (od→ord y)) | 301 x , y = Ord (omax (od→ord x) (od→ord y)) |
302 _∩_ : ( A B : ZFSet ) → ZFSet | |
303 A ∩ B = record { def = λ x → def A x ∧ def B x } -- Select (A , B) ( λ x → ( A ∋ x ) ∧ (B ∋ x) ) | |
301 Union : OD {suc n} → OD {suc n} | 304 Union : OD {suc n} → OD {suc n} |
302 Union U = cseq U | 305 Union U = Replace ( record { def = λ x → osuc x o< od→ord U } ) ( λ x → U ∩ x ) |
303 -- power : ∀ X ∃ A ∀ t ( t ∈ A ↔ ( ∀ {x} → t ∋ x → X ∋ x ) | 306 -- power : ∀ X ∃ A ∀ t ( t ∈ A ↔ ( ∀ {x} → t ∋ x → X ∋ x ) |
304 ZFSet = OD {suc n} | |
305 _∈_ : ( A B : ZFSet ) → Set (suc n) | 307 _∈_ : ( A B : ZFSet ) → Set (suc n) |
306 A ∈ B = B ∋ A | 308 A ∈ B = B ∋ A |
307 _⊆_ : ( A B : ZFSet ) → ∀{ x : ZFSet } → Set (suc n) | 309 _⊆_ : ( A B : ZFSet ) → ∀{ x : ZFSet } → Set (suc n) |
308 _⊆_ A B {x} = A ∋ x → B ∋ x | 310 _⊆_ A B {x} = A ∋ x → B ∋ x |
309 _∩_ : ( A B : ZFSet ) → ZFSet | |
310 A ∩ B = record { def = λ x → def A x ∧ def B x } -- Select (A , B) ( λ x → ( A ∋ x ) ∧ (B ∋ x) ) | |
311 Power : OD {suc n} → OD {suc n} | 311 Power : OD {suc n} → OD {suc n} |
312 Power A = Replace (Def (Ord (od→ord A))) ( λ x → A ∩ x ) | 312 Power A = Replace (Def (Ord (od→ord A))) ( λ x → A ∩ x ) |
313 -- _∪_ : ( A B : ZFSet ) → ZFSet | 313 -- _∪_ : ( A B : ZFSet ) → ZFSet |
314 -- A ∪ B = Select (A , B) ( λ x → (A ∋ x) ∨ ( B ∋ x ) ) | 314 -- A ∪ B = Select (A , B) ( λ x → (A ∋ x) ∨ ( B ∋ x ) ) |
315 {_} : ZFSet → ZFSet | 315 {_} : ZFSet → ZFSet |
344 | 344 |
345 empty : (x : OD {suc n} ) → ¬ (od∅ ∋ x) | 345 empty : (x : OD {suc n} ) → ¬ (od∅ ∋ x) |
346 empty x (case1 ()) | 346 empty x (case1 ()) |
347 empty x (case2 ()) | 347 empty x (case2 ()) |
348 | 348 |
349 union-lemma : {n : Level } {X z u : OD {suc n} } → (X ∋ u) → (u ∋ z) → osuc ( od→ord z ) o< od→ord u → X ∋ Ord (osuc ( od→ord z ) ) | |
350 union-lemma = {!!} | |
351 union-u : {X z : OD {suc n}} → (U>z : Union X ∋ z ) → OD {suc n} | |
352 union-u {X} {z} U>z = Ord ( osuc ( od→ord z ) ) | |
353 union→ : (X z u : OD) → (X ∋ u) ∧ (u ∋ z) → Union X ∋ z | |
354 union→ X z u xx with trio< ( od→ord u ) ( osuc ( od→ord z )) | |
355 union→ X z u xx | tri< a ¬b ¬c with osuc-< a (c<→o< (proj2 xx)) | |
356 union→ X z u xx | tri< a ¬b ¬c | () | |
357 union→ X z u xx | tri≈ ¬a b ¬c = {!!} | |
358 union→ X z u xx | tri> ¬a ¬b c = {!!} --- osuc ( od→ord z )) o< od→ord u o< od→ord X | |
359 -- def-subst {suc n} {_} {_} {X} {osuc (od→ord z)} (union-lemma {n} {X} {z} {u} (proj1 xx) (proj2 xx) c ) refl (sym ord-Ord) | |
360 union← : (X z : OD) (X∋z : Union X ∋ z) → (X ∋ union-u {X} {z} X∋z ) ∧ (union-u {X} {z} X∋z ∋ z ) | |
361 union← X z X∋z = record { proj1 = lemma ; proj2 = <-osuc } where | |
362 lemma : X ∋ union-u {X} {z} X∋z | |
363 lemma = def-subst {suc n} {_} {_} {X} {od→ord (Ord (osuc ( od→ord z )))} {!!} refl ord-Ord | |
364 | |
365 ψiso : {ψ : OD {suc n} → Set (suc n)} {x y : OD {suc n}} → ψ x → x ≡ y → ψ y | |
366 ψiso {ψ} t refl = t | |
367 selection : {ψ : OD → Set (suc n)} {X y : OD} → ((X ∋ y) ∧ ψ y) ⇔ (Select X ψ ∋ y) | |
368 selection {ψ} {X} {y} = record { | |
369 proj1 = λ cond → record { proj1 = proj1 cond ; proj2 = ψiso {ψ} (proj2 cond) (sym oiso) } | |
370 ; proj2 = λ select → record { proj1 = proj1 select ; proj2 = ψiso {ψ} (proj2 select) oiso } | |
371 } | |
372 replacement← : {ψ : OD → OD} (X x : OD) → X ∋ x → Replace X ψ ∋ ψ x | |
373 replacement← {ψ} X x lt = record { proj1 = sup-c< ψ {x} ; proj2 = lemma } where | |
374 lemma : def (in-codomain X ψ) (od→ord (ψ x)) | |
375 lemma not = ⊥-elim ( not ( od→ord x ) (record { proj1 = lt ; proj2 = cong (λ k → od→ord (ψ k)) | |
376 (sym (subst (λ k → Ord (od→ord x) ≡ k) oiso (Ord-ord) )) } )) | |
377 replacement→ : {ψ : OD → OD} (X x : OD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : OD) → ¬ (x == ψ y)) | |
378 replacement→ {ψ} X x lt = contra-position lemma (lemma2 (proj2 lt)) where | |
379 lemma2 : ¬ ((y : Ordinal) → ¬ def X y ∧ ((od→ord x) ≡ od→ord (ψ (Ord y)))) | |
380 → ¬ ((y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (Ord y))) | |
381 lemma2 not not2 = not ( λ y d → not2 y (record { proj1 = proj1 d ; proj2 = lemma3 (proj2 d)})) where | |
382 lemma3 : {y : Ordinal } → (od→ord x ≡ od→ord (ψ (Ord y))) → (ord→od (od→ord x) == ψ (Ord y)) | |
383 lemma3 {y} eq = subst (λ k → ord→od (od→ord x) == k ) oiso (o≡→== eq ) | |
384 lemma : ( (y : OD) → ¬ (x == ψ y)) → ( (y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (Ord y)) ) | |
385 lemma not y not2 = not (Ord y) (subst (λ k → k == ψ (Ord y)) oiso ( proj2 not2 )) | |
386 | |
387 --- | |
388 --- Power Set | |
389 --- | |
390 --- First consider ordinals in OD | |
349 --- | 391 --- |
350 --- ZFSubset A x = record { def = λ y → def A y ∧ def x y } subset of A | 392 --- ZFSubset A x = record { def = λ y → def A y ∧ def x y } subset of A |
351 --- Power X = ord→od ( sup-o ( λ x → od→ord ( ZFSubset A (ord→od x )) ) ) Power X is a sup of all subset of A | 393 --- Power X = ord→od ( sup-o ( λ x → od→ord ( ZFSubset A (ord→od x )) ) ) Power X is a sup of all subset of A |
352 -- | 394 -- |
353 -- if Power A ∋ t, from a propertiy of minimum sup there is osuc ZFSubset A ∋ t | 395 -- if Power A ∋ t, from a propertiy of minimum sup there is osuc ZFSubset A ∋ t |
407 → (eq : ZFSubset (Ord a) t == t) → od→ord (ZFSubset (Ord a) (ord→od (od→ord t))) ≡ od→ord t | 449 → (eq : ZFSubset (Ord a) t == t) → od→ord (ZFSubset (Ord a) (ord→od (od→ord t))) ≡ od→ord t |
408 lemma1 {n} {a} {t} eq = subst (λ k → od→ord (ZFSubset (Ord a) k) ≡ od→ord t ) (sym oiso) (cong (λ k → od→ord k ) (===-≡ eq )) | 450 lemma1 {n} {a} {t} eq = subst (λ k → od→ord (ZFSubset (Ord a) k) ≡ od→ord t ) (sym oiso) (cong (λ k → od→ord k ) (===-≡ eq )) |
409 lemma : od→ord (ZFSubset (Ord a) (ord→od (od→ord t)) ) o< sup-o (λ x → od→ord (ZFSubset (Ord a) (ord→od x))) | 451 lemma : od→ord (ZFSubset (Ord a) (ord→od (od→ord t)) ) o< sup-o (λ x → od→ord (ZFSubset (Ord a) (ord→od x))) |
410 lemma = sup-o< | 452 lemma = sup-o< |
411 | 453 |
412 union-u : {X z : OD {suc n}} → (U>z : Union X ∋ z ) → OD {suc n} | 454 -- |
413 union-u {X} {z} U>z = Ord ( osuc ( od→ord z ) ) | 455 -- Every set in OD is a subset of Ordinals |
414 union→ : (X z u : OD) → (X ∋ u) ∧ (u ∋ z) → Union X ∋ z | 456 -- |
415 union→ X z u xx with trio< ( od→ord u ) ( osuc ( od→ord z )) | |
416 union→ X z u xx | tri< a ¬b ¬c with osuc-< a (c<→o< (proj2 xx)) | |
417 union→ X z u xx | tri< a ¬b ¬c | () | |
418 union→ X z u xx | tri≈ ¬a b ¬c = def-subst {suc n} {_} {_} {X} {osuc (od→ord z)} (proj1 xx) refl b | |
419 union→ X z u xx | tri> ¬a ¬b c = {!!} --- osuc ( od→ord z )) o< od→ord u o< od→ord X | |
420 | |
421 union← : (X z : OD) (X∋z : Union X ∋ z) → (X ∋ union-u {X} {z} X∋z ) ∧ (union-u {X} {z} X∋z ∋ z ) | |
422 union← X z X∋z = record { proj1 = lemma ; proj2 = <-osuc } where | |
423 lemma : X ∋ union-u {X} {z} X∋z | |
424 lemma = def-subst {suc n} {_} {_} {X} {od→ord (Ord (osuc ( od→ord z )))} X∋z refl ord-Ord | |
425 | |
426 ψiso : {ψ : OD {suc n} → Set (suc n)} {x y : OD {suc n}} → ψ x → x ≡ y → ψ y | |
427 ψiso {ψ} t refl = t | |
428 selection : {ψ : OD → Set (suc n)} {X y : OD} → ((X ∋ y) ∧ ψ y) ⇔ (Select X ψ ∋ y) | |
429 selection {ψ} {X} {y} = record { | |
430 proj1 = λ cond → record { proj1 = proj1 cond ; proj2 = ψiso {ψ} (proj2 cond) (sym oiso) } | |
431 ; proj2 = λ select → record { proj1 = proj1 select ; proj2 = ψiso {ψ} (proj2 select) oiso } | |
432 } | |
433 replacement← : {ψ : OD → OD} (X x : OD) → X ∋ x → Replace X ψ ∋ ψ x | |
434 replacement← {ψ} X x lt = record { proj1 = sup-c< ψ {x} ; proj2 = lemma } where | |
435 lemma : def (in-codomain X ψ) (od→ord (ψ x)) | |
436 lemma not = ⊥-elim ( not ( od→ord x ) (record { proj1 = lt ; proj2 = cong (λ k → od→ord (ψ k)) | |
437 (sym (subst (λ k → Ord (od→ord x) ≡ k) oiso (Ord-ord) )) } )) | |
438 replacement→ : {ψ : OD → OD} (X x : OD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : OD) → ¬ (x == ψ y)) | |
439 replacement→ {ψ} X x lt = contra-position lemma (lemma2 (proj2 lt)) where | |
440 lemma2 : ¬ ((y : Ordinal) → ¬ def X y ∧ ((od→ord x) ≡ od→ord (ψ (Ord y)))) | |
441 → ¬ ((y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (Ord y))) | |
442 lemma2 not not2 = not ( λ y d → not2 y (record { proj1 = proj1 d ; proj2 = lemma3 (proj2 d)})) where | |
443 lemma3 : {y : Ordinal } → (od→ord x ≡ od→ord (ψ (Ord y))) → (ord→od (od→ord x) == ψ (Ord y)) | |
444 lemma3 {y} eq = subst (λ k → ord→od (od→ord x) == k ) oiso (o≡→== eq ) | |
445 lemma : ( (y : OD) → ¬ (x == ψ y)) → ( (y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (Ord y)) ) | |
446 lemma not y not2 = not (Ord y) (subst (λ k → k == ψ (Ord y)) oiso ( proj2 not2 )) | |
447 | |
448 -- Power A = Replace (Def (Ord (od→ord A))) ( λ y → A ∩ y ) | 457 -- Power A = Replace (Def (Ord (od→ord A))) ( λ y → A ∩ y ) |
449 power→ : ( A t : OD) → Power A ∋ t → {x : OD} → t ∋ x → A ∋ x | 458 power→ : ( A t : OD) → Power A ∋ t → {x : OD} → t ∋ x → A ∋ x |
450 power→ A t P∋t {x} t∋x = TransFiniteExists {suc n} {λ y → (t == (A ∩ ord→od y))} | 459 power→ A t P∋t {x} t∋x = TransFiniteExists {suc n} {λ y → (t == (A ∩ ord→od y))} |
451 lemma4 lemma5 where | 460 lemma4 lemma5 where |
452 a = od→ord A | 461 a = od→ord A |
497 uxxx-ord : {x : OD {suc n}} → {y : Ordinal {suc n}} → def (Union (x , (x , x))) y ⇔ ( y o< osuc (od→ord x) ) | 506 uxxx-ord : {x : OD {suc n}} → {y : Ordinal {suc n}} → def (Union (x , (x , x))) y ⇔ ( y o< osuc (od→ord x) ) |
498 uxxx-ord {x} {y} = subst (λ k → k ⇔ ( y o< osuc (od→ord x) )) (sym lemma) ( osuc2 y (od→ord x)) where | 507 uxxx-ord {x} {y} = subst (λ k → k ⇔ ( y o< osuc (od→ord x) )) (sym lemma) ( osuc2 y (od→ord x)) where |
499 lemma : {y : Ordinal {suc n}} → def (Union (x , (x , x))) y ≡ osuc y o< osuc (osuc (od→ord x)) | 508 lemma : {y : Ordinal {suc n}} → def (Union (x , (x , x))) y ≡ osuc y o< osuc (osuc (od→ord x)) |
500 lemma {y} = let open ≡-Reasoning in begin | 509 lemma {y} = let open ≡-Reasoning in begin |
501 def (Union (x , (x , x))) y | 510 def (Union (x , (x , x))) y |
502 ≡⟨⟩ | 511 ≡⟨ {!!} ⟩ |
503 def ( Ord ( omax (od→ord x) (od→ord (Ord (omax (od→ord x) (od→ord x) )) ))) ( osuc y ) | 512 def ( Ord ( omax (od→ord x) (od→ord (Ord (omax (od→ord x) (od→ord x) )) ))) ( osuc y ) |
504 ≡⟨⟩ | 513 ≡⟨⟩ |
505 osuc y o< omax (od→ord x) (od→ord (Ord (omax (od→ord x) (od→ord x) )) ) | 514 osuc y o< omax (od→ord x) (od→ord (Ord (omax (od→ord x) (od→ord x) )) ) |
506 ≡⟨ cong (λ k → osuc y o< omax (od→ord x) k ) (sym ord-Ord) ⟩ | 515 ≡⟨ cong (λ k → osuc y o< omax (od→ord x) k ) (sym ord-Ord) ⟩ |
507 osuc y o< omax (od→ord x) (omax (od→ord x) (od→ord x) ) | 516 osuc y o< omax (od→ord x) (omax (od→ord x) (od→ord x) ) |