src/HOL/MiniML/MiniML.ML
changeset 3724 f33e301a89f5
parent 3018 e65b60b28341
child 3919 c036caebfc75
equal deleted inserted replaced
3723:034f0f5ca43f 3724:f33e301a89f5
   123 val aux_plus = result();
   123 val aux_plus = result();
   124 
   124 
   125 Addsimps [aux_plus];
   125 Addsimps [aux_plus];
   126 
   126 
   127 goal thy "!!t::typ. new_tv n t ==> {x. ? y. x = n + y} Int free_tv t = {}";
   127 goal thy "!!t::typ. new_tv n t ==> {x. ? y. x = n + y} Int free_tv t = {}";
   128 by (step_tac (!claset) 1);
   128 by Safe_tac;
   129 by (cut_facts_tac [aux_plus] 1);
   129 by (cut_facts_tac [aux_plus] 1);
   130 by (dtac new_tv_le 1);
   130 by (dtac new_tv_le 1);
   131 by (assume_tac 1);
   131 by (assume_tac 1);
   132 by (rotate_tac 1 1);
   132 by (rotate_tac 1 1);
   133 by (dtac new_tv_not_free_tv 1);
   133 by (dtac new_tv_not_free_tv 1);
   134 by (Fast_tac 1);
   134 by (Fast_tac 1);
   135 val new_tv_Int_free_tv_empty_type = result ();
   135 val new_tv_Int_free_tv_empty_type = result ();
   136 
   136 
   137 goal thy "!!sch::type_scheme. new_tv n sch ==> {x. ? y. x = n + y} Int free_tv sch = {}";
   137 goal thy "!!sch::type_scheme. new_tv n sch ==> {x. ? y. x = n + y} Int free_tv sch = {}";
   138 by (step_tac (!claset) 1);
   138 by Safe_tac;
   139 by (cut_facts_tac [aux_plus] 1);
   139 by (cut_facts_tac [aux_plus] 1);
   140 by (dtac new_tv_le 1);
   140 by (dtac new_tv_le 1);
   141 by (assume_tac 1);
   141 by (assume_tac 1);
   142 by (rotate_tac 1 1);
   142 by (rotate_tac 1 1);
   143 by (dtac new_tv_not_free_tv 1);
   143 by (dtac new_tv_not_free_tv 1);