comparison Ordinals.agda @ 320:21203fe0342f

infinite ...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 03 Jul 2020 21:58:01 +0900
parents d4802179a66f
children a81824502ebd
comparison
equal deleted inserted replaced
319:eef432aa8dfb 320:21203fe0342f
11 open import Data.Unit using ( ⊤ ) 11 open import Data.Unit using ( ⊤ )
12 open import Relation.Nullary 12 open import Relation.Nullary
13 open import Relation.Binary 13 open import Relation.Binary
14 open import Relation.Binary.Core 14 open import Relation.Binary.Core
15 15
16 record IsOrdinals {n : Level} (ord : Set n) (o∅ : ord ) (osuc : ord → ord ) (_o<_ : ord → ord → Set n) : Set (suc (suc n)) where 16 record IsOrdinals {n : Level} (ord : Set n) (o∅ : ord ) (osuc : ord → ord ) (_o<_ : ord → ord → Set n) (next : ord → ord ) : Set (suc (suc n)) where
17 field 17 field
18 Otrans : {x y z : ord } → x o< y → y o< z → x o< z 18 Otrans : {x y z : ord } → x o< y → y o< z → x o< z
19 OTri : Trichotomous {n} _≡_ _o<_ 19 OTri : Trichotomous {n} _≡_ _o<_
20 ¬x<0 : { x : ord } → ¬ ( x o< o∅ ) 20 ¬x<0 : { x : ord } → ¬ ( x o< o∅ )
21 <-osuc : { x : ord } → x o< osuc x 21 <-osuc : { x : ord } → x o< osuc x
22 osuc-≡< : { a x : ord } → x o< osuc a → (x ≡ a ) ∨ (x o< a) 22 osuc-≡< : { a x : ord } → x o< osuc a → (x ≡ a ) ∨ (x o< a)
23 is-limit : { x : ord } → Dec ( ¬ ((y : ord) → x ≡ osuc y) ) 23 is-limit : ( x : ord ) → Dec ( ¬ ((y : ord) → x ≡ osuc y) )
24 next-limit : { x : ord } → (x o< next x )∧ (¬ ((y : ord) → next x ≡ osuc y) )
24 TransFinite : { ψ : ord → Set (suc n) } 25 TransFinite : { ψ : ord → Set (suc n) }
25 → ( (x : ord) → ( (y : ord ) → y o< x → ψ y ) → ψ x ) 26 → ( (x : ord) → ( (y : ord ) → y o< x → ψ y ) → ψ x )
26 → ∀ (x : ord) → ψ x 27 → ∀ (x : ord) → ψ x
27 28
28 29
30 field 31 field
31 ord : Set n 32 ord : Set n
32 o∅ : ord 33 o∅ : ord
33 osuc : ord → ord 34 osuc : ord → ord
34 _o<_ : ord → ord → Set n 35 _o<_ : ord → ord → Set n
35 isOrdinal : IsOrdinals ord o∅ osuc _o<_ 36 next : ord → ord
37 isOrdinal : IsOrdinals ord o∅ osuc _o<_ next
36 38
37 module inOrdinal {n : Level} (O : Ordinals {n} ) where 39 module inOrdinal {n : Level} (O : Ordinals {n} ) where
38 40
39 Ordinal : Set n 41 Ordinal : Set n
40 Ordinal = Ordinals.ord O 42 Ordinal = Ordinals.ord O
45 osuc : Ordinal → Ordinal 47 osuc : Ordinal → Ordinal
46 osuc = Ordinals.osuc O 48 osuc = Ordinals.osuc O
47 49
48 o∅ : Ordinal 50 o∅ : Ordinal
49 o∅ = Ordinals.o∅ O 51 o∅ = Ordinals.o∅ O
52
53 next : Ordinal → Ordinal
54 next = Ordinals.next O
50 55
51 ¬x<0 = IsOrdinals.¬x<0 (Ordinals.isOrdinal O) 56 ¬x<0 = IsOrdinals.¬x<0 (Ordinals.isOrdinal O)
52 osuc-≡< = IsOrdinals.osuc-≡< (Ordinals.isOrdinal O) 57 osuc-≡< = IsOrdinals.osuc-≡< (Ordinals.isOrdinal O)
53 <-osuc = IsOrdinals.<-osuc (Ordinals.isOrdinal O) 58 <-osuc = IsOrdinals.<-osuc (Ordinals.isOrdinal O)
54 TransFinite = IsOrdinals.TransFinite (Ordinals.isOrdinal O) 59 TransFinite = IsOrdinals.TransFinite (Ordinals.isOrdinal O)
60 next-limit = IsOrdinals.next-limit (Ordinals.isOrdinal O)
55 61
56 o<-dom : { x y : Ordinal } → x o< y → Ordinal 62 o<-dom : { x y : Ordinal } → x o< y → Ordinal
57 o<-dom {x} _ = x 63 o<-dom {x} _ = x
58 64
59 o<-cod : { x y : Ordinal } → x o< y → Ordinal 65 o<-cod : { x y : Ordinal } → x o< y → Ordinal