Design and Implementation of a Generic, Logic and Functional Programming Language

This paper presents the broad outlines of LPG, a language designed for generic specification and programming. In this language one may specify different modules which can represent either particular algebras (ADTs), families of algebras (generic data types and enrichments) or Σ-structures (theories). This language is based on Horn clause logic with equality which permits logic and functional programming to be combined. As modules in LPG can be generic, an instantiation mechanism is needed; such a mechanism is described here as well as the interpreter and an E-unification algorithm, thus making LPG a powerful programming language.

[1]  José Meseguer,et al.  Equality, Types, Modules and Generics for Logic Programming , 1984, ICLP.

[2]  Jean-Marie Hullot,et al.  Canonical Forms and Unification , 1980, CADE.

[3]  K. Mani Chandy,et al.  Current trends in programming methodology , 1977 .

[4]  Claude Kirchner,et al.  Incremental Construction of Unification Algorithms in Equational Theories , 1983, ICALP.

[5]  James W. Thatcher,et al.  Data Type Specification: Parameterization and the Power of Specification Techniques , 1982, TOPL.

[6]  Didier Bert Refinements of Generic Specifications with Algebraic Tools , 1983, IFIP Congress.

[7]  José Meseguer,et al.  Equality, Types, Modules, and (Why not ?) Generics for Logic Programming , 1984, J. Log. Program..

[8]  José Meseguer,et al.  Universal Realization, Persistent Interconnection and Implementation of Abstract Modules , 1982, ICALP.

[9]  Hartmut Ehrig,et al.  Parameter Passing in Algebraic Specification Languages , 1984, Theor. Comput. Sci..

[10]  Joseph A. Goguen,et al.  Introducing Institutions , 1983, Logic of Programs.

[11]  Claude Kirchner,et al.  NARROWER: A New Algorithm for Unification and Its Application to Logic Programming , 1985, RTA.

[12]  José Meseguer,et al.  Principles of OBJ2 , 1985, POPL.

[13]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[14]  Robert A. Kowalski,et al.  The Semantics of Predicate Logic as a Programming Language , 1976, JACM.

[15]  Laurent Fribourg,et al.  Handling Function Definitions through Innermost Superposition and Rewriting , 1985, RTA.

[16]  Joseph A. Goguen,et al.  The Semantics of CLEAR, A Specification Language , 1979, Abstract Software Specifications.

[17]  Joseph A. Goguen,et al.  Putting Theories Together to Make Specifications , 1977, IJCAI.

[18]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[19]  J. A. Robinson,et al.  A Machine-Oriented Logic Based on the Resolution Principle , 1965, JACM.