comparison Ordinals.agda @ 410:6dcea4c7cba1

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 29 Jul 2020 12:42:05 +0900
parents 43b0a6ca7602
children 6eaab908130e
comparison
equal deleted inserted replaced
409:3fba5f805e50 410:6dcea4c7cba1
263 y<nx = osuc< (sym eq) 263 y<nx = osuc< (sym eq)
264 264
265 omax<next : {x y : Ordinal} → x o< y → omax x y o< next y 265 omax<next : {x y : Ordinal} → x o< y → omax x y o< next y
266 omax<next {x} {y} x<y = subst (λ k → k o< next y ) (omax< _ _ x<y ) (osuc<nx x<nx) 266 omax<next {x} {y} x<y = subst (λ k → k o< next y ) (omax< _ _ x<y ) (osuc<nx x<nx)
267 267
268 x<ny→≡next : {x y : Ordinal} → x o< y → y o< next x → next x ≡ next y
269 x<ny→≡next {x} {y} x<y y<nx with trio< (next x) (next y)
270 x<ny→≡next {x} {y} x<y y<nx | tri< a ¬b ¬c = -- x < y < next x < next y ∧ next x = osuc z
271 ⊥-elim ( ¬nx<nx y<nx a (λ z eq → o<¬≡ (sym eq) (osuc<nx (subst (λ k → z o< k ) (sym eq) <-osuc ))))
272 x<ny→≡next {x} {y} x<y y<nx | tri≈ ¬a b ¬c = b
273 x<ny→≡next {x} {y} x<y y<nx | tri> ¬a ¬b c = -- x < y < next y < next x
274 ⊥-elim ( ¬nx<nx (ordtrans x<y x<nx) c (λ z eq → o<¬≡ (sym eq) (osuc<nx (subst (λ k → z o< k ) (sym eq) <-osuc ))))
275
276 ≤next : {x y : Ordinal} → x o< y → next x o≤ next y
277 ≤next {x} {y} x<y with trio< (next x) y
278 ≤next {x} {y} x<y | tri< a ¬b ¬c = ordtrans a (ordtrans x<nx <-osuc )
279 ≤next {x} {y} x<y | tri≈ ¬a refl ¬c = (ordtrans x<nx <-osuc )
280 ≤next {x} {y} x<y | tri> ¬a ¬b c = o≤-refl (x<ny→≡next x<y c)
281
282 x<ny→≤next : {x y : Ordinal} → x o< next y → next x o≤ next y
283 x<ny→≤next {x} {y} x<ny with trio< x y
284 x<ny→≤next {x} {y} x<ny | tri< a ¬b ¬c = ≤next a
285 x<ny→≤next {x} {y} x<ny | tri≈ ¬a refl ¬c = o≤-refl refl
286 x<ny→≤next {x} {y} x<ny | tri> ¬a ¬b c = o≤-refl (sym ( x<ny→≡next c x<ny ))
287
288 omax<nomax : {x y : Ordinal} → omax x y o< next (omax x y )
289 omax<nomax {x} {y} with trio< x y
290 omax<nomax {x} {y} | tri< a ¬b ¬c = subst (λ k → osuc y o< k ) nexto≡ (osuc<nx x<nx )
291 omax<nomax {x} {y} | tri≈ ¬a refl ¬c = subst (λ k → osuc x o< k ) nexto≡ (osuc<nx x<nx )
292 omax<nomax {x} {y} | tri> ¬a ¬b c = subst (λ k → osuc x o< k ) nexto≡ (osuc<nx x<nx )
293
294 omax<nx : {x y z : Ordinal} → x o< next z → y o< next z → omax x y o< next z
295 omax<nx {x} {y} {z} x<nz y<nz with trio< x y
296 omax<nx {x} {y} {z} x<nz y<nz | tri< a ¬b ¬c = osuc<nx y<nz
297 omax<nx {x} {y} {z} x<nz y<nz | tri≈ ¬a refl ¬c = osuc<nx y<nz
298 omax<nx {x} {y} {z} x<nz y<nz | tri> ¬a ¬b c = osuc<nx x<nz
299
268 record OrdinalSubset (maxordinal : Ordinal) : Set (suc n) where 300 record OrdinalSubset (maxordinal : Ordinal) : Set (suc n) where
269 field 301 field
270 os→ : (x : Ordinal) → x o< maxordinal → Ordinal 302 os→ : (x : Ordinal) → x o< maxordinal → Ordinal
271 os← : Ordinal → Ordinal 303 os← : Ordinal → Ordinal
272 os←limit : (x : Ordinal) → os← x o< maxordinal 304 os←limit : (x : Ordinal) → os← x o< maxordinal