A sum aggregate consists of a set of elements consisting of a tuple together with a condition and a guard. Whenever the condition of an element is true wrt an answer set, its associated tuple contributes a value to a set. Hence, if two equal tuples have true conditions, then only one value is provided.

Consider for example the program

{a; b; c}.

:- #sum { 2,p : a; 1,q : a
        ; 1,q : b; 2,r : b
        ; 2,r : c; 1,s : c
    } < 6.

If a and b are true, the values of tuples (2,p), (1,q), and (2,r) are summed up. Hence, the sum aggregate evaluates to 5. Note that the value of tuple (1,q) provided by the second and third element of the sum aggregate is counted only once.

If a and c are true, the values of tuples (2,p), (1,q), (2,r), and (1,s) are summed up. Hence, the sum aggregate evaluates to 6 and {a, c} is an answer set of the program. In fact, there are only two answer sets: {a, c} and {a, b, c}.

Accumulation in #sum+, #min, and #max aggregates as well as #minimize and #maximize constraints works the same.