src/HOL/MiniML/Instance.ML
changeset 4641 70a50c2a920f
parent 4153 e534c4c32d54
child 4686 74a12e86b20b
equal deleted inserted replaced
4640:ac6cf9f18653 4641:70a50c2a920f
   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)";