Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1 Make_ValueLiteral(vl) → true, Make_ValueOrVariableName(vn) → true, Make_BasicExpr(be) → true, ProductExpr(vel) → CheckPreCondGenProduct(vel, func, trans, types), Make_SetExpr(setExpr) → CheckPreCondGenSet(setExpr, func, trans, types), Make_ListExpr(listExpr) → CheckPreCondGenList(listExpr, func, trans, types), Make_MapExpr(mapExpr) → CheckPreCondGenMap(mapExpr, func, trans, types), ApplicationExpr(ave, vl) → CheckPreCondApplicationExpr( ave, vl, func, trans, types), BracketedExpr(bve) → CheckPreCondGen(bve, func, trans, types), ValueInfixExpr(first, op, second) → and( CheckPreCondGen(first, func, trans, types), CheckPreCondGen(second, func, trans, types)), ValuePrefixExpr(op, operand) → CheckPreCondGen(operand, func, trans, types), LetExpr(ldl, lve) → and( CheckPreCondGenLetDef(ldl, func, trans, types), CheckPreCondGen(lve, func, trans, types)), Make_IfExpr(ie) → and( and( and( CheckPreCondGen( condition(ie), func, trans, types), CheckPreCondGen( if_case(ie), func, trans, types)), CheckPreCondGenElsif( elsif_list(ie), func, trans, types)), CheckPreCondGen( else_case(ie), func, trans, types)), CaseExpr(cond, cbl) → and( CheckPreCondGen(cond, func, trans, types), CheckPreCondGenCaseBranch( cbl, func, trans, types)) end, 320
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 CheckPreCondGenProduct : ValueExpr ∗ × FUNC × TRANS × TYPES → Bool CheckPreCondGenProduct(vel, func, trans, types) ≡ if vel = 〈〉 then true else and( CheckPreCondGen(hd vel, func, trans, types), CheckPreCondGenProduct( tl vel, func, trans, types)) end, CheckPreCondGenSet : SetExpr × FUNC × TRANS × TYPES → Bool CheckPreCondGenSet(se, func, trans, types) ≡ case se of RangedSetExpr(first, second) → and( CheckPreCondGen(first, func, trans, types), CheckPreCondGen(second, func, trans, types)), EnumeratedSetExpr(ovel) → case ovel of ValueExprList(vel) → CheckPreCondGenProduct( vel, func, trans, types), NoValueExprList → true end, ComprehendedSetExpr(ve, t, or) → and( CheckPreCondGen(ve, func, trans, types), CheckPreCondOptRestriction( or, func, trans, types)) end, CheckPreCondGenList : ListExpr × FUNC × TRANS × TYPES → Bool CheckPreCondGenList(le, func, trans, types) ≡ case le of RangedListExpr(first, second) → and( CheckPreCondGen(first, func, trans, types), CheckPreCondGen(second, func, trans, types)), EnumeratedListExpr(ovel) → case ovel of 321
- 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
- 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 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
- Page 356 and 357: APPENDIX D. SPECIFICATION OF TRANSF
- Page 358 and 359: APPENDIX D. SPECIFICATION OF TRANSF
- Page 360 and 361: APPENDIX D. SPECIFICATION OF TRANSF
- Page 362 and 363: APPENDIX D. SPECIFICATION OF TRANSF
- Page 364 and 365: APPENDIX D. SPECIFICATION OF TRANSF
- Page 366 and 367: APPENDIX D. SPECIFICATION OF TRANSF
- Page 368 and 369: APPENDIX D. SPECIFICATION OF TRANSF
- Page 370 and 371: APPENDIX D. SPECIFICATION OF TRANSF
- Page 372 and 373: APPENDIX D. SPECIFICATION OF TRANSF
- Page 374 and 375: APPENDIX D. SPECIFICATION OF TRANSF
- Page 376 and 377: APPENDIX D. SPECIFICATION OF TRANSF
- Page 378 and 379: APPENDIX D. SPECIFICATION OF TRANSF
- Page 380 and 381: APPENDIX D. SPECIFICATION OF TRANSF
- Page 382 and 383: APPENDIX D. SPECIFICATION OF TRANSF
- Page 384 and 385: APPENDIX D. SPECIFICATION OF TRANSF
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1<br />
CheckPreCondGenProduct :<br />
ValueExpr ∗ × FUNC × TRANS × TYPES → Bool<br />
CheckPreCondGenProduct(vel, func, trans, types) ≡<br />
if vel = 〈〉 then true<br />
else<br />
and(<br />
CheckPreCondGen(hd vel, func, trans, types),<br />
CheckPreCondGenProduct(<br />
tl vel, func, trans, types))<br />
end,<br />
CheckPreCondGenSet :<br />
SetExpr × FUNC × TRANS × TYPES → Bool<br />
CheckPreCondGenSet(se, func, trans, types) ≡<br />
case se <strong>of</strong><br />
RangedSetExpr(first, second) →<br />
and(<br />
CheckPreCondGen(first, func, trans, types),<br />
CheckPreCondGen(second, func, trans, types)),<br />
EnumeratedSetExpr(ovel) →<br />
case ovel <strong>of</strong><br />
ValueExprList(vel) →<br />
CheckPreCondGenProduct(<br />
vel, func, trans, types),<br />
NoValueExprList → true<br />
end,<br />
ComprehendedSetExpr(ve, t, or) →<br />
and(<br />
CheckPreCondGen(ve, func, trans, types),<br />
CheckPreCondOptRestriction(<br />
or, func, trans, types))<br />
end,<br />
CheckPreCondGenList :<br />
ListExpr × FUNC × TRANS × TYPES → Bool<br />
CheckPreCondGenList(le, func, trans, types) ≡<br />
case le <strong>of</strong><br />
RangedListExpr(first, second) →<br />
and(<br />
CheckPreCondGen(first, func, trans, types),<br />
CheckPreCondGen(second, func, trans, types)),<br />
EnumeratedListExpr(ovel) →<br />
case ovel <strong>of</strong><br />
321