equal
deleted
inserted
replaced
218 |
218 |
219 goalw thy [le_type_scheme_def,is_bound_typ_instance] "(sch <= FVar n) = (sch = FVar n)"; |
219 goalw thy [le_type_scheme_def,is_bound_typ_instance] "(sch <= FVar n) = (sch = FVar n)"; |
220 by (type_scheme.induct_tac "sch" 1); |
220 by (type_scheme.induct_tac "sch" 1); |
221 by (Simp_tac 1); |
221 by (Simp_tac 1); |
222 by (Simp_tac 1); |
222 by (Simp_tac 1); |
223 by (SELECT_GOAL Safe_tac 1); |
|
224 by (eres_inst_tac [("x","TVar n -> TVar n")] allE 1); |
|
225 by (Asm_full_simp_tac 1); |
|
226 by (Fast_tac 1); |
223 by (Fast_tac 1); |
227 by (Asm_full_simp_tac 1); |
224 by (Asm_full_simp_tac 1); |
228 by (rtac iffI 1); |
|
229 by (eres_inst_tac [("x","bound_typ_inst S type_scheme1 -> bound_typ_inst S type_scheme2")] allE 1); |
|
230 by (Asm_full_simp_tac 1); |
|
231 by (Fast_tac 1); |
|
232 by (Fast_tac 1); |
225 by (Fast_tac 1); |
233 qed "le_FVar"; |
226 qed "le_FVar"; |
234 Addsimps [le_FVar]; |
227 Addsimps [le_FVar]; |
235 |
228 |
236 goalw thy [le_type_scheme_def,is_bound_typ_instance] "~(FVar n <= sch1 =-> sch2)"; |
229 goalw thy [le_type_scheme_def,is_bound_typ_instance] "~(FVar n <= sch1 =-> sch2)"; |