Rule which converts an
AbstractConverter into a chain of
converters from the source relation to the target traits.
The chain produced is mimimal: we have previously built the transitive
closure of the graph of conversions, so we choose the shortest chain.
Unlike the
AbstractConverter they are replacing, these
converters are guaranteed to be able to convert any relation of their
calling convention. Furthermore, because they introduce subsets of other
calling conventions along the way, these subsets may spawn more efficient
conversions which are not generally applicable.
AbstractConverters can be messy, so they restrain themselves: they
don't fire if the target subset already has an implementation (with less
than infinite cost).