equal
deleted
inserted
replaced
79 quotient_type |
79 quotient_type |
80 TY = ty / aty and |
80 TY = ty / aty and |
81 TRM = trm / atrm |
81 TRM = trm / atrm |
82 by (auto intro: alpha_equivps) |
82 by (auto intro: alpha_equivps) |
83 |
83 |
84 quotient_def |
84 quotient_definition |
85 "TYP :: KIND" |
85 "TYP :: KIND" |
86 as |
86 as |
87 "Type" |
87 "Type" |
88 |
88 |
89 quotient_def |
89 quotient_definition |
90 "KPI :: TY \<Rightarrow> name \<Rightarrow> KIND \<Rightarrow> KIND" |
90 "KPI :: TY \<Rightarrow> name \<Rightarrow> KIND \<Rightarrow> KIND" |
91 as |
91 as |
92 "KPi" |
92 "KPi" |
93 |
93 |
94 quotient_def |
94 quotient_definition |
95 "TCONST :: ident \<Rightarrow> TY" |
95 "TCONST :: ident \<Rightarrow> TY" |
96 as |
96 as |
97 "TConst" |
97 "TConst" |
98 |
98 |
99 quotient_def |
99 quotient_definition |
100 "TAPP :: TY \<Rightarrow> TRM \<Rightarrow> TY" |
100 "TAPP :: TY \<Rightarrow> TRM \<Rightarrow> TY" |
101 as |
101 as |
102 "TApp" |
102 "TApp" |
103 |
103 |
104 quotient_def |
104 quotient_definition |
105 "TPI :: TY \<Rightarrow> name \<Rightarrow> TY \<Rightarrow> TY" |
105 "TPI :: TY \<Rightarrow> name \<Rightarrow> TY \<Rightarrow> TY" |
106 as |
106 as |
107 "TPi" |
107 "TPi" |
108 |
108 |
109 (* FIXME: does not work with CONST *) |
109 (* FIXME: does not work with CONST *) |
110 quotient_def |
110 quotient_definition |
111 "CONS :: ident \<Rightarrow> TRM" |
111 "CONS :: ident \<Rightarrow> TRM" |
112 as |
112 as |
113 "Const" |
113 "Const" |
114 |
114 |
115 quotient_def |
115 quotient_definition |
116 "VAR :: name \<Rightarrow> TRM" |
116 "VAR :: name \<Rightarrow> TRM" |
117 as |
117 as |
118 "Var" |
118 "Var" |
119 |
119 |
120 quotient_def |
120 quotient_definition |
121 "APP :: TRM \<Rightarrow> TRM \<Rightarrow> TRM" |
121 "APP :: TRM \<Rightarrow> TRM \<Rightarrow> TRM" |
122 as |
122 as |
123 "App" |
123 "App" |
124 |
124 |
125 quotient_def |
125 quotient_definition |
126 "LAM :: TY \<Rightarrow> name \<Rightarrow> TRM \<Rightarrow> TRM" |
126 "LAM :: TY \<Rightarrow> name \<Rightarrow> TRM \<Rightarrow> TRM" |
127 as |
127 as |
128 "Lam" |
128 "Lam" |
129 |
129 |
130 thm TYP_def |
130 thm TYP_def |
136 thm CONS_def |
136 thm CONS_def |
137 thm APP_def |
137 thm APP_def |
138 thm LAM_def |
138 thm LAM_def |
139 |
139 |
140 (* FIXME: print out a warning if the type contains a liftet type, like kind \<Rightarrow> name set *) |
140 (* FIXME: print out a warning if the type contains a liftet type, like kind \<Rightarrow> name set *) |
141 quotient_def |
141 quotient_definition |
142 "FV_kind :: KIND \<Rightarrow> name set" |
142 "FV_kind :: KIND \<Rightarrow> name set" |
143 as |
143 as |
144 "fv_kind" |
144 "fv_kind" |
145 |
145 |
146 quotient_def |
146 quotient_definition |
147 "FV_ty :: TY \<Rightarrow> name set" |
147 "FV_ty :: TY \<Rightarrow> name set" |
148 as |
148 as |
149 "fv_ty" |
149 "fv_ty" |
150 |
150 |
151 quotient_def |
151 quotient_definition |
152 "FV_trm :: TRM \<Rightarrow> name set" |
152 "FV_trm :: TRM \<Rightarrow> name set" |
153 as |
153 as |
154 "fv_trm" |
154 "fv_trm" |
155 |
155 |
156 thm FV_kind_def |
156 thm FV_kind_def |
162 perm_kind \<equiv> "perm :: 'x prm \<Rightarrow> KIND \<Rightarrow> KIND" (unchecked) |
162 perm_kind \<equiv> "perm :: 'x prm \<Rightarrow> KIND \<Rightarrow> KIND" (unchecked) |
163 perm_ty \<equiv> "perm :: 'x prm \<Rightarrow> TY \<Rightarrow> TY" (unchecked) |
163 perm_ty \<equiv> "perm :: 'x prm \<Rightarrow> TY \<Rightarrow> TY" (unchecked) |
164 perm_trm \<equiv> "perm :: 'x prm \<Rightarrow> TRM \<Rightarrow> TRM" (unchecked) |
164 perm_trm \<equiv> "perm :: 'x prm \<Rightarrow> TRM \<Rightarrow> TRM" (unchecked) |
165 begin |
165 begin |
166 |
166 |
167 quotient_def |
167 quotient_definition |
168 "perm_kind :: 'x prm \<Rightarrow> KIND \<Rightarrow> KIND" |
168 "perm_kind :: 'x prm \<Rightarrow> KIND \<Rightarrow> KIND" |
169 as |
169 as |
170 "(perm::'x prm \<Rightarrow> kind \<Rightarrow> kind)" |
170 "(perm::'x prm \<Rightarrow> kind \<Rightarrow> kind)" |
171 |
171 |
172 quotient_def |
172 quotient_definition |
173 "perm_ty :: 'x prm \<Rightarrow> TY \<Rightarrow> TY" |
173 "perm_ty :: 'x prm \<Rightarrow> TY \<Rightarrow> TY" |
174 as |
174 as |
175 "(perm::'x prm \<Rightarrow> ty \<Rightarrow> ty)" |
175 "(perm::'x prm \<Rightarrow> ty \<Rightarrow> ty)" |
176 |
176 |
177 quotient_def |
177 quotient_definition |
178 "perm_trm :: 'x prm \<Rightarrow> TRM \<Rightarrow> TRM" |
178 "perm_trm :: 'x prm \<Rightarrow> TRM \<Rightarrow> TRM" |
179 as |
179 as |
180 "(perm::'x prm \<Rightarrow> trm \<Rightarrow> trm)" |
180 "(perm::'x prm \<Rightarrow> trm \<Rightarrow> trm)" |
181 |
181 |
182 end |
182 end |