• theory - stratification
  • list of aggregates
  • 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.