20. One or more non-transitory computer-readable storage media encoded with instruction that, when executed by one or more computers, cause the one or more computers to perform operations comprising: receiving program input specifying an aggregation function agg and arguments for an aggregation construct agg* for the aggregation function agg, wherein the aggregation construct agg* is within a recursive term of a recursive relation definition, the arguments including, explicitly or implicitly: <to_agg>, a variable that will contain values to be aggregated; <variables>, one or more variables that are local to the expressions <range> and <term>; <range>, a constraint on the values of the variables <variables> that defines a relation s, wherein the domain of s is free variables and the range of s is variables listed in <variables>; and <term>, a constraint that constrains <to_agg> to values that will be aggregated, which defines a relation t that has a domain and a range, wherein the domain of t is the variables listed in <variables> and the range of t is <to_agg>; and evaluating the recursive relation definition, including evaluating the aggregation construct agg* for the aggregation function agg according to the semantics agg*(s, t)={(m, agg(n))|∃d:(m, d)εs, nεn {|t(y)|yεs(m)|}} wherein agg* returns a relation and is monotonic in the relation t.
22. The one or more non-transitory computer-readable storage media of claim 20 , wherein the program input comprises an expression in a data language that uses fixed point semantics.