annotate system-f.agda @ 319:5791b7b04820

Emp in System F
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 17 Mar 2014 20:10:37 +0700
parents aca05de9f056
children 71158a960aa8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
315
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 open import Level
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 open import Relation.Binary.PropositionalEquality
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 module system-f {l : Level} where
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6 postulate A : Set
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 postulate B : Set
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 data _∨_ (A B : Set) : Set where
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 or1 : A -> A ∨ B
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 or2 : B -> A ∨ B
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 lemma01 : A -> A ∨ B
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
14 lemma01 a = or1 a
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 lemma02 : B -> A ∨ B
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 lemma02 b = or2 b
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 lemma03 : {C : Set} -> (A ∨ B) -> (A -> C) -> (B -> C) -> C
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
20 lemma03 (or1 a) ac bc = ac a
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 lemma03 (or2 b) ac bc = bc b
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 postulate U : Set l
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 postulate V : Set l
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
25
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 Bool = {X : Set l} -> X -> X -> X
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 T : Bool
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 T = \{X : Set l} -> \(x y : X) -> x
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
31
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 F : Bool
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 F = \{X : Set l} -> \(x y : X) -> y
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
34
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 D : {U : Set l} -> U -> U -> Bool -> U
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 D {U} u v t = t {U} u v
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 lemma04 : {u v : U} -> D u v T ≡ u
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 lemma04 = refl
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
40
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 lemma05 : {u v : U} -> D u v F ≡ v
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 lemma05 = refl
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
43
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 _×_ : Set l -> Set l -> Set (suc l)
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 U × V = {X : Set l} -> (U -> V -> X) -> X
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
46
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 <_,_> : {U V : Set l} -> U -> V -> (U × V)
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 <_,_> {U} {V} u v = \{X} -> \(x : U -> V -> X) -> x u v
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
49
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 π1 : {U V : Set l} -> (U × V) -> U
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 π1 {U} {V} t = t {U} (\(x : U) -> \(y : V) -> x)
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
52
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 π2 : {U V : Set l} -> (U × V) -> V
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 π2 {U} {V} t = t {V} (\(x : U) -> \(y : V) -> y)
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
55
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 lemma06 : {U V : Set l } -> {u : U } -> {v : V} -> π1 ( < u , v > ) ≡ u
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 lemma06 = refl
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
58
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 lemma07 : {U V : Set l } -> {u : U } -> {v : V} -> π2 ( < u , v > ) ≡ v
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 lemma07 = refl
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
61
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 hoge : {U V : Set l} -> U -> V -> (U × V)
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 hoge u v = < u , v >
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
64
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 -- lemma08 : (t : U × V) -> < π1 t , π2 t > ≡ t
0d7fa6fc5979 System T and System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 -- lemma08 t = {!!}
316
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
67
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
68 -- Emp definision is still wrong...
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
69
319
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
70 Emp : {l : Level} (X : Set l) -> Set l
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
71 Emp {l} = \(X : Set l) -> X
316
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
72
319
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
73 ε : {l l' : Level} (U : Set l) -> ((X : Set l) -> Emp X) -> Emp U
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
74 ε U t = t U
316
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
75
319
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
76 lemma09 : {U : Set l} -> {t : (X' : Set l) -> Emp U} -> ε U (ε Emp t) ≡ ε U t
318
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 317
diff changeset
77 lemma09 = refl
316
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
78
319
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
79 lemma10 : {U V : Set l} -> {t : U × V } -> π1 ( ε ( U × V ) {!!} ) ≡ ε U {!!}
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
80 lemma10 = refl
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
81
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
82 -- lemma101 : {U V : Set l} -> {t : U × V } -> π2 ( ε {_} { U × V } t ) ≡ ε {_} {V} t
5791b7b04820 Emp in System F
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 318
diff changeset
83 -- lemma101 = refl
316
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
84
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
85 _+_ : Set l -> Set l -> Set (suc l)
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
86 U + V = {X : Set l} -> ( U -> X ) -> (V -> X) -> X
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
87
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
88 ι1 : {U V : Set l} -> U -> U + V
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
89 ι1 {U} {V} u = \{X} -> \(x : U -> X) -> \(y : V -> X ) -> x u
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
90
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
91 ι2 : {U V : Set l} -> V -> U + V
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
92 ι2 {U} {V} v = \{X} -> \(x : U -> X) -> \(y : V -> X ) -> y v
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
93
317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 316
diff changeset
94 δ : { U V R S : Set l } -> (R -> U) -> (S -> U) -> ( R + S ) -> U
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 316
diff changeset
95 δ {U} {V} {R} {S} u v t = t {U} (\(x : R) -> u x) ( \(y : S) -> v y)
316
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
96
317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 316
diff changeset
97 lemma11 : { U V R S : Set l } -> (u : R -> U ) (v : S -> U ) -> (r : R) -> δ {U} {V} {R} {S} u v ( ι1 r ) ≡ u r
316
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
98 lemma11 u v r = refl
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
99
317
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 316
diff changeset
100 lemma12 : { U V R S : Set l } -> (u : R -> U ) (v : S -> U ) -> (s : S) -> δ {U} {V} {R} {S} u v ( ι2 s ) ≡ v s
316
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
101 lemma12 u v s = refl
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
102
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
103
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
104
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
105
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
106
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
107
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
108
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
109
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
110
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
111
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
112
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
113
7a3229b32b3c Emp and Sum first try
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 315
diff changeset
114