Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS Arguments: ======= te: the type expression Result: ======= Access_list: the corresponding access list ∗/ getAccess : TypeExpr × TRANS → Access ∗ getAccess(te, trans) ≡ case te of TypeLiteral(literal) → 〈〉, TypeName(id) → if (id ∈ dom trans) then /∗Type of interest.∗/ 〈AccessValueOrVariableName( mk_ValueOrVariableName(id))〉 else /∗Not type of interest.∗/ 〈〉 end, TypeExprProduct(tep) → getAccessList(tep, trans), TypeExprSet(tes) → 〈〉, TypeExprList(tel) → 〈〉, TypeExprMap(tem) → 〈〉, FunctionTypeExpr(arg, fa, res) → 〈〉, BracketedTypeExpr(bte) → getAccess(bte, trans) end, /∗Returns an access list from a type expression list.∗/ /∗ Arguments: ======= tel: the type expression list Result: ======= Access_list: the corresponding access list ∗/ getAccessList : TypeExpr ∗ × TRANS → Access ∗ getAccessList(tel, trans) ≡ if tel = 〈〉 then 〈〉 else getAccess(hd tel, trans) 248
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER getAccessList(tl tel, trans) end, /∗Returns an access list of the values of types of interest read from during evaluation of pre condition.∗/ /∗ Arguments: ======= idset: the functions already evaluated precond: the pre condition et: the expected type of the value expression Result: ======= AccessResult: the corresponding access result ∗/ getAccessObsOptPreCondition : Id-set × OptionalPreCondition × ExpType × FUNC × TRANS → AccessResult getAccessObsOptPreCondition( idset, precond, et, func, trans) ≡ case precond of PreCondition(ve) → getAccessObs(idset, ve, et, func, trans), NoPreCondition → mk_AccessResult(〈〉, idset) end, /∗Returns an access list of the values of types of interest read from during evaluation of a function.∗/ /∗ Arguments: ======= idset: the functions already evaluated ve: the value expression et: the expected type of the value expression Result: ======= AccessResult: the corresponding access result ∗/ getAccessObs : Id-set × ValueExpr × ExpType × FUNC × TRANS → AccessResult 249
- Page 214 and 215: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 216 and 217: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 218 and 219: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 220 and 221: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 222 and 223: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 224 and 225: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 226 and 227: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 228 and 229: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 230 and 231: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 232 and 233: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 234 and 235: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 236 and 237: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 238 and 239: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 240 and 241: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 242 and 243: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 244 and 245: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 246 and 247: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 248 and 249: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 250 and 251: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 252 and 253: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 254 and 255: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 256 and 257: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 258 and 259: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 260 and 261: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 262 and 263: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 266 and 267: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 268 and 269: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 270 and 271: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 272 and 273: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 274 and 275: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 276 and 277: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 278 and 279: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 280 and 281: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 282 and 283: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 284 and 285: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 286 and 287: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 288 and 289: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 290 and 291: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 292 and 293: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 294 and 295: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 296 and 297: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 298 and 299: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 300 and 301: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 302 and 303: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 304 and 305: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 306 and 307: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 308 and 309: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 310 and 311: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 312 and 313: APPENDIX C. FORMAL SPECIFICATIONS O
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER<br />
getAccessList(tl tel, trans)<br />
end,<br />
/∗Returns an access list <strong>of</strong> the values <strong>of</strong> types<br />
<strong>of</strong> interest read from during evaluation <strong>of</strong> pre<br />
condition.∗/<br />
/∗<br />
Arguments:<br />
=======<br />
idset: the functions already evaluated<br />
precond: the pre condition<br />
et: the expected type <strong>of</strong> the value expression<br />
Result:<br />
=======<br />
AccessResult: the corresponding access result<br />
∗/<br />
getAccessObsOptPreCondition :<br />
Id-set × OptionalPreCondition × ExpType × FUNC ×<br />
TRANS →<br />
AccessResult<br />
getAccessObsOptPreCondition(<br />
idset, precond, et, func, trans) ≡<br />
case precond <strong>of</strong><br />
PreCondition(ve) →<br />
getAccessObs(idset, ve, et, func, trans),<br />
NoPreCondition → mk_AccessResult(〈〉, idset)<br />
end,<br />
/∗Returns an access list <strong>of</strong> the values <strong>of</strong> types<br />
<strong>of</strong> interest read from during evaluation <strong>of</strong> a<br />
function.∗/<br />
/∗<br />
Arguments:<br />
=======<br />
idset: the functions already evaluated<br />
ve: the value expression<br />
et: the expected type <strong>of</strong> the value expression<br />
Result:<br />
=======<br />
AccessResult: the corresponding access result<br />
∗/<br />
getAccessObs :<br />
Id-set × ValueExpr × ExpType × FUNC × TRANS →<br />
AccessResult<br />
249