comparison OD.agda @ 364:67580311cc8e

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 18 Jul 2020 11:38:33 +0900
parents aad9249d1e8f
children 7f919d6b045b
comparison
equal deleted inserted replaced
363:aad9249d1e8f 364:67580311cc8e
1 {-# OPTIONS --allow-unsolved-metas #-}
1 open import Level 2 open import Level
2 open import Ordinals 3 open import Ordinals
3 module OD {n : Level } (O : Ordinals {n} ) where 4 module OD {n : Level } (O : Ordinals {n} ) where
4 5
5 open import zf 6 open import zf
398 399
399 infinite' : ({x : HOD} → od→ord x o< next (odmax x)) → HOD 400 infinite' : ({x : HOD} → od→ord x o< next (odmax x)) → HOD
400 infinite' ho< = record { od = record { def = λ x → infinite-d x } ; odmax = next o∅ ; <odmax = lemma } where 401 infinite' ho< = record { od = record { def = λ x → infinite-d x } ; odmax = next o∅ ; <odmax = lemma } where
401 u : (y : Ordinal ) → HOD 402 u : (y : Ordinal ) → HOD
402 u y = Union (ord→od y , (ord→od y , ord→od y)) 403 u y = Union (ord→od y , (ord→od y , ord→od y))
404 -- next< : {x y z : Ordinal} → x o< next z → y o< next x → y o< next z
405 lemma8 : {y : Ordinal} → od→ord (ord→od y , ord→od y) o< next (odmax (ord→od y , ord→od y))
406 lemma8 = ho<
407 --- (x,y) < next (omax x y) < next (osuc y) = next y
408 lemmaa : {x y : HOD} → od→ord x o< od→ord y → od→ord (x , y) o< next (od→ord y)
409 lemmaa {x} {y} x<y = subst (λ k → od→ord (x , y) o< k ) (sym nexto≡) (subst (λ k → od→ord (x , y) o< next k ) (sym (omax< _ _ x<y)) ho< )
410 lemma81 : {y : Ordinal} → od→ord (ord→od y , ord→od y) o< next (od→ord (ord→od y))
411 lemma81 {y} = nexto=n (subst (λ k → od→ord (ord→od y , ord→od y) o< k ) (cong (λ k → next k) (omxx _)) lemma8)
412 lemma9 : {y : Ordinal} → od→ord (ord→od y , (ord→od y , ord→od y)) o< next (od→ord (ord→od y , ord→od y))
413 lemma9 = lemmaa (c<→o< (case1 refl))
414 lemma71 : {y : Ordinal} → od→ord (ord→od y , (ord→od y , ord→od y)) o< next (od→ord (ord→od y))
415 lemma71 = next< lemma81 lemma9
416 lemma1 : {y : Ordinal} → od→ord (u y) o< next (osuc (od→ord (ord→od y , (ord→od y , ord→od y))))
417 lemma1 = ho<
418 --- main recursion
403 lemma : {y : Ordinal} → infinite-d y → y o< next o∅ 419 lemma : {y : Ordinal} → infinite-d y → y o< next o∅
404 lemma {o∅} iφ = x<nx 420 lemma {o∅} iφ = x<nx
405 lemma (isuc {y} x) = lemma2 where 421 lemma (isuc {y} x) = next< (lemma x) (next< (subst (λ k → od→ord (ord→od y , (ord→od y , ord→od y)) o< next k) diso lemma71 ) (nexto=n lemma1))
406 -- next< : {x y z : Ordinal} → x o< next z → y o< next x → y o< next z
407 lemma0 : y o< next o∅
408 lemma0 = lemma x
409 lemma8 : od→ord (ord→od y , ord→od y) o< next (odmax (ord→od y , ord→od y))
410 lemma8 = ho<
411 --- (x,y) < next (omax x y) < next (osuc y) = next y
412 lemmaa : {x y : HOD} → od→ord x o< od→ord y → od→ord (x , y) o< next (od→ord y)
413 lemmaa {x} {y} x<y = subst (λ k → od→ord (x , y) o< k ) (sym nexto≡) (subst (λ k → od→ord (x , y) o< next k ) (sym (omax< _ _ x<y)) ho< )
414 lemma81 : od→ord (ord→od y , ord→od y) o< next (od→ord (ord→od y))
415 lemma81 = nexto=n (subst (λ k → od→ord (ord→od y , ord→od y) o< k ) (cong (λ k → next k) (omxx _)) lemma8)
416 lemma9 : od→ord (ord→od y , (ord→od y , ord→od y)) o< next (od→ord (ord→od y , ord→od y))
417 lemma9 = lemmaa (c<→o< (case1 refl))
418 lemma71 : od→ord (ord→od y , (ord→od y , ord→od y)) o< next (od→ord (ord→od y))
419 lemma71 = next< lemma81 lemma9
420 lemma1 : od→ord (u y) o< next (osuc (od→ord (ord→od y , (ord→od y , ord→od y))))
421 lemma1 = ho<
422 lemma2 : od→ord (u y) o< next o∅
423 lemma2 = next< lemma0 (next< (subst (λ k → od→ord (ord→od y , (ord→od y , ord→od y)) o< next k) diso lemma71 ) (nexto=n lemma1))
424 422
425 nat→ω : Nat → HOD 423 nat→ω : Nat → HOD
426 nat→ω Zero = od∅ 424 nat→ω Zero = od∅
427 nat→ω (Suc y) = Union (nat→ω y , (nat→ω y , nat→ω y)) 425 nat→ω (Suc y) = Union (nat→ω y , (nat→ω y , nat→ω y))
428 426
429 ω→nat : (n : HOD) → infinite ∋ n → Nat 427 ω→nat : (n : HOD) → infinite ∋ n → Nat
430 ω→nat n = lemma where 428 ω→nat n = lemma where
431 lemma : {y : Ordinal} → infinite-d y → Nat 429 lemma : {y : Ordinal} → infinite-d y → Nat
432 lemma iφ = Zero 430 lemma iφ = Zero
433 lemma (isuc lt) = Suc (lemma lt) 431 lemma (isuc lt) = Suc (lemma lt)
432
433 ω∋nat→ω : {n : Nat} → def (od infinite) (od→ord (nat→ω n))
434 ω∋nat→ω {Zero} = subst (λ k → def (od infinite) k) {!!} iφ
435 ω∋nat→ω {Suc n} = subst (λ k → def (od infinite) k) {!!} (isuc ( ω∋nat→ω {n}))
434 436
435 _=h=_ : (x y : HOD) → Set n 437 _=h=_ : (x y : HOD) → Set n
436 x =h= y = od x == od y 438 x =h= y = od x == od y
437 439
438 infixr 200 _∈_ 440 infixr 200 _∈_