This repository was archived by the owner on Dec 20, 2017. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 17
aggregates
Nathan Keynes edited this page Mar 8, 2016
·
1 revision
- 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
.