Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS end, /∗Gets an id list to the TYPINGS map from a name or wildcard.∗/ /∗ Arguments: ======= nw: the name or wildcard Results: ===== Id_list: the resulting list of ids ∗/ getTYPINGSNameWildcard : NameOrWildcard → Id ∗ getTYPINGSNameWildcard(nw) ≡ case nw of Name(var) → 〈id(var)〉, Wildcard → 〈〉 end, /∗Gets an id list to the TYPINGS map from a type expr.∗/ /∗ Arguments: ======= te: the type expression Results: ===== Id_list: the resulting list of ids ∗/ getTYPINGSTypeExpr : TypeExpr → Id ∗ getTYPINGSTypeExpr(te) ≡ case te of TypeLiteral(tn) → 〈〉, TypeName(id) → 〈id〉, TypeExprProduct(tep) → getTYPINGSTypeExprList(tep), TypeExprSet(tes) → case tes of FiniteSetTypeExpr(fse) → getTYPINGSTypeExpr(fse), InfiniteSetTypeExpr(ise) → getTYPINGSTypeExpr(ise) end, TypeExprList(les) → 284
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER case les of FiniteListTypeExpr(fle) → getTYPINGSTypeExpr(fle), InfiniteListTypeExpr(ile) → getTYPINGSTypeExpr(ile) end, TypeExprMap(tem) → case tem of FiniteMapTypeExpr(tedom, terange) → removeDupletsId( getTYPINGSTypeExpr(tedom) getTYPINGSTypeExpr(terange)), InfiniteMapTypeExpr(tedom, terange) → removeDupletsId( getTYPINGSTypeExpr(tedom) getTYPINGSTypeExpr(terange)) end, FunctionTypeExpr(arg, fa, res) → removeDupletsId( getTYPINGSTypeExpr(arg) getTYPINGSTypeExpr(type_expr(res))), SubtypeExpr(st, ve) → getTYPINGSTypeExpr(type_expr(st)), BracketedTypeExpr(bte) → getTYPINGSTypeExpr(bte) end, /∗Gets an id list to the TYPINGS map from a type expression list.∗/ /∗ Arguments: ======= tel: the type expression list Results: ===== Id_list: the resulting list of ids ∗/ getTYPINGSTypeExprList : TypeExpr ∗ → Id ∗ getTYPINGSTypeExprList(tel) ≡ if tel = 〈〉 then 〈〉 else removeDupletsId( getTYPINGSTypeExpr(hd tel) getTYPINGSTypeExprList(tl tel)) end, 285
- Page 250 and 251: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 252 and 253: 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 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 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
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER<br />
case les <strong>of</strong><br />
FiniteListTypeExpr(fle) →<br />
getTYPINGSTypeExpr(fle),<br />
InfiniteListTypeExpr(ile) →<br />
getTYPINGSTypeExpr(ile)<br />
end,<br />
TypeExprMap(tem) →<br />
case tem <strong>of</strong><br />
FiniteMapTypeExpr(tedom, terange) →<br />
removeDupletsId(<br />
getTYPINGSTypeExpr(tedom) <br />
getTYPINGSTypeExpr(terange)),<br />
InfiniteMapTypeExpr(tedom, terange) →<br />
removeDupletsId(<br />
getTYPINGSTypeExpr(tedom) <br />
getTYPINGSTypeExpr(terange))<br />
end,<br />
FunctionTypeExpr(arg, fa, res) →<br />
removeDupletsId(<br />
getTYPINGSTypeExpr(arg) <br />
getTYPINGSTypeExpr(type_expr(res))),<br />
SubtypeExpr(st, ve) →<br />
getTYPINGSTypeExpr(type_expr(st)),<br />
BracketedTypeExpr(bte) → getTYPINGSTypeExpr(bte)<br />
end,<br />
/∗Gets an id list to the TYPINGS map from a type<br />
expression list.∗/<br />
/∗<br />
Arguments:<br />
=======<br />
tel: the type expression list<br />
Results:<br />
=====<br />
Id_list: the resulting list <strong>of</strong> ids<br />
∗/<br />
getTYPINGSTypeExprList : TypeExpr ∗ → Id ∗<br />
getTYPINGSTypeExprList(tel) ≡<br />
if tel = 〈〉 then 〈〉<br />
else<br />
removeDupletsId(<br />
getTYPINGSTypeExpr(hd tel) <br />
getTYPINGSTypeExprList(tl tel))<br />
end,<br />
285