comparison ordinal-definable.agda @ 95:f3da2c87cee0

clean up
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 08 Jun 2019 17:33:09 +0900
parents 4659a815b70d
children f239ffc27fd0
comparison
equal deleted inserted replaced
94:4659a815b70d 95:f3da2c87cee0
3 3
4 open import zf 4 open import zf
5 open import ordinal 5 open import ordinal
6 6
7 open import Data.Nat renaming ( zero to Zero ; suc to Suc ; ℕ to Nat ; _⊔_ to _n⊔_ ) 7 open import Data.Nat renaming ( zero to Zero ; suc to Suc ; ℕ to Nat ; _⊔_ to _n⊔_ )
8
9 open import Relation.Binary.PropositionalEquality 8 open import Relation.Binary.PropositionalEquality
10
11 open import Data.Nat.Properties 9 open import Data.Nat.Properties
12 open import Data.Empty 10 open import Data.Empty
13 open import Relation.Nullary 11 open import Relation.Nullary
14
15 open import Relation.Binary 12 open import Relation.Binary
16 open import Relation.Binary.Core 13 open import Relation.Binary.Core
17 14
18 -- Ordinal Definable Set 15 -- Ordinal Definable Set
19 16
23 20
24 open OD 21 open OD
25 open import Data.Unit 22 open import Data.Unit
26 23
27 open Ordinal 24 open Ordinal
28
29 postulate
30 od→ord : {n : Level} → OD {n} → Ordinal {n}
31 ord→od : {n : Level} → Ordinal {n} → OD {n}
32
33 _∋_ : { n : Level } → ( a x : OD {n} ) → Set n
34 _∋_ {n} a x = def a ( od→ord x )
35
36 _c<_ : { n : Level } → ( x a : OD {n} ) → Set n
37 x c< a = a ∋ x
38 25
39 record _==_ {n : Level} ( a b : OD {n} ) : Set n where 26 record _==_ {n : Level} ( a b : OD {n} ) : Set n where
40 field 27 field
41 eq→ : ∀ { x : Ordinal {n} } → def a x → def b x 28 eq→ : ∀ { x : Ordinal {n} } → def a x → def b x
42 eq← : ∀ { x : Ordinal {n} } → def b x → def a x 29 eq← : ∀ { x : Ordinal {n} } → def b x → def a x
53 eq-sym eq = record { eq→ = eq← eq ; eq← = eq→ eq } 40 eq-sym eq = record { eq→ = eq← eq ; eq← = eq→ eq }
54 41
55 eq-trans : {n : Level} { x y z : OD {n} } → x == y → y == z → x == z 42 eq-trans : {n : Level} { x y z : OD {n} } → x == y → y == z → x == z
56 eq-trans x=y y=z = record { eq→ = λ t → eq→ y=z ( eq→ x=y t) ; eq← = λ t → eq← x=y ( eq← y=z t) } 43 eq-trans x=y y=z = record { eq→ = λ t → eq→ y=z ( eq→ x=y t) ; eq← = λ t → eq← x=y ( eq← y=z t) }
57 44
45 od∅ : {n : Level} → OD {n}
46 od∅ {n} = record { def = λ _ → Lift n ⊥ }
47
48 postulate
49 od→ord : {n : Level} → OD {n} → Ordinal {n}
50 ord→od : {n : Level} → Ordinal {n} → OD {n}
51 c<→o< : {n : Level} {x y : OD {n} } → def y ( od→ord x ) → od→ord x o< od→ord y
52 o<→c< : {n : Level} {x y : Ordinal {n} } → x o< y → def (ord→od y) x
53 oiso : {n : Level} {x : OD {n}} → ord→od ( od→ord x ) ≡ x
54 diso : {n : Level} {x : Ordinal {n}} → od→ord ( ord→od x ) ≡ x
55 sup-o : {n : Level } → ( Ordinal {n} → Ordinal {n}) → Ordinal {n}
56 sup-o< : {n : Level } → ( ψ : Ordinal {n} → Ordinal {n}) → ∀ {x : Ordinal {n}} → ψ x o< sup-o ψ
57
58 _∋_ : { n : Level } → ( a x : OD {n} ) → Set n
59 _∋_ {n} a x = def a ( od→ord x )
60
61 _c<_ : { n : Level } → ( x a : OD {n} ) → Set n
62 x c< a = a ∋ x
63
58 _c≤_ : {n : Level} → OD {n} → OD {n} → Set (suc n) 64 _c≤_ : {n : Level} → OD {n} → OD {n} → Set (suc n)
59 a c≤ b = (a ≡ b) ∨ ( b ∋ a ) 65 a c≤ b = (a ≡ b) ∨ ( b ∋ a )
60 66
61 od∅ : {n : Level} → OD {n} 67 def-subst : {n : Level } {Z : OD {n}} {X : Ordinal {n} }{z : OD {n}} {x : Ordinal {n} }→ def Z X → Z ≡ z → X ≡ x → def z x
62 od∅ {n} = record { def = λ _ → Lift n ⊥ } 68 def-subst df refl refl = df
63 69
64 postulate 70 sup-od : {n : Level } → ( OD {n} → OD {n}) → OD {n}
65 c<→o< : {n : Level} {x y : OD {n} } → x c< y → od→ord x o< od→ord y 71 sup-od ψ = ord→od ( sup-o ( λ x → od→ord (ψ (ord→od x ))) )
66 o<→c< : {n : Level} {x y : Ordinal {n} } → x o< y → ord→od x c< ord→od y 72
67 oiso : {n : Level} {x : OD {n}} → ord→od ( od→ord x ) ≡ x 73 sup-c< : {n : Level } → ( ψ : OD {n} → OD {n}) → ∀ {x : OD {n}} → def ( sup-od ψ ) (od→ord ( ψ x ))
68 diso : {n : Level} {x : Ordinal {n}} → od→ord ( ord→od x ) ≡ x 74 sup-c< {n} ψ {x} = def-subst {n} {_} {_} {sup-od ψ} {od→ord ( ψ x )}
69 sup-od : {n : Level } → ( OD {n} → OD {n}) → OD {n} 75 ( o<→c< ( sup-o< ( λ y → od→ord (ψ (ord→od y ))) {od→ord x } )) refl (cong ( λ k → od→ord (ψ k) ) oiso)
70 sup-c< : {n : Level } → ( ψ : OD {n} → OD {n}) → ∀ {x : OD {n}} → ψ x c< sup-od ψ
71 76
72 ∅1 : {n : Level} → ( x : OD {n} ) → ¬ ( x c< od∅ {n} ) 77 ∅1 : {n : Level} → ( x : OD {n} ) → ¬ ( x c< od∅ {n} )
73 ∅1 {n} x (lift ()) 78 ∅1 {n} x (lift ())
74 79
75 ∅3 : {n : Level} → { x : Ordinal {n}} → ( ∀(y : Ordinal {n}) → ¬ (y o< x ) ) → x ≡ o∅ {n} 80 ∅3 : {n : Level} → { x : Ordinal {n}} → ( ∀(y : Ordinal {n}) → ¬ (y o< x ) ) → x ≡ o∅ {n}
87 c3 lx (Φ .lx) d not | t | () 92 c3 lx (Φ .lx) d not | t | ()
88 c3 lx (OSuc .lx x₁) d not with not ( record { lv = lx ; ord = OSuc lx x₁ } ) 93 c3 lx (OSuc .lx x₁) d not with not ( record { lv = lx ; ord = OSuc lx x₁ } )
89 ... | t with t (case2 (s< s<refl ) ) 94 ... | t with t (case2 (s< s<refl ) )
90 c3 lx (OSuc .lx x₁) d not | t | () 95 c3 lx (OSuc .lx x₁) d not | t | ()
91 96
92 def-subst : {n : Level } {Z : OD {n}} {X : Ordinal {n} }{z : OD {n}} {x : Ordinal {n} }→ def Z X → Z ≡ z → X ≡ x → def z x
93 def-subst df refl refl = df
94
95 transitive : {n : Level } { z y x : OD {suc n} } → z ∋ y → y ∋ x → z ∋ x 97 transitive : {n : Level } { z y x : OD {suc n} } → z ∋ y → y ∋ x → z ∋ x
96 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 ) 98 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 )
97 ... | t = lemma0 (lemma t) where 99 ... | t = lemma0 (lemma t) where
98 lemma : ( od→ord x ) o< ( od→ord z ) → def ( ord→od ( od→ord z )) ( od→ord ( ord→od ( od→ord x ))) 100 lemma : ( od→ord x ) o< ( od→ord z ) → def ( ord→od ( od→ord z )) ( od→ord x)
99 lemma xo<z = o<→c< xo<z 101 lemma xo<z = o<→c< xo<z
100 lemma0 : def ( ord→od ( od→ord z )) ( od→ord ( ord→od ( od→ord x ))) → def z (od→ord x) 102 lemma0 : def ( ord→od ( od→ord z )) ( od→ord x) → def z (od→ord x)
101 lemma0 dz = def-subst {suc n} { ord→od ( od→ord z )} { od→ord ( ord→od ( od→ord x))} dz (oiso) (diso) 103 lemma0 dz = def-subst {suc n} { ord→od ( od→ord z )} { od→ord x} dz (oiso) refl
102 104
103 record Minimumo {n : Level } (x : Ordinal {n}) : Set (suc n) where 105 record Minimumo {n : Level } (x : Ordinal {n}) : Set (suc n) where
104 field 106 field
105 mino : Ordinal {n} 107 mino : Ordinal {n}
106 min<x : mino o< x 108 min<x : mino o< x
142 c≤-refl : {n : Level} → ( x : OD {n} ) → x c≤ x 144 c≤-refl : {n : Level} → ( x : OD {n} ) → x c≤ x
143 c≤-refl x = case1 refl 145 c≤-refl x = case1 refl
144 146
145 o<→o> : {n : Level} → { x y : OD {n} } → (x == y) → (od→ord x ) o< ( od→ord y) → ⊥ 147 o<→o> : {n : Level} → { x y : OD {n} } → (x == y) → (od→ord x ) o< ( od→ord y) → ⊥
146 o<→o> {n} {x} {y} record { eq→ = xy ; eq← = yx } (case1 lt) with 148 o<→o> {n} {x} {y} record { eq→ = xy ; eq← = yx } (case1 lt) with
147 yx (def-subst {n} {ord→od (od→ord y)} {od→ord (ord→od (od→ord x))} (o<→c< (case1 lt )) oiso diso ) 149 yx (def-subst {n} {ord→od (od→ord y)} {od→ord x} (o<→c< (case1 lt )) oiso refl )
148 ... | oyx with o<¬≡ (od→ord x) (od→ord x) refl (c<→o< oyx ) 150 ... | oyx with o<¬≡ (od→ord x) (od→ord x) refl (c<→o< oyx )
149 ... | () 151 ... | ()
150 o<→o> {n} {x} {y} record { eq→ = xy ; eq← = yx } (case2 lt) with 152 o<→o> {n} {x} {y} record { eq→ = xy ; eq← = yx } (case2 lt) with
151 yx (def-subst {n} {ord→od (od→ord y)} {od→ord (ord→od (od→ord x))} (o<→c< (case2 lt )) oiso diso ) 153 yx (def-subst {n} {ord→od (od→ord y)} {od→ord x} (o<→c< (case2 lt )) oiso refl )
152 ... | oyx with o<¬≡ (od→ord x) (od→ord x) refl (c<→o< oyx ) 154 ... | oyx with o<¬≡ (od→ord x) (od→ord x) refl (c<→o< oyx )
153 ... | () 155 ... | ()
154 156
155 ==→o≡ : {n : Level} → { x y : Ordinal {suc n} } → ord→od x == ord→od y → x ≡ y 157 ==→o≡ : {n : Level} → { x y : Ordinal {suc n} } → ord→od x == ord→od y → x ≡ y
156 ==→o≡ {n} {x} {y} eq with trio< {n} x y 158 ==→o≡ {n} {x} {y} eq with trio< {n} x y
159 ==→o≡ {n} {x} {y} eq | tri> ¬a ¬b c = ⊥-elim ( o<→o> (eq-sym eq) (o<-subst c (sym ord-iso) (sym ord-iso ))) 161 ==→o≡ {n} {x} {y} eq | tri> ¬a ¬b c = ⊥-elim ( o<→o> (eq-sym eq) (o<-subst c (sym ord-iso) (sym ord-iso )))
160 162
161 ≡-def : {n : Level} → { x : Ordinal {suc n} } → x ≡ od→ord (record { def = λ z → z o< x } ) 163 ≡-def : {n : Level} → { x : Ordinal {suc n} } → x ≡ od→ord (record { def = λ z → z o< x } )
162 ≡-def {n} {x} = ==→o≡ {n} (subst (λ k → ord→od x == k ) (sym oiso) lemma ) where 164 ≡-def {n} {x} = ==→o≡ {n} (subst (λ k → ord→od x == k ) (sym oiso) lemma ) where
163 lemma : ord→od x == record { def = λ z → z o< x } 165 lemma : ord→od x == record { def = λ z → z o< x }
164 eq→ lemma {w} z = subst₂ (λ k j → k o< j ) diso diso t where 166 eq→ lemma {w} z = subst₂ (λ k j → k o< j ) diso refl (subst (λ k → (od→ord ( ord→od w)) o< k ) diso t ) where
165 t : (od→ord ( ord→od w)) o< (od→ord (ord→od x)) 167 t : (od→ord ( ord→od w)) o< (od→ord (ord→od x))
166 t = c<→o< {suc n} {ord→od w} {ord→od x} (def-subst {suc n} {_} {_} {ord→od x} {_} z refl (sym diso)) 168 t = c<→o< {suc n} {ord→od w} {ord→od x} (def-subst {suc n} {_} {_} {ord→od x} {_} z refl (sym diso))
167 eq← lemma {w} z = def-subst {suc n} {_} {_} {ord→od x} {w} ( o<→c< {suc n} {_} {_} z ) refl diso 169 eq← lemma {w} z = def-subst {suc n} {_} {_} {ord→od x} {w} ( o<→c< {suc n} {_} {_} z ) refl refl
168 170
169 od≡-def : {n : Level} → { x : Ordinal {suc n} } → ord→od x ≡ record { def = λ z → z o< x } 171 od≡-def : {n : Level} → { x : Ordinal {suc n} } → ord→od x ≡ record { def = λ z → z o< x }
170 od≡-def {n} {x} = subst (λ k → ord→od x ≡ k ) oiso (cong ( λ k → ord→od k ) (≡-def {n} {x} )) 172 od≡-def {n} {x} = subst (λ k → ord→od x ≡ k ) oiso (cong ( λ k → ord→od k ) (≡-def {n} {x} ))
171 173
172 ∋→o< : {n : Level} → { a x : OD {suc n} } → a ∋ x → od→ord x o< od→ord a 174 ∋→o< : {n : Level} → { a x : OD {suc n} } → a ∋ x → od→ord x o< od→ord a
173 ∋→o< {n} {a} {x} lt = t where 175 ∋→o< {n} {a} {x} lt = t where
174 t : (od→ord x) o< (od→ord a) 176 t : (od→ord x) o< (od→ord a)
175 t = c<→o< {suc n} {x} {a} lt 177 t = c<→o< {suc n} {x} {a} lt
176 178
177 o<∋→ : {n : Level} → { a x : OD {suc n} } → od→ord x o< od→ord a → a ∋ x 179 o<∋→ : {n : Level} → { a x : OD {suc n} } → od→ord x o< od→ord a → a ∋ x
178 o<∋→ {n} {a} {x} lt = subst₂ (λ k j → def k j ) oiso diso t where 180 o<∋→ {n} {a} {x} lt = subst₂ (λ k j → def k j ) oiso refl t where
179 t : def (ord→od (od→ord a)) (od→ord (ord→od (od→ord x))) 181 t : def (ord→od (od→ord a)) (od→ord x)
180 t = o<→c< {suc n} {od→ord x} {od→ord a} lt 182 t = o<→c< {suc n} {od→ord x} {od→ord a} lt
181 183
182 o∅≡od∅ : {n : Level} → ord→od (o∅ {suc n}) ≡ od∅ {suc n} 184 o∅≡od∅ : {n : Level} → ord→od (o∅ {suc n}) ≡ od∅ {suc n}
183 o∅≡od∅ {n} with trio< {n} (o∅ {suc n}) (od→ord (od∅ {suc n} )) 185 o∅≡od∅ {n} with trio< {n} (o∅ {suc n}) (od→ord (od∅ {suc n} ))
184 o∅≡od∅ {n} | tri< a ¬b ¬c = ⊥-elim (lemma a) where 186 o∅≡od∅ {n} | tri< a ¬b ¬c = ⊥-elim (lemma a) where
197 o≡→¬c< : {n : Level} → { x y : OD {n} } → (od→ord x ) ≡ ( od→ord y) → ¬ x c< y 199 o≡→¬c< : {n : Level} → { x y : OD {n} } → (od→ord x ) ≡ ( od→ord y) → ¬ x c< y
198 o≡→¬c< {n} {x} {y} oeq lt = o<¬≡ (od→ord x) (od→ord y) (orefl oeq ) (c<→o< lt) 200 o≡→¬c< {n} {x} {y} oeq lt = o<¬≡ (od→ord x) (od→ord y) (orefl oeq ) (c<→o< lt)
199 201
200 tri-c< : {n : Level} → Trichotomous _==_ (_c<_ {suc n}) 202 tri-c< : {n : Level} → Trichotomous _==_ (_c<_ {suc n})
201 tri-c< {n} x y with trio< {n} (od→ord x) (od→ord y) 203 tri-c< {n} x y with trio< {n} (od→ord x) (od→ord y)
202 tri-c< {n} x y | tri< a ¬b ¬c = tri< (def-subst (o<→c< a) oiso diso) (o<→¬== a) ( o<→¬c> a ) 204 tri-c< {n} x y | tri< a ¬b ¬c = tri< (def-subst (o<→c< a) oiso refl) (o<→¬== a) ( o<→¬c> a )
203 tri-c< {n} x y | tri≈ ¬a b ¬c = tri≈ (o≡→¬c< b) (ord→== b) (o≡→¬c< (sym b)) 205 tri-c< {n} x y | tri≈ ¬a b ¬c = tri≈ (o≡→¬c< b) (ord→== b) (o≡→¬c< (sym b))
204 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) 206 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 refl)
205 207
206 c<> : {n : Level } { x y : OD {suc n}} → x c< y → y c< x → ⊥ 208 c<> : {n : Level } { x y : OD {suc n}} → x c< y → y c< x → ⊥
207 c<> {n} {x} {y} x<y y<x with tri-c< x y 209 c<> {n} {x} {y} x<y y<x with tri-c< x y
208 c<> {n} {x} {y} x<y y<x | tri< a ¬b ¬c = ¬c y<x 210 c<> {n} {x} {y} x<y y<x | tri< a ¬b ¬c = ¬c y<x
209 c<> {n} {x} {y} x<y y<x | tri≈ ¬a b ¬c = o<→o> b ( c<→o< x<y ) 211 c<> {n} {x} {y} x<y y<x | tri≈ ¬a b ¬c = o<→o> b ( c<→o< x<y )
238 lemma ox ne with is-o∅ ox 240 lemma ox ne with is-o∅ ox
239 lemma ox ne | yes refl with ne ( ord→== lemma1 ) where 241 lemma ox ne | yes refl with ne ( ord→== lemma1 ) where
240 lemma1 : od→ord (ord→od o∅) ≡ od→ord od∅ 242 lemma1 : od→ord (ord→od o∅) ≡ od→ord od∅
241 lemma1 = cong ( λ k → od→ord k ) o∅≡od∅ 243 lemma1 = cong ( λ k → od→ord k ) o∅≡od∅
242 lemma o∅ ne | yes refl | () 244 lemma o∅ ne | yes refl | ()
243 lemma ox ne | no ¬p = subst ( λ k → def (ord→od ox) (od→ord k) ) o∅≡od∅ (o<→c< (∅5 ¬p)) 245 lemma ox ne | no ¬p = subst ( λ k → def (ord→od ox) (od→ord k) ) o∅≡od∅ (o<→c< (subst (λ k → k o< ox ) (sym diso) (∅5 ¬p)) )
244 246
245 -- open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ ) 247 -- open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ )
246 -- postulate f-extensionality : { n : Level} → Relation.Binary.PropositionalEquality.Extensionality (suc n) (suc (suc n)) 248 -- postulate f-extensionality : { n : Level} → Relation.Binary.PropositionalEquality.Extensionality (suc n) (suc (suc n))
247 249
248 Def : OD {suc n} → OD {suc n} 250 Def : {n : Level} → OD {suc n} → OD {suc n}
249 Def X = record { def = λ y → ∀ (x : Ordinal {suc n} ) → def X x → def (ord→od y) x } 251 Def {n} X = record { def = λ y → ∀ (x : Ordinal {suc n} ) → def X x → def (ord→od y) x }
250 252
251 253
252 OD→ZF : {n : Level} → ZF {suc (suc n)} {suc n} 254 OD→ZF : {n : Level} → ZF {suc (suc n)} {suc n}
253 OD→ZF {n} = record { 255 OD→ZF {n} = record {
254 ZFSet = OD {suc n} 256 ZFSet = OD {suc n}
311 proj2 (pair A B ) = omax-y {n} (od→ord A) (od→ord B) 313 proj2 (pair A B ) = omax-y {n} (od→ord A) (od→ord B)
312 empty : (x : OD {suc n} ) → ¬ (od∅ ∋ x) 314 empty : (x : OD {suc n} ) → ¬ (od∅ ∋ x)
313 empty x () 315 empty x ()
314 --- Power X = record { def = λ t → ∀ (x : Ordinal {suc n} ) → def (ord→od t) x → def X x } 316 --- Power X = record { def = λ t → ∀ (x : Ordinal {suc n} ) → def (ord→od t) x → def X x }
315 power→ : (A t : OD) → Power A ∋ t → {x : OD} → t ∋ x → A ∋ x 317 power→ : (A t : OD) → Power A ∋ t → {x : OD} → t ∋ x → A ∋ x
316 power→ A t P∋t {x} t∋x = ? 318 power→ A t P∋t {x} t∋x = {!!}
317 power← : (A t : OD) → ({x : OD} → (t ∋ x → A ∋ x)) → Power A ∋ t 319 power← : (A t : OD) → ({x : OD} → (t ∋ x → A ∋ x)) → Power A ∋ t
318 power← A t t→A z _ = ? 320 power← A t t→A z _ = {!!}
319 union-u : (X z : OD {suc n}) → Union X ∋ z → OD {suc n} 321 union-u : (X z : OD {suc n}) → Union X ∋ z → OD {suc n}
320 union-u X z U>z = ord→od ( osuc ( od→ord z ) ) 322 union-u X z U>z = ord→od ( osuc ( od→ord z ) )
321 union-lemma-u : {X z : OD {suc n}} → (U>z : Union X ∋ z ) → union-u X z U>z ∋ z 323 union-lemma-u : {X z : OD {suc n}} → (U>z : Union X ∋ z ) → union-u X z U>z ∋ z
322 union-lemma-u {X} {z} U>z = lemma <-osuc where 324 union-lemma-u {X} {z} U>z = lemma <-osuc where
323 lemma : {oz ooz : Ordinal {suc n}} → oz o< ooz → def (ord→od ooz) oz 325 lemma : {oz ooz : Ordinal {suc n}} → oz o< ooz → def (ord→od ooz) oz
324 lemma {oz} {ooz} lt = def-subst {suc n} {ord→od ooz} (o<→c< lt) refl diso 326 lemma {oz} {ooz} lt = def-subst {suc n} {ord→od ooz} (o<→c< lt) refl refl
325 union→ : (X z u : OD) → (X ∋ u) ∧ (u ∋ z) → Union X ∋ z 327 union→ : (X z u : OD) → (X ∋ u) ∧ (u ∋ z) → Union X ∋ z
326 union→ X y u xx with trio< ( od→ord u ) ( osuc ( od→ord y )) 328 union→ X y u xx with trio< ( od→ord u ) ( osuc ( od→ord y ))
327 union→ X y u xx | tri< a ¬b ¬c with osuc-< a (c<→o< (proj2 xx)) 329 union→ X y u xx | tri< a ¬b ¬c with osuc-< a (c<→o< (proj2 xx))
328 union→ X y u xx | tri< a ¬b ¬c | () 330 union→ X y u xx | tri< a ¬b ¬c | ()
329 union→ X y u xx | tri≈ ¬a b ¬c = lemma b (c<→o< (proj1 xx )) where 331 union→ X y u xx | tri≈ ¬a b ¬c = lemma b (c<→o< (proj1 xx )) where
330 lemma : {oX ou ooy : Ordinal {suc n}} → ou ≡ ooy → ou o< oX → ooy o< oX 332 lemma : {oX ou ooy : Ordinal {suc n}} → ou ≡ ooy → ou o< oX → ooy o< oX
331 lemma refl lt = lt 333 lemma refl lt = lt
332 union→ X y u xx | tri> ¬a ¬b c = ordtrans {suc n} {osuc ( od→ord y )} {od→ord u} {od→ord X} c ( c<→o< (proj1 xx )) 334 union→ X y u xx | tri> ¬a ¬b c = ordtrans {suc n} {osuc ( od→ord y )} {od→ord u} {od→ord X} c ( c<→o< (proj1 xx ))
333 union← : (X z : OD) (X∋z : Union X ∋ z) → (X ∋ union-u X z X∋z) ∧ (union-u X z X∋z ∋ z ) 335 union← : (X z : OD) (X∋z : Union X ∋ z) → (X ∋ union-u X z X∋z) ∧ (union-u X z X∋z ∋ z )
334 union← X z X∋z = record { proj1 = def-subst {suc n} (o<→c< X∋z) oiso refl ; proj2 = union-lemma-u X∋z } 336 union← X z X∋z = record { proj1 = def-subst {suc n} {_} {_} {X} {od→ord (union-u X z X∋z)} (o<→c< X∋z) oiso (sym diso) ; proj2 = union-lemma-u X∋z }
335 ψiso : {ψ : OD {suc n} → Set (suc n)} {x y : OD {suc n}} → ψ x → x ≡ y → ψ y 337 ψiso : {ψ : OD {suc n} → Set (suc n)} {x y : OD {suc n}} → ψ x → x ≡ y → ψ y
336 ψiso {ψ} t refl = t 338 ψiso {ψ} t refl = t
337 selection : {ψ : OD → Set (suc n)} {X y : OD} → ((X ∋ y) ∧ ψ y) ⇔ (Select X ψ ∋ y) 339 selection : {ψ : OD → Set (suc n)} {X y : OD} → ((X ∋ y) ∧ ψ y) ⇔ (Select X ψ ∋ y)
338 selection {ψ} {X} {y} = record { 340 selection {ψ} {X} {y} = record {
339 proj1 = λ cond → record { proj1 = proj1 cond ; proj2 = ψiso {ψ} (proj2 cond) (sym oiso) } 341 proj1 = λ cond → record { proj1 = proj1 cond ; proj2 = ψiso {ψ} (proj2 cond) (sym oiso) }
376 uxxx-ord {x} = trans (cong (λ k → od→ord k ) uxxx-union) (==→o≡ (subst₂ (λ j k → j == k ) (sym oiso) (sym od≡-def ) uxxx-2 )) 378 uxxx-ord {x} = trans (cong (λ k → od→ord k ) uxxx-union) (==→o≡ (subst₂ (λ j k → j == k ) (sym oiso) (sym od≡-def ) uxxx-2 ))
377 omega = record { lv = Suc Zero ; ord = Φ 1 } 379 omega = record { lv = Suc Zero ; ord = Φ 1 }
378 infinite : OD {suc n} 380 infinite : OD {suc n}
379 infinite = ord→od ( omega ) 381 infinite = ord→od ( omega )
380 infinity∅ : ord→od ( omega ) ∋ od∅ {suc n} 382 infinity∅ : ord→od ( omega ) ∋ od∅ {suc n}
381 infinity∅ = def-subst {suc n} {_} {od→ord (ord→od o∅)} {infinite} {od→ord od∅} 383 infinity∅ = def-subst {suc n} {_} {o∅} {infinite} {od→ord od∅}
382 (o<→c< ( case1 (s≤s z≤n ))) refl (cong (λ k → od→ord k) o∅≡od∅ ) 384 (o<→c< ( case1 (s≤s z≤n ))) refl (subst ( λ k → ( k ≡ od→ord od∅ )) diso (cong (λ k → od→ord k) o∅≡od∅ ))
383 infinite∋x : (x : OD) → infinite ∋ x → od→ord x o< omega 385 infinite∋x : (x : OD) → infinite ∋ x → od→ord x o< omega
384 infinite∋x x lt = subst (λ k → od→ord x o< k ) diso t where 386 infinite∋x x lt = subst (λ k → od→ord x o< k ) diso t where
385 t : od→ord x o< od→ord (ord→od (omega)) 387 t : od→ord x o< od→ord (ord→od (omega))
386 t = ∋→o< {n} {infinite} {x} lt 388 t = ∋→o< {n} {infinite} {x} lt
387 infinite∋uxxx : (x : OD) → osuc (od→ord x) o< omega → infinite ∋ Union (x , (x , x )) 389 infinite∋uxxx : (x : OD) → osuc (od→ord x) o< omega → infinite ∋ Union (x , (x , x ))