annotate src/cardinal.agda @ 1397:94baa4bdfd7d

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 28 Jun 2023 07:34:01 +0900
parents ac854f01352b
children d586aaa9b0bd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1175
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1174
diff changeset
1 {-# OPTIONS --allow-unsolved-metas #-}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1174
diff changeset
2
1387
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
3 open import Level hiding (suc ; zero )
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 open import Ordinals
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 module cardinal {n : Level } (O : Ordinals {n}) where
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import logic
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
8 -- import OD
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
9 import OD hiding ( _⊆_ )
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
10
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 import ODC
1387
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
12 open import Data.Nat
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 open import Relation.Binary.PropositionalEquality
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
14 open import Data.Nat.Properties
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 open import Data.Empty
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 open import Relation.Nullary
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 open import Relation.Binary
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 open import Relation.Binary.Core
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 open inOrdinal O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 open OD O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 open OD.OD
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 open ODAxiom odAxiom
1218
362e43a1477c brain damaged fix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1175
diff changeset
24 open import ZProduct O
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 import OrdUtil
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 import ODUtil
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28 open Ordinals.Ordinals O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 open Ordinals.IsOrdinals isOrdinal
1300
47d3cc596d68 remove next
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1284
diff changeset
30 -- open Ordinals.IsNext isNext
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 open OrdUtil O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 open ODUtil O
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
34 _⊆_ : ( A B : HOD ) → Set n
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
35 _⊆_ A B = {x : Ordinal } → odef A x → odef B x
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
36
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 open _∧_
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 open _∨_
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 open Bool
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 open _==_
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 open HOD
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
45 record OrdBijection (A B : Ordinal ) : Set n where
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 field
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 fun← : (x : Ordinal ) → odef (* A) x → Ordinal
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 fun→ : (x : Ordinal ) → odef (* B) x → Ordinal
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 funB : (x : Ordinal ) → ( lt : odef (* A) x ) → odef (* B) ( fun← x lt )
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 funA : (x : Ordinal ) → ( lt : odef (* B) x ) → odef (* A) ( fun→ x lt )
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 fiso← : (x : Ordinal ) → ( lt : odef (* B) x ) → fun← ( fun→ x lt ) ( funA x lt ) ≡ x
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 fiso→ : (x : Ordinal ) → ( lt : odef (* A) x ) → fun→ ( fun← x lt ) ( funB x lt ) ≡ x
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
53
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
54 ordbij-refl : { a b : Ordinal } → a ≡ b → OrdBijection a b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
55 ordbij-refl {a} refl = record {
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
56 fun← = λ x _ → x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
57 ; fun→ = λ x _ → x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
58 ; funB = λ x lt → lt
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
59 ; funA = λ x lt → lt
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
60 ; fiso← = λ x lt → refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
61 ; fiso→ = λ x lt → refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
62 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
63
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
64 open Injection
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
65 open OrdBijection
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
66
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
67 record IsImage (a b : Ordinal) (iab : Injection a b ) (x : Ordinal ) : Set n where
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
68 field
1387
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
69 y : Ordinal
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
70 ay : odef (* a) y
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
71 x=fy : x ≡ i→ iab _ ay
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
72
1391
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
73 Image : (a : Ordinal) { b : Ordinal } → Injection a b → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
74 Image a {b} iab = record { od = record { def = λ x → IsImage a b iab x } ; odmax = b ; <odmax = im00 } where
1387
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
75 im00 : {x : Ordinal } → IsImage a b iab x → x o< b
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
76 im00 {x} record { y = y ; ay = ay ; x=fy = x=fy } = subst₂ ( λ j k → j o< k) (trans &iso (sym x=fy)) &iso
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
77 (c<→o< (subst ( λ k → odef (* b) k) (sym &iso) (iB iab y ay)) )
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
78
1391
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
79 record IsInverseImage (a b : Ordinal) (iab : Injection a b ) (x y : Ordinal ) : Set n where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
80 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
81 ax : odef (* a) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
82 x=fy : y ≡ i→ iab x ax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
83
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
84 InverseImage : {a : Ordinal} ( b : Ordinal ) → Injection a b → (y : Ordinal ) → HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
85 InverseImage {a} b iab y = record { od = record { def = λ x → IsInverseImage a b iab x y } ; odmax = & (* a) ; <odmax = im00 } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
86 im00 : {x : Ordinal } → IsInverseImage a b iab x y → x o< & (* a)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
87 im00 {x} record { ax = ax ; x=fy = x=fy } = odef< ax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
88
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1390
diff changeset
89 Image⊆b : { a b : Ordinal } → (iab : Injection a b) → Image a iab ⊆ * b
1387
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
90 Image⊆b {a} {b} iab {x} record { y = y ; ay = ay ; x=fy = x=fy } = subst (λ k → odef (* b) k) (sym x=fy) (iB iab y ay)
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
91
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 _=c=_ : ( A B : HOD ) → Set n
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
93 A =c= B = OrdBijection ( & A ) ( & B )
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
94
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
95 c=→≡ : {A B : HOD} → A =c= B → (A ≡ ?) ∧ (B ≡ ?)
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
96 c=→≡ = ?
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
97
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
98 ≡→c= : {A B : HOD} → A ≡ B → A =c= B
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
99 ≡→c= = ?
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
100
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
101 open import BAlgebra O
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
102
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
103 _-_ : (a b : Ordinal ) → Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
104 a - b = & ( (* a) \ (* b) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
105
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
106 -→< : (a b : Ordinal ) → (a - b) o≤ a
1387
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
107 -→< a b = subst₂ (λ j k → j o≤ k) &iso &iso ( ⊆→o≤ ( λ {x} a-b → proj1 (subst ( λ k → odef k x) *iso a-b) ) )
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
108
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
109 b-a⊆b : {a b x : Ordinal } → odef (* (b - a)) x → odef (* b) x
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
110 b-a⊆b {a} {b} {x} lt with subst (λ k → odef k x) *iso lt
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
111 ... | ⟪ bx , ¬ax ⟫ = bx
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
112
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
113 open Data.Nat
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
114
1388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1387
diff changeset
115 Injection-⊆ : {a b c : Ordinal } → * c ⊆ * a → Injection a b → Injection c b
1389
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1388
diff changeset
116 Injection-⊆ {a} {b} {c} le f = record { i→ = λ x cx → i→ f x (le cx) ; iB = λ x cx → iB f x (le cx)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1388
diff changeset
117 ; inject = λ x y ix iy eq → inject f x y (le ix) (le iy) eq }
1388
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1387
diff changeset
118
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
119 Injection-∙ : {a b c : Ordinal } → Injection a b → Injection b c → Injection a c
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
120 Injection-∙ {a} {b} {c} f g = record { i→ = λ x ax → i→ g (i→ f x ax) (iB f x ax) ; iB = λ x ax → iB g (i→ f x ax) (iB f x ax)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
121 ; inject = λ x y ix iy eq → inject f x y ix iy (inject g (i→ f x ix) (i→ f y iy) (iB f x ix) (iB f y iy) eq) }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
122
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
123
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
124 Bernstein : {a b : Ordinal } → Injection a b → Injection b a → OrdBijection a b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
125 Bernstein {a} {b} iab iba = be00 where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
126 be05 : {a b : Ordinal } → a o< b → Injection a b → Injection b a → ⊥
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
127 be05 {a} {b} a<b iab iba = TransFinite0 {λ x → (b : Ordinal) → x o< b → Injection x b → Injection b x → ⊥ }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
128 ind a b a<b iab iba where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
129 ind :(x : Ordinal) →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
130 ((y : Ordinal) → y o< x → (b : Ordinal) → y o< b → Injection y b → Injection b y → ⊥ ) →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
131 (b : Ordinal) → x o< b → Injection x b → Injection b x → ⊥
1392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
132 ind a prev b x<b (f @ record { i→ = fab ; iB = b∋fab ; inject = fab-inject })
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
133 ( g @ record { i→ = fba ; iB = a∋fba ; inject = fba-inject })= prev _ ? _ ? Uf fU where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
134
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
135 gf : Injection a a
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
136 gf = record { i→ = λ x ax → fba (fab x ax) (b∋fab x ax) ; iB = λ x ax → a∋fba _ (b∋fab x ax)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
137 ; inject = λ x y ax ay eq → fab-inject _ _ ax ay ( fba-inject _ _ (b∋fab _ ax) (b∋fab _ ay) eq) }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
138
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
139 data gfImage : (i : ℕ) (x : Ordinal) → Set n where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
140 a-g : {x : Ordinal} → (ax : odef (* a) x ) → (¬ib : ¬ ( IsImage b a g x )) → gfImage 0 x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
141 next-gf : {x y : Ordinal} → {i : ℕ} → (gfiy : gfImage i y )→ (ix : IsImage a a gf x) → gfImage (suc i) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
142
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
143 a∋gfImage : (i : ℕ) → {x : Ordinal } → gfImage i x → odef (* a) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
144 a∋gfImage 0 {x} (a-g ax ¬ib) = ax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
145 a∋gfImage (suc i) {x} (next-gf lt record { y = y ; ay = ay ; x=fy = x=fy }) = subst (λ k → odef (* a) k ) (sym x=fy) (a∋fba _ (b∋fab y ay) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
146
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
147 C : ℕ → HOD -- Image {& (C i)} {a} (gf i) does not work
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
148 C i = record { od = record { def = gfImage i } ; odmax = & (* a) ; <odmax = λ lt → odef< (a∋gfImage i lt) }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
149
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
150 record CN (x : Ordinal) : Set n where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
151 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
152 i : ℕ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
153 gfix : gfImage i x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
154
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
155 UC : HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
156 UC = record { od = record { def = λ x → CN x } ; odmax = & (* a) ; <odmax = λ lt → odef< (a∋gfImage (CN.i lt) (CN.gfix lt)) }
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
157
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
158 b-UC : HOD
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
159 b-UC = record { od = record { def = λ x → odef (* b) x ∧ (¬ CN x) } ; odmax = & (* b) ; <odmax = λ lt → odef< (proj1 lt) }
1392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
160
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
161 -- UC ⊆ * a
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
162 -- f : UC → Image f UC is injection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
163 -- g : Image f UC → UC is injection
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
164
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
165 UC⊆a : * (& UC) ⊆ * a
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
166 UC⊆a {x} lt = a∋gfImage (CN.i be02) (CN.gfix be02) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
167 be02 : CN x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
168 be02 = subst (λ k → odef k x) *iso lt
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
169
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
170 b-UC⊆b : * (& b-UC) ⊆ * b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
171 b-UC⊆b {x} lt = proj1 ( subst (λ k → odef k x) *iso lt )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
172
1394
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
173 open import Relation.Binary.HeterogeneousEquality as HE using (_≅_ )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
174
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
175 fab-refl : {x : Ordinal } → {ax ax1 : odef (* a) x} → fab x ax ≡ fab x ax1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
176 fab-refl {x} {ax} {ax1} = cong (λ k → fab x k) ( HE.≅-to-≡ ( ∋-irr {* a} ax ax1 ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
177
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
178 fba-refl : {x : Ordinal } → {bx bx1 : odef (* b) x} → fba x bx ≡ fba x bx1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
179 fba-refl {x} {bx} {bx1} = cong (λ k → fba x k) ( HE.≅-to-≡ ( ∋-irr {* b} bx bx1 ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
180
1396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
181 fab-eq : {x y : Ordinal } → {ax : odef (* a) x} {ax1 : odef (* a) y} → x ≡ y → fab x ax ≡ fab y ax1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
182 fab-eq {x} {x} {ax} {ax1} refl = cong (λ k → fab x k) ( HE.≅-to-≡ ( ∋-irr {* a} ax ax1 ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
183
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
184 fba-eq : {x y : Ordinal } → {bx : odef (* b) x} {bx1 : odef (* b) y} → x ≡ y → fba x bx ≡ fba y bx1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
185 fba-eq {x} {x} {bx} {bx1} refl = cong (λ k → fba x k) ( HE.≅-to-≡ ( ∋-irr {* b} bx bx1 ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
186
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
187 be10 : Injection (& b-UC) (& (Image (& b-UC) {a} (Injection-⊆ b-UC⊆b g) ))
1396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
188 be10 = record { i→ = be12 ; iB = be13 ; inject = be14 } where
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
189 be12 : (x : Ordinal) → odef (* (& b-UC)) x → Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
190 be12 x lt = i→ g x (proj1 be02) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
191 be02 : odef (* b) x ∧ ( ¬ CN x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
192 be02 = subst (λ k → odef k x) *iso lt
1394
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
193 be13 : (x : Ordinal) (lt : odef (* (& b-UC)) x) → odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) (be12 x lt)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
194 be13 x lt = subst (λ k → odef k (be12 x lt)) (sym *iso) record { y = x ; ay = subst (λ k → odef k x) (sym *iso) be02 ; x=fy = fba-refl } where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
195 be02 : odef (* b) x ∧ ( ¬ CN x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1393
diff changeset
196 be02 = subst (λ k → odef k x) *iso lt
1396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
197 be14 : (x y : Ordinal) (ltx : odef (* (& b-UC)) x) (lty : odef (* (& b-UC)) y) → be12 x ltx ≡ be12 y lty → x ≡ y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
198 be14 x y ltx lty eq = inject g _ _ (proj1 (subst (λ k → odef k x) *iso ltx)) (proj1 (subst (λ k → odef k y) *iso lty)) eq
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
199
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
200 be11 : Injection (& (Image (& b-UC) {a} (Injection-⊆ b-UC⊆b g) )) (& b-UC)
1396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
201 be11 = record { i→ = be13 ; iB = be14 ; inject = be15 } where
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
202 be13 : (x : Ordinal) → odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x → Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
203 be13 x lt with subst (λ k → odef k x) *iso lt
1396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
204 ... | record { y = y ; ay = ay ; x=fy = x=fy } = y -- g⁻¹ x=fy : x ≡ fba y (proj1 (subst (λ k → OD.def (od k) y) *iso ay))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
205 be14 : (x : Ordinal) (lt : odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x) → odef (* (& b-UC)) (be13 x lt)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
206 be14 x lt with subst (λ k → odef k x) *iso lt
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
207 ... | record { y = y ; ay = ay ; x=fy = x=fy } = ay
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
208 be15 : (x y : Ordinal) (ltx : odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) x)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
209 (lty : odef (* (& (Image (& b-UC) (Injection-⊆ b-UC⊆b g)))) y) →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
210 be13 x ltx ≡ be13 y lty → x ≡ y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
211 be15 x y ltx lty eq with subst (λ k → odef k x) *iso ltx | subst (λ k → odef k y) *iso lty
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
212 ... | record { y = ix ; ay = aix ; x=fy = x=fix } | record { y = iy ; ay = aiy ; x=fy = x=fiy }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
213 = trans x=fix (trans ( fba-eq eq ) (sym x=fiy ) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
214
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
215 b-UC-iso0 : (x : Ordinal ) → (cx : odef (* (& b-UC)) x ) → i→ be11 ( i→ be10 x cx ) (iB be10 x cx) ≡ x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
216 b-UC-iso0 x cx with subst (λ k → odef k ( i→ be10 x cx ) ) *iso (iB be10 x cx)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
217 ... | record { y = y ; ay = ay ; x=fy = x=fy } = inject g _ _ (proj1 be03) (proj1 be02) (sym x=fy) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
218 be02 : odef (* b) x ∧ ( ¬ CN x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
219 be02 = subst (λ k → odef k x) *iso cx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
220 be03 : odef (* b) y ∧ ( ¬ CN y )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
221 be03 = subst (λ k → odef k y) *iso ay
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
222
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
223 b-UC-iso1 : (x : Ordinal ) → (cx : odef (* (& (Image (& b-UC) {a} (Injection-⊆ b-UC⊆b g)))) x ) → i→ be10 ( i→ be11 x cx ) (iB be11 x cx) ≡ x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
224 b-UC-iso1 x cx with subst (λ k → odef k x ) *iso cx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
225 ... | record { y = y ; ay = ay ; x=fy = x=fy } = sym x=fy
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
226
1392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
227 fUC = & (Image (& UC) {b} (Injection-⊆ UC⊆a f) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
228 -- C n → f (C n)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
229 fU : Injection (& UC) (& (Image (& UC) {b} (Injection-⊆ UC⊆a f) ))
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
230 fU = record { i→ = be00 ; iB = λ x lt → be50 x lt ; inject = be51 } where
1392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
231 be00 : (x : Ordinal) (lt : odef (* (& UC)) x) → Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
232 be00 x lt = be03 where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
233 be02 : CN x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
234 be02 = subst (λ k → odef k x) *iso lt
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
235 be03 : Ordinal
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
236 be03 with CN.i be02 | CN.gfix be02
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
237 ... | zero | a-g {x} ax ¬ib = fab x ax
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
238 ... | suc i | next-gf {x} gfiy record { y = y ; ay = ay ; x=fy = x=fy }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
239 = fab x (subst (λ k → odef (* a) k) (sym x=fy) (a∋fba _ (b∋fab y ay) ))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
240 be50 : (x : Ordinal) (lt : odef (* (& UC)) x)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
241 → odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f )))) (be00 x lt)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
242 be50 x lt1 = subst (λ k → odef k (be00 x lt1 )) (sym *iso) be03 where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
243 be02 : CN x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
244 be02 = subst (λ k → odef k x) *iso lt1
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
245 be03 : odef (Image (& UC) (Injection-⊆ UC⊆a f )) (be00 x lt1 )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
246 be03 with CN.i be02 | CN.gfix be02
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
247 ... | zero | a-g {x} ax ¬ib = record { y = x ; ay = lt1 ; x=fy = fab-refl }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
248 ... | suc i | next-gf {x} gfiy record { y = y ; ay = ay ; x=fy = x=fy } = record { y = _ ; ay = lt1 ; x=fy = fab-refl }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
249
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
250 be51 : (x y : Ordinal) (ltx : odef (* (& UC)) x) (lty : odef (* (& UC)) y) → be00 x ltx ≡ be00 y lty → x ≡ y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
251 be51 x y ltx lty eq = be04 where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
252 be0x : CN x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
253 be0x = subst (λ k → odef k x) *iso ltx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
254 be0y : CN y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
255 be0y = subst (λ k → odef k y) *iso lty
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
256 be04 : x ≡ y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
257 be04 with CN.i be0x | CN.gfix be0x | CN.i be0y | CN.gfix be0y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
258 ... | 0 | a-g ax ¬ib | 0 | a-g ax₁ ¬ib₁ = fab-inject _ _ ax ax₁ eq
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
259 ... | 0 | a-g ax ¬ib | suc j | next-gf gfyi iy = fab-inject _ _ ax ay eq where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
260 ay : odef (* a) y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
261 ay = a∋gfImage (suc j) (next-gf gfyi iy )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
262 ... | suc i | next-gf gfxi ix | 0 | a-g ay ¬ib = fab-inject _ _ ax ay eq where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
263 ax : odef (* a) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
264 ax = a∋gfImage (suc i) (next-gf gfxi ix )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
265 ... | suc i | next-gf gfxi ix | suc j | next-gf gfyi iy = fab-inject _ _ ax ay eq where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
266 ax : odef (* a) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
267 ax = a∋gfImage (suc i) (next-gf gfxi ix )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
268 ay : odef (* a) y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
269 ay = a∋gfImage (suc j) (next-gf gfyi iy )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
270
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
271
1396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
272 -- f (C n) → g (f (C n) ) ≡ C (suc i)
1392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
273 Uf : Injection (& (Image (& UC) {b} (Injection-⊆ UC⊆a f))) (& UC)
1395
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1394
diff changeset
274 Uf = record { i→ = be00 ; iB = be01 ; inject = ? } where
1393
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1392
diff changeset
275 be00 : (x : Ordinal) → odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) x → Ordinal
1395
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1394
diff changeset
276 be00 x lt with subst (λ k → odef k x ) *iso lt
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1394
diff changeset
277 ... | record { y = y ; ay = ay ; x=fy = x=fy } = fba x (subst (λ k → odef (* b) k ) (trans fab-refl (sym x=fy)) (b∋fab y (UC⊆a ay) ) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1394
diff changeset
278 be01 : (x : Ordinal) → (lt : odef (* (& (Image (& UC) (Injection-⊆ UC⊆a f)))) x ) → odef (* (& UC)) (be00 x lt)
1396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
279 be01 x lt with subst (λ k → odef k x) *iso lt
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
280 ... | record { y = y ; ay = ay ; x=fy = x=fy } = subst₂ (λ j k → odef j k ) (sym *iso) fba-refl
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
281 record { i = suc (CN.i be04 ) ; gfix = next-gf (CN.gfix be04) record { y = y ; ay = a∋gfImage (CN.i be04) (CN.gfix be04) ; x=fy = be06 } }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
282 where
1395
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1394
diff changeset
283 be04 : CN y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1394
diff changeset
284 be04 = subst (λ k → odef k y) *iso ay
1396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
285 bx : odef (* b) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
286 bx = subst (λ k → odef (* b) k ) (sym x=fy) ( b∋fab y (a∋gfImage (CN.i be04) (CN.gfix be04)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
287 be06 : fba x bx ≡ fba (fab y (a∋gfImage (CN.i be04) (CN.gfix be04))) (b∋fab y (a∋gfImage (CN.i be04) (CN.gfix be04)) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
288 be06 = fba-eq x=fy
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
289 be02 : (x y : Ordinal) (ltx : odef (* (& (Image (& UC) (Injection-⊆ UC⊆a (record { i→ = fab ; iB = b∋fab ; inject = fab-inject }))))) x)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
290 (lty : odef (* (& (Image (& UC) (Injection-⊆ UC⊆a (record { i→ = fab ; iB = b∋fab ; inject = fab-inject }))))) y) →
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
291 be00 x ltx ≡ be00 y lty → x ≡ y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
292 be02 x y ltx lty eq with subst (λ k → odef k x) *iso ltx | subst (λ k → odef k y) *iso lty
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
293 ... | record { y = ix ; ay = aix ; x=fy = x=fix } | record { y = iy ; ay = aiy ; x=fy = x=fiy }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
294 = inject g _ _ bx by (trans fba-refl (trans eq fba-refl )) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
295 be04 : CN ix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
296 be04 = subst (λ k → odef k ix) *iso aix
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
297 be06 : CN iy
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
298 be06 = subst (λ k → odef k iy) *iso aiy
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
299 bx : odef (* b) x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
300 bx = subst (λ k → odef (* b) k ) (sym x=fix) ( b∋fab ix (a∋gfImage (CN.i be04) (CN.gfix be04)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
301 by : odef (* b) y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
302 by = subst (λ k → odef (* b) k ) (sym x=fiy) ( b∋fab iy (a∋gfImage (CN.i be06) (CN.gfix be06)))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
303
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
304 UC-iso0 : (x : Ordinal ) → (cx : odef (* (& UC)) x ) → i→ Uf ( i→ fU x cx ) (iB fU x cx) ≡ x
1397
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1396
diff changeset
305 UC-iso0 x cx = ? where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1396
diff changeset
306 be02 : CN x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1396
diff changeset
307 be02 = subst (λ k → odef k x) *iso cx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1396
diff changeset
308 be03 : i→ Uf ( i→ fU x cx ) (iB fU x cx) ≡ x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1396
diff changeset
309 be03 with CN.i be02 | CN.gfix be02 | iB fU x cx
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1396
diff changeset
310 ... | zero | a-g ax ¬ib | cb with subst (λ k → odef k _ ) *iso cb
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1396
diff changeset
311 ... | record { y = y ; ay = ay ; x=fy = x=fy } = ? -- fba (fab x _) _ = x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1396
diff changeset
312 be03 | suc i | next-gf s ix | cb with subst (λ k → odef k (fab x _) ) *iso cb
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1396
diff changeset
313 ... | record { y = y ; ay = ay ; x=fy = x=fy } = ?
1396
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
314
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
315 UC-iso1 : (x : Ordinal ) → (cx : odef (* (& (Image (& UC) {b} (Injection-⊆ UC⊆a f)))) x ) → i→ fU ( i→ Uf x cx ) (iB Uf x cx) ≡ x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
316 UC-iso1 = ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1395
diff changeset
317
1392
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1391
diff changeset
318
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
319 be00 : OrdBijection a b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
320 be00 with trio< a b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
321 ... | tri< a ¬b ¬c = ⊥-elim ( be05 a iab iba )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
322 ... | tri≈ ¬a b ¬c = ordbij-refl b
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
323 ... | tri> ¬a ¬b c = ⊥-elim ( be05 c iba iab )
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
324
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
325 _c<_ : ( A B : HOD ) → Set n
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
326 A c< B = ¬ ( Injection (& A) (& B) )
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
327
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
328 Card : OD
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
329 Card = record { def = λ x → (a : Ordinal) → a o< x → ¬ OrdBijection a x }
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
330
1387
003424a36fed is this agda's bug?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1303
diff changeset
331 record Cardinal (a : Ordinal ) : Set (Level.suc n) where
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
332 field
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
333 card : Ordinal
1124
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
334 ciso : OrdBijection a card
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 1101
diff changeset
335 cmax : (x : Ordinal) → card o< x → ¬ OrdBijection a x
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
336
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
337 Cardinal∈ : { s : HOD } → { t : Ordinal } → Ord t ∋ s → s c< Ord t
431
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
338 Cardinal∈ = {!!}
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
339
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
340 Cardinal⊆ : { s t : HOD } → s ⊆ t → ( s c< t ) ∨ ( s =c= t )
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
341 Cardinal⊆ = {!!}
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
342
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
343 Cantor1 : { u : HOD } → u c< Power u
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
344 Cantor1 = {!!}
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
345
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
346 Cantor2 : { u : HOD } → ¬ ( u =c= Power u )
a5f8084b8368 reorganiztion for apkg
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
347 Cantor2 = {!!}
1095
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
348
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
349
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
350
08b6aa6870d9 OD clean up
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 431
diff changeset
351