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 *) |