changeset 66:92a11dc6425c

regularity done
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Thu, 30 May 2019 01:55:59 +0900
parents 164ad5a703d8
children 94c796aee319
files ordinal-definable.agda
diffstat 1 files changed, 25 insertions(+), 52 deletions(-) [+]
line wrap: on
line diff
--- a/ordinal-definable.agda	Thu May 30 01:02:47 2019 +0900
+++ b/ordinal-definable.agda	Thu May 30 01:55:59 2019 +0900
@@ -221,16 +221,6 @@
 tri-c< {n} x y | tri≈ ¬a b ¬c = tri≈ (o≡→¬c< b) (ord→== b) (o≡→¬c< (sym b))
 tri-c< {n} x y | tri> ¬a ¬b c = tri>  ( o<→¬c> c) (λ eq → o<→¬== c (eq-sym eq ) ) (def-subst (o<→c< c) oiso diso)
 
-¬∅=→∅∈ :  {n : Level} →  { x : OD {suc n} } → ¬ (  x  == od∅ {suc n} ) → x ∋ od∅ {suc n} 
-¬∅=→∅∈  {n} {x} ne = def-subst (lemma (od→ord x) (subst (λ k → ¬ (k == od∅ {suc n} )) (sym oiso) ne )) oiso refl where
-     lemma : (ox : Ordinal {suc n}) →  ¬ (ord→od  ox  == od∅ {suc n} ) → ord→od ox ∋ od∅ {suc n}
-     lemma ox = TransFinite {suc n} {λ ox → ¬ (ord→od  ox  == od∅ {suc n} ) → ord→od ox ∋ od∅ {suc n} } {!!} {!!} {!!} ox
-
--- postulate f-extensionality : { n : Level}  → Relation.Binary.PropositionalEquality.Extensionality (suc (suc n)) (suc (suc n ))
-
--- ==∅→≡ :  {n : Level} →  { x : OD {suc n} } → (  x  == od∅ {suc n} ) → x ≡ od∅ {suc n} 
--- ==∅→≡ {n} {x} eq = cong (  λ k → record { def = k } ) (trans {!!} ∅-base-def ) where
-
 c<> : {n : Level } { x y : OD {suc n}} → x c<  y  → y c< x  →  ⊥
 c<> {n} {x} {y} x<y y<x with tri-c< x y
 c<> {n} {x} {y} x<y y<x | tri< a ¬b ¬c = ¬c y<x
@@ -277,8 +267,25 @@
    lemma : ¬ od→ord x ≡ o∅
    lemma eq = not ( ∅7  eq )
 
-∅10 : {n : Level} →  {ox : Ordinal {n}} → {x : OD{n}} → ( x ≡ ord→od ox ) → (not : ¬ (x == od∅)) → o∅ o< ox
-∅10 {n} {ox} {x} refl not = subst (λ k → o∅ o< k) diso (∅9 not)
+∅10 : {n : Level} →  {ox : Ordinal {n}} → (not : ¬ (ord→od ox == od∅)) → o∅ o< ox
+∅10 {n} {ox} not = subst (λ k → o∅ o< k) diso (∅9 not)
+
+¬∅=→∅∈ :  {n : Level} →  { x : OD {suc n} } → ¬ (  x  == od∅ {suc n} ) → x ∋ od∅ {suc n} 
+¬∅=→∅∈  {n} {x} ne = def-subst (lemma (od→ord x) (subst (λ k → ¬ (k == od∅ {suc n} )) (sym oiso) ne )) oiso refl where
+     lemma : (ox : Ordinal {suc n}) →  ¬ (ord→od  ox  == od∅ {suc n} ) → ord→od ox ∋ od∅ {suc n}
+     lemma ox ne with is-o∅ ox
+     lemma ox ne | yes refl with ne ( ord→== lemma1 ) where
+         lemma1 : od→ord (ord→od o∅) ≡ od→ord od∅
+         lemma1 = cong ( λ k → od→ord k ) o∅→od∅
+     lemma o∅ ne | yes refl | ()
+     lemma ox ne | no ¬p = subst ( λ k → def (ord→od ox) (od→ord k) ) o∅→od∅ (o<→c< (∅5 ¬p))  
+      
+
+-- postulate f-extensionality : { n : Level}  → Relation.Binary.PropositionalEquality.Extensionality (suc (suc n)) (suc (suc n ))
+
+-- ==∅→≡ :  {n : Level} →  { x : OD {suc n} } → (  x  == od∅ {suc n} ) → x ≡ od∅ {suc n} 
+-- ==∅→≡ {n} {x} eq = cong (  λ k → record { def = k } ) (trans {!!} ∅-base-def ) where
+
 
 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ ) 
 
