comparison HOD.agda @ 140:312e27aa3cb5

remove otrans again. start over
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sun, 07 Jul 2019 23:02:47 +0900
parents 53077af367e9
children 21b2654985c4
comparison
equal deleted inserted replaced
139:53077af367e9 140:312e27aa3cb5
14 -- Ordinal Definable Set 14 -- Ordinal Definable Set
15 15
16 record HOD {n : Level} : Set (suc n) where 16 record HOD {n : Level} : Set (suc n) where
17 field 17 field
18 def : (x : Ordinal {n} ) → Set n 18 def : (x : Ordinal {n} ) → Set n
19 otrans : {x : Ordinal {n} } → def x → { y : Ordinal {n} } → y o< x → def y
20 19
21 open HOD 20 open HOD
22 open import Data.Unit 21 open import Data.Unit
23 22
24 open Ordinal 23 open Ordinal
47 eq→ ( ⇔→== {n} {x} {y} eq ) {z} m = proj1 eq m 46 eq→ ( ⇔→== {n} {x} {y} eq ) {z} m = proj1 eq m
48 eq← ( ⇔→== {n} {x} {y} eq ) {z} m = proj2 eq m 47 eq← ( ⇔→== {n} {x} {y} eq ) {z} m = proj2 eq m
49 48
50 -- Ordinal in HOD ( and ZFSet ) 49 -- Ordinal in HOD ( and ZFSet )
51 Ord : { n : Level } → ( a : Ordinal {n} ) → HOD {n} 50 Ord : { n : Level } → ( a : Ordinal {n} ) → HOD {n}
52 Ord {n} a = record { def = λ y → y o< a ; otrans = lemma } where 51 Ord {n} a = record { def = λ y → y o< a }
53 lemma : {x : Ordinal} → x o< a → {y : Ordinal} → y o< x → y o< a
54 lemma {x} x<a {y} y<x = ordtrans {n} {y} {x} {a} y<x x<a
55 52
56 od∅ : {n : Level} → HOD {n} 53 od∅ : {n : Level} → HOD {n}
57 od∅ {n} = Ord o∅ 54 od∅ {n} = Ord o∅
58 55
59 postulate 56 postulate
92 89
93 _c≤_ : {n : Level} → HOD {n} → HOD {n} → Set (suc n) 90 _c≤_ : {n : Level} → HOD {n} → HOD {n} → Set (suc n)
94 a c≤ b = (a ≡ b) ∨ ( b ∋ a ) 91 a c≤ b = (a ≡ b) ∨ ( b ∋ a )
95 92
96 cseq : {n : Level} → HOD {n} → HOD {n} 93 cseq : {n : Level} → HOD {n} → HOD {n}
97 cseq x = record { def = λ y → def x (osuc y) ; otrans = lemma } where 94 cseq x = record { def = λ y → def x (osuc y) } where
98 lemma : {ox : Ordinal} → def x (osuc ox) → { oy : Ordinal}→ oy o< ox → def x (osuc oy)
99 lemma {ox} oox<Ox {oy} oy<ox = otrans x oox<Ox (osucc oy<ox )
100 95
101 def-subst : {n : Level } {Z : HOD {n}} {X : Ordinal {n} }{z : HOD {n}} {x : Ordinal {n} }→ def Z X → Z ≡ z → X ≡ x → def z x 96 def-subst : {n : Level } {Z : HOD {n}} {X : Ordinal {n} }{z : HOD {n}} {x : Ordinal {n} }→ def Z X → Z ≡ z → X ≡ x → def z x
102 def-subst df refl refl = df 97 def-subst df refl refl = df
103 98
104 o<→c< : {n : Level} {x y : Ordinal {n} } → x o< y → Ord y ∋ Ord x 99 o<→c< : {n : Level} {x y : Ordinal {n} } → x o< y → Ord y ∋ Ord x
143 c3 lx (Φ .lx) d not | t | () 138 c3 lx (Φ .lx) d not | t | ()
144 c3 lx (OSuc .lx x₁) d not with not ( record { lv = lx ; ord = OSuc lx x₁ } ) 139 c3 lx (OSuc .lx x₁) d not with not ( record { lv = lx ; ord = OSuc lx x₁ } )
145 ... | t with t (case2 (s< s<refl ) ) 140 ... | t with t (case2 (s< s<refl ) )
146 c3 lx (OSuc .lx x₁) d not | t | () 141 c3 lx (OSuc .lx x₁) d not | t | ()
147 142
148 transitive : {n : Level } { z y x : HOD {suc n} } → z ∋ y → y ∋ x → z ∋ x
149 transitive {n} {z} {y} {x} z∋y x∋y with ordtrans ( c<→o< {suc n} {x} {y} x∋y ) ( c<→o< {suc n} {y} {z} z∋y )
150 ... | t = otrans z z∋y (c<→o< {suc n} {x} {y} x∋y )
151
152 ∅5 : {n : Level} → { x : Ordinal {n} } → ¬ ( x ≡ o∅ {n} ) → o∅ {n} o< x 143 ∅5 : {n : Level} → { x : Ordinal {n} } → ¬ ( x ≡ o∅ {n} ) → o∅ {n} o< x
153 ∅5 {n} {record { lv = Zero ; ord = (Φ .0) }} not = ⊥-elim (not refl) 144 ∅5 {n} {record { lv = Zero ; ord = (Φ .0) }} not = ⊥-elim (not refl)
154 ∅5 {n} {record { lv = Zero ; ord = (OSuc .0 ord) }} not = case2 Φ< 145 ∅5 {n} {record { lv = Zero ; ord = (OSuc .0 ord) }} not = case2 Φ<
155 ∅5 {n} {record { lv = (Suc lv) ; ord = ord }} not = case1 (s≤s z≤n) 146 ∅5 {n} {record { lv = (Suc lv) ; ord = ord }} not = case1 (s≤s z≤n)
156 147
204 o<→¬c> {n} {x} {y} olt clt = o<> olt (c<→o< clt ) where 195 o<→¬c> {n} {x} {y} olt clt = o<> olt (c<→o< clt ) where
205 196
206 o≡→¬c< : {n : Level} → { x y : HOD {n} } → (od→ord x ) ≡ ( od→ord y) → ¬ x c< y 197 o≡→¬c< : {n : Level} → { x y : HOD {n} } → (od→ord x ) ≡ ( od→ord y) → ¬ x c< y
207 o≡→¬c< {n} {x} {y} oeq lt = o<¬≡ (orefl oeq ) (c<→o< lt) 198 o≡→¬c< {n} {x} {y} oeq lt = o<¬≡ (orefl oeq ) (c<→o< lt)
208 199
209 ∅0 : {n : Level} → record { def = λ x → Lift n ⊥ ; otrans = λ () } == od∅ {n} 200 ∅0 : {n : Level} → record { def = λ x → Lift n ⊥ } == od∅ {n}
210 eq→ ∅0 {w} (lift ()) 201 eq→ ∅0 {w} (lift ())
211 eq← ∅0 {w} (case1 ()) 202 eq← ∅0 {w} (case1 ())
212 eq← ∅0 {w} (case2 ()) 203 eq← ∅0 {w} (case2 ())
213 204
214 ∅< : {n : Level} → { x y : HOD {n} } → def x (od→ord y ) → ¬ ( x == od∅ {n} ) 205 ∅< : {n : Level} → { x y : HOD {n} } → def x (od→ord y ) → ¬ ( x == od∅ {n} )
234 csuc x = Ord ( osuc ( od→ord x )) 225 csuc x = Ord ( osuc ( od→ord x ))
235 226
236 -- Power Set of X ( or constructible by λ y → def X (od→ord y ) 227 -- Power Set of X ( or constructible by λ y → def X (od→ord y )
237 228
238 ZFSubset : {n : Level} → (A x : HOD {suc n} ) → HOD {suc n} 229 ZFSubset : {n : Level} → (A x : HOD {suc n} ) → HOD {suc n}
239 ZFSubset A x = record { def = λ y → def A y ∧ def x y ; otrans = lemma } where 230 ZFSubset A x = record { def = λ y → def A y ∧ def x y } where
240 lemma : {z : Ordinal} → def A z ∧ def x z → {y : Ordinal} → y o< z → def A y ∧ def x y
241 lemma {z} d {y} y<z = record { proj1 = otrans A (proj1 d) y<z ; proj2 = otrans x (proj2 d) y<z }
242 231
243 Def : {n : Level} → (A : HOD {suc n}) → HOD {suc n} 232 Def : {n : Level} → (A : HOD {suc n}) → HOD {suc n}
244 Def {n} A = Ord ( sup-o ( λ x → od→ord ( ZFSubset A (ord→od x )) ) ) 233 Def {n} A = Ord ( sup-o ( λ x → od→ord ( ZFSubset A (ord→od x )) ) )
245 234
246 OrdSubset : {n : Level} → (A x : Ordinal {suc n} ) → ZFSubset (Ord A) (Ord x) ≡ Ord ( minα A x ) 235 OrdSubset : {n : Level} → (A x : Ordinal {suc n} ) → ZFSubset (Ord A) (Ord x) ≡ Ord ( minα A x )
294 ; Replace = Replace 283 ; Replace = Replace
295 ; infinite = Ord omega 284 ; infinite = Ord omega
296 ; isZF = isZF 285 ; isZF = isZF
297 } where 286 } where
298 Select : (X : HOD {suc n} ) → ((x : HOD {suc n} ) → Set (suc n) ) → HOD {suc n} 287 Select : (X : HOD {suc n} ) → ((x : HOD {suc n} ) → Set (suc n) ) → HOD {suc n}
299 Select X ψ = record { def = λ x → ((y : Ordinal {suc n} ) → X ∋ ord→od y → ψ (ord→od y)) ∧ (X ∋ ord→od x ) ; otrans = lemma } where 288 Select X ψ = record { def = λ x → ( def X x ∧ ψ ( ord→od x )) }
300 lemma : {x : Ordinal} → ((y : Ordinal) → X ∋ ord→od y → ψ (ord→od y)) ∧ (X ∋ ord→od x) →
301 {y : Ordinal} → y o< x → ((y₁ : Ordinal) → X ∋ ord→od y₁ → ψ (ord→od y₁)) ∧ (X ∋ ord→od y)
302 lemma {x} select {y} y<x = record { proj1 = proj1 select ; proj2 = y<X } where
303 y<X : X ∋ ord→od y
304 y<X = otrans X (proj2 select) (o<-subst y<x (sym diso) (sym diso) )
305 Replace : HOD {suc n} → (HOD {suc n} → HOD {suc n} ) → HOD {suc n} 289 Replace : HOD {suc n} → (HOD {suc n} → HOD {suc n} ) → HOD {suc n}
306 Replace X ψ = Select ( Ord (sup-o ( λ x → od→ord (ψ (ord→od x ))))) ( λ x → ¬ (∀ (y : Ordinal ) → ¬ ( def X y ∧ ( x == ψ (Ord y) )))) 290 Replace X ψ = Select ( Ord (sup-o ( λ x → od→ord (ψ (ord→od x ))))) ( λ x → ¬ (∀ (y : Ordinal ) → ¬ ( def X y ∧ ( x == ψ (Ord y) ))))
307 _,_ : HOD {suc n} → HOD {suc n} → HOD {suc n} 291 _,_ : HOD {suc n} → HOD {suc n} → HOD {suc n}
308 x , y = Ord (omax (od→ord x) (od→ord y)) 292 x , y = Ord (omax (od→ord x) (od→ord y))
309 Union : HOD {suc n} → HOD {suc n} 293 Union : HOD {suc n} → HOD {suc n}
367 ord-power→ : (a : Ordinal ) ( t : HOD) → Def (Ord a) ∋ t → {x : HOD} → t ∋ x → Ord a ∋ x 351 ord-power→ : (a : Ordinal ) ( t : HOD) → Def (Ord a) ∋ t → {x : HOD} → t ∋ x → Ord a ∋ x
368 ord-power→ a t P∋t {x} t∋x with osuc-≡< (sup-lb (POrd P∋t)) 352 ord-power→ a t P∋t {x} t∋x with osuc-≡< (sup-lb (POrd P∋t))
369 ... | case1 eq = proj1 (def-subst (Ltx t∋x) (sym (subst₂ (λ j k → j ≡ k ) oiso oiso ( cong (λ k → ord→od k) (sym eq) ))) refl ) where 353 ... | case1 eq = proj1 (def-subst (Ltx t∋x) (sym (subst₂ (λ j k → j ≡ k ) oiso oiso ( cong (λ k → ord→od k) (sym eq) ))) refl ) where
370 Ltx : {n : Level} → {x t : HOD {suc n}} → t ∋ x → Ord (od→ord t) ∋ x 354 Ltx : {n : Level} → {x t : HOD {suc n}} → t ∋ x → Ord (od→ord t) ∋ x
371 Ltx {n} {x} {t} lt = c<→o< lt 355 Ltx {n} {x} {t} lt = c<→o< lt
372 ... | case2 lt = otrans (Ord a) (proj1 (lemma1 lt) ) 356 ... | case2 lt = {!!} where
373 (c<→o< {suc n} {x} {Ord (od→ord t)} (Ltx t∋x) ) where
374 sp = sup-x (λ x → od→ord ( ZFSubset (Ord a) (ord→od x))) 357 sp = sup-x (λ x → od→ord ( ZFSubset (Ord a) (ord→od x)))
375 minsup : HOD 358 minsup : HOD
376 minsup = ZFSubset (Ord a) ( ord→od ( sup-x (λ x → od→ord ( ZFSubset (Ord a) (ord→od x))))) 359 minsup = ZFSubset (Ord a) ( ord→od ( sup-x (λ x → od→ord ( ZFSubset (Ord a) (ord→od x)))))
377 Ltx : {n : Level} → {x t : HOD {suc n}} → t ∋ x → Ord (od→ord t) ∋ x 360 Ltx : {n : Level} → {x t : HOD {suc n}} → t ∋ x → Ord (od→ord t) ∋ x
378 Ltx {n} {x} {t} lt = c<→o< lt 361 Ltx {n} {x} {t} lt = c<→o< lt
425 union→ : (X z u : HOD) → (X ∋ u) ∧ (u ∋ z) → Union X ∋ z 408 union→ : (X z u : HOD) → (X ∋ u) ∧ (u ∋ z) → Union X ∋ z
426 union→ X z u xx with trio< ( od→ord u ) ( osuc ( od→ord z )) 409 union→ X z u xx with trio< ( od→ord u ) ( osuc ( od→ord z ))
427 union→ X z u xx | tri< a ¬b ¬c with osuc-< a (c<→o< (proj2 xx)) 410 union→ X z u xx | tri< a ¬b ¬c with osuc-< a (c<→o< (proj2 xx))
428 union→ X z u xx | tri< a ¬b ¬c | () 411 union→ X z u xx | tri< a ¬b ¬c | ()
429 union→ X z u xx | tri≈ ¬a b ¬c = def-subst {suc n} {_} {_} {X} {osuc (od→ord z)} (proj1 xx) refl b 412 union→ X z u xx | tri≈ ¬a b ¬c = def-subst {suc n} {_} {_} {X} {osuc (od→ord z)} (proj1 xx) refl b
430 union→ X z u xx | tri> ¬a ¬b c = otrans X (proj1 xx) c 413 union→ X z u xx | tri> ¬a ¬b c = {!!}
431 union← : (X z : HOD) (X∋z : Union X ∋ z) → (X ∋ union-u {X} {z} X∋z ) ∧ (union-u {X} {z} X∋z ∋ z ) 414 union← : (X z : HOD) (X∋z : Union X ∋ z) → (X ∋ union-u {X} {z} X∋z ) ∧ (union-u {X} {z} X∋z ∋ z )
432 union← X z X∋z = record { proj1 = lemma ; proj2 = <-osuc } where 415 union← X z X∋z = record { proj1 = lemma ; proj2 = <-osuc } where
433 lemma : X ∋ union-u {X} {z} X∋z 416 lemma : X ∋ union-u {X} {z} X∋z
434 lemma = def-subst {suc n} {_} {_} {X} {od→ord (Ord (osuc ( od→ord z )))} X∋z refl ord-Ord 417 lemma = def-subst {suc n} {_} {_} {X} {od→ord (Ord (osuc ( od→ord z )))} X∋z refl ord-Ord
435 418
436 -- ψiso : {ψ : HOD {suc n} → Set (suc n)} {x y : HOD {suc n}} → ψ x → x ≡ y → ψ y 419 -- ψiso : {ψ : HOD {suc n} → Set (suc n)} {x y : HOD {suc n}} → ψ x → x ≡ y → ψ y
437 -- ψiso {ψ} t refl = t 420 -- ψiso {ψ} t refl = t
438 selection : {X : HOD } {ψ : (x : HOD ) → Set (suc n)} {y : HOD} → (((y₁ : HOD) → X ∋ y₁ → ψ y₁) ∧ (X ∋ y)) ⇔ (Select X ψ ∋ y) 421 selection : {ψ : HOD → Set (suc n)} {X y : HOD} → ((X ∋ y) ∧ ψ y) ⇔ (Select X ψ ∋ y)
439 selection {X} {ψ} {y} = record { proj1 = λ s → record { 422 selection {X} {ψ} {y} = {!!}
440 proj1 = λ y1 y1<X → proj1 s (ord→od y1) y1<X ; proj2 = subst (λ k → def X k ) (sym diso) (proj2 s) }
441 ; proj2 = λ s → record { proj1 = λ y1 dy1 →
442 subst (λ k → ψ k ) oiso ((proj1 s) (od→ord y1) (def-subst {suc n} {_} {_} {X} {_} dy1 refl (sym diso )))
443 ; proj2 = def-subst {suc n} {_} {_} {X} {od→ord y} (proj2 s ) refl diso } } where
444 -- ψ< : {ψ : HOD {suc n} → HOD {suc n}} {x y y' : HOD {suc n}} → ψ y ∋ x → ψ y' == x
445 -- ψ< = {!!}
446 replacement← : {ψ : HOD → HOD} (X x : HOD) → X ∋ x → Replace X ψ ∋ ψ x 423 replacement← : {ψ : HOD → HOD} (X x : HOD) → X ∋ x → Replace X ψ ∋ ψ x
447 replacement← {ψ} X x lt = record { proj1 = lemma 424 replacement← {ψ} X x lt = {!!}
448 ; proj2 = sup-o∋ψx
449 }
450 where
451 sup-o∋ψx : Ord (sup-o (λ x₁ → od→ord (ψ (ord→od x₁)))) ∋ ord→od (od→ord (ψ x))
452 sup-o∋ψx = def-subst {suc n} {_} {_} {Ord (sup-o (λ x₁ → od→ord (ψ (ord→od x₁))))} { od→ord (ord→od (od→ord (ψ x)))}
453 (sup-c< ψ {x}) refl (sym diso)
454 lemma : (y : Ordinal) → Ord (sup-o (λ x₁ → od→ord (ψ (ord→od x₁)))) ∋ ord→od y →
455 ¬ ((y₁ : Ordinal) → ¬ def X y₁ ∧ (ord→od y == ψ (Ord y₁)))
456 lemma y lt1 not = not (minα (od→ord x) (sup-x ( λ w → od→ord (ψ (ord→od w ))))) (record {
457 proj1 = ?
458 ; proj2 = subst₂ (λ k j → k == j ) refl oiso (o≡→== {!!}) } ) where
459 lemma1 : y o< osuc ( od→ord (ψ (ord→od ( sup-x ( λ w → od→ord (ψ (ord→od w ))) ))))
460 lemma1 = o<-subst (sup-lb lt1) diso refl
461 lemma2 : ord→od y ≡ ψ (ord→od ( sup-x ( λ w → od→ord (ψ (ord→od w )))))
462 lemma2 with osuc-≡< lemma1
463 lemma2 | case1 refl = subst (λ k → ord→od y ≡ k ) oiso refl
464 lemma2 | case2 t = {!!}
465 replacement→ : {ψ : HOD → HOD} (X x : HOD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : HOD) → ¬ (x == ψ y)) 425 replacement→ : {ψ : HOD → HOD} (X x : HOD) → (lt : Replace X ψ ∋ x) → ¬ ( (y : HOD) → ¬ (x == ψ y))
466 replacement→ {ψ} X x lt = contra-position lemma (proj1 lt (od→ord x) (proj2 lt)) where 426 replacement→ {ψ} X x lt = contra-position lemma {!!} where
467 lemma : ( (y : HOD) → ¬ (x == ψ y)) → ( (y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (Ord y)) ) 427 lemma : ( (y : HOD) → ¬ (x == ψ y)) → ( (y : Ordinal) → ¬ def X y ∧ (ord→od (od→ord x) == ψ (Ord y)) )
468 lemma not y not2 = not (ord→od y) (subst₂ ( λ k j → k == j ) oiso (cong (λ k → ψ k ) Ord-ord ) (proj2 not2 )) 428 lemma not y not2 = not (ord→od y) (subst₂ ( λ k j → k == j ) oiso (cong (λ k → ψ k ) Ord-ord ) (proj2 not2 ))
469 429
470 ∅-iso : {x : HOD} → ¬ (x == od∅) → ¬ ((ord→od (od→ord x)) == od∅) 430 ∅-iso : {x : HOD} → ¬ (x == od∅) → ¬ ((ord→od (od→ord x)) == od∅)
471 ∅-iso {x} neq = subst (λ k → ¬ k) (=-iso {n} ) neq 431 ∅-iso {x} neq = subst (λ k → ¬ k) (=-iso {n} ) neq
474 proj1 (regularity x not ) = x∋minimul x not 434 proj1 (regularity x not ) = x∋minimul x not
475 proj2 (regularity x not ) = record { eq→ = lemma1 ; eq← = λ {y} d → lemma2 {y} d } where 435 proj2 (regularity x not ) = record { eq→ = lemma1 ; eq← = λ {y} d → lemma2 {y} d } where
476 lemma1 : {x₁ : Ordinal} → def (Select (minimul x not) (λ x₂ → (minimul x not ∋ x₂) ∧ (x ∋ x₂))) x₁ → def od∅ x₁ 436 lemma1 : {x₁ : Ordinal} → def (Select (minimul x not) (λ x₂ → (minimul x not ∋ x₂) ∧ (x ∋ x₂))) x₁ → def od∅ x₁
477 lemma1 {x₁} s = ⊥-elim ( minimul-1 x not (ord→od x₁) lemma3 ) where 437 lemma1 {x₁} s = ⊥-elim ( minimul-1 x not (ord→od x₁) lemma3 ) where
478 lemma3 : def (minimul x not) (od→ord (ord→od x₁)) ∧ def x (od→ord (ord→od x₁)) 438 lemma3 : def (minimul x not) (od→ord (ord→od x₁)) ∧ def x (od→ord (ord→od x₁))
479 lemma3 = proj1 s x₁ (proj2 s) 439 lemma3 = {!!}
480 lemma2 : {x₁ : Ordinal} → def od∅ x₁ → def (Select (minimul x not) (λ x₂ → (minimul x not ∋ x₂) ∧ (x ∋ x₂))) x₁ 440 lemma2 : {x₁ : Ordinal} → def od∅ x₁ → def (Select (minimul x not) (λ x₂ → (minimul x not ∋ x₂) ∧ (x ∋ x₂))) x₁
481 lemma2 {y} d = ⊥-elim (empty (ord→od y) (def-subst {suc n} {_} {_} {od∅} {od→ord (ord→od y)} d refl (sym diso) )) 441 lemma2 {y} d = ⊥-elim (empty (ord→od y) (def-subst {suc n} {_} {_} {od∅} {od→ord (ord→od y)} d refl (sym diso) ))
482 442
483 extensionality : {A B : HOD {suc n}} → ((z : HOD) → (A ∋ z) ⇔ (B ∋ z)) → A == B 443 extensionality : {A B : HOD {suc n}} → ((z : HOD) → (A ∋ z) ⇔ (B ∋ z)) → A == B
484 eq→ (extensionality {A} {B} eq ) {x} d = def-iso {suc n} {A} {B} (sym diso) (proj1 (eq (ord→od x))) d 444 eq→ (extensionality {A} {B} eq ) {x} d = def-iso {suc n} {A} {B} (sym diso) (proj1 (eq (ord→od x))) d