defaultV := SM.insert (!defaultV, name, v))
| SOME _ => raise Fail "Duplicate default environment variable"
-fun tInit () = (TAction ((CRoot, dmy),
- !defaultT,
- StringMap.empty),
- dmy)
+fun allSets (e, _) =
+ case e of
+ ESkip => true
+ | ESet _ => true
+ | ESeq es => List.all allSets es
+ | _ => false
+
+val dmy = ErrorMsg.dummyLoc
+
+fun bodyType (_, _, SOME e) =
+ if allSets e then
+ (CPrefix (CRoot, dmy), dmy)
+ else
+ (CRoot, dmy)
+ | bodyType _ = (CRoot, dmy)
+
+fun tInit p =
+ (TAction (bodyType p,
+ !defaultT,
+ StringMap.empty),
+ dmy)
fun eInit () = SM.map (fn f => f ()) (!defaultV)