1. A computer program product residing on a non-transitory computer readable storage medium for determining fares for sets of itineraries, the computer program product comprising instructions for causing one or more computers to: decompose the sets of itineraries into faring atoms, with a faring atom corresponding to a sequence of flight segments associated with a single fare; retrieve fares, with fares comprising a carrier, a market, fare class, and a price; retrieve fare rules for the faring atoms from a fare rules database; retrieve routings for a fare; for a retrieved fare: apply the retrieved fare rules to a faring atom, to determine if the retrieved fare rules permit a fare component to be constructed, and if a fare component is permitted to be constructed, based on applying the retrieved fare rules: produce the fare component as a combination of the faring atom and the retrieved fare; and compute travel options comprising prices for at least some of the sequence of flight segments, using the fare component.