Low-level concurrency primitives for and-parallelism support

Author(s): Amadeo Casas (http://www.cs.unm.edu/~amadeo, University of New Mexico).

This module provides basic mechanisms to start threads, wait for their completion, push goals, search for goals, access to locks, etc. Most of these primitives need to refer to an explicit goal and need to use some information related to its state, stored in the data structure Handler.

This primitives allow to efficiently implement at a higher-level different approaches to exploiting independent and-parallelism.

Usage and interface

Documentation on new declarations

(UNDOC_REEXPORT)
regtype/1:
Imported from basic_props (see the corresponding documentation for details).

DECLARATION
No further documentation available for this predicate.

Documentation on new modes

MODE

Usage 1: +A

  • The following properties are added at call time:
    (term_typing:nonvar/1)A is currently a term which is not a free variable.

Usage 2: +A

  • The following properties are added at call time:
    (term_typing:nonvar/1)A is currently a term which is not a free variable.

MODE

Usage 1: @A

  • The following properties are added globally:
    (basic_props:not_further_inst/2)A is not further instantiated.

Usage 2: @A

  • The following properties are added globally:
    (basic_props:not_further_inst/2)A is not further instantiated.

MODE

Usage 1: -A

  • The following properties are added at call time:
    (term_typing:var/1)A is a free variable.

Usage 2: -A

  • The following properties are added at call time:
    (term_typing:var/1)A is a free variable.

MODE

MODE

MODE

Usage 1: A+X

  • The following properties are added at call time:
    (undefined property)undefined:call(X,A)

Usage 2: A+X

  • Call and exit are compatible with:
    (undefined property)undefined:call(X,A)
  • The following properties are added at call time:
    (term_typing:nonvar/1)A is currently a term which is not a free variable.

MODE

Usage 1: @(A,X)

  • The following properties are added at call time:
    (undefined property)undefined:call(X,A)
  • The following properties are added upon exit:
    (undefined property)undefined:call(X,A)
  • The following properties are added globally:
    (basic_props:not_further_inst/2)A is not further instantiated.

Usage 2: @(A,X)

  • Call and exit are compatible with:
    (undefined property)undefined:call(X,A)
  • The following properties are added globally:
    (basic_props:not_further_inst/2)A is not further instantiated.

MODE

Usage 1: A-X

  • The following properties are added at call time:
    (term_typing:var/1)A is a free variable.
  • The following properties are added upon exit:
    (undefined property)undefined:call(X,A)

Usage 2: A-X

  • Call and exit are compatible with:
    (undefined property)undefined:call(X,A)
  • The following properties are added at call time:
    (term_typing:var/1)A is a free variable.

MODE

Usage 1: A?X

  • Call and exit are compatible with:
    (undefined property)undefined:call(X,A)
  • The following properties are added upon exit:
    (undefined property)undefined:call(X,A)

Usage 2: A?X

  • Call and exit are compatible with:
    (undefined property)undefined:call(X,A)

MODE

Usage: A*X

  • Call and exit are compatible with:
    (undefined property)undefined:call(X,A)

MODE

Usage: in(A)

  • The following properties are added at call time:
    (term_typing:ground/1)A is currently ground (it contains no variables).
  • The following properties are added upon exit:
    (term_typing:ground/1)A is currently ground (it contains no variables).

MODE

Usage: out(A)

  • The following properties are added at call time:
    (term_typing:var/1)A is a free variable.
  • The following properties are added upon exit:
    (term_typing:ground/1)A is currently ground (it contains no variables).

MODE

Usage: go(A)

  • The following properties are added upon exit:
    (term_typing:ground/1)A is currently ground (it contains no variables).

MODE

Usage: in(A,X)

  • Call and exit are compatible with:
    (undefined property)undefined:call(X,A)
  • The following properties are added at call time:
    (term_typing:ground/1)A is currently ground (it contains no variables).
  • The following properties are added upon exit:
    (term_typing:ground/1)A is currently ground (it contains no variables).

MODE

Usage: out(A,X)

  • Call and exit are compatible with:
    (undefined property)undefined:call(X,A)
  • The following properties are added at call time:
    (term_typing:var/1)A is a free variable.
  • The following properties are added upon exit:
    (term_typing:ground/1)A is currently ground (it contains no variables).

MODE

Usage: go(A,X)

  • Call and exit are compatible with:
    (undefined property)undefined:call(X,A)
  • The following properties are added upon exit:
    (term_typing:ground/1)A is currently ground (it contains no variables).

Documentation on exports

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (term_typing:var/1)Arg1 is a free variable.
  • The following properties hold upon exit:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • Calls should, and exit will be compatible with:
    (basic_props:int/1)Arg3 is an integer.
  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
    (basic_props:int/1)Arg2 is an integer.
  • The following properties hold upon exit:
    (basic_props:int/1)Arg3 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
    (basic_props:int/1)Arg2 is an integer.
    (term_typing:var/1)Arg3 is a free variable.
  • The following properties hold upon exit:
    (basic_props:int/1)Arg3 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
    (term_typing:var/1)Arg2 is a free variable.
  • The following properties hold upon exit:
    (basic_props:int/1)Arg2 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (term_typing:var/1)Arg1 is a free variable.
  • The following properties hold upon exit:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties should hold at call time:
    (basic_props:int/1)Arg1 is an integer.
  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Usage:

  • The following properties hold globally:
    (foreign_interface_properties:foreign_low/2)The Prolog predicate PrologName is implemented using the function ForeignName. The same considerations as above example are to be applied.

PREDICATE

Meta-predicate with arguments: start_thread(goal).

Usage: start_thread(Goal)

  • Description: Executes Goal in a new stack set, using a new thread. Used herein to create a number of parallel agents.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Goal is currently a term which is not a free variable.
    (basic_props:callable/1)Goal is a term which represents a goal, i.e., an atom or a structure.

PREDICATE

Usage: number_agents(N)

  • Description: Returns in N the number of agents in the system.
  • The following properties should hold at call time:
    (term_typing:var/1)N is a free variable.
    (basic_props:int/1)N is an integer.

PREDICATE

Meta-predicate with arguments: push_goal(goal,?,?).

Usage: push_goal(Goal,Det,Handler)

  • Description: Atomically creates the handler (an arbitrary structure in the heap) associated to Goal, described as deterministic or not by Det, and adds to the goal list a pointer to Handler. Det states whether the goal is deterministic or not.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Goal is currently a term which is not a free variable.
    (term_typing:nonvar/1)Det is currently a term which is not a free variable.
    (basic_props:int/1)Goal is an integer.
    (basic_props:int/1)Det is an integer.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: push_goal(Handler)

  • Description: Atomically adds a pointer to the particular handler Handler to the goal list in order to reexecute the goal associated to it.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: find_goal(GS,Handler)

  • Description: Searches for a goal handler Handler published in some goal list and succeeds if one is found, failing otherwise. The access to each goal list is made atomically.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)GS is currently a term which is not a free variable.
    (term_typing:var/1)Handler is a free variable.
    (basic_props:int/1)GS is an integer.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: find_det_goal(GS,Handler)

  • Description: Searches for a deterministic goal associated to Handler and succeeds if one is found, failing otherwise. The access to each goal list is made atomically.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)GS is currently a term which is not a free variable.
    (term_typing:var/1)Handler is a free variable.
    (basic_props:int/1)GS is an integer.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: goal_available(Handler)

  • Description: Succeeds if Handler is still in the goal list, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: cancellation(Handler)

  • Description: Frees the memory used by Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: retrieve_goal(Handler,Goal)

  • Description: Returns in Goal the parallel goal associated to Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (term_typing:var/1)Goal is a free variable.
    (basic_props:int/1)Handler is an integer.
    (basic_props:int/1)Goal is an integer.

