New theorems about "assign"
authorpaulson
Fri, 09 May 1997 10:18:58 +0200
changeset 314749f2614732ea
parent 3146 922a60451382
child 3148 f081757ce757
New theorems about "assign"
src/HOL/Induct/Com.ML
     1.1 --- a/src/HOL/Induct/Com.ML	Fri May 09 10:18:07 1997 +0200
     1.2 +++ b/src/HOL/Induct/Com.ML	Fri May 09 10:18:58 1997 +0200
     1.3 @@ -41,3 +41,19 @@
     1.4  (*SLOW (23s) due to proof reconstruction; needs 60s if thin_tac is omitted*)
     1.5  by (REPEAT (blast_tac (!claset addEs [exec_WHILE_case]) 1));
     1.6  qed "Function_exec";
     1.7 +
     1.8 +
     1.9 +goalw thy [assign_def] "(s[v/x])x = v";
    1.10 +by (Simp_tac 1);
    1.11 +qed "assign_same";
    1.12 +
    1.13 +goalw thy [assign_def] "!!y. y~=x ==> (s[v/x])y = s y";
    1.14 +by (Asm_simp_tac 1);
    1.15 +qed "assign_different";
    1.16 +
    1.17 +goalw thy [assign_def] "s[s x/x] = s";
    1.18 +br ext 1;
    1.19 +by (simp_tac (!simpset setloop split_tac[expand_if]) 1);
    1.20 +qed "assign_triv";
    1.21 +
    1.22 +Addsimps [assign_same, assign_different, assign_triv];