1700
|
1 |
(* Title: HOL/IMP/Natural.ML
|
|
2 |
ID: $Id$
|
|
3 |
Author: Tobias Nipkow & Larry Paulson, TUM
|
|
4 |
Copyright 1996 TUM
|
|
5 |
*)
|
|
6 |
|
|
7 |
open Natural;
|
|
8 |
|
1973
|
9 |
AddIs evalc.intrs;
|
|
10 |
|
6141
|
11 |
val evalc_elim_cases =
|
|
12 |
map evalc.mk_cases
|
|
13 |
["<SKIP,s> -c-> t",
|
9241
|
14 |
"<x:==a,s> -c-> t",
|
6141
|
15 |
"<c1;c2, s> -c-> t",
|
|
16 |
"<IF b THEN c1 ELSE c2, s> -c-> t"];
|
1700
|
17 |
|
6141
|
18 |
val evalc_WHILE_case = evalc.mk_cases "<WHILE b DO c,s> -c-> t";
|
1700
|
19 |
|
1973
|
20 |
AddSEs evalc_elim_cases;
|
1700
|
21 |
|
|
22 |
(* evaluation of com is deterministic *)
|
5117
|
23 |
Goal "<c,s> -c-> t ==> (!u. <c,s> -c-> u --> u=t)";
|
1730
|
24 |
by (etac evalc.induct 1);
|
1958
|
25 |
by (thin_tac "<?c,s2> -c-> s1" 7);
|
9241
|
26 |
(*blast_tac needs Unify.search_bound, trace_bound ::= 40*)
|
4241
|
27 |
by (ALLGOALS (best_tac (claset() addEs [evalc_WHILE_case])));
|
1700
|
28 |
qed_spec_mp "com_det";
|