Compositive Objectives

Two evaluation algebras can be combined, as explained
in the Initial Reading section.
Review?

Formally, this is a product operation on two evaluation algebras:

Definition (Product operation on evaluation algebras):

Let

**M**and**N**be evaluation algebras over Σ. Their product M***N is an evaluation algebra over Σ and has the functions
f_M***N((m1,n1)...(mk,nk)) = (f_M(m1,...,mk), f_N(n1,...,nk)) for each f in Σ,

and the objective function
h_M***N([(m1,n1)...(mk,nk)]) = [(l,r) | l ∈ L,

r <- h_N([r' | (l',r') <- [(m1,n1)...(mk,nk)], l' = l],

where L = h_M([m1,...,mk]).

r <- h_N([r' | (l',r') <- [(m1,n1)...(mk,nk)], l' = l],

where L = h_M([m1,...,mk]).

Above, ∈ denotes the membership and hence ignores duplicates. In contrast <- denotes list membership and respects duplicates. Implementing set membership may require some extra filtering effort, but when the objective function h_M, which computes L, does not produce duplicates anyway, it comes for free.