--- a/src/HOL/Induct/Com.thy Fri Nov 21 11:54:23 1997 +0100
+++ b/src/HOL/Induct/Com.thy Fri Nov 21 11:57:58 1997 +0100
@@ -34,6 +34,12 @@
translations "csig -[eval]-> s" == "(csig,s) : exec eval"
+syntax eval' :: "[exp*state,nat*state] =>
+ ((exp*state) * (nat*state)) set => bool"
+ ("_/ -|[_]-> _" [50,0,50] 50)
+translations
+ "esig -|[eval]-> ns" => "(esig,ns) : eval"
+
constdefs assign :: [state,nat,loc] => state ("_[_'/_]" [95,0,0] 95)
"s[m/x] == (%y. if y=x then m else s y)"
@@ -43,20 +49,20 @@
intrs
Skip "(SKIP,s) -[eval]-> s"
- Assign "((e,s), (v,s')) : eval ==> (x := e, s) -[eval]-> s'[v/x]"
+ Assign "(e,s) -|[eval]-> (v,s') ==> (x := e, s) -[eval]-> s'[v/x]"
Semi "[| (c0,s) -[eval]-> s2; (c1,s2) -[eval]-> s1 |]
==> (c0 ;; c1, s) -[eval]-> s1"
- IfTrue "[| ((e,s), (0,s')) : eval; (c0,s') -[eval]-> s1 |]
+ IfTrue "[| (e,s) -|[eval]-> (0,s'); (c0,s') -[eval]-> s1 |]
==> (IF e THEN c0 ELSE c1, s) -[eval]-> s1"
- IfFalse "[| ((e,s), (1,s')) : eval; (c1,s') -[eval]-> s1 |]
+ IfFalse "[| (e,s) -|[eval]-> (1,s'); (c1,s') -[eval]-> s1 |]
==> (IF e THEN c0 ELSE c1, s) -[eval]-> s1"
- WhileFalse "((e,s), (1,s1)) : eval ==> (WHILE e DO c, s) -[eval]-> s1"
+ WhileFalse "(e,s) -|[eval]-> (1,s1) ==> (WHILE e DO c, s) -[eval]-> s1"
- WhileTrue "[| ((e,s), (0,s1)) : eval;
+ WhileTrue "[| (e,s) -|[eval]-> (0,s1);
(c,s1) -[eval]-> s2; (WHILE e DO c, s2) -[eval]-> s3 |]
==> (WHILE e DO c, s) -[eval]-> s3"
--- a/src/HOL/Induct/Exp.ML Fri Nov 21 11:54:23 1997 +0100
+++ b/src/HOL/Induct/Exp.ML Fri Nov 21 11:57:58 1997 +0100
@@ -57,7 +57,7 @@
by (blast_tac (claset() addIs prems) 1);
by (blast_tac (claset() addIs prems) 1);
by (forward_tac [impOfSubs (Int_lower1 RS exec_mono)] 1);
-by (fast_tac (claset() addIs prems addss (simpset() addsimps [split_lemma])) 1);
+by (auto_tac (claset() addIs prems,simpset() addsimps [split_lemma]));
qed "eval_induct";
@@ -87,10 +87,9 @@
(*Expression evaluation is functional, or deterministic*)
-goal thy "Function eval";
-by (simp_tac (simpset() addsimps [Function_def]) 1);
-by (REPEAT (rtac allI 1));
-by (rtac impI 1);
+goalw thy [Function_def] "Function eval";
+by (strip_tac 1);
+by (split_all_tac 1);
by (etac eval_induct 1);
by (dtac com_Unique 4);
by (ALLGOALS (full_simp_tac (simpset() addsimps [Unique_def])));
--- a/src/HOL/Induct/Exp.thy Fri Nov 21 11:54:23 1997 +0100
+++ b/src/HOL/Induct/Exp.thy Fri Nov 21 11:57:58 1997 +0100
@@ -13,7 +13,7 @@
"-|->" :: "[exp*state,nat*state] => bool" (infixl 50)
translations
"esig -|-> (n,s)" <= "(esig,n,s) : eval"
- "esig -|-> ns" == "(esig,ns) : eval"
+ "esig -|-> ns" == "(esig,ns ) : eval"
inductive eval
intrs