changeset 91:b4742cf4ef97

infinity axiom done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 05 Jun 2019 18:24:32 +0900
parents 38d139b5edac
children ef0dfc4b97fd
files ordinal-definable.agda ordinal.agda
diffstat 2 files changed, 49 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/ordinal-definable.agda	Wed Jun 05 14:35:32 2019 +0900
+++ b/ordinal-definable.agda	Wed Jun 05 18:24:32 2019 +0900
@@ -178,6 +178,16 @@
 od≡-def : {n : Level} →  { x : Ordinal {suc n} } → ord→od x ≡ record { def = λ z → z o< x } 
 od≡-def {n} {x} = subst (λ k  → ord→od x ≡ k ) oiso (cong ( λ k → ord→od k ) (≡-def {n} {x} ))
 
+∋→o< : {n : Level} →  { a x : OD {suc n} } → a ∋ x → od→ord x o< od→ord a
+∋→o< {n} {a} {x} lt = t where
+         t : (od→ord x) o< (od→ord a)
+         t = c<→o< {suc n} {x} {a} lt 
+
+o<∋→ : {n : Level} →  { a x : OD {suc n} } → od→ord x o< od→ord a → a ∋ x 
+o<∋→ {n} {a} {x} lt = subst₂ (λ k j → def k j ) oiso diso t  where
+         t : def (ord→od (od→ord a)) (od→ord (ord→od (od→ord x)))
+         t = o<→c< {suc n} {od→ord x} {od→ord a} lt 
+
 ¬x<0 : {n : Level} →  { x  : Ordinal {suc n} } → ¬ ( x o< o∅ {suc n} )
 ¬x<0 {n} {x} (case1 ())
 ¬x<0 {n} {x} (case2 ())
@@ -362,27 +372,44 @@
          xx-union {x} = cong ( λ k → record { def = λ z → z o< k } ) (omxx (od→ord x))
          xxx-union : {x  : OD {suc n}} → (x , (x , x)) ≡ record { def = λ z → z o< osuc (osuc (od→ord x))}
          xxx-union {x} = cong ( λ k → record { def = λ z → z o< k } ) lemma where
+             lemma1 : {x  : OD {suc n}} → od→ord x o< od→ord (x , x)
+             lemma1 {x} = c<→o< ( proj1 (pair x x ) )
+             lemma2 : {x  : OD {suc n}} → od→ord (x , x) ≡ osuc (od→ord x)
+             lemma2 = trans ( cong ( λ k →  od→ord k ) xx-union ) (sym ≡-def)
              lemma : {x  : OD {suc n}} → omax (od→ord x) (od→ord (x , x)) ≡ osuc (osuc (od→ord x))
-             lemma {x} = trans ( sym ( omax< (od→ord x) (od→ord (x , x)) {!!} ) ) ( cong ( λ k → osuc k ) {!!} )
+             lemma {x} = trans ( sym ( omax< (od→ord x) (od→ord (x , x)) lemma1 ) ) ( cong ( λ k → osuc k ) lemma2 )
          uxxx-union : {x  : OD {suc n}} → Union (x , (x , x)) ≡ record { def = λ z → osuc z o< osuc (osuc (od→ord x)) }
          uxxx-union {x} = cong ( λ k → record { def = λ z → osuc z o< k } ) lemma where
              lemma : od→ord (x , (x , x)) ≡ osuc (osuc (od→ord x))
-             lemma = {!!}
+             lemma = trans ( cong ( λ k → od→ord k ) xxx-union ) (sym ≡-def )
+         uxxx-2 : {x  : OD {suc n}} → record { def = λ z → osuc z o< osuc (osuc (od→ord x)) } == record { def = λ z → z o< osuc (od→ord x) }
+         eq→ ( uxxx-2 {x} ) {m} lt = proj1 (osuc2 m (od→ord x)) lt
+         eq← ( uxxx-2 {x} ) {m} lt = proj2 (osuc2 m (od→ord x)) lt
+         uxxx-ord : {x  : OD {suc n}} → od→ord (Union (x , (x , x))) ≡ osuc (od→ord x)
+         uxxx-ord {x} = trans (cong (λ k →  od→ord k ) uxxx-union) (==→o≡ (subst₂ (λ j k → j == k ) (sym oiso) (sym od≡-def ) uxxx-2 )) 
+         omega = record { lv = Suc Zero ; ord = Φ 1 }
          infinite : OD {suc n}
