[ library(gfd) | Reference Manual | Alphabetic Index ]
# <ConsistencyModule:> sum(+Collection,?Sum)

The sum (Collection) or scalar product (IntCollection*Collection) of the Collection elements is Sum
*Collection or Coeffs*Collection*
- Collection: collection of N integers or (domain) variables. Coeffs: collection of N integers.
*Sum*
- (Domain) variable or integer (array notation accepted)

## Description

Constrains Sum to be the sum of the elements in Collection if
the first argument is a collection of integers or domain variables.

Constrains Sum to be the scalar product of a collection of integers
and a collection of integers or domain variables if the first
argument is Coeffs*Collection. Coeffs and Collection
must have the same number of elements, and the scalar product
is the sum of the coefficients in Coeffs with the corresponding
element in Collection.

Any input variables which are not already domain variable will be
turn into domain variables with default bounds.

You may find it more convenient to embed `sum(Vars)` in a
constraint expression.

ConsistencyModule is the optional module specification to give the
consistency level for the propagation for this constraint:
gfd_bc for bounds consistency, and
gfd_gac for domain (generalised arc) consistency.

This constraint is known as sum_ctr (with the = relation) in the
global constraint catalog, and is implemented using Gecode's
linear() constraint (with IRT_EQ relation).

## See Also

sumlist / 2, sum / 2