|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
public interface iTerm
This is the fundamental interface for Prolog terms.
Field Summary | |
---|---|
static int |
EQUAL
|
static int |
GREATER_THAN
|
static int |
LESS_THAN
|
Method Summary | |
---|---|
int |
compare(jTerm term,
boolean var_equal)
The public interface for term comparision, it calls the protected compare that sub-classes must override. |
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()
Public member function which creates a copy of this term. |
jTerm |
copy(jVariableRegistry vars)
Internal member function which creates a copy of this term. |
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 . |
boolean |
equivalence(jTerm term,
jEquivalenceMapping v)
The public interface for evaluating term equivalence (i.e., structural similarity). |
java.lang.String |
getName()
Returns the name of this instance. |
jTerm |
getTerm()
Returns the non-evaluated jTerm representation of this term. |
jTerm |
getValue()
Return the value of this object after. |
boolean |
isConsultNeeded()
Determine if cached values already exist and hence if consulting is required. |
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. |
boolean |
requiresCompleteVariableState()
Call to determine if enclosing rule should record all variable states. |
java.lang.String |
toString(boolean usename)
Produces a string identifying this term, suitable for display to the console. |
boolean |
unify(jTerm term,
jUnifiedVector v)
Determines if this instance and term unify. |
Field Detail |
---|
static final int LESS_THAN
static final int EQUAL
static final int GREATER_THAN
Method Detail |
---|
jTerm getValue()
iValue
getValue
in interface iValue
jTerm
which represents the evaluated value of this
instance, or the value bound to this instance, in the case of a
variable.jTerm getTerm()
jTerm
representation of this term.
Variables return the non-evaluated terms they are bound to.
jTerm
of the non-evaluated term bound to this
instance.java.lang.String getName()
iName
getName
in interface iName
String
containing name of this instance.int compare(jTerm term, boolean var_equal)
compare
that sub-classes must override.
term
- the jTerm
to compare with this instance of
jTerm
.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
.boolean requiresCompleteVariableState()
cut
, which jump back to the
containing rules goal require that all variables are restored.
true
if all variable bindings must be recorded by
the rule containing this term. false
otherwise.
Normally returns false
void registerUnboundVariables(jUnifiedVector v)
jUnifiedVector
v
- The jUnifiedVector
where unbound variables are
added to. This parameter is used to as output to the
caller, not as input.void registerVariables(jVariableVector v)
jUnifiedVector
Should be called during the consultation phase by rules for their owned terms
both head and base. All variables encountered should be unbound; hence it is NOT
recommended to call this method after the consultation phase completes (e.g., after
a query proof). After call, this term should not be modified in any way.
v
- The jUnifiedVector
where variables are
added to. This parameter is used to as output to the
caller, not as input.void enumerateVariables(jVariableVector v, boolean all)
jVariableVector
. If a variable is bound,
it is not included in the enumeration.
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.boolean equivalence(jTerm term, jEquivalenceMapping v)
term
- the jTerm
to compare with this instance of
jTerm
.v
- v
is the collection of equivalent variable pairs found.
It should be empty when first calling this function.
true
if this instance is equivalent to term
,
false
otherwise.boolean unify(jTerm term, jUnifiedVector v)
iUnifiable
term
unify.
Every variable which was previously unbound, but which becomes bound during
the unification must register itself with the jUnifiedVector
. It
is the callers responsibility to deal with the unified vector.
unify
in interface iUnifiable
term
- the term to unify with this instance.v
- the vector of variables bound during unification. Even if
unification fails, this vector may contain recently
bound vectors. This parameter is used to as output to the
caller, not as input for unify
.
true
if unification succeeded,
false
otherwise.jTerm duplicate(jVariable[] vars)
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!)
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.jTerm copy()
duplicate
function.
Sub-classes need not override, only implement the abstract
copy(vars)
member function. copy is not as efficient as
duplicate
.
jTerm
which is an instantiated copy of this
term.jTerm copy(jVariableRegistry vars)
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.
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.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
kb
- the knowledge base which attempted proofs are based upon.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
boolean isConsultNeeded()
iConsultable
isConsultNeeded
in interface iConsultable
false
if cached values are valid,
true
otherwise, if consult
should be
called.java.lang.String toString(boolean usename)
false
is the default for displaying the term,
true
for displaying this term in a user query.
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 |