Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS ∗/ makeTYPINGSEntrance : TypeDef → TYPINGS makeTYPINGSEntrance(td) ≡ case td of SortDef(id) → [ id ↦→ 〈〉 ], VariantDef(id, vl) → [ id ↦→ getTYPINGSVariantList(vl) ], ShortRecordDef(id, ckl) → [ id ↦→ getTYPINGSComponentKindList(ckl) ], AbbreviationDef(id, te) → [ id ↦→ getTYPINGSTypeExpr(te) ] end, /∗Gets an id list to the TYPINGS map from a variant list.∗/ /∗ Arguments: ======= vl: the variant list Results: ===== Id_list: the resulting list of ids ∗/ getTYPINGSVariantList : Variant ∗ → Id ∗ getTYPINGSVariantList(vl) ≡ if vl = 〈〉 then 〈〉 else removeDupletsId( getTYPINGSVariant(hd vl) getTYPINGSVariantList(tl vl)) end, /∗Gets an id list to the TYPINGS map from a variant. ∗/ /∗ Arguments: ======= v: the variant Results: ===== Id_list: the resulting list of ids ∗/ getTYPINGSVariant : Variant → Id ∗ getTYPINGSVariant(v) ≡ 282
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER case v of Make_Constructor(c) → 〈〉, RecordVariant(c, ckl) → getTYPINGSComponentKindList(ckl) end, /∗Gets an id list to the TYPINGS map from a component kind list.∗/ /∗ Arguments: ======= ckl: the component kind list Results: ===== Id_list: the resulting list of ids ∗/ getTYPINGSComponentKindList : ComponentKind ∗ → Id ∗ getTYPINGSComponentKindList(ckl) ≡ if ckl = 〈〉 then 〈〉 else removeDupletsId( getTYPINGSTypeExpr(type_expr(hd ckl)) getTYPINGSComponentKindList(tl ckl)) end, /∗Gets an id list to the TYPINGS map from a name or wildcard list.∗/ /∗ Arguments: ======= nwl: the name or wildcard list Results: ===== Id_list: the resulting list of ids ∗/ getTYPINGSNameWildcardList : NameOrWildcard ∗ → Id ∗ getTYPINGSNameWildcardList(nwl) ≡ if nwl = 〈〉 then 〈〉 else removeDupletsId( getTYPINGSNameWildcard(hd nwl) getTYPINGSNameWildcardList(tl nwl)) 283
- Page 248 and 249: APPENDIX C. FORMAL SPECIFICATIONS O
- 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 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 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
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS<br />
∗/<br />
makeTYPINGSEntrance : TypeDef → TYPINGS<br />
makeTYPINGSEntrance(td) ≡<br />
case td <strong>of</strong><br />
SortDef(id) → [ id ↦→ 〈〉 ],<br />
VariantDef(id, vl) →<br />
[ id ↦→ getTYPINGSVariantList(vl) ],<br />
ShortRecordDef(id, ckl) →<br />
[ id ↦→ getTYPINGSComponentKindList(ckl) ],<br />
AbbreviationDef(id, te) →<br />
[ id ↦→ getTYPINGSTypeExpr(te) ]<br />
end,<br />
/∗Gets an id list to the TYPINGS map from a variant<br />
list.∗/<br />
/∗<br />
Arguments:<br />
=======<br />
vl: the variant list<br />
Results:<br />
=====<br />
Id_list: the resulting list <strong>of</strong> ids<br />
∗/<br />
getTYPINGSVariantList : Variant ∗ → Id ∗<br />
getTYPINGSVariantList(vl) ≡<br />
if vl = 〈〉 then 〈〉<br />
else<br />
removeDupletsId(<br />
getTYPINGSVariant(hd vl) <br />
getTYPINGSVariantList(tl vl))<br />
end,<br />
/∗Gets an id list to the TYPINGS map from a variant.<br />
∗/<br />
/∗<br />
Arguments:<br />
=======<br />
v: the variant<br />
Results:<br />
=====<br />
Id_list: the resulting list <strong>of</strong> ids<br />
∗/<br />
getTYPINGSVariant : Variant → Id ∗<br />
getTYPINGSVariant(v) ≡<br />
282