@@ -355,46 +362,12 @@
            }
          ∅-iso :  {x : OD} → ¬ (x == od∅) → ¬ ((ord→od (od→ord x)) == od∅) 
          ∅-iso {x} neq = subst (λ k → ¬ k) (=-iso {n} ) neq  
-         minord : (x : OD {suc n} ) → ¬ (x == od∅ ) → Minimumo (od→ord x)
-         minord x not = ominimal (od→ord x) (∅9 not)
          minimul : (x : OD {suc n} ) → ¬ (x == od∅ )→ OD {suc n} 
-         minimul x  not = ord→od ( mino (minord x not))
-         omin→cmin : {x : OD {suc n}}  →  {not :  ¬ x == od∅ } → mino (minord x not)  o< (od→ord x) → def x (od→ord (ord→od (mino (minord x not))))
-         omin→cmin  {x} {not} m<x = def-subst {suc n} {ord→od (od→ord x)} {od→ord (ord→od (mino (minord x not)))} (o<→c< m<x) oiso refl
-         minimul<x : (x : OD {suc n} ) →  (not :  ¬ x == od∅ ) → x ∋ minimul x not
-         minimul<x x not =  omin→cmin {x} {not} (min<x (minord x not)) 
-         omin∅→min∅ : (ox : Ordinal {suc n})  →  {not : ¬ ( ord→od ox == od∅)} 
-            → mino (ominimal ox (∅10 refl not)) ≡ o∅ → mino (ominimal (od→ord (ord→od ox)) (∅9 not)) ≡ o∅
-         omin∅→min∅ ox  {not} eq with ominimal ox (∅10 refl not)
-         omin∅→min∅ record { lv = Zero ; ord = (Φ .0) }  eq | record { mino = mino ; min<x = case1 () }
-         omin∅→min∅ record { lv = Zero ; ord = (Φ .0) }  eq | record { mino = mino ; min<x = case2 () }
-         omin∅→min∅ record { lv = Zero ; ord = (OSuc .0 ord₁) }  refl | record { mino = .o∅ ; min<x = case1 () }
-         omin∅→min∅ record { lv = Zero ; ord = (OSuc .0 (Φ .0)) } {not} refl | record { mino = record { lv = .0 ; ord = .(Φ 0) } ; min<x = case2 Φ< } = {!!}  where
-            lemma : mino (ominimal (od→ord (ord→od (record { lv = Zero ; ord = OSuc Zero (Φ Zero) }))) (∅5 (λ eq → not (∅7 eq)))) ≡ o∅
-            lemma = {!!}
-         omin∅→min∅ record { lv = Zero ; ord = (OSuc .0 (OSuc .0 ord₁)) } {_} refl | record { mino = record { lv = .0 ; ord = .(Φ 0) } ; min<x = case2 Φ< } = {!!}
-         omin∅→min∅ record { lv = (Suc lv₁) ; ord = (Φ .(Suc lv₁)) }  refl | record { mino = .o∅ ; min<x = case1 (s≤s z≤n) } = {!!}
-         omin∅→min∅ record { lv = (Suc lv₁) ; ord = (Φ .(Suc lv₁)) }  eq | record { mino = mino ; min<x = case2 () }
-         omin∅→min∅ record { lv = (Suc lv₁) ; ord = (OSuc .(Suc lv₁) ord₁) }  refl | record { mino = .o∅ ; min<x = case1 (s≤s z≤n) } = {!!}
-         omin∅→min∅ record { lv = (Suc lv₁) ; ord = (OSuc .(Suc lv₁) ord₁) }  refl | record { mino = .o∅ ; min<x = case2 () }
-         omin∅→min∅ record { lv = (Suc lv₁) ; ord = (ℵ .lv₁) }  refl | record { mino = .o∅ ; min<x = case1 (s≤s z≤n) } = {!!}
-         omin∅→min∅ record { lv = (Suc lv₁) ; ord = (ℵ .lv₁) }  refl | record { mino = .o∅ ; min<x = case2 () } 
+         minimul x  not = od∅
          regularity :  (x : OD) (not : ¬ (x == od∅)) →
             (x ∋ minimul x not) ∧ (Select (minimul x not) (λ x₁ → (minimul x not ∋ x₁) ∧ (x ∋ x₁)) == od∅)
