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 Additional Finite Domain Constraints
4.1 Various Constraints on Lists
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 Propia - A Library Supporting Generalised Propagation
7.1 Overview
7.2 Invoking and Using Propia
7.3 Approximate Generalised Propagation
Chapter 8 The Constraint Handling Rules Library
8.1 Introduction
8.2 Using Constraint Handling Rules
8.3 Example Constraint Handlers
8.4 The
CHR
Language
8.4.1 Constraint Handling Rules
8.4.2 How
CHR
s Work
8.5 More on the
CHR
Language
8.5.1 Declarations
8.5.2 ECL
i
PS
e
Clauses
8.5.3 Options
8.5.4
CHR
Built-In Predicates
8.6 Labeling
8.7 Writing Good
CHR
Programs
8.7.1 Choosing
CHR
s
8.7.2 Optimizations
8.8 Debugging
CHR
Programs
8.8.1 Using the Debugger
8.9 The Extended
CHR
Implementation
8.9.1 Invoking the extended CHR library
8.9.2 Syntactic Differences
8.9.3 Compiling
8.9.4 Semantics
8.9.5 Options and Built-In Predicates
8.9.6 Compiler generated predicates
Chapter 9 EPLEX: The ECL
i
PS
e
/LP/MIP Interface
9.1 Usage
9.2 Eplex Instances
9.2.1 Linear Constraints
9.2.2 Linear Expressions
9.2.3 Bounds
9.2.4 Integrality
9.2.5 Solving Simple Eplex Problems
9.2.6 Examples
9.3 Advanced Use of Eplex Instances
9.3.1 Obtaining Solver State Information
9.3.2 Creating Eplex Instances Dynamically
9.3.3 Interface for CLP-Integration: Solver Demons
9.3.4 Encapsulated Modification of the Problem: Probing
9.3.5 Destroying the Solver State
9.3.6 Eplex Instance Interface Example: definition of optimize/2:
9.4 Low-Level Solver Interface
9.4.1 Setting Up a Solver State
9.4.2 Adding Constraints to a Solver State
9.4.3 Running a Solver State Explicitly
9.4.4 Accessing the Solver State
9.4.5 Expandable Problem and Constraints
9.4.6 Changing Solver State Settings
9.4.7 Destroying a Solver State
9.4.8 Miscellaneous Predicates
9.5 Cutpool Constraints
9.5.1 Solving a Problem with Cutpool Constraints
9.5.2 Predicate-specific Support
9.6 Multiple Solver States
9.7 External Solver Output and Log
9.8 Dealing with Large and Other Non-standard Numbers
9.9 Error Handling
9.10 Solver Behaviour Differences
9.11 Solver Specific Information
9.11.1 Versions and Licences
9.11.2 Solver Differences
9.11.3 Access to External Solver’s Control Parameters
Chapter 10 REPAIR: Constraint-Based Repair
10.1 Introduction
10.1.1 Using the Library
10.2 Tentative Values
10.2.1 Attaching and Retrieving Tentative Values
10.2.2 Tenability
10.2.3 The Tentative Assignment
10.2.4 Variables with No Tentative Value
10.2.5 Unification
10.2.6 Copying
10.3 Repair Constraints
10.4 Conflict Sets
10.5 Invariants
10.6 Examples
10.6.1 Interaction with Propagation
10.6.2 Repair Labeling