Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS if vdl = 〈〉 then func else makeFuncMap( tl vdl, func † getMapEntrance(hd vdl, trans), trans) end, /∗Estalishes an entrance in the FUNC map based on a value definition.∗/ /∗ Arguments: ======= vd: the value definition ∗/ getMapEntrance : ValueDef × TRANS → FUNC getMapEntrance(vd, trans) ≡ case vd of ExplicitValueDef(st, ve) → if includesTRANSName( Known(type_expr(st)), dom trans) then case binding(st) of IdBinding(id) → [ id ↦→ mk_FuncSpec( FunctionTypeExpr( TypeLiteral(UNIT), TOTAL_FUNCTION_ARROW, mk_ResultDesc( NoReadAccessMode, NoWriteAccessMode, type_expr(st)) ), ve, 〈〉, 〈〉) ], Make_ProductBinding(pb) → [ ] end else [ ] end, ExplicitFunctionDef(st, ffa, ve, precond) → case binding(st) of IdBinding(id) → [ id ↦→ mk_FuncSpec(type_expr(st), ve, 〈〉, 〈〉) ] end end, 290
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER /∗Expands the FUNC map with read and write lists. ∗/ /∗ Arguments: ======= vdl: the value definition list ∗/ expandFuncMap : ValueDef ∗ × FUNC × TRANS → FUNC expandFuncMap(vdl, func, trans) ≡ if vdl = 〈〉 then func else expandFuncMap( tl vdl, func † expandMapEntrance(hd vdl, func, trans), trans) end, /∗Expands the an entrance in the FUNC map with read and write lists.∗/ /∗ Arguments: ======= vd: the value definition ∗/ expandMapEntrance : ValueDef × FUNC × TRANS → FUNC expandMapEntrance(vd, func, trans) ≡ case vd of ExplicitValueDef(st, ve) → if includesTRANSName( Known(type_expr(st)), dom trans) then case binding(st) of IdBinding(id) → [ id ↦→ mk_FuncSpec( FunctionTypeExpr( TypeLiteral(UNIT), TOTAL_FUNCTION_ARROW, mk_ResultDesc( NoReadAccessMode, NoWriteAccessMode, type_expr(st)) ), ve, 〈〉, 291
- 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 264 and 265: 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 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
- Page 314 and 315: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 316 and 317: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 318 and 319: APPENDIX D. SPECIFICATION OF TRANSF
- Page 320 and 321: APPENDIX D. SPECIFICATION OF TRANSF
- Page 322 and 323: APPENDIX D. SPECIFICATION OF TRANSF
- Page 324 and 325: APPENDIX D. SPECIFICATION OF TRANSF
- Page 326 and 327: APPENDIX D. SPECIFICATION OF TRANSF
- Page 328 and 329: APPENDIX D. SPECIFICATION OF TRANSF
- Page 330 and 331: APPENDIX D. SPECIFICATION OF TRANSF
- Page 332 and 333: APPENDIX D. SPECIFICATION OF TRANSF
- Page 334 and 335: APPENDIX D. SPECIFICATION OF TRANSF
- Page 336 and 337: APPENDIX D. SPECIFICATION OF TRANSF
- Page 338 and 339: APPENDIX D. SPECIFICATION OF TRANSF
- Page 340 and 341: APPENDIX D. SPECIFICATION OF TRANSF
- Page 342 and 343: APPENDIX D. SPECIFICATION OF TRANSF
- Page 344 and 345: APPENDIX D. SPECIFICATION OF TRANSF
- Page 346 and 347: APPENDIX D. SPECIFICATION OF TRANSF
- Page 348 and 349: APPENDIX D. SPECIFICATION OF TRANSF
- Page 350 and 351: APPENDIX D. SPECIFICATION OF TRANSF
- Page 352 and 353: APPENDIX D. SPECIFICATION OF TRANSF
- Page 354 and 355: APPENDIX D. SPECIFICATION OF TRANSF
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER<br />
/∗Expands the FUNC map with read and write lists.<br />
∗/<br />
/∗<br />
Arguments:<br />
=======<br />
vdl: the value definition list<br />
∗/<br />
expandFuncMap : ValueDef ∗ × FUNC × TRANS → FUNC<br />
expandFuncMap(vdl, func, trans) ≡<br />
if vdl = 〈〉 then func<br />
else<br />
expandFuncMap(<br />
tl vdl,<br />
func † expandMapEntrance(hd vdl, func, trans),<br />
trans)<br />
end,<br />
/∗Expands the an entrance in the FUNC map with<br />
read and write lists.∗/<br />
/∗<br />
Arguments:<br />
=======<br />
vd: the value definition<br />
∗/<br />
expandMapEntrance : ValueDef × FUNC × TRANS → FUNC<br />
expandMapEntrance(vd, func, trans) ≡<br />
case vd <strong>of</strong><br />
ExplicitValueDef(st, ve) →<br />
if<br />
includesTRANSName(<br />
Known(type_expr(st)), dom trans)<br />
then<br />
case binding(st) <strong>of</strong><br />
IdBinding(id) →<br />
[ id ↦→<br />
mk_FuncSpec(<br />
FunctionTypeExpr(<br />
TypeLiteral(UNIT),<br />
TOTAL_FUNCTION_ARROW,<br />
mk_ResultDesc(<br />
NoReadAccessMode,<br />
NoWriteAccessMode, type_expr(st))<br />
), ve, 〈〉,<br />
291