Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS in (LetExpr(ldl, ve ′ ), types ′′ ) end, Make_IfExpr(ie) → TRIfExpr(ie, et, func, trans, types), CaseExpr(cond, cbl) → let (cond ′ , types ′ ) = TRValueExpr( cond, Unknown, func, trans, types), (cbl ′ , types ′′ ) = TRCaseBranchList( cbl, et, func, trans, types ′ ) in (CaseExpr(cond ′ , cbl ′ ), types ′′ ) end end, /∗Transforms a value expression list.∗/ /∗ Arguments: ======= vel: the value expression list et: the expected type of the value expression list Result: ======= ValueExpr_list: the imperative version of the value expression list ∗/ TRValueExprList : ValueExpr ∗ × ExpType × FUNC × TRANS × TYPES → ValueExpr ∗ × TYPES TRValueExprList(vel, et, func, trans, types) ≡ if vel = 〈〉 then (〈〉, types) else let (ve, types ′ ) = TRValueExpr( hd vel, getHead(et), func, trans, types), (vel ′ , types ′′ ) = TRValueExprList( tl vel, getTail(et), func, trans, types ′ ) in 198
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER (〈ve〉 vel ′ , types ′′ ) end end, /∗Transforms a value expression list of a product expression or function application.∗/ /∗ Arguments: ======= vel: the value expression list et: the expected type of the value expression list Result: ======= ValueExpr_list: the imperative version of the value expression list ∗/ TRValueExprListProductFunc : ValueExpr ∗ × ExpType ∗ × FUNC × TRANS × TYPES → ValueExpr ∗ × TYPES TRValueExprListProductFunc( vel, etl, func, trans, types) ≡ if vel = 〈〉 then (〈〉, types) else let (ve, types ′ ) = TRValueExpr(hd vel, hd etl, func, trans, types), (vel ′ , types ′′ ) = TRValueExprListProductFunc( tl vel, tl etl, func, trans, types ′ ) in (〈ve〉 vel ′ , types ′′ ) end end, /∗Transforms a product expression.∗/ /∗ Arguments: ======= vel: the value expression etl: the expected types of the value expression in the list et: the expected type of the product expression 199
- Page 164 and 165: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 166 and 167: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 168 and 169: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 170 and 171: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 172 and 173: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 174 and 175: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 176 and 177: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 178 and 179: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 180 and 181: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 182 and 183: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 184 and 185: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 186 and 187: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 188 and 189: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 190 and 191: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 192 and 193: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 194 and 195: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 196 and 197: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 198 and 199: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 200 and 201: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 202 and 203: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 204 and 205: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 206 and 207: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 208 and 209: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 210 and 211: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 212 and 213: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 216 and 217: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 218 and 219: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 220 and 221: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 222 and 223: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 224 and 225: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 226 and 227: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 228 and 229: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 230 and 231: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 232 and 233: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 234 and 235: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 236 and 237: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 238 and 239: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 240 and 241: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 242 and 243: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 244 and 245: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 246 and 247: APPENDIX C. FORMAL SPECIFICATIONS O
- 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
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS<br />
in<br />
(LetExpr(ldl, ve ′ ), types ′′ )<br />
end,<br />
Make_IfExpr(ie) →<br />
TRIfExpr(ie, et, func, trans, types),<br />
CaseExpr(cond, cbl) →<br />
let<br />
(cond ′ , types ′ ) =<br />
TRValueExpr(<br />
cond, Unknown, func, trans, types),<br />
(cbl ′ , types ′′ ) =<br />
TRCaseBranchList(<br />
cbl, et, func, trans, types ′ )<br />
in<br />
(CaseExpr(cond ′ , cbl ′ ), types ′′ )<br />
end<br />
end,<br />
/∗Transforms a value expression list.∗/<br />
/∗<br />
Arguments:<br />
=======<br />
vel: the value expression list<br />
et: the expected type <strong>of</strong> the value expression<br />
list<br />
Result:<br />
=======<br />
ValueExpr_list: the imperative version <strong>of</strong> the<br />
value expression list<br />
∗/<br />
TRValueExprList :<br />
ValueExpr ∗ × ExpType × FUNC × TRANS × TYPES →<br />
ValueExpr ∗ × TYPES<br />
TRValueExprList(vel, et, func, trans, types) ≡<br />
if vel = 〈〉 then (〈〉, types)<br />
else<br />
let<br />
(ve, types ′ ) =<br />
TRValueExpr(<br />
hd vel, getHead(et), func, trans, types),<br />
(vel ′ , types ′′ ) =<br />
TRValueExprList(<br />
tl vel, getTail(et), func, trans, types ′ )<br />
in<br />
198