-         regularity x not = regularity-ord (od→ord x) {x} (sym oiso ) not where
-             regularity-ord : (ox : Ordinal ) → {x : OD} → ( x ≡ ord→od ox ) → (not : ¬ (x == od∅))
-                  → (x ∋ minimul x not) ∧ (Select (minimul x not) (λ x₁ → (minimul x not ∋ x₁) ∧ (x ∋ x₁)) == od∅)
-             regularity-ord ox {x} refl not  with ominimal ox (∅10 refl not) | minimul x not | is-o∅ (mino (minord x not)) | is-o∅ ox
-             regularity-ord record { lv = Zero ; ord = (Φ .0) } refl not | record { mino = mino ; min<x = case1 () } | r | t | s
-             regularity-ord record { lv = Zero ; ord = (Φ .0) } refl not | record { mino = mino ; min<x = case2 () } | r | t | s
-             regularity-ord record { lv = Zero ; ord = (OSuc .0 ord₁) } refl not | record { mino = min ; min<x = case1 () } | r | t | s
-             regularity-ord record { lv = Zero ; ord = (OSuc .0 ord₁) } refl not | record { mino = record { lv = Suc lv₁ ; ord = ord } ; min<x = case2 () } | r | t | s
-             regularity-ord record { lv = Zero ; ord = (OSuc .0 ord₁) }  refl not | record { mino = record { lv = Zero ; ord = Φ .0 } ; min<x = case2 Φ< } | r | yes p | s 
-                = record { proj1 = {!!}  ; proj2 = record { eq→ = {!!}   ; eq← = λ () } }  
-             regularity-ord record { lv = Zero ; ord = (OSuc .0 ord₁) }  refl not | record { mino = record { lv = Zero ; ord = Φ .0 } ; min<x = case2 Φ< } | r | no ¬p | yes p = {!!}
-             regularity-ord record { lv = Zero ; ord = (OSuc .0 ord₁) }  refl not | record { mino = record { lv = Zero ; ord = Φ .0 } ; min<x = case2 Φ< } | r | no ¬p | no ¬p₁ = {!!}
-             regularity-ord record { lv = Zero ; ord = (OSuc .0 ord₁) }  refl not | record { mino = record { lv = Zero ; ord = OSuc .0 ord₂ } ; min<x = case2 (s< lt) } | r | t | s  = {!!}
-             regularity-ord record { lv = (Suc lv₁) ; ord = (Φ .(Suc lv₁)) } refl not | record { mino = min ; min<x = case1 lt } | r | t | s = {!!}
-             regularity-ord record { lv = (Suc lv₁) ; ord = (Φ .(Suc lv₁)) } refl not | record { mino = min ; min<x = case2 () } | r | t | s
-             regularity-ord record { lv = (Suc lv₁) ; ord = (OSuc .(Suc lv₁) ord₁) } refl not | record { mino = min ; min<x = min<x }  | r | t | s = {!!}
-             regularity-ord record { lv = (Suc lv₁) ; ord = (ℵ .lv₁) } refl not | record { mino = min ; min<x = min<x } | r | t | s = {!!}
+         proj1 (regularity x not ) = ¬∅=→∅∈ not 
+         proj2 (regularity x not ) = record { eq→ = reg ; eq← = λ () } where
+            reg : {y : Ordinal} → def (Select (minimul x not) (λ x₂ → (minimul x not ∋ x₂) ∧ (x ∋ x₂))) y → def od∅ y
+            reg {y} t with proj1 t
+            ... | x∈∅ = x∈∅