src/HOL/MiniML/W.ML
changeset 7499 23e090051cb8
parent 7322 d16d7ddcc842
child 11232 558a4feebb04
equal deleted inserted replaced
7498:1e5585fd3632 7499:23e090051cb8
   209 by (eres_inst_tac [("x","v")] allE 1);
   209 by (eres_inst_tac [("x","v")] allE 1);
   210 by (safe_tac (empty_cs addSIs [conjI,impI] addSEs [conjE]) ); 
   210 by (safe_tac (empty_cs addSIs [conjI,impI] addSEs [conjE]) ); 
   211 by (asm_full_simp_tac (simpset() addsimps [rotate_Some,o_def]) 1);
   211 by (asm_full_simp_tac (simpset() addsimps [rotate_Some,o_def]) 1);
   212 by (dtac W_var_geD 1);
   212 by (dtac W_var_geD 1);
   213 by (dtac W_var_geD 1);
   213 by (dtac W_var_geD 1);
   214 by ( (forward_tac [less_le_trans] 1) THEN (assume_tac 1) );
   214 by ( (ftac less_le_trans 1) THEN (assume_tac 1) );
   215 by (fast_tac (HOL_cs addDs [free_tv_comp_subst RS subsetD,sym RS mgu_free, 
   215 by (fast_tac (HOL_cs addDs [free_tv_comp_subst RS subsetD,sym RS mgu_free, 
   216     codD,free_tv_app_subst_te RS subsetD,free_tv_app_subst_scheme_list RS subsetD,
   216     codD,free_tv_app_subst_te RS subsetD,free_tv_app_subst_scheme_list RS subsetD,
   217     less_le_trans,less_not_refl2,subsetD]
   217     less_le_trans,less_not_refl2,subsetD]
   218   addEs [UnE] 
   218   addEs [UnE] 
   219   addss simpset()) 1);
   219   addss simpset()) 1);
   220 by (Asm_full_simp_tac 1); 
   220 by (Asm_full_simp_tac 1); 
   221 by (dtac (sym RS W_var_geD) 1);
   221 by (dtac (sym RS W_var_geD) 1);
   222 by (dtac (sym RS W_var_geD) 1);
   222 by (dtac (sym RS W_var_geD) 1);
   223 by ( (forward_tac [less_le_trans] 1) THEN (assume_tac 1) );
   223 by ( (ftac less_le_trans 1) THEN (assume_tac 1) );
   224 by (fast_tac (HOL_cs addDs [mgu_free, codD,free_tv_subst_var RS subsetD,
   224 by (fast_tac (HOL_cs addDs [mgu_free, codD,free_tv_subst_var RS subsetD,
   225     free_tv_app_subst_te RS subsetD,free_tv_app_subst_scheme_list RS subsetD,
   225     free_tv_app_subst_te RS subsetD,free_tv_app_subst_scheme_list RS subsetD,
   226     less_le_trans,subsetD]
   226     less_le_trans,subsetD]
   227   addEs [UnE]
   227   addEs [UnE]
   228   addss (simpset() setSolver unsafe_solver)) 1);
   228   addss (simpset() setSolver unsafe_solver)) 1);
   294 by (simp_tac (HOL_ss addsimps [subst_comp_scheme_list RS sym,o_def]) 1);
   294 by (simp_tac (HOL_ss addsimps [subst_comp_scheme_list RS sym,o_def]) 1);
   295 by ((rtac (has_type_cl_sub RS spec) 1) THEN (rtac (has_type_cl_sub RS spec) 1));
   295 by ((rtac (has_type_cl_sub RS spec) 1) THEN (rtac (has_type_cl_sub RS spec) 1));
   296 by (asm_full_simp_tac (simpset() addsimps [eq_sym_conv]) 1);
   296 by (asm_full_simp_tac (simpset() addsimps [eq_sym_conv]) 1);
   297 by (asm_full_simp_tac (simpset() addsimps [subst_comp_scheme_list RS sym,o_def,has_type_cl_sub,eq_sym_conv]) 1);
   297 by (asm_full_simp_tac (simpset() addsimps [subst_comp_scheme_list RS sym,o_def,has_type_cl_sub,eq_sym_conv]) 1);
   298 by (rtac (has_type_cl_sub RS spec) 1);
   298 by (rtac (has_type_cl_sub RS spec) 1);
   299 by (forward_tac [new_tv_W] 1);
   299 by (ftac new_tv_W 1);
   300 by (assume_tac 1);
   300 by (assume_tac 1);
   301 by (dtac conjunct1 1);
   301 by (dtac conjunct1 1);
   302 by (dtac conjunct1 1);
   302 by (dtac conjunct1 1);
   303 by (forward_tac [new_tv_subst_scheme_list] 1);
   303 by (ftac new_tv_subst_scheme_list 1);
   304 by (rtac new_scheme_list_le 1);
   304 by (rtac new_scheme_list_le 1);
   305 by (rtac W_var_ge 1);
   305 by (rtac W_var_ge 1);
   306 by (assume_tac 1);
   306 by (assume_tac 1);
   307 by (assume_tac 1);
   307 by (assume_tac 1);
   308 by (etac thin_rl 1);
   308 by (etac thin_rl 1);
   338 by (dres_inst_tac [("x","gen ($S1 A) t1 # $ S1 A")] spec 2);
   338 by (dres_inst_tac [("x","gen ($S1 A) t1 # $ S1 A")] spec 2);
   339 by (dres_inst_tac [("x","S2")] spec 2);
   339 by (dres_inst_tac [("x","S2")] spec 2);
   340 by (dres_inst_tac [("x","t")] spec 2);
   340 by (dres_inst_tac [("x","t")] spec 2);
   341 by (dres_inst_tac [("x","n2")] spec 2);
   341 by (dres_inst_tac [("x","n2")] spec 2);
   342 by (dres_inst_tac [("x","m2")] spec 2);
   342 by (dres_inst_tac [("x","m2")] spec 2);
   343 by (forward_tac [new_tv_W] 2);
   343 by (ftac new_tv_W 2);
   344 by (assume_tac 2);
   344 by (assume_tac 2);
   345 by (dtac conjunct1 2);
   345 by (dtac conjunct1 2);
   346 by (dtac conjunct1 2);
   346 by (dtac conjunct1 2);
   347 by (forward_tac [new_tv_subst_scheme_list] 2);
   347 by (ftac new_tv_subst_scheme_list 2);
   348 by (rtac new_scheme_list_le 2);
   348 by (rtac new_scheme_list_le 2);
   349 by (rtac W_var_ge 2);
   349 by (rtac W_var_ge 2);
   350 by (assume_tac 2);
   350 by (assume_tac 2);
   351 by (assume_tac 2);
   351 by (assume_tac 2);
   352 by (etac impE 2);
   352 by (etac impE 2);
   440 by (subgoal_tac "na ~=ma" 2);
   440 by (subgoal_tac "na ~=ma" 2);
   441 by (best_tac (HOL_cs addDs [new_tv_W,sym RS W_var_geD,
   441 by (best_tac (HOL_cs addDs [new_tv_W,sym RS W_var_geD,
   442     new_tv_not_free_tv,new_tv_le]) 3);
   442     new_tv_not_free_tv,new_tv_le]) 3);
   443 by (case_tac "na:free_tv Sa" 2);
   443 by (case_tac "na:free_tv Sa" 2);
   444 (* n1 ~: free_tv S1 *)
   444 (* n1 ~: free_tv S1 *)
   445 by (forward_tac [not_free_impl_id] 3);
   445 by (ftac not_free_impl_id 3);
   446 by (Asm_simp_tac 3);
   446 by (Asm_simp_tac 3);
   447 (* na : free_tv Sa *)
   447 (* na : free_tv Sa *)
   448 by (dres_inst_tac [("A1","$ S A")] (subst_comp_scheme_list RSN (2,trans)) 2);
   448 by (dres_inst_tac [("A1","$ S A")] (subst_comp_scheme_list RSN (2,trans)) 2);
   449 by (dtac eq_subst_scheme_list_eq_free 2);
   449 by (dtac eq_subst_scheme_list_eq_free 2);
   450 by (fast_tac (HOL_cs addIs [free_tv_W,free_tv_le_new_tv] addDs [new_tv_W]) 2);
   450 by (fast_tac (HOL_cs addIs [free_tv_W,free_tv_le_new_tv] addDs [new_tv_W]) 2);
   454 by (asm_full_simp_tac (simpset() addsimps [dom_def]) 3);
   454 by (asm_full_simp_tac (simpset() addsimps [dom_def]) 3);
   455 (* na : dom Sa *)
   455 (* na : dom Sa *)
   456 by (rtac eq_free_eq_subst_te 2);
   456 by (rtac eq_free_eq_subst_te 2);
   457 by (strip_tac 2);
   457 by (strip_tac 2);
   458 by (subgoal_tac "nb ~= ma" 2);
   458 by (subgoal_tac "nb ~= ma" 2);
   459 by ((forward_tac [new_tv_W] 3) THEN (atac 3));
   459 by ((ftac new_tv_W 3) THEN (atac 3));
   460 by (etac conjE 3);
   460 by (etac conjE 3);
   461 by (dtac new_tv_subst_scheme_list 3);
   461 by (dtac new_tv_subst_scheme_list 3);
   462 by (fast_tac (HOL_cs addIs [new_scheme_list_le] addDs [sym RS W_var_geD]) 3);
   462 by (fast_tac (HOL_cs addIs [new_scheme_list_le] addDs [sym RS W_var_geD]) 3);
   463 by (fast_tac (set_cs addDs [new_tv_W,new_tv_not_free_tv] addss 
   463 by (fast_tac (set_cs addDs [new_tv_W,new_tv_not_free_tv] addss 
   464     (simpset() addsimps [cod_def,free_tv_subst])) 3);
   464     (simpset() addsimps [cod_def,free_tv_subst])) 3);
   465 by (fast_tac (set_cs addss (simpset() addsimps [cod_def,free_tv_subst])) 2);
   465 by (fast_tac (set_cs addss (simpset() addsimps [cod_def,free_tv_subst])) 2);
   466 by (Simp_tac 2);  
   466 by (Simp_tac 2);  
   467 by (rtac eq_free_eq_subst_te 2);
   467 by (rtac eq_free_eq_subst_te 2);
   468 by (strip_tac 2 );
   468 by (strip_tac 2 );
   469 by (subgoal_tac "na ~= ma" 2);
   469 by (subgoal_tac "na ~= ma" 2);
   470 by ((forward_tac [new_tv_W] 3) THEN (atac 3));
   470 by ((ftac new_tv_W 3) THEN (atac 3));
   471 by (etac conjE 3);
   471 by (etac conjE 3);
   472 by (dtac (sym RS W_var_geD) 3);
   472 by (dtac (sym RS W_var_geD) 3);
   473 by (fast_tac (HOL_cs addDs [new_scheme_list_le,new_tv_subst_scheme_list,new_tv_W,new_tv_not_free_tv]) 3);
   473 by (fast_tac (HOL_cs addDs [new_scheme_list_le,new_tv_subst_scheme_list,new_tv_W,new_tv_not_free_tv]) 3);
   474 by (case_tac "na: free_tv t - free_tv Sa" 2);
   474 by (case_tac "na: free_tv t - free_tv Sa" 2);
   475 (* case na ~: free_tv t - free_tv Sa *)
   475 (* case na ~: free_tv t - free_tv Sa *)
   500 by ( asm_full_simp_tac (simpset() addsimps [o_def,eq_sym_conv]) 1);
   500 by ( asm_full_simp_tac (simpset() addsimps [o_def,eq_sym_conv]) 1);
   501 by (dres_inst_tac [("s","Some ?X")] sym 1);
   501 by (dres_inst_tac [("s","Some ?X")] sym 1);
   502 by (rtac eq_free_eq_subst_scheme_list 1);
   502 by (rtac eq_free_eq_subst_scheme_list 1);
   503 by ( safe_tac HOL_cs );
   503 by ( safe_tac HOL_cs );
   504 by (subgoal_tac "ma ~= na" 1);
   504 by (subgoal_tac "ma ~= na" 1);
   505 by ((forward_tac [new_tv_W] 2) THEN (atac 2));
   505 by ((ftac new_tv_W 2) THEN (atac 2));
   506 by (etac conjE 2);
   506 by (etac conjE 2);
   507 by (dtac new_tv_subst_scheme_list 2);
   507 by (dtac new_tv_subst_scheme_list 2);
   508 by (fast_tac (HOL_cs addIs [new_scheme_list_le] addDs [sym RS W_var_geD]) 2);
   508 by (fast_tac (HOL_cs addIs [new_scheme_list_le] addDs [sym RS W_var_geD]) 2);
   509 by (forw_inst_tac [("n","m")] new_tv_W 2  THEN  atac 2);
   509 by (forw_inst_tac [("n","m")] new_tv_W 2  THEN  atac 2);
   510 by (etac conjE 2);
   510 by (etac conjE 2);
   540 by (rtac has_type_le_env 1);
   540 by (rtac has_type_le_env 1);
   541 by (assume_tac 1);
   541 by (assume_tac 1);
   542 by (Simp_tac 1);
   542 by (Simp_tac 1);
   543 by (rtac gen_bound_typ_instance 1);
   543 by (rtac gen_bound_typ_instance 1);
   544 by (dtac mp 1);
   544 by (dtac mp 1);
   545 by (forward_tac [new_tv_compatible_W] 1);
   545 by (ftac new_tv_compatible_W 1);
   546 by (rtac sym 1);
   546 by (rtac sym 1);
   547 by (assume_tac 1);
   547 by (assume_tac 1);
   548 by (fast_tac (claset() addDs [new_tv_compatible_gen,new_tv_subst_scheme_list,new_tv_W]) 1);
   548 by (fast_tac (claset() addDs [new_tv_compatible_gen,new_tv_subst_scheme_list,new_tv_W]) 1);
   549 by (safe_tac HOL_cs);
   549 by (safe_tac HOL_cs);
   550 by (Asm_full_simp_tac 1);
   550 by (Asm_full_simp_tac 1);