src/HOL/MiniML/W.ML
changeset 4727 b820f57a2323
parent 4686 74a12e86b20b
child 5069 3ea049f7979d
equal deleted inserted replaced
4726:6b7027b9e3f4 4727:b820f57a2323
    44 by (assume_tac 1);
    44 by (assume_tac 1);
    45 qed "new_tv_compatible_W";
    45 qed "new_tv_compatible_W";
    46 
    46 
    47 goal thy "!!sch. new_tv n sch --> new_tv (n + (min_new_bound_tv sch)) (bound_typ_inst (%b. TVar (b + n)) sch)";
    47 goal thy "!!sch. new_tv n sch --> new_tv (n + (min_new_bound_tv sch)) (bound_typ_inst (%b. TVar (b + n)) sch)";
    48 by (type_scheme.induct_tac "sch" 1);
    48 by (type_scheme.induct_tac "sch" 1);
    49 by (Asm_full_simp_tac 1);
    49   by (Asm_full_simp_tac 1);
    50 by (asm_full_simp_tac (simpset() addsimps [add_commute]) 1);
    50  by (asm_full_simp_tac (simpset() addsimps [add_commute]) 1);
    51 by (strip_tac 1);
    51 by (strip_tac 1);
    52 by (Asm_full_simp_tac 1);
    52 by (Asm_full_simp_tac 1);
    53 by (etac conjE 1);
    53 by (etac conjE 1);
    54 by (rtac conjI 1);
    54 by (rtac conjI 1);
       
    55  by (rtac new_tv_le 1);
       
    56   by (assume_tac 2);
       
    57  by (rtac add_le_mono 1);
       
    58   by (Simp_tac 1);
       
    59  by (simp_tac (simpset() addsimps [max_def]) 1);
    55 by (rtac new_tv_le 1);
    60 by (rtac new_tv_le 1);
    56 by (mp_tac 2);
    61  by (assume_tac 2);
    57 by (mp_tac 2);
       
    58 by (assume_tac 2);
       
    59 by (rtac add_le_mono 1);
    62 by (rtac add_le_mono 1);
    60 by (Simp_tac 1);
    63  by (Simp_tac 1);
    61 by (simp_tac (simpset() addsimps [max_def]) 1);
       
    62 by (strip_tac 1);
       
    63 by (rtac new_tv_le 1);
       
    64 by (mp_tac 2);
       
    65 by (mp_tac 2);
       
    66 by (assume_tac 2);
       
    67 by (rtac add_le_mono 1);
       
    68 by (Simp_tac 1);
       
    69 by (simp_tac (simpset() addsimps [max_def]) 1);
    64 by (simp_tac (simpset() addsimps [max_def]) 1);
    70 by (strip_tac 1);
    65 by (strip_tac 1);
    71 by (dtac not_leE 1);
    66 by (dtac not_leE 1);
    72 by (rtac less_or_eq_imp_le 1);
    67 by (rtac less_or_eq_imp_le 1);
    73 by (Fast_tac 1);
    68 by (Fast_tac 1);
   431 (** LEVEL 26 **)
   426 (** LEVEL 26 **)
   432 by (eres_inst_tac [("x","R")] allE 1);
   427 by (eres_inst_tac [("x","R")] allE 1);
   433 by (eres_inst_tac [("x","$ S A")] allE 1);
   428 by (eres_inst_tac [("x","$ S A")] allE 1);
   434 by (eres_inst_tac [("x","t2")] allE 1);
   429 by (eres_inst_tac [("x","t2")] allE 1);
   435 by (eres_inst_tac [("x","m")] allE 1);
   430 by (eres_inst_tac [("x","m")] allE 1);
   436 by (rotate_tac ~3 1);
       
   437 by (Asm_full_simp_tac 1);
   431 by (Asm_full_simp_tac 1);
   438 by (safe_tac HOL_cs);
   432 by (safe_tac HOL_cs);
   439 by (contr_tac 1);
       
   440 by (fast_tac (HOL_cs addIs [sym RS W_var_geD,new_tv_W RS
   433 by (fast_tac (HOL_cs addIs [sym RS W_var_geD,new_tv_W RS
   441         conjunct1,new_scheme_list_le,new_tv_subst_scheme_list]) 1);
   434         conjunct1,new_scheme_list_le,new_tv_subst_scheme_list]) 1);
   442 (** LEVEL 35 **)
   435 (** LEVEL 35 **)
   443 by (subgoal_tac
   436 by (subgoal_tac
   444   "$ (%x. if x=ma then t' else (if x:(free_tv t - free_tv Sa) then R x \
   437   "$ (%x. if x=ma then t' else (if x:(free_tv t - free_tv Sa) then R x \
   546 by (Asm_simp_tac 1); 
   539 by (Asm_simp_tac 1); 
   547 by (eres_inst_tac [("x","R")] allE 1);
   540 by (eres_inst_tac [("x","R")] allE 1);
   548 by (eres_inst_tac [("x","gen ($ S A) t # $ S A")] allE 1);
   541 by (eres_inst_tac [("x","gen ($ S A) t # $ S A")] allE 1);
   549 by (eres_inst_tac [("x","t'")] allE 1);
   542 by (eres_inst_tac [("x","t'")] allE 1);
   550 by (eres_inst_tac [("x","m")] allE 1);
   543 by (eres_inst_tac [("x","m")] allE 1);
   551 by (rotate_tac 4 1);
       
   552 by (Asm_full_simp_tac 1);
   544 by (Asm_full_simp_tac 1);
   553 by (dtac mp 1);
   545 by (dtac mp 1);
   554 by (rtac has_type_le_env 1);
   546 by (rtac has_type_le_env 1);
   555 by (assume_tac 1);
   547 by (assume_tac 1);
   556 by (Simp_tac 1);
   548 by (Simp_tac 1);