Skip to main content

Part of the book series: Advances in Formal Methods ((ADFM,volume 2))

Abstract

This is an introduction to the philosophy and use of OBJ, emphasizing its oper-ational semantics, with aspects of its history and its logical semantics. Release 2 of OBJ3 is described in detail, with many examples. OBJ is a wide spectrum first-order functional language that is rigorously based on (order sorted) equational logic and parameterized programming, supporting a declarative style that facilitates verification and allows OBJ to be used as a theorem prover.

Order sorted algebra provides a notion of subsort that rigorously supports multiple inheritance, exception handling and overloading. Parameterized programming gives powerful support for design, verification, reuse, and maintenance, using two kinds of module: objects to encapsulate executable code, and in particular to define abstract data types by initial algebra semantics; and (loose) theories to specify both syntactic and semantic properties of modules. Each kind of module can be parameterized, where actual parameters may be modules. For parameter instantiation, a view binds the formal entities in an interface theory to actual entities in a module, and also asserts that the target module satisfies the semantic conditions of the interface theory. Module expressions allow complex combinations of already defined modules, including sums, instantiations, and transformations; moreover, evaluating a module expression actually constructs the described software (sub)system from the given components. Default views can greatly reduce the effort of instantiating modules, by allowing obvious correspondences to be left out. We argue that first-order parameterized programming includes much of the power of higher-order programming, in a form that is often more convenient.

