ubc.cs.JLog.Foundation
Class jUserGoal

java.lang.Object
  extended by ubc.cs.JLog.Foundation.jGoal
      extended by ubc.cs.JLog.Foundation.jUserGoal
All Implemented Interfaces:
iName, iNameArity

public class jUserGoal
extends jGoal

Goal for getting user queries. jUserGoal is designed as a goal stub so that user queries have the same behavior as if they were the based off a rule. Notably, cuts will work, and or predicates containing cuts will also work. jUserGoal assumes that it is the first goal (it is ok to place it on the empty proved stack first without calling prove, the only goal with this property). No attempt is made to keep track of unified variables (for cuts), since a retry is guarenteed to fail, and standard behavior is to not display variables if the query fails.

Author:
Glendon Holst

Field Summary
 
Fields inherited from class ubc.cs.JLog.Foundation.jGoal
next
 
Constructor Summary
jUserGoal()
           
 
Method Summary
 int getArity()
          Returns the arity of this instance.
 java.lang.String getName()
          Returns the name of this instance.
 boolean prove(iGoalStack goals, iGoalStack proved)
          Attempt to prove the goal represented by this jGoal.
 boolean retry(iGoalStack goals, iGoalStack proved)
          Attempt to prove the goal represented by this jGoal.
 java.lang.String toString()
           
 
Methods inherited from class ubc.cs.JLog.Foundation.jGoal
internal_remove, internal_restore
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

jUserGoal

public jUserGoal()
Method Detail

prove

public boolean prove(iGoalStack goals,
                     iGoalStack proved)
Description copied from class: jGoal
Attempt to prove the goal represented by this jGoal. Goal must not be on either stack to prove (pop off goals stack before prove call). Goal must place itself on the appropriate stack before returning. proved stack if 'proved', goals stack otherwise. Since proved doesn't pop the stack we don't need a try/catch block. Must be called at least once before calling retry.

Specified by:
prove in class jGoal
Parameters:
goals - iGoalStack containing goals yet to be proved.
proved - iGoalStack containing evaluated goals (goals that may already be proved, or awaiting their child goals to be proved).
Returns:
boolean is true if this goal ended up on proved, false otherwise.

retry

public boolean retry(iGoalStack goals,
                     iGoalStack proved)
Description copied from class: jGoal
Attempt to prove the goal represented by this jGoal. Goal must not be on either stack to retry (pop off proved stack before retry call). Goal must place itself on the goal stack, and normally need not pop either stack. Since retry doesn't pop the stack we don't need a try/catch block.

Specified by:
retry in class jGoal
Parameters:
goals - iGoalStack containing goals yet to be proved.
proved - iGoalStack containing evaluated goals (goals that may already be proved, or awaiting their child goals to be proved).
Returns:
boolean is true if the prover should attempt a prove on this goal, false otherwise.

getName

public java.lang.String getName()
Description copied from interface: iName
Returns the name of this instance.

Returns:
String containing name of this instance.

getArity

public int getArity()
Description copied from interface: iNameArity
Returns the arity of this instance.

Returns:
int whose value is the arity of this instance.

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object