zebre([anglais=Ang, norvegien=Nor, espagnol=Esp, ukrainien=Ukr, japonais=Jap,
       bleu=Ble,    rouge=Rou,     vert=Ver,     jaune=Jau,     blanc=Bla,
       cafe=Caf,    the=The,       eau=Eau,      vin=Vin,       lait=Lai,
       kools=Koo,   cravens=Cra,   oldgolds=Old, gitanes=Git,   chester=Che,
       chien=Chi,   escargot=Esc,  renard=Ren,   cheval=Chev,   zebre=Zeb]) :-
    Var = [Ang,Nor,Esp,Ukr,Jap,
           Ble,Rou,Ver,Jau,Bla,
           Caf,The,Eau,Vin,Lai,
           Koo,Cra,Old,Git,Che,
           Chi,Esc,Ren,Chev,Zeb],
    fd_domain(Var,1,5),
    fd_all_different([Ang,Nor,Esp,Ukr,Jap]),
    fd_all_different([Ble,Rou,Ver,Jau,Bla]),
    fd_all_different([Caf,The,Eau,Vin,Lai]),
    fd_all_different([Koo,Cra,Old,Git,Che]),
    fd_all_different([Chi,Esc,Ren,Chev,Zeb]),
    Nor #= 1,       /* Le norvégien habite la première maison */
    Ble #= Nor+1,   /* La maison à coté de celle du norvégien est bleue */
    Lai #= 3,       /* L'habitant de la troisième maison boit du lait */
    Ang #= Rou,     /* L'anglais habite la maison rouge */
    Ver #= Caf,     /* L'habitant de la maison verte boit du café */
    Jau #= Koo,     /* L'habitant de la maison jaune fume des kools */
    Bla #= Ver+1,   /* La maison blanche se trouve juste après la verte */
    Esp #= Chi,     /* L'espagnol a un chien */
    Ukr #= The,     /* L'ukrainien boit du thé */
    Jap #= Cra,     /* Le japonais fume des cravens */
    Old #= Esc,     /* Le fumeur de old golds a un escargot */
    Git #= Vin,     /* Le fumeur de gitanes boit du vin */
    (Che#=Ren+1) #\/ (Che#=Ren-1),  /* Le voisin du fumeur de Chesterfields a un renard */
    (Koo#=Chev+1) #\/ (Koo#=Chev-1),/* Le voisin du fumeur de kools a un cheval */
    fd_labeling(Var).