Contents
Chapter 1 Introduction
1.1 Suspended Goals:
suspend
1.2 Finite Domains:
ic
1.2.1
Integer Domain
1.2.2 Symbolic Domain:
ic_symbolic
1.2.3 Global Constraints:
ic_global
1.2.4 Scheduling Constraints
1.3 Sets
1.4 Intervals
1.5 User-Defined Constraints
1.5.1 Generalised Propagation:
propia
1.5.2 Constraint Handling Rules
1.6 Repair
1.7 Linear Constraints
1.7.1 External Linear Solvers:
eplex
1.7.2
clpqr
1.7.3 Piecewise Linear:
eplex_relax
1.7.4 Probing for Scheduling
1.8 Other Libraries
Chapter 2 Common Solver Interface
2.1 Introduction
2.2 Common constraints
2.3 Using the constraints
2.4 The Solvers
Chapter 3 IC: A Hybrid Finite Domain / Real Number Interval Constraint Solver
3.1 Introduction
3.1.1 What IC does
3.1.2 Differences between IC and FD
3.1.3 Differences between IC and RIA
3.1.4 Notes about interval arithmetic
3.1.5 Interval arithmetic and IC
3.1.6 Usage
3.1.7 Arithmetic Expressions
3.2 Library Predicates
3.2.1 Domain constraints
3.2.2 Arithmetic constraints
3.2.3 Reified constraints
3.2.4 Miscellaneous constraints
3.2.5 Integer labeling predicates
3.2.6 Real domain refinement predicates
3.2.7 Variable query predicates
3.2.8 Propagation threshold predicates
3.2.9 Solving by Interval Propagation
3.2.10 Reducing Ranges Further
3.2.11 Obtaining Solver Statistics
3.3 General Guidelines for the Use of the IC library
3.4 User defined constraints
3.4.1 Modifying variable domains
3.4.2 The IC attribute
Chapter 4 Global Finite Domain Constraints
4.1 Various Constraints over Lists and Arrays
4.2 Cumulative Constraint and Resource Profiles
4.3 Edge-finder
Chapter 5 The Integer Sets Library
5.1 Ground Integer Sets
5.2 Set Variables
5.2.1 Declaring
5.2.2 Printing
5.2.3 Domain Access
5.3 Constraints
5.3.1 Membership
5.3.2 Cardinality
5.3.3 Set Relations
5.3.4 N-ary Set Relations
5.3.5 Set Weights
5.4 Set Expressions
5.5 Search Support
5.6 Example
Chapter 6 The Symbolic Domain Library
6.1 Domains and Domain Variables
6.2 Basic Constraints
6.3 Global Constraints
6.4 Internals
6.5 Extending and Interfacing this Library
Chapter 7 GFD: Interface to Gecode Finite Domain Solver
7.1 Introduction
7.2 Problem Modelling
7.2.1 Usage
7.2.2 Integer domain variables
7.2.3 Constraints
7.3 Search Support
7.3.1 Performing search completely inside Gecode
7.3.2 Search in ECL
i
PS
e
using GFD primitives
7.3.3 GFD specific search support
7.4 User defined constraints and solver co-operation
7.4.1 The
gfd
attribute
7.4.2 Modifying variable domains
7.4.3 Variable query predicates
7.5 Low-level control of Gecode computation
7.5.1 Recomputation and Cloning
7.6 Main differences between GFD and IC
Chapter 8 Propia - A Library Supporting Generalised Propagation
8.1 Overview
8.2 Invoking and Using Propia
8.3 Approximate Generalised Propagation
Chapter 9 The Constraint Handling Rules Library
9.1 Introduction
9.2 Using Constraint Handling Rules
9.3 Example Constraint Handlers
9.4 The
CHR
Language
9.4.1 Constraint Handling Rules
9.4.2 How
CHR
s Work
9.5 More on the
CHR
Language
9.5.1 Declarations
9.5.2 ECL
i
PS
e
Clauses
9.5.3 Options
9.5.4
CHR
Built-In Predicates
9.6 Labeling
9.7 Writing Good
CHR
Programs
9.7.1 Choosing
CHR
s
9.7.2 Optimizations
9.8 Debugging
CHR
Programs
9.8.1 Using the Debugger
9.9 The Extended
CHR
Implementation
9.9.1 Invoking the extended CHR library
9.9.2 Syntactic Differences
9.9.3 Compiling
9.9.4 Semantics
9.9.5 Options and Built-In Predicates
9.9.6 Compiler generated predicates
Chapter 10 EPLEX: The ECL
i
PS
e
/LP/MIP Interface
10.1 Usage
10.2 Eplex Instances
10.2.1 Linear Constraints
10.2.2 Linear Expressions
10.2.3 Bounds
10.2.4 Integrality
10.2.5 Solving Simple Eplex Problems
10.2.6 Examples
10.3 Advanced Use of Eplex Instances
10.3.1 Obtaining Solver State Information
10.3.2 Creating Eplex Instances Dynamically
10.3.3 Interface for CLP-Integration: Solver Demons
10.3.4 Encapsulated Modification of the Problem: Probing
10.3.5 Destroying the Solver State
10.3.6 Eplex Instance Interface Example: definition of optimize/2:
10.4 Low-Level Solver Interface
10.4.1 Setting Up a Solver State
10.4.2 Adding Constraints to a Solver State
10.4.3 Running a Solver State Explicitly
10.4.4 Accessing the Solver State
10.4.5 Expandable Problem and Constraints
10.4.6 Changing Solver State Settings
10.4.7 Destroying a Solver State
10.4.8 Miscellaneous Predicates
10.5 Cutpool Constraints
10.5.1 Solving a Problem with Cutpool Constraints
10.5.2 Predicate-specific Support
10.6 Multiple Solver States
10.7 External Solver Output and Log
10.8 Dealing with Large and Other Non-standard Numbers
10.9 Error Handling
10.10 Solver Behaviour Differences
10.11 Solver Specific Information
10.11.1 Versions and Licences
10.11.2 Solver Differences
10.11.3 Access to External Solver’s Control Parameters
Chapter 11 REPAIR: Constraint-Based Repair
11.1 Introduction
11.1.1 Using the Library
11.2 Tentative Values
11.2.1 Attaching and Retrieving Tentative Values
11.2.2 Tenability
11.2.3 The Tentative Assignment
11.2.4 Variables with No Tentative Value
11.2.5 Unification
11.2.6 Copying
11.3 Repair Constraints
11.4 Conflict Sets
11.5 Invariants
11.6 Examples
11.6.1 Interaction with Propagation
11.6.2 Repair Labeling