Matching and Unification for the Object-Oriented Symbolic Computation System AlgBench

Term matching has become one of the most important primitive operations for symbolic computation. This paper describes the extension of the object-oriented symbolic computation system AlgBench with pattern matching and unification facilities. The various pattern objects are organized in subclasses of the class of the composite expressions. This leads to a clear design and to a distributed implementation of the pattern matcher in the subclasses. New pattern object classes can consequently be added easily to the system. Huet's and our simple mark and retract algorithm for standard unification as well as Stickel's algorithm for associative commutative unification have been implemented in an object-oriented style. Unifiers are selected at runtime. We extend Mathematica's type-constrained pattern matching by taking into account inheritance information from a user-defined hierarchy of object types. The argument unification is basically instance variable unification. The improvement of the pattern matching operation of a rule- and object-based symbolic computation system with unification in an object-oriented way seems to be very appropriate.

[1]  Bruce W. Char,et al.  Maple V Language Reference Manual , 1993, Springer US.

[2]  Richard J. Fateman,et al.  A Review of Mathematica , 1992, J. Symb. Comput..

[3]  Hassan Aït-Kaci,et al.  LOGIN: A Logic Programming Language with Built-In Inheritance , 1986, J. Log. Program..

[4]  Jia-Huai You First-order unification in equational theories and its application to logic programming , 1985 .

[5]  Roman E. Maeder,et al.  Programming in Mathematica , 1989 .

[6]  Lawrence S. Kroll Mathematica--A System for Doing Mathematics by Computer. , 1989 .

[7]  Roman Maeder,et al.  AlgBench: An Object-Oriented Symbolic Core System , 1992, DISCO.

[8]  Richard D. Jenks,et al.  AXIOM: the scientific computation system , 1992 .

[9]  H. B. Allen,et al.  A Functional Grammar , 1946 .

[10]  Dennis de Champeaux,et al.  About the Paterson-Wegman Linear Unification Algorithm , 1986, J. Comput. Syst. Sci..

[11]  Pierre America,et al.  Inheritance and Subtyping in a Parallel Object-Oriented Language , 1987, ECOOP.

[12]  Robin Milner,et al.  Definition of standard ML , 1990 .

[13]  D. A. Turner,et al.  Miranda: A Non-Strict Functional language with Polymorphic Types , 1985, FPCA.

[14]  François Fages Associative-Commutative Unification , 1987, J. Symb. Comput..

[15]  Jeffrey Scott Vitter,et al.  New Classes for Parallel Complexity: A Study of Unification and Other Complete Problems for P , 1986, IEEE Transactions on Computers.

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

[17]  WadlerPhilip,et al.  Report on the programming language Haskell , 1992 .

[18]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .