Advertisement

Esprit ’89 pp 302-320 | Cite as

Algebraic Specification with Functionals in Program Development by Transformation

  • B. Krieg-Brückner

Abstract

The methodology of PROgram development by SPECification and TRAnsformation is described. Formal requirement specifications are the basis for constructing correct and efficient programs by gradual transformation. The power of compact development methods using the transformational approach, as supported by the PROSPECTRA system, is illustrated by an example. The algebraic specification language is then described, focussing on its extension by higher order functions. The functional programming paradigm leads to a considerably higher degree of abstraction and avoids much repetitive development effort, in particular through the use of homomorphic extension functionals. The combination with algebraic specification not only allows reasoning about correctness but also permits direct optimisation transformations.

Keywords

Transformation Rule Algebraic Property Functional Programming High Order Function Informal Requirement 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. [1]
    Krieg-Briickner, B., Hoffmann, B., Ganzinger, H., Broy, M., Wilhelm, R., Moncke, U., Weisgerber, B., McGettrick, A.D., Campbell, I.G., Winterstein, G.: PROgram Development by SPECification and TRAnsformation. in: Rogers, M. W. (ed.): Results and Achievements, Proc. ESPRIT Conf. ’86. North Holland (1987) 301–312.Google Scholar
  2. [2]
    Krieg-Briickner, B.: Integration of Program Construction and Verification: the PROSPECTRA Project, in: Habermann, N., Montanari, U. (eds.): Innovative Software Factories and Ada. Proc. CRAI Int’l Spring Conf. ’86.LNCS275 (1987) 173–194.Google Scholar
  3. [3]
    Krieg-Briickner, B.: The PROSPECTRA Methodology of Program Development, in: Zalewski (ed.): Proc. IFIP/IFAC Working Conf. on HW and SW for Real Time Process Control (Warsaw). North Holland (1988) 257–271.Google Scholar
  4. [4]
    Bauer, F.L., Mftller, B., Partsch, H., Pepper, P.: Formal Program Construction by Stepwise Transformations - Computer-Aided Intuition-Guided ProgrammingJ££E Trans, on SW Eng. 15:2 (1989) 165–180.CrossRefzbMATHGoogle Scholar
  5. [5]
    Bauer, F.L., Berghammer, R., Broy, M., Dosch, W., Gnatz, R., Geiselbrechtinger, F., Hangel, E., Hesse, W., Krieg.-Briickner, B., Laut, A., Matzner, T.A., Moller, B., Nickl, F., Partsch, H., Pepper, P., Samelson, K., Wirsing, M., Wossner, H.: The Munich Project CIP, Vol. 1: The Wide Spectrum Language CIP-L. LNCS 183, Springer 1985.Google Scholar
  6. [6]
    Bauer, F.L., Ehler, H., Horsch, B., Moller, B., Partsch, H., Paukner, 0., Pepper, P.,: The Munich Project CIP, Vol. 2: The Transformation System CIP-S. LNCS 292, Springer 1987.Google Scholar
  7. [7]
    Moller, B.: Algebraic Specification with Higher Order Operators, in: Meertens, L.G.T.L. (ed.): Program Specification and Transformation, Proc. IFIP TC2 Working Conf. (Tolz ’86). North Holland (1987) 367–398.Google Scholar
  8. [8]
    Partsch, H., Steinbruggen, R.: Program Transformation Systems. ACM Computing Surveys 15 (1983) 199–236.CrossRefMathSciNetGoogle Scholar
  9. [9]
    Reference Manual for the Ada Programming Language. ANSI/MIL.STD 1815 A. US Government Printing Office, 1983. Also in: Rogers, M. W. (ed.): Ada: Language, compilers and Bibliography. Ada Companion Series, Cambridge University Press, 1984.Google Scholar
  10. [10]
    Luckham, D.C., von Henke, F.W., Krieg-Briickner, B., Owe, O.: Anna, a Language for Annotating Ada Programs, Reference Manual. LNCS 260, Springer (1987).Google Scholar
  11. [11]
    Krieg-Briickner, B.: Formalisation of Developments: An Algebraic Approach, in: Rogers, M. W. (ed.): Achievements and Impact. Proc. ESPRIT Conf. 87. North Holland (1987) 491–501.Google Scholar
  12. [12]
    Krieg-Briickner, B.: Algebraic Formalisation of Program Development by Transformation, in: Proc. European Symposium On Programming ’88, LNCS 300 (1988) 34–48.Google Scholar
  13. [13]
    Krieg-Briickner, B.: Algebraic Specification and Functionals for Transformational Program and Meta Program Development, in Diaz, J., Orejas, F. (eds.): Proc. TAPSOFT ’89 (Barcelona), Vol. 2. LNCS 352 (1989) 36–59.Google Scholar
  14. [14]
    Reps., Teitelbaum: The Cornell Synthesizer Generator. Springer Verlag, 1988.Google Scholar
  15. [15]
    Reps., Teitelbaum: The Cornell Synthesizer Generator; Reference Manual. Springer Verlag, 1988.Google Scholar
  16. [16]
    Broy, M.: Predicative Specification for Functional Programs Describing Communicating Networks. Information Processing Letters 25:2 (1987) 93–101.CrossRefzbMATHMathSciNetGoogle Scholar
  17. [17]
    Broy, M.: An Example for the Design of Distributed Systems in a Formal Setting: The Lift Problem. Universitat Passau, Tech. Rep. MIP 8802 (1988).Google Scholar
  18. Traynor, O.: The PROSPECTRA Proof Editor. PROSPECTRA Study Note S.3.4.-SN-15.2, University of Strathclyde, 1989.Google Scholar
  19. [19]
    Traynor, O.: The Methodology of Verification in PROSPECTRA. PROSPECTRA Study Note S.3.4.-SN-19.0, University of Strathclyde, 1989.Google Scholar
  20. [20]
    Ganzinger, H.: Ground Term Confluence in Parametric Conditional Equational Specifications, in: Brandenburg, F.J., Vidal-Naquet, G., Wirsing, M.(eds.): Proc. 4th Annual Symp. on Theoretical Aspects of Comp. Sci., Passau ’87. LNCS 247 (1987) 286–298.Google Scholar
  21. [21]
    Ganzinger, H.: A Completion Procedure for Conditional Equations. Techn. Bericht No. 243, Fachbereich Informatik, Universitat Dortmund, 1987 (to appear in J. Symb. Comp.)Google Scholar
  22. [22]
    Broy, M., Wirsing, M.: Partial Abstract Types. Acta Informatica 18 (1982) 47–64.CrossRefzbMATHMathSciNetGoogle Scholar
  23. [23]
    Broy, M.: Equational Specification of Partial Higher Order Algebras, in: Broy, M. (ed.): Logic of Programming and Calculi of Discrete Design. NATO ASI Series, Vol. F36, Springer (1987) 185–241.Google Scholar
  24. [24]
    Breu, M., Broy, M., Griinler, Th., Nickl, F.: PAnndA-S Semantics. PROSPECTRA Study Note M.2.1.S1-SN-1.3, Universitat Passau, 1988.Google Scholar
  25. [25]
    Owe O.: An Approach to Program Reasoning Based on a First Order Logic for Partial Functions. Research Report No. 89, Institute of Informatics, University of Oslo, 1985.Google Scholar
  26. [26]
    Krieg-Briickner, B.: Systematic Transformation of Interface Specifications, in: Meertens, L.G.T.L. (ed.): Program Specification and Transformation, Proc. IFIP TC2 Working Conf. (Tolz ’86). North Holland (1987) 269–291.Google Scholar
  27. [27]
    Broy, M., Moller, B., Pepper, P., Wirsing, M.: Algebraic Implementations Preserve Program Correctness. Science of Computer Programming 7 (1986) 35–53.CrossRefzbMATHMathSciNetGoogle Scholar
  28. [28]
    Kahrs, S.: PAnndA-S Standard Types. PROSPECTRA Study Note M.1.1.S1-SN-11.2, Universitat Bremen, 1986.Google Scholar
  29. [29]
    Bauer, F.L., Wossner, H.: Algorithmic Language and Program Development. Springer 1982.Google Scholar
  30. [30]
    Krieg-Briickner, B. (ed.): PROgram development by SPECification and TRAnsformation, Part I: The Methodology. PROSPECTRA Report M.1.1.S3-R-55.0. Universitat Bremen, (in preparation).Google Scholar
  31. [31]
    Dijkstra, E. W.: A Discipline of Programming. Prentice Hall 1976.Google Scholar
  32. [32]
    Gries, D.: The Science of Programming. Springer 1981.Google Scholar
  33. [33]
    Sharir, M.: Some Observations Concerning Formal Differentiation of Set Theoretic Expressions. ACM TOPLAS 4: 2 (1982) 196–226.CrossRefzbMATHMathSciNetGoogle Scholar
  34. [34]
    Paige, R., Koenig, S.: Finite Differencing of Computable Expressions. ACM TOPLAS 4: 4 (1982) 402–454.CrossRefzbMATHGoogle Scholar
  35. [35]
    Broy, M., Pepper, P.: Combinig Algebraic and Algorithmic Reasoning: An Approach to the Schorr- Waite Algorithm. ACM TOPLAS 4:3 (1982) 362–381.CrossRefzbMATHGoogle Scholar
  36. [36]
    Liu, J., Krieg-Briickner, B.: Transformational Development of Completion. PROSPECTRA Study Note M.3.1.S1-SN-8.0. Universitat Bremen, (in preparation).Google Scholar
  37. [37]
    Bird, R., Wadler, Ph.: Introduction to Functional Programming. Prentice Hall, 1988.Google Scholar
  38. [38]
    Bird, R.S.: Transformational Programming and the Paragraph Problem. Science of Computer Programming 6 (1986) 159–189.CrossRefzbMATHGoogle Scholar
  39. [39]
    Bird, R.: Lectures on Constructive Functional Programming, in: (1989) 0–65.Google Scholar
  40. [40]
    Karlsen, E., Joergensen, J., Krieg-Briickner, B.: Functionals in PAnndA-S. PROSPECTRA Study Note S.3.1.C1-SN-10.0, Dansk Datamatic Center, 1988.Google Scholar
  41. [41]
    Nickl, F., Broy, M., Breu, M., Dederichs, F., Griinler, Th.: Towards a Semantics of Higher Order Specifications in PAnndA-S. PROSPECTRA Study Note M.2.1.S1-SN-2.0, Universitat Passau, 1988.Google Scholar
  42. [42]
    von Henke, F.W.: An Algebraic Approach to Data Types, Program Verification and Program Synthesis, in: Mazurkiewicz, A. (ed.): Mathematical Foundations of Computer Science 1976. LNCS 45 (1976) 330–336.Google Scholar
  43. [43]
    Smith, D.R.: Top-Down Synthesis of Divide-and-Conquer Algorithms. Artificial Intelligence 27:1 (1985) 43–95.CrossRefzbMATHMathSciNetGoogle Scholar
  44. [44]
    Bj0rner, D.: Towards the Meaning of M in VDM. in Diaz, J., Orejas, F. (eds.): Proc. TAPSOFT ’89 (Barcelona), Vol. 2. LNCS 352 (1989) 1–35.Google Scholar
  45. [45]
    Heckmann, R.: A Functional Language for the Specification of Complex Tree Transformations, in: Proc. European Symposium On Programming ’88, LNCS 300 (1988).Google Scholar

Copyright information

© ECSC, EEC, EAEC, Brussels and Luxembourg 1989

Authors and Affiliations

  • B. Krieg-Brückner
    • 1
  1. 1.FB3 Mathematik und InformatikUniversität BremenBremen 33FR Germany

Personalised recommendations