PREDICATE

Usage: goal_det(Handler)

  • Description: Succeeds if the the goal associated to Handler is deterministic, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: set_goal_det(Handler)

  • Description: Marks the goal associated to Handler as deterministic.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: set_goal_nondet(Handler)

  • Description: Marks the goal associated to Handler as non-deterministic.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: goal_not_executed(Handler)

  • Description: Succeeds if the goal associated to Handler has not been executed yet, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: set_goal_not_executed(Handler)

  • Description: Sets the execution of the goal associated to Handler to never executed.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: goal_rem_executing(Handler)

  • Description: Succeeds if the goal associated to Handler is remotely executing, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: set_goal_rem_executing(Handler)

  • Description: Sets the execution of the goal associated to Handler to being remotely executing.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: goal_finished(Handler)

  • Description: Succeeds if the execution of the goal associated to Handler has finished, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: set_goal_finished(Handler)

  • Description: Sets the execution of the goal associated to Handler to finished.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: goal_tobacktrack(Handler)

  • Description: Succeeds if the execution of the goal associated to Handler has to backtrack, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: set_goal_tobacktrack(Handler)

  • Description: Sets the execution of the goal associated to Handler to backtrack.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: goal_toreexecute(Handler)

  • Description: Succeeds if the execution of the goal associated to Handler has to backtrack, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: set_goal_toreexecute(Handler)

  • Description: Sets the execution of the goal associated to Handler to be reexecuted.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: goal_failed(Handler)

  • Description: Succeeds if the execution of the goal associated to Handler has failed, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: set_goal_failed(Handler)

  • Description: Sets the execution of the goal associated to Handler to failed.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: show_handler(Handler)

  • Description: Succeeds if the execution of the goal associated to Handler has cancelled, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: goal_cancelled(Handler)

  • Description: Succeeds if the execution of the goal associated to Handler has cancelled, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: set_goal_cancelled(Handler)

  • Description: Sets the execution of the goal associated to Handler to cancelled.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: send_event(Handler)

  • Description: Sends the handler to the agent that picked up the goal associated to the handler Handler in order to perform backtracking over it.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: read_event(Handler)

  • Description: Succeeds if the event queue of the agent is not empty and unifies Handler with the handler associated to the goal to backtrack over.
  • The following properties should hold at call time:
    (term_typing:var/1)Handler is a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: save_init_execution(Handler)

  • Description: Saves the choice point that marks the starting point of the execution of the parallel goal associated to the handler Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: save_end_execution(Handler)

  • Description: Saves the choice point that marks the final point of the execution of the parallel goal associated to the handler Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: more_solutions(Handler)

  • Description: Succeeds whether the goal associated to Handler has more solutions to compute, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: move_execution_top(Handler)

  • Description: Moves the choice point of the goal saved into the handler Handler to the top of the stack.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: waiting(Handler)

  • Description: Succeeds when the execution of the publishing agent associated to Handler is suspended, and fails otherwise.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage:

  • Description: Suspends the execution of the current thread.

