| 
8180
 | 
     1  | 
val make_imp_tac = EVERY'[rtac mp, fn i => atac (i+1), etac thin_rl];
  | 
| 
 | 
     2  | 
  | 
| 
8177
 | 
     3  | 
Goalw [body_def] "finite (dom body)";
  | 
| 
10962
 | 
     4  | 
by (rtac finite_dom_map_of 1);
  | 
| 
8177
 | 
     5  | 
qed "finite_dom_body";
  | 
| 
 | 
     6  | 
  | 
| 
 | 
     7  | 
Goalw [WT_bodies_def, body_def] "[| WT_bodies; body pn = Some b |] ==> WT b";
  | 
| 
10962
 | 
     8  | 
by (dtac map_of_SomeD 1);
  | 
| 
8177
 | 
     9  | 
by (Fast_tac 1);
  | 
| 
 | 
    10  | 
qed "WT_bodiesD";
  | 
| 
 | 
    11  | 
  | 
| 
 | 
    12  | 
val WTs_elim_cases = map WTs.mk_cases
  | 
| 
 | 
    13  | 
   ["WT SKIP", "WT (X:==a)", "WT (LOCAL Y:=a IN c)", 
  | 
| 
 | 
    14  | 
    "WT (c1;;c2)","WT (IF b THEN c1 ELSE c2)", "WT (WHILE b DO c)",
  | 
| 
 | 
    15  | 
    "WT (BODY P)", "WT (X:=CALL P(a))"];
  | 
| 
 | 
    16  | 
  | 
| 
 | 
    17  | 
AddSEs WTs_elim_cases;
  |