Conception de solveurs et apprentissage de règles en programmation par contraintes