Transformation of Applicative Specifications into Imperative ...
Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...
APPENDIX C. FORMAL SPECIFICATIONS OF TRANSFORMATIONS Bool CheckPreCondApplicationExpr( ve, vel, func, trans, types) ≡ if CheckPreCondGenProduct(vel, func, trans, types) then case ve of Make_ValueOrVariableName(vn) → if id(vn) ∈ dom func then /∗The application expression is a function application. ∗/ if write_list(func(id(vn))) = 〈〉 then false else case type_expr(func(id(vn))) of FunctionTypeExpr(arg, fa, res) → ∼ containsGen( vel, typeExprToExpTypeList(arg), trans, func) ∨ onlyTOIArgument(vel, trans, types) end end else /∗List or map application.∗/ true end end else false end, /∗Checks if a let def list contains generators or hidden generators.∗/ /∗ Arguments: ======= ldl: the let def list Results: ===== Bool: true if the let def list does not contain generators, false otherwise ∗/ CheckPreCondGenLetDef : LetDef ∗ × FUNC × TRANS × TYPES → Bool CheckPreCondGenLetDef(ldl, func, trans, types) ≡ if ldl = 〈〉 then true 160
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER else CheckPreCondGen( value_expr(hd ldl), func, trans, types) ∧ CheckPreCondGenLetDef(tl ldl, func, trans, types) end, /∗Checks if an elsif list contains generators or hidden generators.∗/ /∗ Arguments: ======= eil: the elsif list Results: ===== Bool: true if the elsif list does not contain generators, false otherwise ∗/ CheckPreCondGenElsif : Elsif ∗ × FUNC × TRANS × TYPES → Bool CheckPreCondGenElsif(eil, func, trans, types) ≡ if eil = 〈〉 then true else CheckPreCondGen( condition(hd eil), func, trans, types) ∧ CheckPreCondGen( elsif_case(hd eil), func, trans, types) ∧ CheckPreCondGenElsif(tl eil, func, trans, types) end, /∗Checks if a case branch list contains generators or hidden generators.∗/ /∗ Arguments: ======= cbl: the case branch list Results: ===== Bool: true if the case branch list does not contain generators, false otherwise ∗/ CheckPreCondGenCaseBranch : CaseBranch ∗ × FUNC × TRANS × TYPES → Bool CheckPreCondGenCaseBranch(cbl, func, trans, types) ≡ if cbl = 〈〉 then true 161
- Page 126 and 127: CHAPTER 10. EXAMPLES OF TRANSFORMAT
- Page 128 and 129: CHAPTER 10. EXAMPLES OF TRANSFORMAT
- Page 130 and 131: CHAPTER 10. EXAMPLES OF TRANSFORMAT
- Page 132 and 133: CHAPTER 10. EXAMPLES OF TRANSFORMAT
- Page 134 and 135: CHAPTER 10. EXAMPLES OF TRANSFORMAT
- Page 136 and 137: CHAPTER 11. TEST 11.1.1 Lexer and P
- Page 138 and 139: CHAPTER 11. TEST An overview of the
- Page 140 and 141: CHAPTER 12. POSSIBLE EXTENSIONS OF
- Page 142 and 143: CHAPTER 12. POSSIBLE EXTENSIONS OF
- Page 144 and 145: CHAPTER 12. POSSIBLE EXTENSIONS OF
- Page 146 and 147: CHAPTER 13. CONCLUSION RSL AST and
- 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 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
C.1. FORMAL SPECIFICATION OF THE TRANSFORMER<br />
else<br />
CheckPreCondGen(<br />
value_expr(hd ldl), func, trans, types) ∧<br />
CheckPreCondGenLetDef(tl ldl, func, trans, types)<br />
end,<br />
/∗Checks if an elsif list contains generators<br />
or hidden generators.∗/<br />
/∗<br />
Arguments:<br />
=======<br />
eil: the elsif list<br />
Results:<br />
=====<br />
Bool: true if the elsif list does not contain<br />
generators, false otherwise<br />
∗/<br />
CheckPreCondGenElsif :<br />
Elsif ∗ × FUNC × TRANS × TYPES → Bool<br />
CheckPreCondGenElsif(eil, func, trans, types) ≡<br />
if eil = 〈〉 then true<br />
else<br />
CheckPreCondGen(<br />
condition(hd eil), func, trans, types) ∧<br />
CheckPreCondGen(<br />
elsif_case(hd eil), func, trans, types) ∧<br />
CheckPreCondGenElsif(tl eil, func, trans, types)<br />
end,<br />
/∗Checks if a case branch list contains generators<br />
or hidden generators.∗/<br />
/∗<br />
Arguments:<br />
=======<br />
cbl: the case branch list<br />
Results:<br />
=====<br />
Bool: true if the case branch list does not contain<br />
generators, false otherwise<br />
∗/<br />
CheckPreCondGenCaseBranch :<br />
CaseBranch ∗ × FUNC × TRANS × TYPES → Bool<br />
CheckPreCondGenCaseBranch(cbl, func, trans, types) ≡<br />
if cbl = 〈〉 then true<br />
161