Although OBJ executable code normally consists of equations that are interpreted as rewrite rules, OBJ3 objects can also encapsulate Lisp code, e.g., to provide efficient built-in data types, or to augment the system with new capabilities; we describe the syntax of this facility, and provide some examples. In addition, OBJ provides rewriting modulo associative, commutative and/or identity equations, as well as user-definable evaluation strategies that allow lazy, eager, and mixed evaluation strategies on an operator-by-operator basis; memoization is also available on an operator-by-operator basis. In addition, OBJ3 supports the application of equations one at a time, either forwards or backwards; this is needed for equational theorem proving. Finally, OBJ provides user-definable mixfix syntax, which supports the notational conventions of particular application domains.

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 169.00
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 219.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info
Hardcover Book
USD 219.99
Price excludes VAT (USA)
  • Durable hardcover 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. Hitoshi Aida, Joseph Goguen, Sany Leinwand, Patrick Lincoln, José Meseguer, Babak Taheri, and Timothy Winkler. Simulation and performance estimation for the Rewrite Rule Machine. In Proceedings, Fourth Symposium on the Frontiers of Massively Parallel Computation, pages 336–344. IEEE, October 1992.

    Chapter  Google Scholar 

  2. Hitoshi Aida, Joseph Goguen, and José Meseguer. Compiling concurrent rewriting onto the rewrite rule machine. In Stéphane Kaplan and Misuhiro Okada, editors, Conditional and Typed Rewriting Systems, pages 320–332. Springer, 1991. Lecture Notes in Computer Science, Volume 516; also, Technical Report SRI-CSL-90–03, Computer Science Lab, SRI International, February, 1990.

    Google Scholar 

  3. Antonio Alencar and Joseph Goguen. OOZE: An object-oriented Z environment. In Pierre America, editor, European Conference on Object Oriented Programming. Springer, 1991. Lecture Notes in Computer Science, Volume 512.

    Google Scholar 

  4. Franz Baader and Tobias Nipkow. Term Rewriting and All That. Cambridge, 1998.

    Google Scholar 

  5. Eugenio Battiston, Fiorella De Cindio, and Giancarlo Mauri. OBJSA net systems: a class of high-level nets having objects as domains. In Joseph Goguen and Grant Malcolm, editors, Software Engineering with OBJ: Algebraic Specification in Action. Kluwer, to appear.

    Google Scholar 

  6. Jan Bergstra and John Tucker. Characterization of computable data types by means of a finite equational specification method. In Jaco de Bakker and Jan van Leeuwen, editors, Automata, Languages and Programming, Seventh Colloquium, pages 76–90. Springer, 1980. Lecture Notes in Computer Science, Volume 81.

    Google Scholar 

  7. Rod Burstall. Programming with modules as typed functional programming. Proceedings, International Conference on Fifth Generation Computing Systems, 1985.

    Google Scholar 

  8. Rod Burstall and Joseph Goguen. Putting theories together to make specifications. In Raj Reddy, editor, Proceedings, Fifth International Joint Conference on Artificial Intelligence, pages 1045–1058. Department of Computer Science, Carnegie-Mellon University, 1977.

    Google Scholar 

  9. Rod Burstall and Joseph Goguen. The semantics of Clear, a specification language. In Dines Bjorner, editor, Proceedings, 1979 Copenhagen Winter School on Abstract Software Specification, pages 292–332. Springer, 1980. Lecture Notes in Computer Science, Volume 86; based on unpublished notes handed out at the Symposium on Algebra and Applications, Stefan Banach Center, Warsaw, Poland, 1978.

    Google Scholar 

  10. Rod Burstall and Joseph Goguen. An informal introduction to specifications using Clear. In Robert Boyer and J Moore, editors, The Correctness Problem in Computer Science, pages 185–213. Academic, 1981. Reprinted in Software Specification Techniques, Narain Gehani and Andrew McGettrick, editors, Addison-Wesley, 1985, pages 363–390.

    Google Scholar 

  11. Rod Burstall and Joseph Goguen. Algebras, theories and freeness: An introduction for computer scientists. In Martin Wirsing and Gunther Schmidt, editors, Theoretical Foundations of Programming Methodology, pages 329–350. Reidel, 1982. Proceedings, 1981 Marktoberdorf NATO Summer School, NATO Advanced Study Institute Series, Volume C91.

    Google Scholar 

  12. Rod Burstall and Butler Lampson. A kernel language for abstract data types and modules. In Giles Kahn, David MacQueen, and Gordon Plotkin, editors, Proceedings, International Symposium on the Semantics of Data Types, volume 173 of Lecture Notes in Computer Science, pages 1–50. Springer, 1984.

    Google Scholar 

  13. Rod Burstall, David MacQueen, and Donald Sannella. Hope: an experimental applicative language. In Proceedings, First LISP Conference, volume 1, pages 136–143. Stanford University, 1980.

    Google Scholar 

  14. Carlo Cavenathi, Marco De Zanet, and Giancarlo Mauri. MC-OBJ: a C interpreter for OBJ. Note di Software, 36/37:16–26, October 1988. In Italian.

    Google Scholar 

  15. Thomas Cheatham. The introduction of definitional facilities into higher level programming languages. In Proceedings, AFIPS Fall Joint Computer Conference, pages 623–637. Spartan Books, 1966.

    Google Scholar 

  16. Manuel Clavel, Steven Eker, Patrick Lincoln, and José Meseguer. Principles of Maude. In José Meseguer, editor, Proceedings, First International Workshop on Rewriting Logic and its Applications. Elsevier Science, 1996. Volume 4, Electronic Notes in Theoretical Computer Science.

    Google Scholar 

  17. Manuel Clavel, Steven Eker, and José Meseguer. Current design and implementation of the Cafe prover and Knuth-Bendix tools, 1997. Presented at CafeOBJ Workshop, Kanazawa, October 1997.

    Google Scholar 

  18. Manuel Clavel and José Meseguer. Reflection and strategies in rewriting logic. In José Meseguer, editor, Proceedings, First International Workshop on Rewriting Logic and its Applications. Elsevier Science, 1996. Volume 4, Electronic Notes in Theoretical Computer Science.

    Google Scholar 

  19. CoFI. CASL summary, 1999. http://www.brics.dk/Projects/CoFi/.

  20. Derek Coleman, Robin Gallimore, and Victoria Stavridou. The design of a rewrite rule interpreter from algebraic specifications. IEE Software Engineering Journal, July: 95–104, 1987.

    Google Scholar 

  21. Hubert Comon. Unification et Disunification: Théories et Applications. PhD thesis, Université de l’Institut Polytechnique de Grenoble, 1988.

    Google Scholar 

  22. Department of Defense. Reference manual for the Ada programming language. United States Government, Report ANSI/MIL-STD-1815A, 1983.

    Google Scholar 

  23. Nachum Dershowitz and Jean-Pierre Jouannaud. Notations for rewriting. Bulletin of the European Association for Theoretical Computer Science, 43: 162–172, 1990.

    Google Scholar 

  24. Nachum Dershowitz and Jean-Pierre Jouannaud. Rewriting systems. In Jan van Leeuwen, editor, Handbook of Theoretical Computer Science, Volume B: Formal Methods and Semantics, pages 243–320. North-Holland, 1990.

    Google Scholar 

  25. Räzvan Diaconescu. Category-based Semantics for Equational and Constraint Logic Programming. PhD thesis, Programming Research Group, Oxford University, 1994.

    Google Scholar 

  26. Räzvan Diaconescu and Kokichi Futatsugi. Café OBJ Report: The Language, Proof Techniques, and Methodologies for Object-Oriented Algebraic Specification. World Scientific, 1998. AMAST Series in Computing, Volume 6.

    Google Scholar 

  27. Räzvan Diaconescu and Kokichi Futatsugi. Logical foundations of Café OBJ, 1999. Submitted for publication.

    Google Scholar 

  28. David Duce. Concerning the compatibility of PHIGS and GKS. In Joseph Goguen and Grant Malcolm, editors, Software Engineering with OBJ: Algebraic Specification in Action. Kluwer, to appear.

    Google Scholar 

  29. Hartmut Ehrig and Bernd Mahr. Fundamentals of Algebraic Specification 1: Equations and Initial Semantics. Springer, 1985. EATCS Monographs on Theoretical Computer Science, Volume 6.

    Google Scholar 

  30. Kokichi Futatsugi. Hierarchical software development in HISP. In T. Kitagawa, editor, Computer Science and Technologies 1982, pages 151–174. OHMSA/North Holland, 1982. Japan Annual Review in Electronics, Computer and Telecommunications Series.

    Google Scholar 

  31. Kokichi Futatsugi. An overview of OBJ2. In Kazuhiru Fuchi and Maurice Nivat, editors, Proceedings, France-Japan AI and CS Symposium. ICOT, 1986. Also Information Processing Society of Japan, Technical Memorandum PL-86–6.

    Google Scholar 

  32. Kokichi Futatsugi. Trends in formal specification methods based on algebraic specification techniques — from abstract data types to software processes: A personal perspective. In Proceedings, International Conference Commemorating the 30th Anniversary of the Information Processing Society of Japan, pages 59–66. Information Processing Society of Japan, 1990.

    Google Scholar 

  33. Kokichi Futatsugi. Product-centered process description = algebraic specification of environment + SCRIPT. In Proceedings, 6th International Software Process Workshop, pages 95–97. IEEE, 1991.

    Google Scholar 

  34. Kokichi Futatsugi. Structuring and derivation in algebraic specification/programming languages. Journal of Information Processing Society of Japan, 14 (2): 153–163, 1991.

    MathSciNet  Google Scholar 

  35. Kokichi Futatsugi, Joseph Goguen, Jean-Pierre Jouannaud, and José Meseguer. Principles of OBJ2. In Brian Reid, editor, Proceedings, Twelfth ACM Symposium on Principles of Programming Languages, pages 52–66. Association for Computing Machinery, 1985.

    Google Scholar 

  36. Kokichi Futatsugi, Joseph Goguen, José Meseguer, and Koji Okada. Parameterized programming in OBJ2. In Robert Balzer, editor, Proceedings, Ninth International Conference on Software Engineering, pages 51–60. IEEE Computer Society, March 1987.

    Google Scholar 

  37. Kokichi Futatsugi, Joseph Goguen, José Meseguer, and Koji Okada. Parameterized programming and its application to rapid prototyping in OBJ2. In Yoshihiro Matsumoto and Yutaka Ohno, editors, Japanese Perspectives on Software Engineering, pages 77–102. Addison Wesley, 1989.

    Google Scholar 

  38. Kokichi Futatsugi and Koji Okada. Specification writing as construction of hierarchically structured clusters of operators. In Proceedings, 1980 IFIP Congress, pages 287–292. IFIP, 1980.

    Google Scholar 

  39. Kokichi Futatsugi and Koji Okada. A hierarchical structurting method for functional software systems. In Proceedings, 6th International Conference on Software Engineering, pages 393–402. IEEE, 1982.

    Google Scholar 

  40. Christopher Paul Gerrard. The specification and controlled implementation of a configuration management tool using OBJ and Ada, 1988. Gerrard Software Limited.

    Google Scholar 

  41. Martin Gogolla. Partially ordered sorts in algebraic specifications. In Bruno Courcelle, editor, Proceedings, Ninth CAAP (Bordeaux), pages 139–153. Cambridge, 1984. Also Forschungsbericht Nr. 169, Universität Dortmund, Abteilung Informatik, 1983.

    Google Scholar 

  42. Martin Gogolla. A final algebra semantics for errors and exceptions. In Hans-Jörg Kreowski, editor, Recent Trends in Data Type Specification, volume Informatik-Fachberichte 116, pages 89–103. Springer, 1985. Selected papers from the Third Workshop on Theory and Applications of Abstract Data Types.

    Google Scholar 

  43. Joseph Goguen. Abstract errors for abstract data types. In Eric Neuhold, editor, Proceedings, First IFIP Working Conference on Formal Description of Programming Concepts, pages 21.1–21.32. MIT, 1977. Also in Formal Description of Programming Concepts, Peter Neuhold, Ed., North-Holland, pages 491–522, 1979.

    Google Scholar 

  44. Joseph Goguen. Order sorted algebra. Technical Report 14, UCLA Computer Science Department, 1978. Semantics and Theory of Computation Series.

    Google Scholar 

  45. Joseph Goguen. Some design principles and theory for OBJ-0, a language for expressing and executing algebraic specifications of programs. In Edward Blum, Manfred Paul, and Satsoru Takasu, editors, Proceedings, Conference on Mathematical Studies of Information Processing, pages 425–473. Springer, 1979. Lecture Notes in Computer Science, Volume 75.

    Book  Google Scholar 

  46. Joseph Goguen. How to prove algebraic inductive hypotheses without induction, with applications to the correctness of data type representations. In Wolfgang Bibel and Robert Kowalski, editors, Proceedings, Fifth Conference on Automated Deduction, pages 356–373. Springer, 1980. Lecture Notes in Computer Science, Volume 87.

    Google Scholar 

  47. Joseph Goguen. Parameterized programming. Transactions on Software Engineering, SE-10(5): 528–543, September 1984.

    Google Scholar 

  48. Joseph Goguen. Merged views, closed worlds and ordered sorts: Some novel database features in OBJ. In Alex Borgida and Peter Buneman, editors, Workshop on Database Interfaces, pages 38–47. University of Pennsylvania, Computer Science Department, 1985. This workshop took place in October, 1982.

    Google Scholar 

  49. Joseph Goguen. Reusing and interconnecting software components. Computer, 19(2):16–28, February 1986. Reprinted in Tutorial: Software Reusability, Peter Freeman, editor, IEEE Computer Society, 1987, pages 251–263, and in Domain Analysis and Software Systems Modelling, Rubén Prieto-Diaz and Guillermo Arango, editors, IEEE Computer Society, 1991, pages 125–137.

    Google Scholar 

  50. Joseph Goguen. Modular algebraic specification of some basic geometrical constructions. Artificial Intelligence, pages 123–153,1988. Special Issue on Computational Geometry, edited by Deepak Kapur and Joseph Mundy; also, Report CSLI-87–87, Center for the Study of Language and Information at Stanford University, March 1987.

    Google Scholar 

  51. Joseph Goguen. OBJ as a theorem prover, with application to hardware verification. In V.P. Subramanyan and Graham Birtwhistle, editors, Current Trends in Hardware Verification and Automated Theorem Proving, pages 218–267. Springer, 1989.

    Google Scholar 

  52. Joseph Goguen. Principles of parameterized programming. In Ted Biggerstaff and Alan Perlis, editors, Software Reusability, Volume I: Concepts and Models, pages 159–225. Addison Wesley, 1989.

    Google Scholar 

  53. Joseph Goguen. Proving and rewriting. In Hélène Kirchner and Wolfgang Wechler, editors, Proceedings, Second International Conference on Algebraic and Logic Programming, pages 1–24. Springer, 1990. Lecture Notes in Computer Science, Volume 463.

    Book  Google Scholar 

  54. Joseph Goguen. Semantic specifications for the Rewrite Rule Machine. In Aki Yonezawa and Takayasu Ito, editors, Concurrency: Theory, Language and Architecture, pages 216–234, 1991. Proceedings of a U.K.Japan Workshop; Springer, Lecture Notes in Computer Science, Volume 491.

    Google Scholar 

  55. Joseph Goguen. Types as theories. In George Michael Reed, Andrew William Roscoe, and Ralph F Wachter, editors, Topology and Category Theory in Computer Science, pages 357–390. Oxford, 1991. Proceedings of a Conference held at Oxford, June 1989.

    MATH  Google Scholar 

  56. Joseph Goguen. Stretching first order equational logic: Proofs with partiality, subtypes and retracts. In Maria Paola Bonacina and Ulrich Furbach, editors, Proceedings, Workshop on First Order Theorem Proving,pages 78–85. Johannes Kepler Univ. Linz, 1997. Schloss Hagenberg, Austria, October 1997; RISC-Linz Report No. 95–50; revised version to appear in Journal of Symbolic Computation.

    Google Scholar 

  57. Joseph Goguen. Cse 230 homepage, 1999. Available at http://www.cs.ucsd.edu/users/goguen/courses/230.

  58. Joseph Goguen. An introduction to algebraic semiotics, with applications to user interface design. In Chrystopher Nehaniv, editor, Computation for Metaphors, Analogy and Agents, pages 242–291. Springer, 1999. Lecture Notes in Artificial Intelligence, Volume 1562.

    Google Scholar 

  59. Joseph Goguen. Theorem Proving and Algebra. MIT, to appear.

    Google Scholar 

  60. Joseph Goguen. Social and semiotic analyses for theorem prover user interface design, to appear, 2000. Special issue on user interfaces for theorem provers.

    Google Scholar 

  61. Joseph Goguen and Râzvan Diaconescu. An Oxford survey of order sorted algebra. Mathematical Structures in Computer Science, 4: 363–392, 1994.

    Article  MathSciNet  MATH  Google Scholar 

  62. Joseph Goguen, Jean-Pierre Jouannaud, and José Meseguer. Operational semantics of order-sorted algebra. In Wilfried Brauer, editor, Proceedings, 1985 International Conference on Automata, Languages and Programming. Springer, 1985. Lecture Notes in Computer Science, Volume 194.

    Google Scholar 

  63. Joseph Goguen, Claude Kirchner, José Meseguer, and Timothy Winkler. OBJ as a language for concurrent programming. In Steven Kartashev and Svetlana Kartashev, editors, Proceedings, Second International Supercomputing Conference, Volume I, pages 195–198. International Supercomputing Institute Inc. (St. Petersburg FL ), 1987.

    Google Scholar 

  64. Joseph Goguen, Kai Lin, Akira Mori, Grigore Rosu, and Akiyoshi Sato. Distributed cooperative formal methods tools. In Michael Lowry, editor, Proceedings, Automated Software Engineering, pages 55–62. IEEE, 1997.

    Google Scholar 

  65. Joseph Goguen, Kai Lin, Akira Mori, Grigore Rosu, and Akiyoshi Sato. Tools for distributed cooperative design and validation. In Proceedings, Café OBJ Symposium. Japan Advanced Institute for Science and Technology, 1998. Namazu, Japan, April 1998.

    Google Scholar 

  66. Joseph Goguen and Grant Malcolm. Algebraic Semantics of Imperative Programs. MIT, 1996.

    Google Scholar 

  67. Joseph Goguen and Grant Malcolm. A hidden agenda. Technical Report CS97–538, UCSD, Dept. Computer Science & Eng., May 1997. To appear in special issue of Theoretical Computer Science on Algebraic Engineering, edited by Chrystopher Nehaniv and Masamo Ito. Extended abstract in Proc., Conf. Intelligent Systems: A Semiotic Perspective, Vol. I, ed. J. Albus, A. Meystel and R. Quintero, Nat. Inst. Science & Technology (Gaithersberg MD, 20–23 October 1996 ), pages 159–167.

    Google Scholar 

  68. Joseph Goguen and Grant Malcolm. Hidden coinduction: Behavioral correctness proofs for objects. Mathematical Structures in Computer Science, 9 (3): 287–319, June 1999.

    Article  MathSciNet  MATH  Google Scholar 

  69. Joseph Goguen and José Meseguer. Rapid prototyping in the OBJ executable specification language. Software Engineering Notes,7(5):75–84, December 1982. Proceedings of Rapid Prototyping Workshop.

    Google Scholar 

  70. Joseph Goguen and José Meseguer. Universal realization, persistent interconnection and implementation of abstract modules. In M. Nielsen and E.M. Schmidt, editors, Proceedings, 9th International Conference on Automata, Languages and Programming, pages 265–281. Springer, 1982. Lecture Notes in Computer Science, Volume 140.

    Google Scholar 

  71. Joseph Goguen and José Meseguer. Eqlog: Equality, types, and generic modules for logic programming. In Douglas DeGroot and Gary Lindstrom, editors, Logic Programming: Functions, Relations and Equations, pages 295–363. Prentice-Hall, 1986. An earlier version appears in Journal of Logic Programming, Volume 1, Number 2, pages 179–210, September 1984.

    Google Scholar 

  72. Joseph Goguen and José Meseguer. Models and equality for logical programming. In Hartmut Ehrig, Giorgio Levi, Robert Kowalski, and Ugo Montanans, editors, Proceedings, 1987 TAPSOFT, pages 1–22. Springer, 1987. Lecture Notes in Computer Science, Volume 250.

    Google Scholar 

  73. Joseph Goguen and José Meseguer. Order-sorted algebra solves the constructor selector, multiple representation and coercion problems. In Proceedings, Second Symposium on Logic in Computer Science, pages 18–29. IEEE Computer Society, 1987. Also Report CSLI-87–92, Center for the Study of Language and Information, Stanford University, March 1987; revised version in Information and Computation, 103, 1993.

    Google Scholar 

  74. Joseph Goguen and José Meseguer. Unifying functional, object-oriented and relational programming, with logical semantics. In Bruce Shriver and Peter Wegner, editors, Research Directions in Object-Oriented Programming, pages 417–477. MIT, 1987. Preliminary version in SIGPLAN Notices, Volume 21, Number 10, pages 153–162, October 1986.

    Google Scholar 

  75. Joseph Goguen and José Meseguer. Software for the Rewrite Rule Machine. In Hideo Aiso and Kazuhiro Fuchi, editors, Proceedings, International Conference on Fifth Generation Computer Systems 1988, pages 628–637. Institute for New Generation Computer Technology (ICOT), 1988.

    Google Scholar 

  76. Joseph Goguen and José Meseguer. Order-sorted algebra I: Equational deduction for multiple inheritance, overloading, exceptions and partial operations. Theoretical Computer Science,105(2):217–273,1992. Also Programming Research Group Technical Monograph PRG-80, Oxford University, December 1989, and Technical Report SRI-CSL-89–10, SRI International, Computer Science Lab, July 1989; originally given as lecture at Seminar on Types,Carnegie-Mellon University, June 1983; many draft versions exist, from as early as 1985.

    Google Scholar 

  77. Joseph Goguen, José Meseguer, and David Plaisted. Programming with parameterized abstract objects in OBJ. In Domenico Ferrari, Mario Bolognani, and Joseph Goguen, editors, Theory and Practice of Software Technology, pages 163–193. North-Holland, 1983.

    Google Scholar 

  78. Joseph Goguen, Akira Mori, and Kai Lin. Algebraic semiotics, ProofWebs and distributed cooperative proving. In Yves Bartot, editor, Proceedings, User Interfaces for Theorem Provers, pages 25–34. INRIA, 1997. (Sophia Antipolis, 1–2 September 1997 ).

    Google Scholar 

  79. Joseph Goguen and Kamran Parsaye-Ghomi. Algebraic denotational semantics using parameterized abstract modules. In J. Diaz and I. Ramos, editors, Formalizing Programming Concepts, pages 292–309. Springer, 1981. Lecture Notes in Computer Science, Volume 107.

    Google Scholar 

  80. Joseph Goguen and Grigore Rosu. Hiding more of hidden algebra. In Proceedings, World Congress on Formal Methods, 1999. Springer, to appear 1999. Toulouse, France.

    Google Scholar 

  81. Joseph Goguen, Andrew Stevens, Keith Hobley, and Hendrik Hilberdink. 2OBJ, a metalogical framework based on equational logic. Philosophical Transactions of the Royal Society, Series A, 339:69–86, 1992. Also in Mechanized Reasoning and Hardware Design, edited by C.A.R. Hoare and Michael J.C. Gordon, Prentice-Hall, 1992, pages 69–86.

    Google Scholar 

  82. Joseph Goguen and Joseph Tardo. An introduction to OBJ: A language for writing and testing software specifications. In Marvin Zelkowitz, editor, Specification of Reliable Software, pages 170–189. IEEE, 1979. Reprinted in Software Specification Techniques, Nehan Gehani and Andrew McGettrick, editors, Addison Wesley, 1985, pages 391–420.

    Google Scholar 

  83. Joseph Goguen, James Thatcher, and Eric Wagner. An initial algebra approach to the specification, correctness and implementation of abstract data types. In Raymond Yeh, editor, Current Trends in Programming Methodology, IV, pages 80–149. Prentice-Hall, 1978.

    Google Scholar 

  84. Joseph Goguen, James Thatcher, Eric Wagner, and Jesse Wright. Abstract data types as initial algebras and the correctness of data representations. In Alan Klinger, editor, Computer Graphics, Pattern Recognition and Data Structure, pages 89–93. IEEE, 1975.

    Google Scholar 

  85. Joseph Goguen and William Tracz. An implementation-oriented semantics for module composition. In Gary Leavens and Murali Sitaraman, editors, Foundations of Component-based Systems. Cambridge, 1999. To appear.

    Google Scholar 

  86. Joseph Goguen and Timothy Winkler. Introducing OBJ3. Technical report, SRI International, Computer Science Lab, 1988.

    Google Scholar 

  87. Joseph Goguen and David Wolfram. On types and FOOPS. In Robert Meersman, William Kent, and Samit Khosla, editors, Object Oriented Databases: Analysis, Design and Construction, pages 1–22. North Holland, 1991. Proceedings, IFIP TC2 Conference, Windermere, UK, 2–6 July 1990.

    Google Scholar 

  88. Robert Goldblatt. Topoi, the Categorial Analysis of Logic. North-Holland, 1979.

    Google Scholar 

  89. Michael J.C. Gordon, Robin Milner, and Christopher Wadsworth. Edinburgh LCF. Springer, 1979. Lecture Notes in Computer Science, Volume 78.

    Google Scholar 

  90. John Guttag. The Specification and Application to Programming of Abstract Data Types. PhD thesis, University of Toronto, 1975. Computer Science Department, Report CSRG-59.

    Google Scholar 

  91. Robert Harper, David MacQueen, and Robin Milner. Standard ML. Technical Report ECS-LFCS-86–2, Department of Computer Science, University of Edinburgh, 1986.

    Google Scholar 

  92. Jieh Hsiang. Refutational Theorem Proving using Term Rewriting Systems. PhD thesis, University of Illinois at Champaign-Urbana, 1981.

    Google Scholar 

  93. Gérard Huet and Derek Oppen. Equations and rewrite rules: A survey. In Ron Book, editor, Formal Language Theory: Perspectives and Open Problems, pages 349–405. Academic, 1980.

    Google Scholar 

  94. John Hughes. Why functional programming matters. Technical Report 16, Programming Methodology Group, University of Goteborg, November 1984.

    Google Scholar 

  95. John Hughes. Abstract interpretations of first order polymorphic functions. In Cordelia Hall, John Hughes, and John O’Donnell, editors, Proceedings of the 1988 Glasgow Workshop on Functional Programming, pages 68–86. Computing Science Department, University of Glasgow, 1989.

    Google Scholar 

  96. Jean-Pierre Jouannaud and Claude Marché. Completion modulo associativity, commutativity and identity. In Alfonso Miola, editor, Proceedings, DISCO ‘80,pages 111–120. Springer, 1991. Lecture Notes in Computer Science, Volume 429; to appear in Theoretical Computer Science.

    Google Scholar 

  97. Jean-Pierre Jouannaud and Mitsuhiro Okada. Executable higher-order algebraic specification languages. In Proceedings, 6th Symposium on Logic in Computer Science, pages 350–361. IEEE, 1991.

    Google Scholar 

  98. Heinz Kaphengst and Horst Reichel. Initial algebraic semantics for non-context-free languages. In Marek Karpinski, editor, Fundamentals of Computation Theory, pages 120–126. Springer, 1977. Lecture Notes in Computer Science, Volume 56.

    Google Scholar 

  99. Claude Kirchner. Order sorted equational matching, 1988.

    Google Scholar 

  100. Claude Kirchner, Hélène Kirchner, and Aristide Mégrelis. OBJ for OBJ. In Joseph Goguen and Grant Malcolm, editors, Software Engineering with OBJ: Algebraic Specification in Action. Kluwer, to appear.

    Google Scholar 

  101. Claude Kirchner, Hélène Kirchner, and José Meseguer. Operational semantics of OBJ3. In T. Lepistö and Aarturo Salomaa, editors, Proceedings, 15th International Colloquium on Automata, Languages and Programming,pages 287–301. Springer, 1988. (Tampere, Finland, 1115 July 1988.) Lecture Notes in Computer Science, Volume 317.

    Google Scholar 

  102. Jan Willem Klop. Term rewriting systems: A tutorial. Bulletin of the European Association for Theoretical Computer Science, 32: 143–182, June 1987.

    MATH  Google Scholar 

  103. Jan Willem Klop. Term rewriting systems: from Church-Rosser to Knuth-Bendix and beyond. In Samson Abramsky, Dov Gabbay, and Tom Maibaum, editors, Handbook of Logic in Computer Science, pages 1–117. Oxford, 1992.

    Google Scholar 

  104. Donald Knuth and Peter Bendix. Simple word problems in universal algebra. In J. Leech, editor, Computational Problems in Abstract Algebra. Pergamon, 1970.

    Google Scholar 

  105. John T. Latham. Abstract Pascal: A tutorial introduction. Technical Report Version 2.1, University of Manchester, Department of Computer Science, 1987.

    Google Scholar 

  106. Sany Leinwand and Joseph Goguen. Architectural options for the Rewrite Rule Machine. In Steven Kartashev and Svetlana Kartashev, editors, Proceedings, Second International Supercomputing Conference, Volume I, pages 63–70. International Supercomputing Institute Inc. (St. Petersburg FL ), 1987.

    Google Scholar 

  107. Sany Leinwand, Joseph Goguen, and Timothy Winkler. Cell and ensemble architecture of the Rewrite Rule Machine. In Hideo Aiso and Kazuhiro Fuchi, editors, Proceedings, International Conference on Fifth Generation Computer Systems 1988, pages 869–878. Institute for New Generation Computer Technology (ICOT), 1988.

    Google Scholar 

  108. Patrick Lincoln and Jim Christian. Adventures in associative- commutative unification. Journal of Symbolic Computation, 8:217–240, 1989. Also appears in Unification, edited by Claude Kirchner (Academic, 1990 ), pages 393–416.

    Google Scholar 

  109. Grant Malcolm and Joseph Goguen. An executable course on the algebraic semantics of imperative programs. In Michael Hinchey and C. Neville Dean, editors, Teaching and Learning Formal Methods, pages 161–179. Academic, 1996.

    Google Scholar 

  110. Narciso Martf-Oliet and José Meseguer. Inclusions and subtypes. Technical Report SRI-CSL-90–16, SRI International, Computer Science Lab, December 1990.

    Google Scholar 

  111. Per Martin-Löf. Constructive mathematics and computer programming. In Logic, Methodology and Philosophy of Science VI, pages 153–175. North-Holand, 1982.

    Google Scholar 

  112. José Meseguer. A logical theory of concurrent objects. In ECOOPOOPSLA’90 Conference on Object-Oriented Programming, Ottawa, Canada, October 1990, pages 101–115. ACM, 1990.

    Google Scholar 

  113. José Meseguer. Conditional rewriting logic: Deduction, models and concurrency. In Stéphane Kaplan and Misuhiro Okada, editors, Conditional and Typed Rewriting Systems, pages 64–91. Springer, 1991. Lecture Notes in Computer Science, Volume 516.

    Book  MATH  Google Scholar 

  114. José Meseguer. Conditional rewriting logic as a unified model of con-currency. Theoretical Computer Science, 96 (1): 73–155, 1992.

    Article  MathSciNet  MATH  Google Scholar 

  115. José Meseguer. Membership algebra as a logical framework for equational specification, 1997. Draft manuscript. Computer Science Lab, SRI International.

    Google Scholar 

  116. José Meseguer and Joseph Goguen. Initiality, induction and computability. In Maurice Nivat and John Reynolds, editors, Algebraic Methods in Semantics, pages 459–541. Cambridge, 1985.

    Google Scholar 

  117. José Meseguer, Joseph Goguen, and Gert Smolka. Order-sorted unification. Journal of Symbolic Computation, 8: 383–413, 1989.

    Article  MathSciNet  MATH  Google Scholar 

  118. Donald Michie. ‘Memo’ functions and machine learning. Nature, 218:19–22, April 1968.

    Google Scholar 

  119. Robin Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17 (3): 348–375, 1978.

    Article  MathSciNet  MATH  Google Scholar 

  120. Peter Mosses. Abstract semantic algebras! In Dines Bjorner, editor, Formal Description of Programming Concepts II, pages 45–70. IFIP, 1983.

    Google Scholar 

  121. Peter Mosses. A basic semantic algebra. In Giles Kahn, David Mac-Queen, and Gordon Plotkin, editors, Proceedings, International Symposium on the Semantics of Data Types, pages 87–107. Springer, 1985. Lecture Notes in Computer Science, Volume 173.

    Google Scholar 

  122. Peter Mosses. Unified algebras and institutions. In Proceedings, Fourth Annual Conference on Logic in Computer Science, pages 304–312. IEEE, 1989.

    Google Scholar 

  123. Alan Mycroft. Abstract Interpretation and Optimising Transformations for Applicative Programs. PhD thesis, University of Edingurgh, 1981.

    Google Scholar 

  124. Ataru Nakagawa and Kokichi Futatsugi. Stepwise refinement process with modularity: An algebraic approach. In Proceedings, 11th International Conference on Software Engineering, pages 166–177. IEEE, 1989.

    Google Scholar 

  125. Ataru Nakagawa and Kokichi Futatsugi. Software process a la algebra: OBJ for OBJ. In Proceedings, 12th International Conference on Software Engineering, pages 12–32. IEEE, 1990.

    Google Scholar 

  126. Ataru Nakagawa, Kokichi Futatsugi, S. Tomura, and T. Shimizu. Algebraic specification of MacIntosh’s QuickDraw using OBJ2. Technical Report Draft, ElectroTechnical Laboratory, Tsukuba Science City, Japan, 1987. In Proceedings, Tenth International Conference on Software Engineering, Singapore, April 1988.

    Google Scholar 

  127. Kazuhito Ohmaki, Kokichi Futatsugi, and Koichi Takahashi. A basic LOTOS simulator in OBJ. In Proceedings, International Conference Commemorating the 30th Anniversary of the Information Processing Society of Japan, pages 497–504. Information Processing Society of Japan, 1990.

    Google Scholar 

  128. Kazuhito Ohmaki, Koichi Takahashi, and Kokichi Futatsugi. A LOTOS simulator in OBJ. In Proceedings, FORTE’90: Third International Conference on Formal Description Techniques, November 1990.

    Google Scholar 

  129. Lawrence Paulson. Logic and Computation: Interactive Proof with Cambridge LCF. Cambridge, 1987. Cambridge Tracts in Theoretical Computer Science, Volume 2.

    Google Scholar 

  130. Francisco Pinheiro and Joseph Goguen. An object-oriented tool for tracing requirements. IEEE Software,pages 52–64, March 1996. Special issue of papers from ICRE’96.

    Google Scholar 

  131. David Plaisted. An initial algebra semantics for error presentations. SRI International, Computer Science Laboratory, 1982.

    Google Scholar 

  132. Axel Poigné. On semantic algebras: Higher order structures. Informatik II, Universität Dortmund, 1983.

    Google Scholar 

  133. Axel Poigné. Once more on order-sorted algebra. Technical Report Draft, GMD, 1990.

    Google Scholar 

  134. Axel Poigné. Parameterization for order-sorted algebraic specification. Journal of Computer and System Sciences, 40 (3): 229–268, 1990.

    Article  MathSciNet  MATH  Google Scholar 

  135. John Reynolds. Using category theory to design implicit conversions and generic operators. In Neal Jones, editor, Semantics Directed Compiler Generation, pages 211–258. Springer, 1980. Lecture Notes in Computer Science, Volume 94.

    Google Scholar 

  136. David Rydeheard and Rod Burstall. Computational Category Theory. Prentice-Hall, 1988.

    Google Scholar 

  137. Augusto Sampaio. A comparative study of theorem provers: Proving correctness of compiling specifications. Technical Report PRG-TR-2090, Oxford University Computing Laboratory, 1990.

    Google Scholar 

  138. Augusto Sampaio. An Algebraic Approach to Compiler Design,volume 4. World Scientific, 1998.

    Google Scholar 

  139. Dana Scott and Christopher Strachey. Towards a mathematical semantics for computer languages. In Proceedings, 21st Symposium on Computers and Automata,pages 19–46. Polytechnic Institute of Brooklyn, 1971. Also Programming Research Group Technical Monograph PRG-6, Oxford.

    Google Scholar 

  140. Gert Smolka and Hassan Aït-Kaci. Inheritance hierarchies: Semantics and unification. Technical Report Report AI-057–87, MCC, 1987. In Journal of Symbolic Computation, 1988.

    Google Scholar 

  141. Gert Smolka, Werner Nutt, Joseph Goguen, and José Meseguer. Order-sorted equational computation. In Maurice Nivat and Hassan Aït-Kaci, editors, Resolution of Equations in Algebraic Structures, Volume 2: Rewriting Techniques, pages 299–367. Academic, 1989. Preliminary version in Proceedings, Colloquium on the Resolution of Equations in Algebraic Structures, held in Lakeway, Texas, May 1987, and SEKI Report SR-87–14, Universität Kaiserslautern, December 1987.

    Google Scholar 

  142. J. Michael Spivey. The Z Notation: A Reference Manual. Prentice-Hall, 1989.

    Google Scholar 

  143. S. Sridhar. An implementation of OBJ2: An object-oriented language for abstract program specification. In K.V. Nori, editor, Proceedings, Sixth Conference on Foundations of Software Technology and Theoretical Computer Science, pages 81–95. Springer, 1986. Lecture Notes in Computer Science, Volume 241.

    Google Scholar 

  144. Victoria Stavridou. Specifying in OBJ, verifying in REVE, and some ideas about time. Technical report, Department of Computer Science, University of Manchester, 1987.

    Google Scholar 

  145. Victoria Stavridou, Joseph Goguen, Steven Eker, and Serge Aloneftis. FUNNEL: A CHDL with formal semantics. In Proceedings, Advanced Research Workshop on Correct Hardware Design Methodologies, pages 117–144. IEEE, 1991.

    Google Scholar 

  146. Victoria Stavridou, Joseph Goguen, Andrew Stevens, Steven Eker, Serge Aloneftis, and Keith Hobley. FUNNEL and 2OBJ: towards an integrated hardware design environment. In Theorem Provers in Circuit Design, volume IFIP Transactions, A-10, pages 197–223. North-Holland, 1992.

    Google Scholar 

  147. Christopher Strachey. Fundamental concepts in programming languages. Lecture Notes from International Summer School in Computer Programming, Copenhagen, 1967.

    Google Scholar 

  148. Joseph Tardo. The Design, Specification and Implementation of OBJT: A Language for Writing and Testing Abstract Algebraic Program Specifications. PhD thesis, UCLA, Computer Science Department, 1981.

    Google Scholar 

  149. David Turner. Miranda: A non-strict functional language with polymorphic types. In Jean-Pierre Jouannaud, editor, Functional Programming Languages and Computer Architectures, pages 1–16. Springer, 1985. Lecture Notes in Computer Science, Volume 201.

    Google Scholar 

  150. William Wadge. Classified algebras. Technical Report 46, University of Warwick, October 1982.

    Google Scholar 

  151. Mitchell Wand. First-order identities as a defining language. Acta Informatica, 14:337–357, 1980. Originally Report 29, Computer Science Deptartment, Indiana University, 1977.

    Google Scholar 

  152. Timothy Winkler, Sany Leinwand, and Joseph Goguen. Simulation of concurrent term rewriting. In Steven Kartashev and Svetlana Kartashev, editors, Proceedings, Second International Supercomputing Conference, Volume I, pages 199–208. International Supercomputing Institute Inc. (St. Petersburg FL ), 1987.

    Google Scholar 

  153. Steven Zilles. Abstract specification of data types. Technical Report 119, Computation Structures Group, Massachusetts Institute of Technology, 1974.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2000 Springer Science+Business Media New York

About this chapter

Cite this chapter

Goguen, J.A., Winkler, T., Meseguer, J., Futatsugi, K., Jouannaud, JP. (2000). Introducing OBJ. In: Goguen, J., Malcolm, G. (eds) Software Engineering with OBJ. Advances in Formal Methods, vol 2. Springer, Boston, MA. https://doi.org/10.1007/978-1-4757-6541-0_1

Download citation

  • DOI: https://doi.org/10.1007/978-1-4757-6541-0_1

  • Publisher Name: Springer, Boston, MA

  • Print ISBN: 978-1-4419-4965-3

  • Online ISBN: 978-1-4757-6541-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics