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 BOOL_ENV_TYPES CheckCaseBranchList( cbl, et, typings, func, trans, env, types) ≡ if cbl = 〈〉 then mk_BOOL_ENV_TYPES(true, env, types) else if and( bool( CheckPattern( pattern(hd cbl), func, trans, env, types )), bool( CheckValueExpr( value_expr(hd cbl), et, typings, func, trans, envMap( CheckPattern( pattern(hd cbl), func, trans, env, types)), typesMap( CheckPattern( pattern(hd cbl), func, trans, env, types))))) then CheckCaseBranchList( tl cbl, et, typings, func, trans, envMap( CheckPattern( pattern(hd cbl), func, trans, env, types )), typesMap( CheckValueExpr( value_expr(hd cbl), et, typings, func, trans, envMap( CheckPattern( pattern(hd cbl), func, trans, env, types)), typesMap( CheckPattern( pattern(hd cbl), func, trans, env, types))))) else 352
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 mk_BOOL_ENV_TYPES( false, envMap( CheckPattern( pattern(hd cbl), func, trans, env, types )), typesMap( CheckValueExpr( value_expr(hd cbl), et, typings, func, trans, envMap( CheckPattern( pattern(hd cbl), func, trans, env, types)), typesMap( CheckPattern( pattern(hd cbl), func, trans, env, types))))) end end, CheckPattern : Pattern × FUNC × TRANS × ENV × TYPES → BOOL_ENV_TYPES CheckPattern(p, func, trans, env, types) ≡ case p of ValueLiteralPattern(vl) → mk_BOOL_ENV_TYPES(true, env, types), NamePattern(id, optid) → if isinId(id, domainFUNC(func)) then mk_BOOL_ENV_TYPES(false, env, types) else if not( isinBinding( IdBinding(id), domainTYPES(types))) then mk_BOOL_ENV_TYPES(true, env, types) else if checkTRANS( getMapValueTYPES(types, IdBinding(id)), domainTRANS(trans)) then /∗The value expression is of the type of interest. 353
- 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
- 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 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
- Page 386 and 387: APPENDIX D. SPECIFICATION OF TRANSF
- Page 388 and 389: APPENDIX D. SPECIFICATION OF TRANSF
- Page 390 and 391: APPENDIX D. SPECIFICATION OF TRANSF
- Page 392 and 393: APPENDIX D. SPECIFICATION OF TRANSF
- Page 394 and 395: APPENDIX D. SPECIFICATION OF TRANSF
- Page 396 and 397: APPENDIX D. SPECIFICATION OF TRANSF
- Page 398 and 399: APPENDIX D. SPECIFICATION OF TRANSF
- Page 400 and 401: APPENDIX D. SPECIFICATION OF TRANSF
- Page 402 and 403: APPENDIX D. SPECIFICATION OF TRANSF
- Page 404 and 405: APPENDIX D. SPECIFICATION OF TRANSF
- Page 406 and 407: APPENDIX D. SPECIFICATION OF TRANSF
- Page 408 and 409: APPENDIX D. SPECIFICATION OF TRANSF
- Page 410 and 411: APPENDIX D. SPECIFICATION OF TRANSF
- Page 412 and 413: APPENDIX D. SPECIFICATION OF TRANSF
- Page 414 and 415: APPENDIX D. SPECIFICATION OF TRANSF
- Page 416 and 417: APPENDIX D. SPECIFICATION OF TRANSF
APPENDIX D. SPECIFICATION OF TRANSFORMER IN RSL1<br />
BOOL_ENV_TYPES<br />
CheckCaseBranchList(<br />
cbl, et, typings, func, trans, env, types) ≡<br />
if cbl = 〈〉<br />
then mk_BOOL_ENV_TYPES(true, env, types)<br />
else<br />
if<br />
and(<br />
bool(<br />
CheckPattern(<br />
pattern(hd cbl), func, trans, env, types<br />
)),<br />
bool(<br />
CheckValueExpr(<br />
value_expr(hd cbl), et, typings, func,<br />
trans,<br />
envMap(<br />
CheckPattern(<br />
pattern(hd cbl), func, trans,<br />
env, types)),<br />
typesMap(<br />
CheckPattern(<br />
pattern(hd cbl), func, trans,<br />
env, types)))))<br />
then<br />
CheckCaseBranchList(<br />
tl cbl, et, typings, func, trans,<br />
envMap(<br />
CheckPattern(<br />
pattern(hd cbl), func, trans, env, types<br />
)),<br />
typesMap(<br />
CheckValueExpr(<br />
value_expr(hd cbl), et, typings, func,<br />
trans,<br />
envMap(<br />
CheckPattern(<br />
pattern(hd cbl), func, trans,<br />
env, types)),<br />
typesMap(<br />
CheckPattern(<br />
pattern(hd cbl), func, trans,<br />
env, types)))))<br />
else<br />
352