-         infinite = ord→od ( record { lv = Suc Zero ; ord = Φ 1 } )
-         infinity∅ : ord→od ( record { lv = Suc Zero ; ord = Φ 1  } ) ∋ od∅ {suc n}
+         infinite = ord→od ( omega )
+         infinity∅ : ord→od ( omega ) ∋ od∅ {suc n}
          infinity∅ = def-subst {suc n} {_} {od→ord (ord→od o∅)} {infinite} {od→ord od∅}
               (o<→c< ( case1 (s≤s z≤n )))  refl (cong (λ k →  od→ord k) o∅≡od∅ )
+         infinite∋x : (x : OD) → infinite ∋ x → od→ord x o< omega
+         infinite∋x x lt = subst (λ k → od→ord x o< k ) diso t where
+              t  : od→ord x o< od→ord (ord→od (omega))
+              t  = ∋→o< {n} {infinite} {x} lt
+         infinite∋uxxx : (x : OD) → osuc (od→ord x) o< omega → infinite ∋ Union (x , (x , x ))
+         infinite∋uxxx x lt = o<∋→ t where
+              t  :  od→ord (Union (x , (x , x))) o< od→ord (ord→od (omega))
+              t  = subst (λ k →  od→ord (Union (x , (x , x))) o< k ) (sym diso ) ( subst ( λ k → k o< omega ) ( sym  (uxxx-ord {x} ) ) lt ) 
          infinity : (x : OD) → infinite ∋ x → infinite ∋ Union (x , (x , x ))
-         infinity x ∞∋x = {!!}
-           where
-             lemma : (ox : Ordinal {suc n} ) → ox o< record { lv = Suc Zero ; ord = Φ 1 } → osuc ox o< record { lv = Suc Zero ; ord = Φ 1 } 
-             lemma record { lv = Zero ; ord = (Φ .0) } (case1 (s≤s x)) = case1 (s≤s z≤n)
-             lemma record { lv = Zero ; ord = (OSuc .0 ord₁) } (case1 (s≤s x)) = case1 (s≤s z≤n)
-             lemma record { lv = (Suc lv₁) ; ord = (Φ .(Suc lv₁)) } (case1 (s≤s ()))
-             lemma record { lv = (Suc lv₁) ; ord = (OSuc .(Suc lv₁) ord₁) } (case1 (s≤s ()))
-             lemma record { lv = 1 ; ord = (Φ 1) } (case2 c2) with d<→lv c2
-             lemma record { lv = (Suc Zero) ; ord = (Φ .1) } (case2 ()) | refl
+         infinity x lt = infinite∋uxxx x ( lemma (od→ord x) (infinite∋x x lt ))   where
+              lemma : (ox : Ordinal {suc n} ) → ox o< omega → osuc ox o< omega 
+              lemma record { lv = Zero ; ord = (Φ .0) } (case1 (s≤s x)) = case1 (s≤s z≤n)
+              lemma record { lv = Zero ; ord = (OSuc .0 ord₁) } (case1 (s≤s x)) = case1 (s≤s z≤n)
+              lemma record { lv = (Suc lv₁) ; ord = (Φ .(Suc lv₁)) } (case1 (s≤s ()))
+              lemma record { lv = (Suc lv₁) ; ord = (OSuc .(Suc lv₁) ord₁) } (case1 (s≤s ()))
+              lemma record { lv = 1 ; ord = (Φ 1) } (case2 c2) with d<→lv c2
+              lemma record { lv = (Suc Zero) ; ord = (Φ .1) } (case2 ()) | refl
          replacement : {ψ : OD → OD} (X x : OD) → Replace X ψ ∋ ψ x
          replacement {ψ} X x = {!!}
 
--- a/ordinal.agda	Wed Jun 05 14:35:32 2019 +0900
+++ b/ordinal.agda	Wed Jun 05 18:24:32 2019 +0900
@@ -242,6 +242,15 @@
 omxxx : {n : Level} ( x : Ordinal {suc n} ) → omax x (omax x x ) ≡ osuc (osuc x)
 omxxx {n} x = trans ( cong ( λ k → omax x k ) (omxx x )) (sym ( omax< x (osuc x) <-osuc ))
 
+open _∧_
+
+osuc2 : {n : Level} ( x y : Ordinal {suc n} ) → ( osuc x o< osuc (osuc y )) ⇔ (x o< osuc y)
+proj1 (osuc2 {n} x y) (case1 lt) = case1 lt
+proj1 (osuc2 {n} x y) (case2 (s< lt)) = case2 lt
+proj2 (osuc2 {n} x y) (case1 lt) = case1 lt
+proj2 (osuc2 {n} x y) (case2 lt) with d<→lv lt
+... | refl = case2 (s< lt)
+
 -- omax≡ (omax x x ) (osuc x) (omxx x)
 
 OrdTrans : {n : Level} → Transitive {suc n} _o≤_