Skip to main content

Algebraic Methods for Program Construction: The Project CIP

  • Conference paper
Program Transformation and Programming Environments

Part of the book series: NATO ASI Series ((NATO ASI F,volume 8))

Abstract

Program construction can be seen as an evolutionary process, starting from some formal problem specification and going through a series of more and more detailed versions until a sufficiently efficient, effective program is obtained. Accordingly this process comprises the steps of requirement engineering, specification of the problem, transition to algorithmic formulation, transformation into machine oriented versions, final optimization. Besides the stepwise replacement of high-level control constructs by more operational ones this proceeding also comprises the replacement of certain abstract specifications of data structures by resp. implementations.

The paper gives a complete overview on this approach as investigated and developed in the Munich project CIP (Computer-aided, Intuition-guided Programming).

This work has been carried out within the Sonderforschungsbereich 49, Programmiertechnik, München

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. J. Arsac: La construction des programmes structures. Paris, Dunod 1977

    Google Scholar 

  2. R.M. Balzer: Correct and Efficient Software Implementation via Semi-Automatic Transformations (research proposal, unpublished)

    Google Scholar 

  3. F.L. Bauer: A Philosophy of Programming. A Course of Three Lectures given at the Imperial College of Science and Technology, London, October 1973. Reprinted in: F.L. Bauer, K. Samelson (eds.): Language Hierarchies and Interfaces. Lecture Notes in Computer Science 46, Berlin-Heidelberg-New York: Springer 1976, pp. 194–229

    Google Scholar 

  4. F.L. Bauer: Programming as an Evolutionary Process. Technische Universität München, Institut für Informatik, Rep. n° 7617. Also: Proc. 2nd. Int. Conf. on Software Engineering, Oct. 1976, San Francisco, CA, pp. 223–234

    Google Scholar 

  5. F.L. Bauer, H. Partsch, P. Pepper, H. Wössner: Techniques for Program Development. Technische Universität München, Institut für Informatik, Interner Bericht, Sept. 1976. Also in: Software Engineering Techniques. Infotech State of the Art Report 34, 1977, pp. 27–50

    Google Scholar 

  6. F.L. Bauer: Program Development by Stepwise Transformations: The Project CIP. In: [7], pp. 237–272

    Google Scholar 

  7. F.L. Bauer, M. Broy (eds.): Program Construction. Lecture Notes in Computer Science 69, Berlin-Heidelberg-New York: Springer 1979

    Google Scholar 

  8. F.L. Bauer, M. Broy, R. Gnatz, W. Hesse, B. Krieg-Brückner, H. Partsch, P. Pepper, H. Wössner: Towards a Wide Spectrum Language to Support Program Specification and Program Development. SIGPLAN Notices 13:12, pp. 15–24 (1978). Also in [7], pp. 543–552

    Google Scholar 

  9. F.L. Bauer, M. Broy, H. Partsch, P. Pepper, H. Wössner: Systematics of Transformation Rules. In: [7], pp. 273–289

    Google Scholar 

  10. F.L. Bauer, H. Wössner: Algorithmic Language and Program Development. Berlin-Heidelberg-New York: Springer 1982

    MATH  Google Scholar 

  11. M. Broy: Transformational semantics for concurrent programs. IPL 11: 2, October 1980, pp. 87–91

    Article  MathSciNet  MATH  Google Scholar 

  12. M. Broy: Program Construction by Transformation: A Family of Sorting Programs. In: A.W. Bienmann, G. Guiho (eds.): Automatic Program Construction. Reidel Publ. Comp. 1982

    Google Scholar 

  13. M. Broy: Prospects of New Tools for Software Development. In: A.H.W. Duivestijn, C.P. Lockemann (eds.): Trends in Information Processing Systems. Lecture Notes in Computer Science 123. Berlin-Heidelberg-New York: Springer 1981, pp. 106–121

    Google Scholar 

  14. M. Broy, B. Krieg-Brückner: Derivation of Invariant Assertions during Program Development. ACM TOPLAS 2: 2, July 1980, pp. 321–337

    Article  MATH  Google Scholar 

  15. M. Broy, H. Partsch, P. Pepper, M. Wirsing: Semantic Relations on Programming Languages. Proc. IFIP Congress 80, Melbourne. Amsterdam: North-Holland 1980, pp. 101–106

    Google Scholar 

  16. M. Broy, B. Möller, P. Pepper, M. Wirsing: A Model Independent Approach to Implementations of Abstract Data Types. Unpublished manuscript. Revised version: Algebraic Implementations Preserve Program Correctness. To appear in Science of Computer Programming

    Google Scholar 

  17. M. Broy, P. Pepper: Programming as a Formal Activity. IEEE Transactions on Software Engineering SE-7: 1, Jan. 1981, pp. 14–22

    Article  Google Scholar 

  18. M. Broy, P. Pepper, M. Wirsing: On Relations Between Programs. In: B. Robinet (ed.): Proc. 4th International Symposium on Programming, Paris, April 1980. Lecture Notes in Computer Science 83. Berlin-Heidelberg-New York: Springer 1980, pp. 59–78

    Google Scholar 

  19. M. Broy, P. Pepper, M. Wirsing: On Design Principles for Programming Languages: an Algebraic Approach. In: J.W. de Bakker, J.C. van Vliet (eds.): Algorithmic Languages. North-Holland Publ. Comp. 1981, pp. 203–219

    Google Scholar 

  20. M. Broy, M. Wirsing: Algebraic Definition of a Functional Programming Language and its Semantical Models. Technische Universität München, Institut für Informatik, TUM-I8008, 1980 (to appear in RAIRO)

    Google Scholar 

  21. M. Broy, M. Wirsing: Program Development: From Enumeration to Backtracking. IPL 10, 1980, pp. 193–197

    Article  MATH  Google Scholar 

  22. M. Broy, M. Wirsing: On the Algebraic Extension of Abstract Data Types. In: J. Diaz, I. Ramos (eds.): Formalization of Programming Concepts. Lecture Notes in Computer Science 107. Berlin-Heidelberg-New York: Springer 1981, pp. 244–251

    Chapter  Google Scholar 

  23. M. Broy, M. Wirsing: Programming Languages as Abstract Data Types. In: M. Dauchet (ed.): 5ème Colloque de Lille “Les Arbres en Algèbre et en Programmation”, Febr. 1980, pp. 160–177

    Google Scholar 

  24. M. Broy, M. Wirsing: Partial Abstract Types. Acta Informatica 18, 1982, pp. 47–64. Preliminary Version: Initial Versus Terminal Algebra Semantics for Partially Defined Abstract Types. Technische Universität München, Institut für Informatik, TUM-I8018, Dec. 1980

    Article  MathSciNet  Google Scholar 

  25. M. Broy, M. Wirsing, J.P. Finance, A. Quéré, J.L. Rémy: Methodical Solution of the Problems of Ascending Subsequences of Maximal Length within a Given Sequence. Information Processing Letters 8: 5, 1979, pp. 224–229

    Article  MathSciNet  MATH  Google Scholar 

  26. R.M. Burstall, J. Darlington: Some Transformations for Developing Recursive Programs. Proc. of 1975 Int. Conf. on Reliable Software, Los Angeles 1975, pp. 465–472. Also (revised version): J. ACM 24: 1, 1977, pp. 44–67

    Google Scholar 

  27. R. Burstall, M. Feather: Program Development by Transformations: an Overview. Proc. of Toulouse CREST Course on Programming, Toulouse, 1978

    Google Scholar 

  28. D.C. Cooper: The equivalence of certain computations. Comp. J. 9, 1966, pp. 45–52

    MATH  Google Scholar 

  29. CIP-Language Group: Report on a Wide Spectrum Language for Program Specification and Development. Technische Universität München, Institut für Informatik, TUM-I8104, May 1981

    Google Scholar 

  30. CIP Language Group: Programming In a Wide Spectrum Language: A Collection of Examples. Science of Computer Programming 1: 1, 1981, pp. 73–114

    Article  Google Scholar 

  31. K.L. Clark, J. Darlington: Algorithm Classification Through Synthesis. The Computer Journal 23: 1, 1980, pp. 61–65

    Article  MathSciNet  MATH  Google Scholar 

  32. K.L. Clark, S. Sickel: Predicate Logic: A Calculus for Deriving Programs. Proc. 5th Int. Joint Conf. on Artificial Intelligence, Cambridge, Mass., Aug. 1977, Vol. I, pp. 419–420

    Google Scholar 

  33. J. Darlington, R.M. Burstall: A System which Automatically Improves Programs. Acta Informatica 6, 1976, pp. 41–60

    Article  MATH  Google Scholar 

  34. A.P. Ershov: Mixed Computation: Potential Applications and Problems for Study. Theoretical Computer Science 18, 1982, pp. 41–67

    Article  MathSciNet  MATH  Google Scholar 

  35. F.L. De Remer: Transformational Grammars. In: F.L. Bauer, J. Eickel (eds.): Compiler construction. An Advanced Course. Lecture Notes in Computer Science 21, Berlin-Heidelberg-New York: Springer 1974, pp. 121–145

    Google Scholar 

  36. E.W. Dijkstra: A Discipline of Programming. Englewood Cliffs, N.J.: Prentice-Hall 1976

    MATH  Google Scholar 

  37. S.L. Gerhart: Correctness-preserving Program Transformations. Conf. Ree. Second ACM Symp. on Principles of Programming Languages, Jan. 1975, pp. 54–66

    Google Scholar 

  38. R. Gnatz, P. Pepper: Fuse: An Example in Program Development. Technische Universität München, Institut für Informatik, TUM-INF0-7711, 1977

    Google Scholar 

  39. J.A. Goguen, J.W. Thatcher, E.G. Wagner: An Initial Algebra Approach to the Specification, Correctness and Implementation of Abstract Data Types. In: R.T. Yeh (ed.): Current Trends in Programming Methodology. Vol. 4, Data Structuring. Englewood Cliffs, N.J.: Prentice-Hall 1978, pp. 80–149

    Google Scholar 

  40. J.V. Guttag: The Specification and Application to Programming of Abstract Data Types. Ph. D. Th., Univ. of Toronto, Dept. of Comp. Sci., Rep. CSRG-59, 1975

    Google Scholar 

  41. C.A.R. Hoare: An Axiomatic Basis for Computer Programming. Comm. ACM 12, 1969, pp. 563, 576–583

    Article  Google Scholar 

  42. D.B. Loveman: Program Improvement by Source-to-source Transformation. Journal ACM 24: 1, 1977, pp. 121–145

    Article  MathSciNet  MATH  Google Scholar 

  43. Z. Manna, W. Waldinger: A Deductive Approach to Program Synthesis. ACM TOPLAS 2: 1, January 1980, pp. 90–121

    Article  MATH  Google Scholar 

  44. H. Partsch, M. Broy: Examples for Change of Types and Object Structure. In: [7], pp. 421–463

    Google Scholar 

  45. H. Partsch, P. Pepper: A Family of Rules for Recursion Removal. Information Processing Letters 5, 1975, pp. 174–177

    Article  MathSciNet  Google Scholar 

  46. H. Partsch, R. Steinbrüggen: A Survey of Program Transformation Systems. ACM Computing Surveys 15:3, Sept. 1983 (to appear)

    Google Scholar 

  47. M.S. Paterson, C.E. Hewitt: Comparative Schematology. In: Record of the Project MAC Conf. on Concurrent Systems and Parallel Computation. New York: ACM 1970, pp. 119–127

    Google Scholar 

  48. P. Pepper: A Study on Transformational Semantics. In: [7], pp. 322–405

    Google Scholar 

  49. D. Scott: Outline of a Mathematical Theory of Computation. Proc. 4th Annual Princeton Conference on Information Sciences and Systems 1970, pp. 169–176

    Google Scholar 

  50. T.A. Standish, D.C. Harriman, D.F. Kibler, Ü.M. Neighbors: Improving and Refining Programs by Program Manipulation. Proc. 1967 ACM Annual Conf., Oct. 1976, pp. 509–516

    Google Scholar 

  51. H.R. Strong: Translating Recursion Equations into Flow Charts. In: Proc. 2nd Annual ACM Symposium on Theory of Computing, New York 1970, pp. 184–197. Also J. CSS 5, 1971, pp. 254–285

    Google Scholar 

  52. B. Wegbreit: Goal-directed Program Transformation. IEEE Transactions on Software Engineering, vol. SE-2, n° 2, 1976, pp. 69–80

    Article  MathSciNet  Google Scholar 

  53. M. Wirsing, M. ßroy: Abstract Data Types as Lattices of Finitely Generated Models. In: P. Dembinski (ed.): Mathematical Foundations of Computer Science - 9th Symposium, Rydzyna, Poland, Sept. 1–5, 1980. Lecture Notes in Computer Science 88. Berlin-Heidelberg-New York: Springer 1980, pp. 673–685

    Google Scholar 

  54. M. Wirsing, P. Pepper, H. Partsch, W. Dosch, M. Broy: On Hierarchies of Abstract Data Types. Acta Informatica 20, 1983, pp. 1–33

    Article  MathSciNet  MATH  Google Scholar 

  55. H. Wössner, P. Pepper, H. Partsch, F.L. Bauer: Special Transformation Techniques. In: [7], pp. 290–321

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 1984 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Broy, M. (1984). Algebraic Methods for Program Construction: The Project CIP. In: Pepper, P. (eds) Program Transformation and Programming Environments. NATO ASI Series, vol 8. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-46490-4_18

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-46490-4_18

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-46492-8

  • Online ISBN: 978-3-642-46490-4

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics