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 BracketedTypeExpr(bte) → Known(bte), → Known(hd tel) end, → Unknown end, Unknown → Unknown end, getTail : ExpType → ExpType getTail(et) ≡ case et of Known(te) → case te of TypeExprProduct(tel) → Known(TypeExprProduct(tl tel)), → Unknown end, Unknown → Unknown end, expTypeList : TypeExpr × Int → ExpType ∗ expTypeList(te, length) ≡ if length = 1 then 〈Known(te)〉 else expTypeToExpTypeList( removeBrackets(Known(te)), length) end, expTypeToExpTypeList : ExpType × Int → ExpType ∗ expTypeToExpTypeList(et, length) ≡ if equals(length, 0) then 〈〉 else 〈getHead(et)〉 expTypeToExpTypeList(getTail(et), minusOne(length)) end, toExpTypeList : ExpType × Int → ExpType ∗ toExpTypeList(et, length) ≡ if equals(length, 0) then 〈〉 else 〈et〉 toExpTypeList(et, minusOne(length)) end, typeExprToExpTypeList : TypeExpr → ExpType ∗ typeExprToExpTypeList(te) ≡ 412
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1 case te of TypeExprProduct(tep) → typeExprListToExpTypeList(tep), TypeLiteral(ln) → case ln of UNIT → 〈〉, → 〈Known(te)〉 end, → 〈Known(te)〉 end, typeExprListToExpTypeList : TypeExpr ∗ → ExpType ∗ typeExprListToExpTypeList(tel) ≡ if tel = 〈〉 then 〈〉 else 〈Known(hd tel)〉 typeExprListToExpTypeList(tl tel) end, getSetType : ExpType → ExpType getSetType(et) ≡ case et of Known(te) → case te of TypeExprSet(tes) → case tes of FiniteSetTypeExpr(fse) → Known(fse), InfiniteSetTypeExpr(ise) → Known(ise) end, → Unknown end, → Unknown end, getListType : ExpType → ExpType getListType(et) ≡ case et of Known(te) → case te of TypeExprList(tes) → case tes of FiniteListTypeExpr(fse) → Known(fse), InfiniteListTypeExpr(ise) → Known(ise) 413
- 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
- Page 418 and 419: APPENDIX D. SPECIFICATION OF TRANSF
- Page 420 and 421: APPENDIX D. SPECIFICATION OF TRANSF
- Page 422 and 423: APPENDIX D. SPECIFICATION OF TRANSF
- Page 424 and 425: APPENDIX D. SPECIFICATION OF TRANSF
- Page 426 and 427: APPENDIX D. SPECIFICATION OF TRANSF
- Page 430 and 431: APPENDIX D. SPECIFICATION OF TRANSF
- Page 432 and 433: APPENDIX D. SPECIFICATION OF TRANSF
- Page 434 and 435: APPENDIX D. SPECIFICATION OF TRANSF
- Page 436 and 437: APPENDIX D. SPECIFICATION OF TRANSF
- Page 438 and 439: APPENDIX D. SPECIFICATION OF TRANSF
- Page 440 and 441: APPENDIX D. SPECIFICATION OF TRANSF
- Page 442 and 443: APPENDIX D. SPECIFICATION OF TRANSF
- Page 444 and 445: APPENDIX D. SPECIFICATION OF TRANSF
- Page 446 and 447: APPENDIX D. SPECIFICATION OF TRANSF
- Page 448 and 449: APPENDIX D. SPECIFICATION OF TRANSF
- Page 450 and 451: APPENDIX D. SPECIFICATION OF TRANSF
- Page 452 and 453: APPENDIX D. SPECIFICATION OF TRANSF
- Page 454 and 455: APPENDIX D. SPECIFICATION OF TRANSF
- Page 456 and 457: APPENDIX D. SPECIFICATION OF TRANSF
- Page 458 and 459: APPENDIX D. SPECIFICATION OF TRANSF
- Page 460 and 461: APPENDIX D. SPECIFICATION OF TRANSF
- Page 462 and 463: APPENDIX D. SPECIFICATION OF TRANSF
- Page 464 and 465: APPENDIX D. SPECIFICATION OF TRANSF
- Page 466 and 467: APPENDIX D. SPECIFICATION OF TRANSF
- Page 468 and 469: APPENDIX D. SPECIFICATION OF TRANSF
- Page 470 and 471: APPENDIX D. SPECIFICATION OF TRANSF
- Page 472 and 473: APPENDIX D. SPECIFICATION OF TRANSF
- Page 474 and 475: APPENDIX D. SPECIFICATION OF TRANSF
- Page 476 and 477: APPENDIX D. SPECIFICATION OF TRANSF
D.2. FORMAL SPECIFICATION OF THE TRANSFORMER IN RSL1<br />
case te <strong>of</strong><br />
TypeExprProduct(tep) →<br />
typeExprListToExpTypeList(tep),<br />
TypeLiteral(ln) →<br />
case ln <strong>of</strong><br />
UNIT → 〈〉,<br />
→ 〈Known(te)〉<br />
end,<br />
→ 〈Known(te)〉<br />
end,<br />
typeExprListToExpTypeList :<br />
TypeExpr ∗ → ExpType ∗<br />
typeExprListToExpTypeList(tel) ≡<br />
if tel = 〈〉 then 〈〉<br />
else<br />
〈Known(hd tel)〉 <br />
typeExprListToExpTypeList(tl tel)<br />
end,<br />
getSetType : ExpType → ExpType<br />
getSetType(et) ≡<br />
case et <strong>of</strong><br />
Known(te) →<br />
case te <strong>of</strong><br />
TypeExprSet(tes) →<br />
case tes <strong>of</strong><br />
FiniteSetTypeExpr(fse) → Known(fse),<br />
InfiniteSetTypeExpr(ise) → Known(ise)<br />
end,<br />
→ Unknown<br />
end,<br />
→ Unknown<br />
end,<br />
getListType : ExpType → ExpType<br />
getListType(et) ≡<br />
case et <strong>of</strong><br />
Known(te) →<br />
case te <strong>of</strong><br />
TypeExprList(tes) →<br />
case tes <strong>of</strong><br />
FiniteListTypeExpr(fse) → Known(fse),<br />
InfiniteListTypeExpr(ise) → Known(ise)<br />
413