Computing explanations and implications in preference-based configurators