|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectubc.cs.JLog.Foundation.jType
ubc.cs.JLog.Terms.jTerm
ubc.cs.JLog.Terms.iPredicate
ubc.cs.JLog.Terms.jBuiltinPredicate
ubc.cs.JLog.Terms.jBinaryBuiltinPredicate
public abstract class jBinaryBuiltinPredicate
Field Summary | |
---|---|
protected jTerm |
lhs
|
protected jTerm |
rhs
|
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 | |
---|---|
jBinaryBuiltinPredicate(jTerm l,
jTerm r,
int t)
|
Method Summary | |
---|---|
void |
addGoals(jGoal g,
iGoalStack goals)
Adds goal to prove this predicate onto goal stack. |
void |
addGoals(jGoal g,
jVariable[] vars,
iGoalStack goals)
Adds goal to prove this predicate onto goal stack. |
protected int |
compareArguments(iPredicate ipred,
boolean first_call,
boolean var_equal)
Compares predicate aguments. |
void |
consult(jKnowledgeBase kb)
Consult the given jKnowledgeBase and cache any invariant values (those
which would not change until the next time the jKnowledgeBase changes). |
void |
consultReset()
Called when the jKnowledgeBase changes. |
jTerm |
copy(jVariableRegistry vars)
Internal member function which creates a copy of this term. |
protected abstract jBinaryBuiltinPredicate |
duplicate(jTerm l,
jTerm r)
|
jTerm |
duplicate(jVariable[] vars)
Creates a complete and entirely independant duplicate of this term. |
void |
enumerateVariables(jVariableVector v,
boolean all)
Adds variables belonging to this term (or belonging to any sub-part of this term) to the jVariableVector |
protected boolean |
equivalenceArguments(jBuiltinPredicate pterm,
jEquivalenceMapping v)
Equivalence test arguments. |
jCompoundTerm |
getArguments()
Accessor for the arguments for this predicate. |
int |
getArity()
Returns the arity of this instance. |
jTerm |
getLHS()
|
jTerm |
getRHS()
|
boolean |
isConsultNeeded()
Determine if cached values already exist and hence if consulting is required. |
boolean |
prove(jBinaryBuiltinPredicateGoal bg)
|
void |
registerUnboundVariables(jUnifiedVector v)
Adds any unbound variables belonging to this term (or belonging to any sub-part of this term) to the jUnifiedVector |
void |
registerVariables(jVariableVector v)
Adds all variables belonging to this term (or belonging to any sub-part of this term) to the jUnifiedVector
Should be called during the consultation phase by rules for their owned terms
both head and base. |
java.lang.String |
toString(boolean usename)
Produces a string identifying this term, suitable for display to the console. |
protected boolean |
unifyArguments(jBuiltinPredicate pterm,
jUnifiedVector v)
Unification of arguments. |
Methods inherited from class ubc.cs.JLog.Terms.jBuiltinPredicate |
---|
equivalence, unify |
Methods inherited from class ubc.cs.JLog.Terms.iPredicate |
---|
compare |
Methods inherited from class ubc.cs.JLog.Terms.jTerm |
---|
compare, copy, getName, getTerm, getValue, requiresCompleteVariableState, toString |
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.iName |
---|
getName |
Field Detail |
---|
protected jTerm lhs
protected jTerm rhs
Constructor Detail |
---|
public jBinaryBuiltinPredicate(jTerm l, jTerm r, int t)
Method Detail |
---|
public final int getArity()
iNameArity
getArity
in interface iNameArity
getArity
in class jBuiltinPredicate
int
whose value is the arity of this instance.public final jTerm getLHS()
public final jTerm getRHS()
public final jCompoundTerm getArguments()
iPredicate
getArguments
in class iPredicate
protected int compareArguments(iPredicate ipred, boolean first_call, boolean var_equal)
jBuiltinPredicate
compareArguments
in class jBuiltinPredicate
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.
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
.protected final boolean equivalenceArguments(jBuiltinPredicate pterm, jEquivalenceMapping v)
jBuiltinPredicate
equivalence
.
equivalenceArguments
in class jBuiltinPredicate
pterm
- We are assured that pterm has the same type, name, and arity.v
- same as jEquivalenceMapping
parameter in
equivalence
.
protected final boolean unifyArguments(jBuiltinPredicate pterm, jUnifiedVector v)
jBuiltinPredicate
unify
.
unifyArguments
in class jBuiltinPredicate
pterm
- We are assured that pterm has the same type, name, and arity.v
- same as jUnifiedVector
parameter in
unify
.
public void registerVariables(jVariableVector v)
jTerm
jUnifiedVector
Should be called during the consultation phase by rules for their owned terms
both head and base. all variables encountered should be unbound.
After call, this term should not be modified in any way.
registerVariables
in interface iTerm
registerVariables
in class jBuiltinPredicate
v
- The jUnifiedVector
where variables are
added to. This parameter is used to as output to the
caller, not as input.public void enumerateVariables(jVariableVector v, boolean all)
jTerm
jVariableVector
enumerateVariables
in interface iTerm
enumerateVariables
in class jBuiltinPredicate
v
- The jVariabeVector
where variables are
added to. This parameter is used to as output to the
caller, not as input.all
- If true
, then all variables should register,
otherwise only add non-existentially qualified variables.public void registerUnboundVariables(jUnifiedVector v)
jTerm
jUnifiedVector
registerUnboundVariables
in interface iTerm
registerUnboundVariables
in class jTerm
v
- The jUnifiedVector
where unbound variables are
added to. This parameter is used to as output to the caller, not as input.public boolean prove(jBinaryBuiltinPredicateGoal bg)
public void addGoals(jGoal g, jVariable[] vars, iGoalStack goals)
iPredicate
addGoals
in class iPredicate
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.public void addGoals(jGoal g, iGoalStack goals)
iPredicate
addGoals
in class iPredicate
g
- The super-goal jGoal
for the sub-goal that this
function will add.goals
- The iGoalStack
to add the goal to.protected abstract jBinaryBuiltinPredicate duplicate(jTerm l, jTerm r)
public jTerm duplicate(jVariable[] vars)
jTerm
registerVariables
has already been
invoked.
Within duplicate
, any other calls to duplicate should pass along
the same vars
array produced by registerVariables
since the same duplication path previously taken by registerVariables
should be taken by duplicate
. This call is designed only for terms
which belong to rules and are templates for instantiation. Any variables in the
term should be unbound. As implied by the modification restrictions on
registerVariables
, terms and their children cannot change
(especially during call!)
duplicate
in interface iTerm
duplicate
in class jBuiltinPredicate
vars
- The user passes in a duplicate of the variable vector produced
from the previous call to registerVariables
.
vars
is produced from the
jVariableVector
by creating a single duplicate
variable for each variable. Since this is created in the same
order as the registerVariables
, it is now
efficient for jVariables
to return their
unique duplicate.
jTerm
which is an instantiated duplicate of this
term.public jTerm copy(jVariableRegistry vars)
jTerm
duplicate
function. Should only be invoked by copy()
or other copy(vars)
. Should only invoke other
copy(vars)
functions.
Bound variables should return a copy of the bound term.
copy
in interface iTerm
copy
in class jBuiltinPredicate
vars
- The registry of variables and their duplicates. Initially this
is empty. As variables generate copies, they add themselves
and their copy to the jVariableRegistry
, and this
is output from the function call. Any further calls with the
same vars
ensures that the same variable
(in a different term) returns the same copy.
jTerm
which is an instantiated copy of this
term.public void consult(jKnowledgeBase kb)
iConsultable
jKnowledgeBase
and cache any invariant values (those
which would not change until the next time the jKnowledgeBase
changes).
Where possible, consultable objects should minimize computation and assume that any
cached values are still accurate.
consult
in interface iConsultable
consult
in interface iTerm
consult
in class jTerm
kb
- the knowledge base which attempted proofs are based upon.public void consultReset()
iConsultable
jKnowledgeBase
changes. Should set all cached values to
dirty so that a following call to consult
would perform a full lookup
as required.
consultReset
in interface iConsultable
consultReset
in interface iTerm
consultReset
in class jTerm
public boolean isConsultNeeded()
iConsultable
isConsultNeeded
in interface iConsultable
isConsultNeeded
in interface iTerm
isConsultNeeded
in class jBuiltinPredicate
false
if cached values are valid,
true
otherwise, if consult
should be
called.public java.lang.String toString(boolean usename)
jTerm
false
is the default for displaying the term,
true
for displaying this term in a user query.
toString
in interface iTerm
toString
in class jBuiltinPredicate
String
which is a textual representation of this
term.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |