src/HOL/Lambda/Eta.ML
changeset 5625 77e9ab9cd7b1
parent 5261 ce3c25c8a694
child 5983 79e301a6a51b
equal deleted inserted replaced
5624:4813dd0fe6e5 5625:77e9ab9cd7b1
    42 by (Asm_simp_tac 2);
    42 by (Asm_simp_tac 2);
    43 by (Blast_tac 2);
    43 by (Blast_tac 2);
    44 by (asm_full_simp_tac (addsplit (simpset())) 2);
    44 by (asm_full_simp_tac (addsplit (simpset())) 2);
    45 by (simp_tac (simpset() addsimps [diff_Suc,subst_Var]
    45 by (simp_tac (simpset() addsimps [diff_Suc,subst_Var]
    46                       addsplits [nat.split]) 1);
    46                       addsplits [nat.split]) 1);
    47 by (safe_tac (HOL_cs addSEs [nat_neqE]));
    47 by (safe_tac (HOL_cs addSEs [linorder_neqE]));
    48 by (ALLGOALS trans_tac);
    48 by (ALLGOALS trans_tac);
    49 qed "free_subst";
    49 qed "free_subst";
    50 Addsimps [free_subst];
    50 Addsimps [free_subst];
    51 
    51 
    52 Goal "s -e> t ==> !i. free t i = free s i";
    52 Goal "s -e> t ==> !i. free t i = free s i";
   117 AddIs [beta_subst];
   117 AddIs [beta_subst];
   118 
   118 
   119 Goal "!i. t[Var i/i] = t[Var(i)/Suc i]";
   119 Goal "!i. t[Var i/i] = t[Var(i)/Suc i]";
   120 by (induct_tac "t" 1);
   120 by (induct_tac "t" 1);
   121 by (ALLGOALS (asm_simp_tac (addsplit (simpset()))));
   121 by (ALLGOALS (asm_simp_tac (addsplit (simpset()))));
   122 by (safe_tac (HOL_cs addSEs [nat_neqE]));
   122 by (safe_tac (HOL_cs addSEs [linorder_neqE]));
   123 by (ALLGOALS trans_tac);
   123 by (ALLGOALS trans_tac);
   124 qed_spec_mp "subst_Var_Suc";
   124 qed_spec_mp "subst_Var_Suc";
   125 Addsimps [subst_Var_Suc];
   125 Addsimps [subst_Var_Suc];
   126 
   126 
   127 Goal "s -e> t ==> (!i. lift s i -e> lift t i)";
   127 Goal "s -e> t ==> (!i. lift s i -e> lift t i)";
   161 
   161 
   162 Goal "!i. (~free s i) = (? t. s = lift t i)";
   162 Goal "!i. (~free s i) = (? t. s = lift t i)";
   163 by (induct_tac "s" 1);
   163 by (induct_tac "s" 1);
   164   by (Simp_tac 1);
   164   by (Simp_tac 1);
   165   by (SELECT_GOAL(safe_tac HOL_cs)1);
   165   by (SELECT_GOAL(safe_tac HOL_cs)1);
   166    by (etac nat_neqE 1);
   166    by (etac linorder_neqE 1);
   167     by (res_inst_tac [("x","Var nat")] exI 1);
   167     by (res_inst_tac [("x","Var nat")] exI 1);
   168     by (Asm_simp_tac 1);
   168     by (Asm_simp_tac 1);
   169    by (res_inst_tac [("x","Var(nat-1)")] exI 1);
   169    by (res_inst_tac [("x","Var(nat-1)")] exI 1);
   170    by (Asm_simp_tac 1);
   170    by (Asm_simp_tac 1);
   171   by (rtac notE 1);
   171   by (rtac notE 1);