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)