Dogelog Player allows registering special foreign function foreign functions. A special foreign function has access to the execution environment of the Dogelog Player and can be used to code deterministic and non-deterministic predicates. To realize a non-deterministic predicates the special foreign function leaves a choice point.
To simplify task switching a part of the engine state is stored in an engine object. Task switch-ing happens when a non-main task gets its execution share, and the main task is swapped in and out into a the task context. Tasks not only have their own continuation, trail and choice points, the streams are accessible via the engine object.
The following engine API calls are provided: