Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS Result: ======= ValueExpr: the imperative version of the value expression list ∗/ TRProductExpr : ValueExpr ∗ × ExpType ∗ × ExpType × FUNC × TRANS × TYPES → ValueExpr TRProductExpr(vel, etl, et, func, trans, types) ≡ let (b, vl) = makeLetBinding(len vel, 0, 〈〉, 〈〉), vel ′ = makeValueExprList(vel, etl, vl, trans, func) in LetExpr( 〈mk_LetDef( MakeBinding(makeBinding(b)), ProductExpr(vel))〉, makeAssignExpr(ProductExpr(vel ′ ), et, trans)) end, /∗Transforms a set expression.∗/ /∗ Arguments: ======= se: the set expression et: the expected type the components of the set expression Result: ======= SetExpr: the imperative version of the set expression ∗/ TRSetExpr : SetExpr × ExpType × FUNC × TRANS × TYPES → SetExpr × TYPES TRSetExpr(se, et, func, trans, types) ≡ case se of RangedSetExpr(fve, sve) → let (fve ′ , types ′ ) = TRValueExpr(fve, et, func, trans, types), (sve ′ , types ′′ ) = TRValueExpr(sve, et, func, trans, types ′ ) 200
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER in (RangedSetExpr(fve ′ , sve ′ ), types ′′ ) end, EnumeratedSetExpr(ovel) → let (ovel ′ , types ′ ) = TROptValueExprList( ovel, et, func, trans, types) in (EnumeratedSetExpr(ovel ′ ), types ′ ) end, ComprehendedSetExpr(ve, typlist, or) → let (ve ′ , types1) = TRValueExpr(ve, et, func, trans, types), (or ′ , types2) = TROptRestriction( or, Known(TypeLiteral(BOOL)), func, trans, types1) in (ComprehendedSetExpr(ve ′ , typlist, or ′ ), types2 ) end end, /∗Transforms a list expression.∗/ /∗ Arguments: ======= le: the list expression et: the expected type the components of the list expression Result: ======= ListExpr: the imperative version of the list expression ∗/ TRListExpr : ListExpr × ExpType × FUNC × TRANS × TYPES → ListExpr × TYPES TRListExpr(le, et, func, trans, types) ≡ case le of RangedListExpr(fve, sve) → let 201
- 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 214 and 215: 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
- Page 264 and 265: APPENDIX C. FORMAL SPECIFICATIONS O
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS<br />
Result:<br />
=======<br />
ValueExpr: the imperative version <strong>of</strong> the value<br />
expression list<br />
∗/<br />
TRProductExpr :<br />
ValueExpr ∗ × ExpType ∗ × ExpType × FUNC ×<br />
TRANS × TYPES →<br />
ValueExpr<br />
TRProductExpr(vel, etl, et, func, trans, types) ≡<br />
let<br />
(b, vl) = makeLetBinding(len vel, 0, 〈〉, 〈〉),<br />
vel ′ =<br />
makeValueExprList(vel, etl, vl, trans, func)<br />
in<br />
LetExpr(<br />
〈mk_LetDef(<br />
MakeBinding(makeBinding(b)),<br />
ProductExpr(vel))〉,<br />
makeAssignExpr(ProductExpr(vel ′ ), et, trans))<br />
end,<br />
/∗Transforms a set expression.∗/<br />
/∗<br />
Arguments:<br />
=======<br />
se: the set expression<br />
et: the expected type the components <strong>of</strong> the set<br />
expression<br />
Result:<br />
=======<br />
SetExpr: the imperative version <strong>of</strong> the set expression<br />
∗/<br />
TRSetExpr :<br />
SetExpr × ExpType × FUNC × TRANS × TYPES →<br />
SetExpr × TYPES<br />
TRSetExpr(se, et, func, trans, types) ≡<br />
case se <strong>of</strong><br />
RangedSetExpr(fve, sve) →<br />
let<br />
(fve ′ , types ′ ) =<br />
TRValueExpr(fve, et, func, trans, types),<br />
(sve ′ , types ′′ ) =<br />
TRValueExpr(sve, et, func, trans, types ′ )<br />
200