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.
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.
This software is released under the GNU Lesser General Public License ("LGPL")
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)