All Packages This Package Class Hierarchy Class Search Index
java.lang.Object | +----aima.logic.Unify
The Unify class provides methods for the unification of expressions and the substitution of values for variables in expressions. This code is adapted from LISP code which contained the following comment:
Unification and Substitutions (aka Binding Lists) This code is borrowed from "Paradigms of AI Programming: Case Studies in Common Lisp", by Peter Norvig, published by Morgan Kaufmann, 1992. The complete code from that book is available for ftp at mkp.com in the directory "pub/Norvig". Note that it uses the term "bindings" rather than "substitution" or "theta". The meaning is the same.
See Also: Variable, Bindings, Expression
public class Unify
extends java.lang.Object
{
// Methods 9
public static void main(String[]) throws Exception;
public static boolean occursIn(Variable, Object, Bindings);
public static Object parse(String) throws Exception;
public static Object parseVariables(Object);
public static Object renameVariables(Object);
public static Object substBindings(Object, Bindings);
public static Object unifier(Object, Object);
public static Bindings unify(Object, Object);
public static Bindings unify(Object, Object, Bindings);
}
public static Object parse(String exprStr) throws Exception
Parses the input
Stringinto an expression which may be processed by the various unify methods. In particular, tokens in the input that are prefixed appropriately are converted intoVariableobjects.
Parameter Description exprStr An expression to parse.
- Returns:
- An expression suitable as input to the various Unify methods
- Throws: Exception
- May be thrown if the expression
Stringdoes not parse properly.
public static Object parseVariables(Object obj)
Processes a (compound or atomic) expression to create a new expression in which all atoms, whose print names have an appropriate prefix character, are replaced with
Variableobjects.
Parameter Description obj An expression to process.
- Returns:
- An expression suitable as input to the various Unify methods
See Also: unify, unifier, Expression, getPrefix
public static Object unifier(Object x,
Object y)
Returns something that unifies with both x and y (or fail).
Parameter Description x An expression (atomic or compound) to unify. y An expression (atomic or compound) to unify.
- Returns:
- An expression that unifies with both x and y, or the
Bindingsobject that represents failure.See Also: getFailure, Expression, unify
public static Bindings unify(Object x,
Object y)
Determines if the given expressions match and returns a
Bindingsobject that would make them equal.By default, the
Bindingsobject returned is in terms of aListBindingsimplementation. If you want to explicitly specify theBindingsimplementation to use, use the alternative version ofunifywhere you should pass in an emptyBindingsobject of the desired implementation type. For instance:Unify.unify(x,y,HashBindings.getEmpty());would return the results of the unification in aHashBindingsBindingsimplementation.
Parameter Description x An expression (atomic or compound) to unify. y An expression (atomic or compound) to unify.
- Returns:
- A
Bindingsobject that would make the input parameters match, or theBindingsobject that represents failure if they do not match.See Also: Bindings, ListBindings, HashBindings, Variable, Expression
public static Bindings unify(Object x,
Object y,
Bindings theBindings)
Determines if the given expressions match subject to the variable bindings given in the initial
Bindingsobject and returns aBindingsobject that would make them equal.
Parameter Description x An expression (atomic or compound) to unify. y An expression (atomic or compound) to unify. theBindings An initial set of bindings to begin with.
- Returns:
- A
Bindingsobject that would make the input parameters match, or theBindingsobject that represents failure if they do not match.See Also: Bindings, Variable, Expression
public static boolean occursIn(Variable var,
Object x,
Bindings theBindings)
Determines if the given
Variableoccurs anywhere inside the given expression, subject to the bindings contained in the givenBindingsobject.
Parameter Description var Variablefor which to search.x An expression (atomic or compound) to search. theBindings An set of bindings on the variables in x
- Returns:
- true iff
varis contained isxsubject totheBindingsSee Also: Bindings, Variable, Expression
public static Object renameVariables(Object x)
Creates an isomorphic expression to the given expression in which all the variables have been replaced with new ones. If a variable appears more than once in the expression, then it is given the same replacement at each position in which it occurs.
Parameter Description x An expression (atomic or compound) to process.
- Returns:
- An isomorphic expression with new
Variables.See Also: Variable, Expression
public static Object substBindings(Object x,
Bindings theBindings)
Creates a new expression in which the values of the variables indicated in the given
Bindingsobject are substituted into the given (compound or atomic) expression.Note: The order of the parameters might be different than what you may be used to seeing if you are familiar with the LISP version of this function (but they are more in line with all the other methods in the
Unifyclass).
Parameter Description x An expression (atomic or compound) to process. theBindings The variable bindings.
- Returns:
- An expression where the
Variablevalues have been substituted in place of theVariables themselves.See Also: Bindings, Variable, Expression
public static void main(String[] args) throws Exception
Tests out the functionality of this class.
Parameter Description args Ignored.
- Throws: Exception
- Thrown in case of an internal parsing error.
All Packages This Package Class Hierarchy Class Search IndexFreshly brewed Java API Documentation automatically generated with polardoc Version 1.0.4