 [semidet]aggregate_all(+Template, 
:Goal, -Result)
[semidet]aggregate_all(+Template, 
:Goal, -Result)min(X), max(X),
min(X,Witness) or max(X,Witness) and Goal 
has no solutions, i.e., the minimum and maximum of an empty set is 
undefined.
The Template values count, sum(X), max(X), min(X), max(X,W) 
and
min(X,W) are processed incrementally rather than using findall/3 
and run in constant memory.