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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
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.
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.
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.
Franz Baader and Tobias Nipkow. Term Rewriting and All That. Cambridge, 1998.
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.
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.
Rod Burstall. Programming with modules as typed functional programming. Proceedings, International Conference on Fifth Generation Computing Systems, 1985.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
CoFI. CASL summary, 1999. http://www.brics.dk/Projects/CoFi/.
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.
Hubert Comon. Unification et Disunification: Théories et Applications. PhD thesis, Université de l’Institut Polytechnique de Grenoble, 1988.
Department of Defense. Reference manual for the Ada programming language. United States Government, Report ANSI/MIL-STD-1815A, 1983.
Nachum Dershowitz and Jean-Pierre Jouannaud. Notations for rewriting. Bulletin of the European Association for Theoretical Computer Science, 43: 162–172, 1990.
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.
Räzvan Diaconescu. Category-based Semantics for Equational and Constraint Logic Programming. PhD thesis, Programming Research Group, Oxford University, 1994.
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.
Räzvan Diaconescu and Kokichi Futatsugi. Logical foundations of Café OBJ, 1999. Submitted for publication.
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.
Hartmut Ehrig and Bernd Mahr. Fundamentals of Algebraic Specification 1: Equations and Initial Semantics. Springer, 1985. EATCS Monographs on Theoretical Computer Science, Volume 6.
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.
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.
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.
Kokichi Futatsugi. Product-centered process description = algebraic specification of environment + SCRIPT. In Proceedings, 6th International Software Process Workshop, pages 95–97. IEEE, 1991.
Kokichi Futatsugi. Structuring and derivation in algebraic specification/programming languages. Journal of Information Processing Society of Japan, 14 (2): 153–163, 1991.
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.
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.
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.
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.
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.
Christopher Paul Gerrard. The specification and controlled implementation of a configuration management tool using OBJ and Ada, 1988. Gerrard Software Limited.
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.
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.
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.
Joseph Goguen. Order sorted algebra. Technical Report 14, UCLA Computer Science Department, 1978. Semantics and Theory of Computation Series.
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.
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.
Joseph Goguen. Parameterized programming. Transactions on Software Engineering, SE-10(5): 528–543, September 1984.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Joseph Goguen. Cse 230 homepage, 1999. Available at http://www.cs.ucsd.edu/users/goguen/courses/230.
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.
Joseph Goguen. Theorem Proving and Algebra. MIT, to appear.
Joseph Goguen. Social and semiotic analyses for theorem prover user interface design, to appear, 2000. Special issue on user interfaces for theorem provers.
Joseph Goguen and Râzvan Diaconescu. An Oxford survey of order sorted algebra. Mathematical Structures in Computer Science, 4: 363–392, 1994.
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.
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.
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.
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.
Joseph Goguen and Grant Malcolm. Algebraic Semantics of Imperative Programs. MIT, 1996.
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.
Joseph Goguen and Grant Malcolm. Hidden coinduction: Behavioral correctness proofs for objects. Mathematical Structures in Computer Science, 9 (3): 287–319, June 1999.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 ).
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.
Joseph Goguen and Grigore Rosu. Hiding more of hidden algebra. In Proceedings, World Congress on Formal Methods, 1999. Springer, to appear 1999. Toulouse, France.
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.
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.
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.
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.
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.
Joseph Goguen and Timothy Winkler. Introducing OBJ3. Technical report, SRI International, Computer Science Lab, 1988.
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.
Robert Goldblatt. Topoi, the Categorial Analysis of Logic. North-Holland, 1979.
Michael J.C. Gordon, Robin Milner, and Christopher Wadsworth. Edinburgh LCF. Springer, 1979. Lecture Notes in Computer Science, Volume 78.
John Guttag. The Specification and Application to Programming of Abstract Data Types. PhD thesis, University of Toronto, 1975. Computer Science Department, Report CSRG-59.
Robert Harper, David MacQueen, and Robin Milner. Standard ML. Technical Report ECS-LFCS-86–2, Department of Computer Science, University of Edinburgh, 1986.
Jieh Hsiang. Refutational Theorem Proving using Term Rewriting Systems. PhD thesis, University of Illinois at Champaign-Urbana, 1981.
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.
John Hughes. Why functional programming matters. Technical Report 16, Programming Methodology Group, University of Goteborg, November 1984.
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.
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.
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.
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.
Claude Kirchner. Order sorted equational matching, 1988.
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.
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.
Jan Willem Klop. Term rewriting systems: A tutorial. Bulletin of the European Association for Theoretical Computer Science, 32: 143–182, June 1987.
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.
Donald Knuth and Peter Bendix. Simple word problems in universal algebra. In J. Leech, editor, Computational Problems in Abstract Algebra. Pergamon, 1970.
John T. Latham. Abstract Pascal: A tutorial introduction. Technical Report Version 2.1, University of Manchester, Department of Computer Science, 1987.
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.
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.
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.
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.
Narciso Martf-Oliet and José Meseguer. Inclusions and subtypes. Technical Report SRI-CSL-90–16, SRI International, Computer Science Lab, December 1990.
Per Martin-Löf. Constructive mathematics and computer programming. In Logic, Methodology and Philosophy of Science VI, pages 153–175. North-Holand, 1982.
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.
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.
José Meseguer. Conditional rewriting logic as a unified model of con-currency. Theoretical Computer Science, 96 (1): 73–155, 1992.
José Meseguer. Membership algebra as a logical framework for equational specification, 1997. Draft manuscript. Computer Science Lab, SRI International.
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.
José Meseguer, Joseph Goguen, and Gert Smolka. Order-sorted unification. Journal of Symbolic Computation, 8: 383–413, 1989.
Donald Michie. ‘Memo’ functions and machine learning. Nature, 218:19–22, April 1968.
Robin Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17 (3): 348–375, 1978.
Peter Mosses. Abstract semantic algebras! In Dines Bjorner, editor, Formal Description of Programming Concepts II, pages 45–70. IFIP, 1983.
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.
Peter Mosses. Unified algebras and institutions. In Proceedings, Fourth Annual Conference on Logic in Computer Science, pages 304–312. IEEE, 1989.
Alan Mycroft. Abstract Interpretation and Optimising Transformations for Applicative Programs. PhD thesis, University of Edingurgh, 1981.
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.
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.
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.
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.
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.
Lawrence Paulson. Logic and Computation: Interactive Proof with Cambridge LCF. Cambridge, 1987. Cambridge Tracts in Theoretical Computer Science, Volume 2.
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.
David Plaisted. An initial algebra semantics for error presentations. SRI International, Computer Science Laboratory, 1982.
Axel Poigné. On semantic algebras: Higher order structures. Informatik II, Universität Dortmund, 1983.
Axel Poigné. Once more on order-sorted algebra. Technical Report Draft, GMD, 1990.
Axel Poigné. Parameterization for order-sorted algebraic specification. Journal of Computer and System Sciences, 40 (3): 229–268, 1990.
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.
David Rydeheard and Rod Burstall. Computational Category Theory. Prentice-Hall, 1988.
Augusto Sampaio. A comparative study of theorem provers: Proving correctness of compiling specifications. Technical Report PRG-TR-2090, Oxford University Computing Laboratory, 1990.
Augusto Sampaio. An Algebraic Approach to Compiler Design,volume 4. World Scientific, 1998.
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.
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.
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.
J. Michael Spivey. The Z Notation: A Reference Manual. Prentice-Hall, 1989.
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.
Victoria Stavridou. Specifying in OBJ, verifying in REVE, and some ideas about time. Technical report, Department of Computer Science, University of Manchester, 1987.
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.
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.
Christopher Strachey. Fundamental concepts in programming languages. Lecture Notes from International Summer School in Computer Programming, Copenhagen, 1967.
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.
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.
William Wadge. Classified algebras. Technical Report 46, University of Warwick, October 1982.
Mitchell Wand. First-order identities as a defining language. Acta Informatica, 14:337–357, 1980. Originally Report 29, Computer Science Deptartment, Indiana University, 1977.
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.
Steven Zilles. Abstract specification of data types. Technical Report 119, Computation Structures Group, Massachusetts Institute of Technology, 1974.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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