comparison system-f.agda @ 783:bded2347efa4

CCC by equation
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Wed, 17 Apr 2019 12:03:45 +0900
parents 6b4bd02efd80
children
comparison
equal deleted inserted replaced
782:db59b8f954aa 783:bded2347efa4
10 10
11 T : {l : Level} (X : Set l) → Bool X 11 T : {l : Level} (X : Set l) → Bool X
12 T X = λ(x y : X) → x 12 T X = λ(x y : X) → x
13 13
14 F : {l : Level} (X : Set l) → Bool X 14 F : {l : Level} (X : Set l) → Bool X
15
16
15 F X = λ(x y : X) → y 17 F X = λ(x y : X) → y
16 18
17 D : {l : Level} → {U : Set l} → U → U → Bool U → U 19 D : {l : Level} → {U : Set l} → U → U → Bool U → U
18 D u v t = t u v 20 D u v t = t u v
19 21
25 27
26 _×_ : {l : Level} → Set l → Set l → Set (suc l) 28 _×_ : {l : Level} → Set l → Set l → Set (suc l)
27 _×_ {l} U V = {X : Set l} → (U → V → X) → X 29 _×_ {l} U V = {X : Set l} → (U → V → X) → X
28 30
29 <_,_> : {l : Level} {U V : Set l} → U → V → (U × V) 31 <_,_> : {l : Level} {U V : Set l} → U → V → (U × V)
30 <_,_> {l} {U} {V} u v = λ X → λ(x : U → V → X) → x u v 32 <_,_> {l} {U} {V} u v = λ x → x u v
31 33
32 π1 : {l : Level} {U V : Set l} → (U × V) → U 34 π1 : {l : Level} {U V : Set l} → (U × V) → U
33 π1 {l} {U} {V} t = t {U} (λ(x : U) → λ(y : V) → x) 35 π1 {l} {U} {V} t = t {U} (λ(x : U) → λ(y : V) → x)
34 36
35 π2 : {l : Level} {U V : Set l} → (U × V) → V 37 π2 : {l : Level} {U V : Set l} → (U × V) → V
42 lemma07 = refl 44 lemma07 = refl
43 45
44 hoge : {l : Level} {U V : Set l} → U → V → (U × V) 46 hoge : {l : Level} {U V : Set l} → U → V → (U × V)
45 hoge u v = < u , v > 47 hoge u v = < u , v >
46 48
47 -- lemma08 : {l : Level} {U V : Set l } → {u : U } → (t : U × V) → < π1 t , π2 t > ≡ t 49 --lemma08 : {l : Level} {X U V : Set l } → {x : X } → {u : U } → (t : U × V) → < π1 t , π2 t > x ≡ t x
48 -- lemma08 t = refl 50 --lemma08 t = refl
49 51
50 -- Emp definision is still wrong... 52 -- Emp definision is still wrong...
51 53
52 --record Emp {l : Level } : Set (suc l) where 54 --record Emp {l : Level } : Set (suc l) where
53 -- field 55 -- field
60 --lemma103 u t = e1 t u 62 --lemma103 u t = e1 t u
61 63
62 Emp : {l : Level } → Set (suc l) 64 Emp : {l : Level } → Set (suc l)
63 Emp {l} = {X : Set l} → X 65 Emp {l} = {X : Set l} → X
64 66
65 -- ε : {l : Level} {U : Set l} → Emp {l} → U 67 ε : {l : Level} {U : Set l} → Emp {l} → U
66 -- ε {l} {U} t = t U 68 ε {l} {U} t = t {U}
67 69
68 -- lemma103 : {l : Level} {U V : Set l} → (u : U) → (t : Emp {l} ) → (ε {l} {U → V} t) u ≡ ε {l} {V} t 70 -- lemma103 : {l : Level} {U V : Set l} → (u : U) → (t : Emp {l} ) → (ε {l} {U → V} t) u ≡ ε {l} {V} t
69 -- lemma103 u t = refl 71 -- lemma103 u t = refl
70 72
71 -- lemma09 : {l : Level} {U : Set l} → (t : Emp ) → ε {l} {U} (ε {_} {Emp} t) ≡ ε {_} {U} t 73 -- lemma09 : {l : Level} {U : Set l} → (t : Emp ) → ε {l} {U} (ε {_} {Emp} t) ≡ ε {_} {U} t
86 88
87 _+_ : {l : Level} → Set l → Set l → Set (suc l) 89 _+_ : {l : Level} → Set l → Set l → Set (suc l)
88 _+_ {l} U V = {X : Set l} → ( U → X ) → (V → X) → X 90 _+_ {l} U V = {X : Set l} → ( U → X ) → (V → X) → X
89 91
90 ι1 : {l : Level } {U V : Set l} → U → U + V 92 ι1 : {l : Level } {U V : Set l} → U → U + V
91 ι1 {l} {U} {V} u = λ{X} → λ(x : U → X) → λ(y : V → X ) → x u 93 ι1 {l} {U} {V} u = λ x y → x u -- λ{X} → λ(x : U → X) → λ(y : V → X ) → x u
92 94
93 ι2 : {l : Level } {U V : Set l} → V → U + V 95 ι2 : {l : Level } {U V : Set l} → V → U + V
94 ι2 {l} {U} {V} v = λ{X} → λ(x : U → X) → λ(y : V → X ) → y v 96 ι2 {l} {U} {V} v = λ x y → y v --λ{X} → λ(x : U → X) → λ(y : V → X ) → y v
95 97
96 δ : {l : Level} { U V R S : Set l } → (R → U) → (S → U) → ( R + S ) → U 98 δ : {l : Level} { U V R S : Set l } → (R → U) → (S → U) → ( R + S ) → U
97 δ {l} {U} {V} {R} {S} u v t = t {U} (λ(x : R) → u x) ( λ(y : S) → v y) 99 δ {l} {U} {V} {R} {S} u v t = t {U} (λ(x : R) → u x) ( λ(y : S) → v y)
98 100
99 lemma11 : {l : Level} { U V R S : Set _ } → (u : R → U ) (v : S → U ) → (r : R) → δ {l} {U} {V} {R} {S} u v ( ι1 r ) ≡ u r 101 lemma11 : {l : Level} { U V R S : Set _ } → (u : R → U ) (v : S → U ) → (r : R) → δ {l} {U} {V} {R} {S} u v ( ι1 r ) ≡ u r
105 107
106 _××_ : {l : Level} → Set (suc l) → Set l → Set (suc l) 108 _××_ : {l : Level} → Set (suc l) → Set l → Set (suc l)
107 _××_ {l} U V = {X : Set l} → (U → V → X) → X 109 _××_ {l} U V = {X : Set l} → (U → V → X) → X
108 110
109 <<_,_>> : {l : Level} {U : Set (suc l) } {V : Set l} → U → V → (U ×× V) 111 <<_,_>> : {l : Level} {U : Set (suc l) } {V : Set l} → U → V → (U ×× V)
110 <<_,_>> {l} {U} {V} u v = λ{X} → λ(x : U → V → X) → x u v 112 <<_,_>> {l} {U} {V} u v = λ x → x u v -- λ{X} → λ(x : U → V → X) → x u v
111 113
112 114
113 Int : {l : Level } ( X : Set l ) → Set l 115 Int : {l : Level } ( X : Set l ) → Set l
114 Int X = X → ( X → X ) → X 116 Int X = X → ( X → X ) → X
115 117
140 It : {l : Level} {U : Set l} → U → ( U → U ) → Int U → U 142 It : {l : Level} {U : Set l} → U → ( U → U ) → Int U → U
141 It u f t = t u f 143 It u f t = t u f
142 144
143 ItInt : {l : Level} {X : Set l} → Int X → (X → Int X ) → ( Int X → Int X ) → Int X → Int X 145 ItInt : {l : Level} {X : Set l} → Int X → (X → Int X ) → ( Int X → Int X ) → Int X → Int X
144 ItInt {l} {X} u g f t = λ z s → t (u z s) ( λ (w : X) → (f (g w)) z s ) 146 ItInt {l} {X} u g f t = λ z s → t (u z s) ( λ (w : X) → (f (g w)) z s )
147
148 copy_int : {l l' : Level } { X X' : Set l } → Int (X → (X → X) → X) → Int X
149 copy_int {_} {_} {X} {X'} x = It Zero S x
145 150
146 R : {l : Level} { U X : Set l} → U → ( U → Int X → U ) → Int _ → U 151 R : {l : Level} { U X : Set l} → U → ( U → Int X → U ) → Int _ → U
147 R {l} {U} {X} u v t = π1 ( It {suc l} {U × Int X} (< u , Zero >) (λ (x : U × Int X) → < v (π1 x) (π2 x) , S (π2 x) > ) t ) 152 R {l} {U} {X} u v t = π1 ( It {suc l} {U × Int X} (< u , Zero >) (λ (x : U × Int X) → < v (π1 x) (π2 x) , S (π2 x) > ) t )
148 153
149 -- bad adder which modifies input type 154 -- bad adder which modifies input type
157 add'' x y = ItInt y (\w z s -> w )S x 162 add'' x y = ItInt y (\w z s -> w )S x
158 163
159 lemma22 : {l : Level} {X : Set l} ( x y : Int X ) → add x y ≡ add'' x y 164 lemma22 : {l : Level} {X : Set l} ( x y : Int X ) → add x y ≡ add'' x y
160 lemma22 x y = refl 165 lemma22 x y = refl
161 166
167 lemma21 : {l : Level} {X : Set l} ( x y : Int X ) → add x Zero ≡ x
168 lemma21 x y = refl
169
170 postulate extensionality : {l : Level } → Relation.Binary.PropositionalEquality.Extensionality l l
171
172 --lemma23 : {l : Level} {X : Set l} ( x y : Int X ) → add x (S y) ≡ S ( add x y )
173 --lemma23 x y = extensionality ( λ z → {!!} )
174 -- where
175 -- lemma24 : {!!}
176 -- lemma24 = {!!}
177
178 -- lemma23 : {l : Level} {X : Set l} ( x y : Int X ) → add x y ≡ add y x
179 -- lemma23 x y = {!!}
180
162 -- bad adder which modifies input type 181 -- bad adder which modifies input type
163 mul' : {l : Level } {X : Set l} → Int X → Int (Int X) → Int X 182 mul' : {l : Level } {X : Set l} → Int X → Int (Int X) → Int X
164 mul' {l} {X} x y = It Zero (add x) y 183 mul' {l} {X} x y = It Zero (add x) y
165 184
166 mul : {l : Level } {X : Set l} → Int X → Int X → Int X 185 mul : {l : Level } {X : Set l} → Int X → Int X → Int X
181 lemma24 : {l : Level } {X : Set l} → mul {l} {X} n4 n3 ≡ mul'' {l} {X} n3 n4 200 lemma24 : {l : Level } {X : Set l} → mul {l} {X} n4 n3 ≡ mul'' {l} {X} n3 n4
182 lemma24 = refl 201 lemma24 = refl
183 202
184 203
185 -- lemma14 : {l : Level} {X : Set l} → (x y : Int X) → mul x y ≡ mul y x 204 -- lemma14 : {l : Level} {X : Set l} → (x y : Int X) → mul x y ≡ mul y x
186 -- lemma14 x y = It {!!} {!!} {!!} 205 -- lemma14 x y = {!!} -- It {!!} {!!} {!!}
187 206
188 lemma15 : {l : Level} {X : Set l} (x y : Int X) → mul {l} {X} n2 n3 ≡ mul {l} {X} n3 n2 207 lemma15 : {l : Level} {X : Set l} (x y : Int X) → mul {l} {X} n2 n3 ≡ mul {l} {X} n3 n2
189 lemma15 x y = refl 208 lemma15 x y = refl
190 209
191 lemma15' : {l : Level} {X : Set l} (x y : Int X) → mul'' {l} {X} n2 n3 ≡ mul'' {l} {X} n3 n2 210 lemma15' : {l : Level} {X : Set l} (x y : Int X) → mul'' {l} {X} n2 n3 ≡ mul'' {l} {X} n3 n2