We have two primitive sets in the model: WARRANTY is the set of warranty lengths and PRICE is the set of prices. We form the derived set WP by taking the cross of WARRANTY and PRICE in order to create an attribute to store the preferences for each (WARRANTY, PRICE) pair.

The interesting set in this model is the sparse derived set WPWP:

! The next set generates all unique pairs of product

 configurations such that the second configuration

 is preferred to the first;

    WPWP( WP, WP) | RANK( &1, &2) #LT#

     RANK( &3, &4): ERROR;

This set is derived from the cross of WP on itself. Each member of this set contains two product configurations. Furthermore, we use a membership condition to limit the set to combinations of product configurations where the first configuration is preferred to the second configuration. We need this set because our model will be testing its proposed utility functions against all unique pairings of configurations. Note that this set grows on the order of n2, where n is the number of product configurations, thus it will tend to get big for large numbers of product configurations.