Context & Sequence Matching for Unranked Terms
This is a Java implementation of the algorithm M described in:
Part of the Library of Unification and Anti-Unification Algorithms.
Input Syntax:
-
The symbols [A-Za-z1-9_.] are allowed for variable names and
function names. Names can be of any length.
- If the name is followed by an opening parenthesis, then it is either a
function symbol, a function variable, or a context variable.
-
If the name starts with a lower case letter, then it is
a function symbol.
- Otherwise, if the first letter of the name is within [C,D] or [U,Z], then it is
a context variable.
- Otherwise, the name is a function variable.
- Otherwise, if the name starts with an upper case letter, then it is
a hedge variable.
- Otherwise, if the first letter of the name is within [u,z], then it
is a term variable.
- Otherwise, the name is a constant.
In the matching problem s << t, it is assumed that the term t does not contain variables.
This software is released under the
GNU Lesser General Public License ("LGPL").
For presentation purpose, the Java source code has been translated into JavaScript by the
GWT compiler.
Some examples (click on them to prepared the input form):
- C(f(X)) << g(f(a,b),h(f(a),f))
- C(G(X)) << f(f(a,b),c))
- f(X, x, Y) << f(f(a), b, a, b)
|
|