Advanced Control Features

# Chapter 17 Advanced Control Features

- Introduction
- Concepts
  - The Structured Resolvent
  - Floundering
- Suspending Built-Ins and the Suspend-Library
- Development System Support
- Declarative Suspension: Delay Clauses
- Explicit supension with suspend/3
- Waking conditions
  - Standard Waking Conditions on Variables
  - Library-defined Waking Conditions on Variables
  - Global Symbolic Waking Conditions: Triggers
- Lower-level Primitives
  - Suspensions and Suspension Lists
  - Creating Suspended Goals
  - Operations on Suspensions
  - Examining the Resolvent
  - Attaching Suspensions to Variables
  - User-defined Suspension Lists
  - Attaching Suspensions to Global Triggers
  - Scheduling Suspensions for Waking
- Demon Predicates
- More about Priorities
  - Changing Priority Explicitly
  - Choice of Priorities
- Details of the Execution Mechanism
  - Particularities of Waking by Unification
  - Cuts and Suspended Goals
- Simulating other System's Delay-Primitives

1
  Note that more powerful versions of these constraints exist in other solvers such as the interval solver lib(ic).
2
  suspend/3 is itself based on the lower-level primitives make_suspension/3 and insert_suspension/4, which are described below.
3
  Examples of such libraries are branch_and_bound, changeset, chr/ech, propia, repair, visualisation.
4
  more precisely, variables which have an ic-attribute, see chapter 16.
5
  This mechanism may be reconsidered in a future release