ubc.cs.JLog.Terms
Class iPredicate

java.lang.Object
  extended by ubc.cs.JLog.Foundation.jType
      extended by ubc.cs.JLog.Terms.jTerm
          extended by ubc.cs.JLog.Terms.iPredicate
All Implemented Interfaces:
iType, iUnifiable, iConsultable, iName, iNameArity, iTerm, iValue
Direct Known Subclasses:
jAtom, jBuiltinPredicate, jOrPredicate, jPredicate

public abstract class iPredicate
extends jTerm
implements iNameArity

This is the abstract base class for Prolog predicates.

Author:
Glendon Holst

Field Summary
 
Fields inherited from class ubc.cs.JLog.Foundation.jType
type
 
Fields inherited from interface ubc.cs.JLog.Terms.iTerm
EQUAL, GREATER_THAN, LESS_THAN
 
Fields inherited from interface ubc.cs.JLog.Foundation.iType
TYPE_ARITHMETIC, TYPE_ATOM, TYPE_BUILTINPREDICATE, TYPE_COMMAND, TYPE_COMPARE, TYPE_COMPOUND, TYPE_CONS, TYPE_IF, TYPE_INTEGER, TYPE_LIST, TYPE_NULLLIST, TYPE_NUMERICCOMPARE, TYPE_OBJECT, TYPE_OPERATOR, TYPE_OR, TYPE_ORPREDICATE, TYPE_PREDICATE, TYPE_PREDICATETERMS, TYPE_REAL, TYPE_TYPE, TYPE_UNARYARITHMETIC, TYPE_UNARYOPERATOR, TYPE_UNDEFINED, TYPE_VARIABLE
 
Constructor Summary
iPredicate()
           
 
Method Summary
abstract  void addGoals(jGoal g, iGoalStack goals)
          Adds goal to prove this predicate onto goal stack.
abstract  void addGoals(jGoal g, jVariable[] vars, iGoalStack goals)
          Adds goal to prove this predicate onto goal stack.
protected  int compare(jTerm term, boolean first_call, boolean var_equal)
          The private member function for term comparision.
protected abstract  int compareArguments(iPredicate ipred, boolean first_call, boolean var_equal)
          Compares the arguments for predicates.
 jCompoundTerm getArguments()
          Accessor for the arguments for this predicate.
 
Methods inherited from class ubc.cs.JLog.Terms.jTerm
compare, consult, consultReset, copy, copy, duplicate, enumerateVariables, equivalence, getName, getTerm, getValue, isConsultNeeded, registerUnboundVariables, registerVariables, requiresCompleteVariableState, toString, toString, unify
 
Methods inherited from class ubc.cs.JLog.Foundation.jType
getType, objectToString
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ubc.cs.JLog.Terms.iNameArity
getArity
 
Methods inherited from interface ubc.cs.JLog.Terms.iName
getName
 

Constructor Detail

iPredicate

public iPredicate()
Method Detail

compare

protected int compare(jTerm term,
                      boolean first_call,
                      boolean var_equal)
Description copied from class: jTerm
The private member function for term comparision. Compares this instance to the provided jTerm. sub-classes must override.

Specified by:
compare in class jTerm
Parameters:
term - the jTerm to compare with this instance of jTerm. if term is an unknown type then, if first_call is true, call term.compare(this,false) and return the negative result, otherwise return EQUAL.
first_call - true if just invoked by public compare member function. false otherwise.
var_equal - if var_equal is true, then unbound variables are considered equal. var_equal = false is standard prolog behavior.
Returns:
LESS_THAN if this instance is less than term, EQUAL if the two terms are equal, and GREATER_THAN if this instance is greater than term.

compareArguments

protected abstract int compareArguments(iPredicate ipred,
                                        boolean first_call,
                                        boolean var_equal)
Compares the arguments for predicates. Like compare except that name and arity must be equal.

Parameters:
ipred - the iPredicate to compare with this instance of iPredicate.
first_call - true if just invoked by public compare member function. false otherwise.
var_equal - if var_equal is true, then unbound variables are considered equal. var_equal = false is standard prolog behavior.
Returns:
LESS_THAN if this instance is less than term, EQUAL if the two terms are equal, and GREATER_THAN if this instance is greater than term.

getArguments

public jCompoundTerm getArguments()
Accessor for the arguments for this predicate. Don't modify arguments after consult. Arguments are not guaranteed to be original so modifying has an unspecified effect.

Returns:
The original or possibly duplicated arguments for this predicate.

addGoals

public abstract void addGoals(jGoal g,
                              jVariable[] vars,
                              iGoalStack goals)
Adds goal to prove this predicate onto goal stack. This version is called when the original predicate must duplicate itself (or its arguments). Add goals in the reverse order you want them evaluated.

Parameters:
g - The super-goal jGoal for the sub-goal that this function will add.
vars - The vector of duplicate variables produced from the previous call to registerVariables. Needed for call to duplicate.
goals - The iGoalStack to add the goal to.

addGoals

public abstract void addGoals(jGoal g,
                              iGoalStack goals)
Adds goal to prove this predicate onto goal stack. This version is called when the original predicate is already duplicated (usually as part of an argument for another predicate). Add goals in the reverse order you want them evaluated.

Parameters:
g - The super-goal jGoal for the sub-goal that this function will add.
goals - The iGoalStack to add the goal to.