comparison OD.agda @ 311:bf01e924e62e

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Tue, 30 Jun 2020 11:08:22 +0900
parents 73a2a8ec9603
children c1581ed5f38b
comparison
equal deleted inserted replaced
310:73a2a8ec9603 311:bf01e924e62e
220 220
221 221
222 OPwr : (A : HOD ) → HOD 222 OPwr : (A : HOD ) → HOD
223 OPwr A = Ord ( sup-o A ( λ x A∋x → od→ord ( ZFSubset A (ord→od x)) ) ) 223 OPwr A = Ord ( sup-o A ( λ x A∋x → od→ord ( ZFSubset A (ord→od x)) ) )
224 224
225 -- _⊆_ : ( A B : HOD ) → ∀{ x : HOD } → Set n
226 -- _⊆_ A B {x} = A ∋ x → B ∋ x
227
228 record _⊆_ ( A B : HOD ) : Set (suc n) where 225 record _⊆_ ( A B : HOD ) : Set (suc n) where
229 field 226 field
230 incl : { x : HOD } → A ∋ x → B ∋ x 227 incl : { x : HOD } → A ∋ x → B ∋ x
231 228
232 open _⊆_ 229 open _⊆_
247 ε-induction {ψ} ind x = subst (λ k → ψ k ) oiso (ε-induction-ord (osuc (od→ord x)) <-osuc ) where 244 ε-induction {ψ} ind x = subst (λ k → ψ k ) oiso (ε-induction-ord (osuc (od→ord x)) <-osuc ) where
248 induction : (ox : Ordinal) → ((oy : Ordinal) → oy o< ox → ψ (ord→od oy)) → ψ (ord→od ox) 245 induction : (ox : Ordinal) → ((oy : Ordinal) → oy o< ox → ψ (ord→od oy)) → ψ (ord→od ox)
249 induction ox prev = ind ( λ {y} lt → subst (λ k → ψ k ) oiso (prev (od→ord y) (o<-subst (c<→o< lt) refl diso ))) 246 induction ox prev = ind ( λ {y} lt → subst (λ k → ψ k ) oiso (prev (od→ord y) (o<-subst (c<→o< lt) refl diso )))
250 ε-induction-ord : (ox : Ordinal) { oy : Ordinal } → oy o< ox → ψ (ord→od oy) 247 ε-induction-ord : (ox : Ordinal) { oy : Ordinal } → oy o< ox → ψ (ord→od oy)
251 ε-induction-ord ox {oy} lt = TransFinite {λ oy → ψ (ord→od oy)} induction oy 248 ε-induction-ord ox {oy} lt = TransFinite {λ oy → ψ (ord→od oy)} induction oy
252
253 -- minimal-2 : (x : HOD ) → ( ne : ¬ (x == od∅ ) ) → (y : HOD ) → ¬ ( odef (minimal x ne) (od→ord y)) ∧ (odef x (od→ord y) )
254 -- minimal-2 x ne y = contra-position ( ε-induction (λ {z} ind → {!!} ) x ) ( λ p → {!!} )
255 249
256 HOD→ZF : ZF 250 HOD→ZF : ZF
257 HOD→ZF = record { 251 HOD→ZF = record {
258 ZFSet = HOD 252 ZFSet = HOD
259 ; _∋_ = _∋_ 253 ; _∋_ = _∋_
269 } where 263 } where
270 ZFSet = HOD -- is less than Ords because of maxod 264 ZFSet = HOD -- is less than Ords because of maxod
271 Select : (X : HOD ) → ((x : HOD ) → Set n ) → HOD 265 Select : (X : HOD ) → ((x : HOD ) → Set n ) → HOD
272 Select X ψ = record { od = record { def = λ x → ( odef X x ∧ ψ ( ord→od x )) } ; odmax = odmax X ; <odmax = λ y → <odmax X (proj1 y) } 266 Select X ψ = record { od = record { def = λ x → ( odef X x ∧ ψ ( ord→od x )) } ; odmax = odmax X ; <odmax = λ y → <odmax X (proj1 y) }
273 Replace : HOD → (HOD → HOD) → HOD 267 Replace : HOD → (HOD → HOD) → HOD
274 Replace X ψ = record { od = record { def = λ x → (x o< sup-o X (λ y X∋x → od→ord (ψ (ord→od x)))) ∧ odef (in-codomain X ψ) x } ; odmax = {!!} ; <odmax = {!!} } -- ( λ x → od→ord (ψ x)) 268 Replace X ψ = record { od = record { def = λ x → (x o< sup-o X (λ y X∋y → od→ord (ψ (ord→od y)))) ∧ odef (in-codomain X ψ) x } ; odmax = {!!} ; <odmax = {!!} } -- ( λ x → od→ord (ψ x))
275 _∩_ : ( A B : ZFSet ) → ZFSet 269 _∩_ : ( A B : ZFSet ) → ZFSet
276 A ∩ B = record { od = record { def = λ x → odef A x ∧ odef B x } ; odmax = omin (odmax A) (odmax B) ; <odmax = λ y → min1 (<odmax A (proj1 y)) (<odmax B (proj2 y))} 270 A ∩ B = record { od = record { def = λ x → odef A x ∧ odef B x } ; odmax = omin (odmax A) (odmax B) ; <odmax = λ y → min1 (<odmax A (proj1 y)) (<odmax B (proj2 y))}
277 Union : HOD → HOD 271 Union : HOD → HOD
278 Union U = record { od = record { def = λ x → ¬ (∀ (u : Ordinal ) → ¬ ((odef U u) ∧ (odef (ord→od u) x))) } ; odmax = {!!} ; <odmax = {!!} } 272 Union U = record { od = record { def = λ x → ¬ (∀ (u : Ordinal ) → ¬ ((odef U u) ∧ (odef (ord→od u) x))) } ; odmax = {!!} ; <odmax = {!!} }
279 _∈_ : ( A B : ZFSet ) → Set n 273 _∈_ : ( A B : ZFSet ) → Set n
351 selection : {ψ : HOD → Set n} {X y : HOD} → ((X ∋ y) ∧ ψ y) ⇔ (Select X ψ ∋ y) 345 selection : {ψ : HOD → Set n} {X y : HOD} → ((X ∋ y) ∧ ψ y) ⇔ (Select X ψ ∋ y)
352 selection {ψ} {X} {y} = record { 346 selection {ψ} {X} {y} = record {
353 proj1 = λ cond → record { proj1 = proj1 cond ; proj2 = ψiso {ψ} (proj2 cond) (sym oiso) } 347 proj1 = λ cond → record { proj1 = proj1 cond ; proj2 = ψiso {ψ} (proj2 cond) (sym oiso) }
354 ; proj2 = λ select → record { proj1 = proj1 select ; proj2 = ψiso {ψ} (proj2 select) oiso } 348 ; proj2 = λ select → record { proj1 = proj1 select ; proj2 = ψiso {ψ} (proj2 select) oiso }
355 } 349 }
356 sup-od : ( HOD → HOD ) → HOD 350 sup-c< : (ψ : HOD → HOD) → {X x : HOD} → X ∋ x → od→ord (ψ x) o< (sup-o X (λ y X∋y → od→ord (ψ (ord→od y))))
357 sup-od = {!!} 351 sup-c< ψ {X} {x} lt = subst (λ k → od→ord (ψ k) o< _ ) oiso (sup-o< X lt )
358 sup-c< : ( ψ : HOD → HOD ) → ∀ {x : HOD } → def (od ( sup-od ψ )) (od→ord ( ψ x ))
359 sup-c< = {!!}
360 replacement← : {ψ : HOD → HOD} (X x : HOD) → X ∋ x → Replace X ψ ∋ ψ x 352 replacement← : {ψ : HOD → HOD} (X x : HOD) → X ∋ x → Replace X ψ ∋ ψ x
361 replacement← {ψ} X x lt = record { proj1 = {!!} ; proj2 = lemma } where -- sup-c< ψ {x} 353 replacement← {ψ} X x lt = record { proj1 = sup-c< ψ {X} {x} lt ; proj2 = lemma } where
362 lemma : odef (in-codomain X ψ) (od→ord (ψ x)) 354 lemma : odef (in-codomain X ψ) (od→ord (ψ x))
363 lemma not = ⊥-elim ( not ( od→ord x ) (record { proj1 = lt ; proj2 = cong (λ k → od→ord (ψ k)) (sym oiso)} )) 355 lemma not = ⊥-elim ( not ( od→ord x ) (record { proj1 = lt ; proj2 = cong (λ k → od→ord (ψ k)) (sym oiso)} ))
364 replacement→ : {ψ : HOD → HOD} (X x : HOD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : HOD) → ¬ (x =h= ψ y)) 356 replacement→ : {ψ : HOD → HOD} (X x : HOD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : HOD) → ¬ (x =h= ψ y))
365 replacement→ {ψ} X x lt = contra-position lemma (lemma2 (proj2 lt)) where 357 replacement→ {ψ} X x lt = contra-position lemma (lemma2 (proj2 lt)) where
366 lemma2 : ¬ ((y : Ordinal) → ¬ odef X y ∧ ((od→ord x) ≡ od→ord (ψ (ord→od y)))) 358 lemma2 : ¬ ((y : Ordinal) → ¬ odef X y ∧ ((od→ord x) ≡ od→ord (ψ (ord→od y))))
399 proj1 = odef-subst {_} {_} {(Ord a)} {z} 391 proj1 = odef-subst {_} {_} {(Ord a)} {z}
400 ( t→A (odef-subst {_} {_} {t} {od→ord (ord→od z)} w refl (sym diso) )) refl diso } 392 ( t→A (odef-subst {_} {_} {t} {od→ord (ord→od z)} w refl (sym diso) )) refl diso }
401 lemma1 : {a : Ordinal } { t : HOD } 393 lemma1 : {a : Ordinal } { t : HOD }
402 → (eq : ZFSubset (Ord a) t =h= t) → od→ord (ZFSubset (Ord a) (ord→od (od→ord t))) ≡ od→ord t 394 → (eq : ZFSubset (Ord a) t =h= t) → od→ord (ZFSubset (Ord a) (ord→od (od→ord t))) ≡ od→ord t
403 lemma1 {a} {t} eq = subst (λ k → od→ord (ZFSubset (Ord a) k) ≡ od→ord t ) (sym oiso) (cong (λ k → od→ord k ) (==→o≡ eq )) 395 lemma1 {a} {t} eq = subst (λ k → od→ord (ZFSubset (Ord a) k) ≡ od→ord t ) (sym oiso) (cong (λ k → od→ord k ) (==→o≡ eq ))
396 lemma2 : def (od (Ord a)) (od→ord t)
397 lemma2 = {!!}
404 lemma : od→ord (ZFSubset (Ord a) (ord→od (od→ord t)) ) o< sup-o (Ord a) (λ x lt → od→ord (ZFSubset (Ord a) (ord→od x))) 398 lemma : od→ord (ZFSubset (Ord a) (ord→od (od→ord t)) ) o< sup-o (Ord a) (λ x lt → od→ord (ZFSubset (Ord a) (ord→od x)))
405 lemma = {!!} -- sup-o< 399 lemma = sup-o< _ lemma2
406 400
407 -- 401 --
408 -- Every set in HOD is a subset of Ordinals, so make OPwr (Ord (od→ord A)) first 402 -- Every set in HOD is a subset of Ordinals, so make OPwr (Ord (od→ord A)) first
409 -- then replace of all elements of the Power set by A ∩ y 403 -- then replace of all elements of the Power set by A ∩ y
410 -- 404 --
423 lemma4 not = lemma2 ( λ y not1 → not (od→ord y) (subst (λ k → t =h= ( A ∩ k )) (sym oiso) not1 )) 417 lemma4 not = lemma2 ( λ y not1 → not (od→ord y) (subst (λ k → t =h= ( A ∩ k )) (sym oiso) not1 ))
424 lemma5 : {y : Ordinal} → t =h= (A ∩ ord→od y) → ¬ ¬ (odef A (od→ord x)) 418 lemma5 : {y : Ordinal} → t =h= (A ∩ ord→od y) → ¬ ¬ (odef A (od→ord x))
425 lemma5 {y} eq not = (lemma3 (ord→od y) eq) not 419 lemma5 {y} eq not = (lemma3 (ord→od y) eq) not
426 420
427 power← : (A t : HOD) → ({x : HOD} → (t ∋ x → A ∋ x)) → Power A ∋ t 421 power← : (A t : HOD) → ({x : HOD} → (t ∋ x → A ∋ x)) → Power A ∋ t
428 power← A t t→A = record { proj1 = {!!} ; proj2 = lemma2 } where 422 power← A t t→A = record { proj1 = lemma1 ; proj2 = lemma2 } where
429 a = od→ord A 423 a = od→ord A
430 lemma0 : {x : HOD} → t ∋ x → Ord a ∋ x 424 lemma0 : {x : HOD} → t ∋ x → Ord a ∋ x
431 lemma0 {x} t∋x = c<→o< (t→A t∋x) 425 lemma0 {x} t∋x = c<→o< (t→A t∋x)
432 lemma3 : OPwr (Ord a) ∋ t 426 lemma3 : OPwr (Ord a) ∋ t
433 lemma3 = ord-power← a t lemma0 427 lemma3 = ord-power← a t lemma0
437 ≡⟨ cong (λ k → A ∩ k) oiso ⟩ 431 ≡⟨ cong (λ k → A ∩ k) oiso ⟩
438 A ∩ t 432 A ∩ t
439 ≡⟨ sym (==→o≡ ( ∩-≡ t→A )) ⟩ 433 ≡⟨ sym (==→o≡ ( ∩-≡ t→A )) ⟩
440 t 434 t
441 435
436 lemma7 : def (od (OPwr (Ord (od→ord A)))) (od→ord t)
437 lemma7 = {!!}
442 lemma1 : od→ord t o< sup-o (OPwr (Ord (od→ord A))) (λ x lt → od→ord (A ∩ (ord→od x))) 438 lemma1 : od→ord t o< sup-o (OPwr (Ord (od→ord A))) (λ x lt → od→ord (A ∩ (ord→od x)))
443 lemma1 = subst (λ k → od→ord k o< sup-o (OPwr (Ord (od→ord A))) (λ x lt → od→ord (A ∩ (ord→od x)))) 439 lemma1 = subst (λ k → od→ord k o< sup-o (OPwr (Ord (od→ord A))) (λ x lt → od→ord (A ∩ (ord→od x))))
444 lemma4 {!!} -- (sup-o< {λ x → od→ord (A ∩ x)} ) 440 lemma4 (sup-o< (OPwr (Ord (od→ord A))) lemma7 )
445 lemma2 : odef (in-codomain (OPwr (Ord (od→ord A))) (_∩_ A)) (od→ord t) 441 lemma2 : odef (in-codomain (OPwr (Ord (od→ord A))) (_∩_ A)) (od→ord t)
446 lemma2 not = ⊥-elim ( not (od→ord t) (record { proj1 = lemma3 ; proj2 = lemma6 }) ) where 442 lemma2 not = ⊥-elim ( not (od→ord t) (record { proj1 = lemma3 ; proj2 = lemma6 }) ) where
447 lemma6 : od→ord t ≡ od→ord (A ∩ ord→od (od→ord t)) 443 lemma6 : od→ord t ≡ od→ord (A ∩ ord→od (od→ord t))
448 lemma6 = cong ( λ k → od→ord k ) (==→o≡ (subst (λ k → t =h= (A ∩ k)) (sym oiso) ( ∩-≡ t→A ))) 444 lemma6 = cong ( λ k → od→ord k ) (==→o≡ (subst (λ k → t =h= (A ∩ k)) (sym oiso) ( ∩-≡ t→A )))
445
449 446
450 ord⊆power : (a : Ordinal) → (Ord (osuc a)) ⊆ (Power (Ord a)) 447 ord⊆power : (a : Ordinal) → (Ord (osuc a)) ⊆ (Power (Ord a))
451 ord⊆power a = record { incl = λ {x} lt → power← (Ord a) x (lemma lt) } where 448 ord⊆power a = record { incl = λ {x} lt → power← (Ord a) x (lemma lt) } where
452 lemma : {x y : HOD} → od→ord x o< osuc a → x ∋ y → Ord a ∋ y 449 lemma : {x y : HOD} → od→ord x o< osuc a → x ∋ y → Ord a ∋ y
453 lemma lt y<x with osuc-≡< lt 450 lemma lt y<x with osuc-≡< lt