src/HOL/MiniML/W.ML
changeset 2793 b30c41754c86
parent 2779 9c42ae57b5f4
child 3008 0a887d5b6718
equal deleted inserted replaced
2792:6c17c5ec3d8b 2793:b30c41754c86
   566 by (dtac (sym RS W_var_geD) 3);
   566 by (dtac (sym RS W_var_geD) 3);
   567 by (fast_tac (HOL_cs addDs [new_scheme_list_le,new_tv_subst_scheme_list,new_tv_W,new_tv_not_free_tv]) 3);
   567 by (fast_tac (HOL_cs addDs [new_scheme_list_le,new_tv_subst_scheme_list,new_tv_W,new_tv_not_free_tv]) 3);
   568 by (case_tac "na: free_tv t - free_tv Sa" 2);
   568 by (case_tac "na: free_tv t - free_tv Sa" 2);
   569 (* case na ~: free_tv t - free_tv Sa *)
   569 (* case na ~: free_tv t - free_tv Sa *)
   570 by( asm_full_simp_tac (!simpset setloop (split_tac [expand_if])) 3);
   570 by( asm_full_simp_tac (!simpset setloop (split_tac [expand_if])) 3);
       
   571 by (Fast_tac 3);
   571 (* case na : free_tv t - free_tv Sa *)
   572 (* case na : free_tv t - free_tv Sa *)
   572 by( asm_full_simp_tac (!simpset setloop (split_tac [expand_if])) 2);
   573 by( asm_full_simp_tac (!simpset setloop (split_tac [expand_if])) 2);
   573 by (dres_inst_tac [("A1","$ S A")] (subst_comp_scheme_list RSN (2,trans)) 2);
   574 by (dres_inst_tac [("A1","$ S A")] (subst_comp_scheme_list RSN (2,trans)) 2);
   574 by (dtac eq_subst_scheme_list_eq_free 2);
   575 by (dtac eq_subst_scheme_list_eq_free 2);
   575 by (fast_tac (HOL_cs addIs [free_tv_W,free_tv_le_new_tv] addDs [new_tv_W]) 2);
   576 by (fast_tac (HOL_cs addIs [free_tv_W,free_tv_le_new_tv] addDs [new_tv_W]) 2);
       
   577 (** LEVEL 75 **)
   576 by (asm_full_simp_tac (!simpset addsimps [free_tv_subst,dom_def]) 2);
   578 by (asm_full_simp_tac (!simpset addsimps [free_tv_subst,dom_def]) 2);
   577 
       
   578 by (asm_simp_tac (!simpset setloop (split_tac [expand_option_bind])) 1); 
   579 by (asm_simp_tac (!simpset setloop (split_tac [expand_option_bind])) 1); 
   579 by (safe_tac HOL_cs );
   580 by (safe_tac HOL_cs );
   580 by (dtac mgu_Some 1);
   581 by (dtac mgu_Some 1);
   581 by( fast_tac (HOL_cs addss !simpset) 1);
   582 by( fast_tac (HOL_cs addss !simpset) 1);
   582 
   583 (** LEVEL 80 *)
   583 by ((dtac mgu_mg 1) THEN (atac 1));
   584 by ((dtac mgu_mg 1) THEN (atac 1));
   584 by (etac exE 1);
   585 by (etac exE 1);
   585 by (res_inst_tac [("x","Rb")] exI 1);
   586 by (res_inst_tac [("x","Rb")] exI 1);
   586 by (rtac conjI 1);
   587 by (rtac conjI 1);
   587 by (dres_inst_tac [("x","ma")] fun_cong 2);
   588 by (dres_inst_tac [("x","ma")] fun_cong 2);
   588 by( asm_full_simp_tac (!simpset addsimps [eq_sym_conv]) 2);
   589 by( asm_full_simp_tac (!simpset addsimps [eq_sym_conv]) 2);
   589 by (simp_tac (!simpset addsimps [subst_comp_scheme_list]) 1);
   590 by (simp_tac (!simpset addsimps [subst_comp_scheme_list]) 1);
   590 by (simp_tac (!simpset addsimps [subst_comp_scheme_list RS sym]) 1);
   591 by (simp_tac (!simpset addsimps [subst_comp_scheme_list RS sym]) 1);
   591 by (res_inst_tac [("A2","($ Sa ($ S A))")] ((subst_comp_scheme_list RS sym) RSN 
   592 by (res_inst_tac [("A2","($ Sa ($ S A))")]
   592     (2,trans)) 1);
   593        ((subst_comp_scheme_list RS sym) RSN (2,trans)) 1);
   593 by( asm_full_simp_tac (!simpset addsimps [o_def,eq_sym_conv]) 1);
   594 by( asm_full_simp_tac (!simpset addsimps [o_def,eq_sym_conv]) 1);
   594 by (rtac eq_free_eq_subst_scheme_list 1);
   595 by (rtac eq_free_eq_subst_scheme_list 1);
   595 by( safe_tac HOL_cs );
   596 by( safe_tac HOL_cs );
   596 by (subgoal_tac "ma ~= na" 1);
   597 by (subgoal_tac "ma ~= na" 1);
   597 by ((forward_tac [new_tv_W] 2) THEN (atac 2));
   598 by ((forward_tac [new_tv_W] 2) THEN (atac 2));
   598 by (etac conjE 2);
   599 by (etac conjE 2);
   599 by (dtac new_tv_subst_scheme_list 2);
   600 by (dtac new_tv_subst_scheme_list 2);
   600 by (fast_tac (HOL_cs addIs [new_scheme_list_le] addDs [sym RS W_var_geD]) 2);
   601 by (fast_tac (HOL_cs addIs [new_scheme_list_le] addDs [sym RS W_var_geD]) 2);
   601 by (( forw_inst_tac [("n","m")] (sym RSN (2,new_tv_W)) 2) THEN (atac 2));
   602 by (forw_inst_tac [("n","m")] new_tv_W 2  THEN  atac 2);
   602 by (etac conjE 2);
   603 by (etac conjE 2);
   603 by (dtac (free_tv_app_subst_scheme_list RS subsetD) 2);
   604 by (dtac (free_tv_app_subst_scheme_list RS subsetD) 2);
   604 by (fast_tac (set_cs addDs [W_var_geD,new_scheme_list_le,codD,
   605 by (fast_tac (set_cs addDs [sym RS W_var_geD,new_scheme_list_le,codD,
   605     new_tv_not_free_tv]) 2);
   606     new_tv_not_free_tv]) 2);
   606 by (case_tac "na: free_tv t - free_tv Sa" 1);
   607 by (case_tac "na: free_tv t - free_tv Sa" 1);
   607 (* case na ~: free_tv t - free_tv Sa *)
   608 (* case na ~: free_tv t - free_tv Sa *)
   608 by (asm_full_simp_tac (!simpset setloop (split_tac [expand_if])) 2);
   609 by (asm_full_simp_tac (!simpset setloop (split_tac [expand_if])) 2);
   609 (* case na : free_tv t - free_tv Sa *)
   610 (* case na : free_tv t - free_tv Sa *)