Mercurial > hg > Members > kono > Proof > ZF-in-agda
comparison HOD.agda @ 150:ebcbfd9d9c8e
fix some
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Mon, 08 Jul 2019 22:37:10 +0900 |
parents | 6e767ad3edc2 |
children | b5a337fb7a6d |
comparison
equal
deleted
inserted
replaced
148:6e767ad3edc2 | 150:ebcbfd9d9c8e |
---|---|
58 od→ord : {n : Level} → OD {n} → Ordinal {n} | 58 od→ord : {n : Level} → OD {n} → Ordinal {n} |
59 ord→od : {n : Level} → Ordinal {n} → OD {n} | 59 ord→od : {n : Level} → Ordinal {n} → OD {n} |
60 c<→o< : {n : Level} {x y : OD {n} } → def y ( od→ord x ) → od→ord x o< od→ord y | 60 c<→o< : {n : Level} {x y : OD {n} } → def y ( od→ord x ) → od→ord x o< od→ord y |
61 oiso : {n : Level} {x : OD {n}} → ord→od ( od→ord x ) ≡ x | 61 oiso : {n : Level} {x : OD {n}} → ord→od ( od→ord x ) ≡ x |
62 diso : {n : Level} {x : Ordinal {n}} → od→ord ( ord→od x ) ≡ x | 62 diso : {n : Level} {x : Ordinal {n}} → od→ord ( ord→od x ) ≡ x |
63 -- we should prove this in agda, but simply put here | |
63 ==→o≡ : {n : Level} → { x y : OD {suc n} } → (x == y) → x ≡ y | 64 ==→o≡ : {n : Level} → { x y : OD {suc n} } → (x == y) → x ≡ y |
64 -- next assumption causes ∀ x ∋ ∅ . It menas only an ordinal becomes a set | 65 -- next assumption causes ∀ x ∋ ∅ . It menas only an ordinal becomes a set |
65 -- o<→c< : {n : Level} {x y : Ordinal {n} } → x o< y → def (ord→od y) x | 66 -- o<→c< : {n : Level} {x y : Ordinal {n} } → x o< y → def (ord→od y) x |
66 -- supermum as Replacement Axiom | 67 -- supermum as Replacement Axiom |
67 sup-o : {n : Level } → ( Ordinal {n} → Ordinal {n}) → Ordinal {n} | 68 sup-o : {n : Level } → ( Ordinal {n} → Ordinal {n}) → Ordinal {n} |
72 -- sup-lb : {n : Level } → ( ψ : Ordinal {n} → Ordinal {n}) → ( ∀ {x : Ordinal {n}} → ψx o< z ) → z o< osuc ( sup-o ψ ) | 73 -- sup-lb : {n : Level } → ( ψ : Ordinal {n} → Ordinal {n}) → ( ∀ {x : Ordinal {n}} → ψx o< z ) → z o< osuc ( sup-o ψ ) |
73 minimul : {n : Level } → (x : OD {suc n} ) → ¬ (x == od∅ )→ OD {suc n} | 74 minimul : {n : Level } → (x : OD {suc n} ) → ¬ (x == od∅ )→ OD {suc n} |
74 -- this should be ¬ (x == od∅ )→ ∃ ox → x ∋ Ord ox ( minimum of x ) | 75 -- this should be ¬ (x == od∅ )→ ∃ ox → x ∋ Ord ox ( minimum of x ) |
75 x∋minimul : {n : Level } → (x : OD {suc n} ) → ( ne : ¬ (x == od∅ ) ) → def x ( od→ord ( minimul x ne ) ) | 76 x∋minimul : {n : Level } → (x : OD {suc n} ) → ( ne : ¬ (x == od∅ ) ) → def x ( od→ord ( minimul x ne ) ) |
76 minimul-1 : {n : Level } → (x : OD {suc n} ) → ( ne : ¬ (x == od∅ ) ) → (y : OD {suc n}) → ¬ ( def (minimul x ne) (od→ord y)) ∧ (def x (od→ord y) ) | 77 minimul-1 : {n : Level } → (x : OD {suc n} ) → ( ne : ¬ (x == od∅ ) ) → (y : OD {suc n}) → ¬ ( def (minimul x ne) (od→ord y)) ∧ (def x (od→ord y) ) |
77 -- we should prove this in agda, but simply put here | |
78 ===-≡ : {n : Level} { x y : OD {suc n}} → x == y → x ≡ y | |
79 | 78 |
80 _∋_ : { n : Level } → ( a x : OD {n} ) → Set n | 79 _∋_ : { n : Level } → ( a x : OD {n} ) → Set n |
81 _∋_ {n} a x = def a ( od→ord x ) | 80 _∋_ {n} a x = def a ( od→ord x ) |
82 | 81 |
83 _c<_ : { n : Level } → ( x a : OD {n} ) → Set n | 82 _c<_ : { n : Level } → ( x a : OD {n} ) → Set n |
161 ∋→o< : {n : Level} → { a x : OD {suc n} } → a ∋ x → od→ord x o< od→ord a | 160 ∋→o< : {n : Level} → { a x : OD {suc n} } → a ∋ x → od→ord x o< od→ord a |
162 ∋→o< {n} {a} {x} lt = t where | 161 ∋→o< {n} {a} {x} lt = t where |
163 t : (od→ord x) o< (od→ord a) | 162 t : (od→ord x) o< (od→ord a) |
164 t = c<→o< {suc n} {x} {a} lt | 163 t = c<→o< {suc n} {x} {a} lt |
165 | 164 |
166 -- o∅≡od∅ : {n : Level} → ord→od (o∅ {suc n}) ≡ od∅ {suc n} | 165 o∅≡od∅ : {n : Level} → ord→od (o∅ {suc n}) ≡ od∅ {suc n} |
166 o∅≡od∅ {n} = ==→o≡ lemma where | |
167 lemma0 : {x : Ordinal} → def (ord→od o∅) x → def od∅ x | |
168 lemma0 {x} lt = o<-subst (c<→o< {suc n} {ord→od x} {ord→od o∅} (def-subst {suc n} {ord→od o∅} {x} lt refl (sym diso)) ) diso diso | |
169 lemma1 : {x : Ordinal} → def od∅ x → def (ord→od o∅) x | |
170 lemma1 (case1 ()) | |
171 lemma1 (case2 ()) | |
172 lemma : ord→od o∅ == od∅ | |
173 lemma = record { eq→ = lemma0 ; eq← = lemma1 } | |
174 | |
175 ord-od∅ : {n : Level} → od→ord (od∅ {suc n}) ≡ o∅ {suc n} | |
176 ord-od∅ {n} = sym ( subst (λ k → k ≡ od→ord (od∅ {suc n}) ) diso (cong ( λ k → od→ord k ) o∅≡od∅ ) ) | |
167 | 177 |
168 o<→¬c> : {n : Level} → { x y : OD {n} } → (od→ord x ) o< ( od→ord y) → ¬ (y c< x ) | 178 o<→¬c> : {n : Level} → { x y : OD {n} } → (od→ord x ) o< ( od→ord y) → ¬ (y c< x ) |
169 o<→¬c> {n} {x} {y} olt clt = o<> olt (c<→o< clt ) where | 179 o<→¬c> {n} {x} {y} olt clt = o<> olt (c<→o< clt ) where |
170 | 180 |
171 o≡→¬c< : {n : Level} → { x y : OD {n} } → (od→ord x ) ≡ ( od→ord y) → ¬ x c< y | 181 o≡→¬c< : {n : Level} → { x y : OD {n} } → (od→ord x ) ≡ ( od→ord y) → ¬ x c< y |
205 | 215 |
206 Def : {n : Level} → (A : OD {suc n}) → OD {suc n} | 216 Def : {n : Level} → (A : OD {suc n}) → OD {suc n} |
207 Def {n} A = Ord ( sup-o ( λ x → od→ord ( ZFSubset A (ord→od x )) ) ) | 217 Def {n} A = Ord ( sup-o ( λ x → od→ord ( ZFSubset A (ord→od x )) ) ) |
208 | 218 |
209 OrdSubset : {n : Level} → (A x : Ordinal {suc n} ) → ZFSubset (Ord A) (Ord x) ≡ Ord ( minα A x ) | 219 OrdSubset : {n : Level} → (A x : Ordinal {suc n} ) → ZFSubset (Ord A) (Ord x) ≡ Ord ( minα A x ) |
210 OrdSubset {n} A x = ===-≡ ( record { eq→ = lemma1 ; eq← = lemma2 } ) where | 220 OrdSubset {n} A x = ==→o≡ ( record { eq→ = lemma1 ; eq← = lemma2 } ) where |
211 lemma1 : {y : Ordinal} → def (ZFSubset (Ord A) (Ord x)) y → def (Ord (minα A x)) y | 221 lemma1 : {y : Ordinal} → def (ZFSubset (Ord A) (Ord x)) y → def (Ord (minα A x)) y |
212 lemma1 {y} s with trio< A x | 222 lemma1 {y} s with trio< A x |
213 lemma1 {y} s | tri< a ¬b ¬c = proj1 s | 223 lemma1 {y} s | tri< a ¬b ¬c = proj1 s |
214 lemma1 {y} s | tri≈ ¬a refl ¬c = proj1 s | 224 lemma1 {y} s | tri≈ ¬a refl ¬c = proj1 s |
215 lemma1 {y} s | tri> ¬a ¬b c = proj2 s | 225 lemma1 {y} s | tri> ¬a ¬b c = proj2 s |
330 ; proj2 = λ select → record { proj1 = proj1 select ; proj2 = ψiso {ψ} (proj2 select) oiso } | 340 ; proj2 = λ select → record { proj1 = proj1 select ; proj2 = ψiso {ψ} (proj2 select) oiso } |
331 } | 341 } |
332 replacement← : {ψ : OD → OD} (X x : OD) → X ∋ x → Replace X ψ ∋ ψ x | 342 replacement← : {ψ : OD → OD} (X x : OD) → X ∋ x → Replace X ψ ∋ ψ x |
333 replacement← {ψ} X x lt = record { proj1 = sup-c< ψ {x} ; proj2 = lemma } where | 343 replacement← {ψ} X x lt = record { proj1 = sup-c< ψ {x} ; proj2 = lemma } where |
334 lemma : def (in-codomain X ψ) (od→ord (ψ x)) | 344 lemma : def (in-codomain X ψ) (od→ord (ψ x)) |
335 lemma not = ⊥-elim ( not ( od→ord x ) (record { proj1 = lt ; proj2 = cong (λ k → od→ord (ψ k)) | 345 lemma not = ⊥-elim ( not ( od→ord x ) (record { proj1 = lt ; proj2 = cong (λ k → od→ord (ψ k)) (sym oiso)} )) |
336 {!!} } )) | |
337 replacement→ : {ψ : OD → OD} (X x : OD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : OD) → ¬ (x == ψ y)) | 346 replacement→ : {ψ : OD → OD} (X x : OD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : OD) → ¬ (x == ψ y)) |
338 replacement→ {ψ} X x lt = contra-position lemma (lemma2 {!!}) where | 347 replacement→ {ψ} X x lt = contra-position lemma (lemma2 (proj2 lt)) where |
339 lemma2 : ¬ ((y : Ordinal) → ¬ def X y ∧ ((od→ord x) ≡ od→ord (ψ (Ord y)))) | 348 lemma2 : ¬ ((y : Ordinal) → ¬ def X y ∧ ((od→ord x) ≡ od→ord (ψ (ord→od y)))) |
340 → ¬ ((y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (Ord y))) | 349 → ¬ ((y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (ord→od y))) |
341 lemma2 not not2 = not ( λ y d → not2 y (record { proj1 = proj1 d ; proj2 = lemma3 (proj2 d)})) where | 350 lemma2 not not2 = not ( λ y d → not2 y (record { proj1 = proj1 d ; proj2 = lemma3 (proj2 d)})) where |
342 lemma3 : {y : Ordinal } → (od→ord x ≡ od→ord (ψ (Ord y))) → (ord→od (od→ord x) == ψ (Ord y)) | 351 lemma3 : {y : Ordinal } → (od→ord x ≡ od→ord (ψ (ord→od y))) → (ord→od (od→ord x) == ψ (ord→od y)) |
343 lemma3 {y} eq = subst (λ k → ord→od (od→ord x) == k ) oiso (o≡→== eq ) | 352 lemma3 {y} eq = subst (λ k → ord→od (od→ord x) == k ) oiso (o≡→== eq ) |
344 lemma : ( (y : OD) → ¬ (x == ψ y)) → ( (y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (Ord y)) ) | 353 lemma : ( (y : OD) → ¬ (x == ψ y)) → ( (y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (ord→od y)) ) |
345 lemma not y not2 = not (Ord y) (subst (λ k → k == ψ (Ord y)) oiso ( proj2 not2 )) | 354 lemma not y not2 = not (ord→od y) (subst (λ k → k == ψ (ord→od y)) oiso ( proj2 not2 )) |
346 | 355 |
347 --- | 356 --- |
348 --- Power Set | 357 --- Power Set |
349 --- | 358 --- |
350 --- First consider ordinals in OD | 359 --- First consider ordinals in OD |
405 eq← lemma-eq {z} w = record { proj2 = w ; | 414 eq← lemma-eq {z} w = record { proj2 = w ; |
406 proj1 = def-subst {suc n} {_} {_} {(Ord a)} {z} | 415 proj1 = def-subst {suc n} {_} {_} {(Ord a)} {z} |
407 ( t→A (def-subst {suc n} {_} {_} {t} {od→ord (ord→od z)} w refl (sym diso) )) refl diso } | 416 ( t→A (def-subst {suc n} {_} {_} {t} {od→ord (ord→od z)} w refl (sym diso) )) refl diso } |
408 lemma1 : {n : Level } {a : Ordinal {suc n}} { t : OD {suc n}} | 417 lemma1 : {n : Level } {a : Ordinal {suc n}} { t : OD {suc n}} |
409 → (eq : ZFSubset (Ord a) t == t) → od→ord (ZFSubset (Ord a) (ord→od (od→ord t))) ≡ od→ord t | 418 → (eq : ZFSubset (Ord a) t == t) → od→ord (ZFSubset (Ord a) (ord→od (od→ord t))) ≡ od→ord t |
410 lemma1 {n} {a} {t} eq = subst (λ k → od→ord (ZFSubset (Ord a) k) ≡ od→ord t ) (sym oiso) (cong (λ k → od→ord k ) (===-≡ eq )) | 419 lemma1 {n} {a} {t} eq = subst (λ k → od→ord (ZFSubset (Ord a) k) ≡ od→ord t ) (sym oiso) (cong (λ k → od→ord k ) (==→o≡ eq )) |
411 lemma : od→ord (ZFSubset (Ord a) (ord→od (od→ord t)) ) o< sup-o (λ x → od→ord (ZFSubset (Ord a) (ord→od x))) | 420 lemma : od→ord (ZFSubset (Ord a) (ord→od (od→ord t)) ) o< sup-o (λ x → od→ord (ZFSubset (Ord a) (ord→od x))) |
412 lemma = sup-o< | 421 lemma = sup-o< |
413 | 422 |
414 -- | 423 -- |
415 -- Every set in OD is a subset of Ordinals | 424 -- Every set in OD is a subset of Ordinals |
433 lemma0 : {x : OD} → t ∋ x → Ord a ∋ x | 442 lemma0 : {x : OD} → t ∋ x → Ord a ∋ x |
434 lemma0 {x} t∋x = c<→o< (t→A t∋x) | 443 lemma0 {x} t∋x = c<→o< (t→A t∋x) |
435 lemma3 : Def (Ord a) ∋ t | 444 lemma3 : Def (Ord a) ∋ t |
436 lemma3 = ord-power← a t lemma0 | 445 lemma3 = ord-power← a t lemma0 |
437 lemma4 : od→ord t ≡ od→ord (A ∩ Ord (od→ord t)) | 446 lemma4 : od→ord t ≡ od→ord (A ∩ Ord (od→ord t)) |
438 lemma4 = cong ( λ k → od→ord k ) ( ===-≡ (subst (λ k → t == (A ∩ k)) {!!} {!!} )) | 447 lemma4 = cong ( λ k → od→ord k ) ( ==→o≡ (subst (λ k → t == (A ∩ k)) {!!} {!!} )) |
439 lemma1 : od→ord t o< sup-o (λ x → od→ord (A ∩ ord→od x)) | 448 lemma1 : od→ord t o< sup-o (λ x → od→ord (A ∩ ord→od x)) |
440 lemma1 with sup-o< {suc n} {λ x → od→ord (A ∩ ord→od x)} {od→ord t} | 449 lemma1 with sup-o< {suc n} {λ x → od→ord (A ∩ ord→od x)} {od→ord t} |
441 ... | lt = o<-subst {suc n} {_} {_} {_} {_} lt (sym (subst (λ k → od→ord t ≡ k) lemma5 lemma4 )) refl where | 450 ... | lt = o<-subst {suc n} {_} {_} {_} {_} lt (sym (subst (λ k → od→ord t ≡ k) lemma5 lemma4 )) refl where |
442 lemma5 : od→ord (A ∩ Ord (od→ord t)) ≡ od→ord (A ∩ ord→od (od→ord t)) | 451 lemma5 : od→ord (A ∩ Ord (od→ord t)) ≡ od→ord (A ∩ ord→od (od→ord t)) |
443 lemma5 = cong (λ k → od→ord (A ∩ k )) {!!} | 452 lemma5 = cong (λ k → od→ord (A ∩ k )) {!!} |
478 osuc y o< osuc (osuc (od→ord x)) | 487 osuc y o< osuc (osuc (od→ord x)) |
479 ∎ | 488 ∎ |
480 infinite : OD {suc n} | 489 infinite : OD {suc n} |
481 infinite = Ord omega | 490 infinite = Ord omega |
482 infinity∅ : Ord omega ∋ od∅ {suc n} | 491 infinity∅ : Ord omega ∋ od∅ {suc n} |
483 infinity∅ = o<-subst (case1 (s≤s z≤n) ) {!!} refl | 492 infinity∅ = o<-subst (case1 (s≤s z≤n) ) (sym ord-od∅) refl |
484 infinity : (x : OD) → infinite ∋ x → infinite ∋ Union (x , (x , x )) | 493 infinity : (x : OD) → infinite ∋ x → infinite ∋ Union (x , (x , x )) |
485 infinity x lt = o<-subst ( lemma (od→ord x) lt ) eq refl where | 494 infinity x lt = o<-subst ( lemma (od→ord x) lt ) eq refl where |
486 eq : osuc (od→ord x) ≡ od→ord (Union (x , (x , x))) | 495 eq : osuc (od→ord x) ≡ od→ord (Union (x , (x , x))) |
487 eq = let open ≡-Reasoning in begin | 496 eq = let open ≡-Reasoning in begin |
488 osuc (od→ord x) | 497 osuc (od→ord x) |