[ Reference Manual | Alphabetic Index ]

# library(ldsb)

Lightweight dynamic symmetry breaking for finite domains. [more]

## Predicates

> ldsb_indomain(?X)
>   Instantiates an LDSB integer variable to an element of its domain.
> ldsb_indomain_set(?X)
>   Instantiates an LDSB set variable to an element of its domain.
> ldsb_initialise(+Xs, +Syms)
>   Initialise LDSB search variables.
> ldsb_try(+X, ++Value, ?Success)
>   Try assigning a value to an LDSB variable.
> ldsb_try_set(+X, ++Value, ?Success)
>   Try including a value in an LDSB set variable.

## Description

The LDSB (lightweight dynamic symmetry breaking) library adds symmetry breaking to search. Its aim is to provide easy-to-use symmetry breaking to their finite domain constraint models. The method is described in "Lightweight Dynamic Symmetry Breaking. C. Mears, M. Garcia de la Banda, B. Demoen, M. Wallace. SymCon'08".

To use LDSB, first call ldsb_initialise/2 with the search variables for which you want to use symmetry breaking and a specification of the symmetries. LDSB supports binary search branching of the form `Var = Val` and `Var /= Val`, or `Val in Var` and `Val notin Var` for sets. Use ldsb_indomain/1 and ldsb_indomain_set/1 to instantiate variables during search, or ldsb_try/3 and ldsb_try_set/3 for a custom branching.

## About

- Status: evolving
- Author: Chris Mears

Generated from ldsb.eci on 2020-02-26 22:26