# Aggregates

• theory - stratification
• list of aggregates
• examples

## Examples

The term

``````min Z : a("A",Z).
``````

computes the smallest Z such that the value [“A”,Z] is present in relation `a`. If there is no such element, the result is unbound and the containing body will not be satisfied.

By using wild cards, as in

``````min Z : a(_,Z).
``````

the overall smallest value of the second attribute can be obtained, independently of the first attribute. However, the operation will fail if `a` is empty. Finally, bound variables may be referenced in the body of the aggregation, as in

``````res(X,Y) :- a(X,_), Y = min Z : a(X,Z).
``````

which maps each element of the first column of `a` to its minimal corresponding value in the second column.

Finally, more complex terms may be minimized for. For instance, in

``````min Z+Y : { a(A,Z), a(B,Y), A!=B }.
``````

the sum of two values is minimized. The given term computes the smallest sum of values assigned to two different elements in `a`.