Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS /∗**** ExpType end ****∗/ /∗**** ValueExpr ****∗/ /∗Turns a value expression list into a value expression. ∗/ /∗ Arguments: ======= vel: the value expression list Result: ======= ValueExpr: the resulting value expression ∗/ toValueExpr : ValueExpr ∗ → ValueExpr toValueExpr(vel) ≡ if len vel = 1 then hd vel else ProductExpr(vel) end, /∗Removes proper Tgenerators from a value expression list.∗/ /∗ Arguments: ======= vel: the value expression list etl: the corresponding list of expected types vl: the value expression list which is shortened Results: ===== ValueExpr_list: the corresponding value expression list ∗/ makeValueExprList : ValueExpr ∗ × ExpType ∗ × ValueExpr ∗ × TRANS × FUNC → ValueExpr ∗ makeValueExprList(vel, etl, vl, trans, func) ≡ if vel = 〈〉 then 〈〉 else if isGen(hd vel, hd etl, trans, func) ∧ ∼ returnsNonTOI(hd vel, hd etl, trans, func) then makeValueExprList( tl vel, tl etl, tl vl, trans, func) 236
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER else 〈hd vl〉 makeValueExprList( tl vel, tl etl, tl vl, trans, func) end end, /∗Establishes sequencing expression when appropriate. ∗/ /∗ Arguments: ======= ve: the value expression te: the type of the value expression et: the expected type of the value expression Results: ===== ValueExpr: the resulting value expression list ∗/ makeSequencingExpr : ValueExpr × TypeExpr × ExpType × TRANS × FUNC → ValueExpr makeSequencingExpr(ve, te, et, trans, func) ≡ if isGen(ve, et, trans, func) ∧ ∼ returnsNonTOI(ve, et, trans, func) ∧ ∼ equalsType(te, et) then BracketedExpr( SequencingExpr( ve, toValueExpr(getTOIReturnsList(te, trans)))) else ve end, /∗**** ValueExpr end ****∗/ /∗**** Generators and observers ****∗/ /∗Returns true if the value expression list contains generators, false otherwise. ∗/ /∗ Arguments: 237
- Page 202 and 203: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 204 and 205: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 206 and 207: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 208 and 209: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 210 and 211: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 212 and 213: APPENDIX C. FORMAL SPECIFICATIONS O
- 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 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 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
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER<br />
else<br />
〈hd vl〉 <br />
makeValueExprList(<br />
tl vel, tl etl, tl vl, trans, func)<br />
end<br />
end,<br />
/∗Establishes sequencing expression when appropriate.<br />
∗/<br />
/∗<br />
Arguments:<br />
=======<br />
ve: the value expression<br />
te: the type <strong>of</strong> the value expression<br />
et: the expected type <strong>of</strong> the value expression<br />
Results:<br />
=====<br />
ValueExpr: the resulting value expression list<br />
∗/<br />
makeSequencingExpr :<br />
ValueExpr × TypeExpr × ExpType × TRANS × FUNC →<br />
ValueExpr<br />
makeSequencingExpr(ve, te, et, trans, func) ≡<br />
if<br />
isGen(ve, et, trans, func) ∧<br />
∼ returnsNonTOI(ve, et, trans, func) ∧<br />
∼ equalsType(te, et)<br />
then<br />
BracketedExpr(<br />
SequencingExpr(<br />
ve,<br />
toValueExpr(getTOIReturnsList(te, trans))))<br />
else ve<br />
end,<br />
/∗**** ValueExpr end ****∗/<br />
/∗**** Generators and observers ****∗/<br />
/∗Returns true if the value expression list contains<br />
generators, false otherwise.<br />
∗/<br />
/∗<br />
Arguments:<br />
237