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_ProductBinding(pb) → let (b, ffpl ′ , env ′ , types ′ , prlet ′ ) = TRFormalFuncParam( mk_FormalFunctionParameter( binding_list(pb)), hd tel, trans, env, types, prlet), (b1, ffpl ′′ , env ′′ , types ′′ , prlet ′′ ) = TRFFPProduct( mk_FormalFunctionParameter( tl binding_list(ffpl)), tl tel, trans, env ′ , types ′ , prlet ′ ) in if binding_list(ffpl ′ ) = 〈〉 then (b ∧ b1, mk_FormalFunctionParameter( binding_list(ffpl ′′ )), env ′′ , types ′′ , prlet ′′ ) else if len binding_list(ffpl ′ ) = 1 then (b ∧ b1, mk_FormalFunctionParameter( binding_list(ffpl ′ ) binding_list(ffpl ′′ )), env ′′ , types ′′ , prlet ′′ ) else (b ∧ b1, mk_FormalFunctionParameter( 〈Make_ProductBinding( mk_ProductBinding( binding_list(ffpl ′ )))〉 binding_list(ffpl ′′ )), env ′′ , types ′′ , prlet ′′ ) end end end, → let (b, ffpl ′ , env ′ , types ′ , prlet ′ ) = TRFormalFuncParam( mk_FormalFunctionParameter( 〈hd binding_list(ffpl)〉), hd tel, 192
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER end end, trans, env, types, prlet), (b1, ffpl ′′ , env ′′ , types ′′ , prlet ′′ ) = TRFFPProduct( mk_FormalFunctionParameter( tl binding_list(ffpl)), tl tel, trans, env ′ , types ′ , prlet ′ ) in (b ∧ b1, mk_FormalFunctionParameter( binding_list(ffpl ′ ) binding_list(ffpl ′′ )), env ′′ , types ′′ , prlet ′′ ) end /∗Checks if it is necessary to establish a let expression.∗/ /∗ Arguments: ======= te: the type of the binding b: the actual binding prlet: the original value of the LetDef_list Result: ======= LetDef_list: the resulting value of the LetDef_ list ∗/ makeProductLet : TypeExpr × Binding × LetDef ∗ × TRANS → LetDef ∗ makeProductLet(te, b, prlet, trans) ≡ case te of TypeName(tn) → case b of Make_ProductBinding(pb) → prlet 〈mk_LetDef( MakeBinding(b), Make_ValueOrVariableName( mk_ValueOrVariableName(trans(tn))))〉, → prlet end 193
- Page 158 and 159: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 160 and 161: APPENDIX C. FORMAL SPECIFICATIONS O
- Page 162 and 163: APPENDIX C. FORMAL SPECIFICATIONS O
- 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 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 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
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS<br />
Make_ProductBinding(pb) →<br />
let<br />
(b, ffpl ′ , env ′ , types ′ , prlet ′ ) =<br />
TRFormalFuncParam(<br />
mk_FormalFunctionParameter(<br />
binding_list(pb)), hd tel, trans,<br />
env, types, prlet),<br />
(b1, ffpl ′′ , env ′′ , types ′′ , prlet ′′ ) =<br />
TRFFPProduct(<br />
mk_FormalFunctionParameter(<br />
tl binding_list(ffpl)), tl tel,<br />
trans, env ′ , types ′ , prlet ′ )<br />
in<br />
if binding_list(ffpl ′ ) = 〈〉<br />
then<br />
(b ∧ b1,<br />
mk_FormalFunctionParameter(<br />
binding_list(ffpl ′′ )), env ′′ , types ′′ ,<br />
prlet ′′ )<br />
else<br />
if len binding_list(ffpl ′ ) = 1<br />
then<br />
(b ∧ b1,<br />
mk_FormalFunctionParameter(<br />
binding_list(ffpl ′ ) <br />
binding_list(ffpl ′′ )), env ′′ ,<br />
types ′′ , prlet ′′ )<br />
else<br />
(b ∧ b1,<br />
mk_FormalFunctionParameter(<br />
〈Make_ProductBinding(<br />
mk_ProductBinding(<br />
binding_list(ffpl ′ )))〉 <br />
binding_list(ffpl ′′ )), env ′′ ,<br />
types ′′ , prlet ′′ )<br />
end<br />
end<br />
end,<br />
→<br />
let<br />
(b, ffpl ′ , env ′ , types ′ , prlet ′ ) =<br />
TRFormalFuncParam(<br />
mk_FormalFunctionParameter(<br />
〈hd binding_list(ffpl)〉), hd tel,<br />
192