PREDICATE

Usage: release(Handler)

  • Description: Releases the execution of the publishing agent associated to Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: release_remote(Handler)

  • Description: Releases the execution of the agent that picked up the goal associated to Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage:

  • Description: Selects one out of any suspended threads and sends it a signal to resume its execution.

PREDICATE

Usage:

  • Description: Releases the execution of all agents to perform stack unwinding.

PREDICATE

Usage: enter_mutex(Handler)

  • Description: Attemps to enter into a mutual exclusion to access shared variables of the publishing agent associated to Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage:

  • Description: The mutual exclusion is to access the shared variables of the calling thread.

PREDICATE

Usage: enter_mutex_remote(Handler)

  • Description: The mutual exclusion is to access the shared variables of the remote thread associated to Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage: exit_mutex(Handler)

  • Description: Exits from the mutual exclusion of the publishing agent associated to Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage:

  • Description: Exits from the local mutual exclusion.

PREDICATE

Usage: exit_mutex_remote(Handler)

  • Description: Exits from the mutual exclusion of the remote agent associated to Handler.
  • The following properties should hold at call time:
    (term_typing:nonvar/1)Handler is currently a term which is not a free variable.
    (basic_props:int/1)Handler is an integer.

PREDICATE

Usage:

  • Description: Restarts the statistical measures for nondeterministic parallel programs.

PREDICATE

Usage:

  • Description: Prints the value of the statistical measures for nondeterministic parallel goals.

PREDICATE

Usage:

  • Description: Prepares the statistical values for a new execution.

PREDICATE

Usage:

  • Description: Avoids measuring.

PREDICATE

Usage:

  • Description: Increments the number of times that backwards execution has been performed over nondeterministic parallel goals.