Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS if pl = 〈〉 then (true, env, types) else let (b, env1, types1) = CheckPattern(hd pl, func, trans, env, types) in if b then CheckPatternList( tl pl, func, trans, env1, types1) else (false, env1, types) end end end, /∗Checks for transformability of a list pattern. ∗/ /∗ Arguments: ======= lp: the list pattern Results: ======= Bool: true if the lis pattern can be transformed, false otherwise ∗/ CheckListPattern : ListPattern × FUNC × TRANS × ENV × TYPES → Bool × ENV × TYPES CheckListPattern(lp, func, trans, env, types) ≡ case lp of Make_EnumeratedListPattern(elp) → CheckOptInnerPattern( inner_pattern(elp), func, trans, env, types), ConcatenatedListPattern(elp, p) → let (b1, env1, types1) = CheckOptInnerPattern( inner_pattern(elp), func, trans, env, types), (b2, env2, types2) = CheckPattern(p, func, trans, env1, types1) in (b1 ∧ b2, env2, types2) 182
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER end, end /∗Checks for transformability of a optional inner pattern.∗/ /∗ Arguments: ======= oip: optional inner pattern Results: ======= Bool: true if the optional inner pattern can be transformed, false otherwise ∗/ CheckOptInnerPattern : OptionalInnerPattern × FUNC × TRANS × ENV × TYPES → Bool × ENV × TYPES CheckOptInnerPattern(oip, func, trans, env, types) ≡ case oip of InnerPatternList(pl) → CheckPatternList(pl, func, trans, env, types), NoInnerPattern → (true, env, types) end, /∗Match a type expression against a let binding. ∗/ /∗ Arguments: ======= lb: the let binding te: the type expression Results: ======= Bool: true if the let binding an the type expression can be matched, false otherwise ∗/ matchBindingTE : LetBinding × TypeExpr → Bool matchBindingTE(lb, te) ≡ getLengthLetBinding(lb) ≥ getLengthTE(te), /∗Transforms a value definition list.∗/ /∗ Arguments: ======= 183
- Page 148 and 149: CHAPTER 13. CONCLUSION 132
- Page 150 and 151: BIBLIOGRAPHY [ST02] Donald Sannello
- Page 152 and 153: APPENDIX A. USING AND EXTENDING THE
- Page 154 and 155: APPENDIX A. USING AND EXTENDING THE
- Page 156 and 157: APPENDIX B. CONTENTS OF CD-ROM 140
- 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 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 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
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS<br />
if pl = 〈〉 then (true, env, types)<br />
else<br />
let<br />
(b, env1, types1) =<br />
CheckPattern(hd pl, func, trans, env, types)<br />
in<br />
if b<br />
then<br />
CheckPatternList(<br />
tl pl, func, trans, env1, types1)<br />
else (false, env1, types)<br />
end<br />
end<br />
end,<br />
/∗Checks for transformability <strong>of</strong> a list pattern.<br />
∗/<br />
/∗<br />
Arguments:<br />
=======<br />
lp: the list pattern<br />
Results:<br />
=======<br />
Bool: true if the lis pattern can be transformed,<br />
false otherwise<br />
∗/<br />
CheckListPattern :<br />
ListPattern × FUNC × TRANS × ENV × TYPES →<br />
Bool × ENV × TYPES<br />
CheckListPattern(lp, func, trans, env, types) ≡<br />
case lp <strong>of</strong><br />
Make_EnumeratedListPattern(elp) →<br />
CheckOptInnerPattern(<br />
inner_pattern(elp), func, trans, env, types),<br />
ConcatenatedListPattern(elp, p) →<br />
let<br />
(b1, env1, types1) =<br />
CheckOptInnerPattern(<br />
inner_pattern(elp), func, trans, env,<br />
types),<br />
(b2, env2, types2) =<br />
CheckPattern(p, func, trans, env1, types1)<br />
in<br />
(b1 ∧ b2, env2, types2)<br />
182