Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS Make_ValueOrVariableName(vn) → if id(vn) ∈ dom func then /∗Function application.∗/ case type_expr(func(id(vn))) of FunctionTypeExpr(arg, fa, res) → let (ve ′ , types ′ ) = TRValueExpr( value_expr(ld), Known(type_expr(res)), func, trans, types), /∗Updates TYPES.∗/ types ′′ = makeTYPES( binding(ld), Known(type_expr(res)), trans) in if isGen( ve, Known(type_expr(func(id(vn)))), trans, func) then if ∼ returnsNonTOI( ve, Known( type_expr(func(id(vn)))), trans, func) then (mk_LetDef( MakeBinding( IdBinding(mk_Id( ′′ dummy ′′ ))), ve ′ ), types ′ † types ′′ ) else (mk_LetDef( TRLetBinding( binding(ld), type_expr(res), func, trans, types ′′ ), ve ′ ), types ′ † types ′′ ) end else 212
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER (mk_LetDef(binding(ld), ve ′ ), types ′ † types ′′ ) end end end else /∗List or map application.∗/ let (ve ′ , types ′ ) = TRValueExpr( value_expr(ld), Unknown, func, trans, types) in (mk_LetDef(binding(ld), ve ′ ), types ′ † makeTYPES(binding(ld), Unknown, trans)) end end, → let (ve ′ , types ′ ) = TRValueExpr( value_expr(ld), Unknown, func, trans, types) in (mk_LetDef(binding(ld), ve ′ ), types ′ † makeTYPES(binding(ld), Unknown, trans)) end end, → let (ve ′ , types ′ ) = TRValueExpr( value_expr(ld), Unknown, func, trans, types) in (mk_LetDef(binding(ld), ve ′ ), types ′ † makeTYPES(binding(ld), Unknown, trans)) end end, /∗Transforms a let binding.∗/ /∗ 213
- 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 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 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
- 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
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER<br />
(mk_LetDef(binding(ld), ve ′ ),<br />
types ′ † types ′′ )<br />
end<br />
end<br />
end<br />
else /∗List or map application.∗/<br />
let<br />
(ve ′ , types ′ ) =<br />
TRValueExpr(<br />
value_expr(ld), Unknown, func,<br />
trans, types)<br />
in<br />
(mk_LetDef(binding(ld), ve ′ ),<br />
types ′ †<br />
makeTYPES(binding(ld), Unknown, trans))<br />
end<br />
end,<br />
→<br />
let<br />
(ve ′ , types ′ ) =<br />
TRValueExpr(<br />
value_expr(ld), Unknown, func, trans,<br />
types)<br />
in<br />
(mk_LetDef(binding(ld), ve ′ ),<br />
types ′ †<br />
makeTYPES(binding(ld), Unknown, trans))<br />
end<br />
end,<br />
→<br />
let<br />
(ve ′ , types ′ ) =<br />
TRValueExpr(<br />
value_expr(ld), Unknown, func, trans,<br />
types)<br />
in<br />
(mk_LetDef(binding(ld), ve ′ ),<br />
types ′ †<br />
makeTYPES(binding(ld), Unknown, trans))<br />
end<br />
end,<br />
/∗Transforms a let binding.∗/<br />
/∗<br />
213