I'm trying to solve a version of Einstein's Riddle. Therefore I defined a few rules:
students(Students) :-
length(Students, 6),
member([manuel, _, _, _], Students),
member([tobias, _, pas, _], Students),
member([louise, _, _, _], Students),
member([sophia, _, _, _], Students),
member([hannes, 18, _, _], Students),
member([oliver, _, _, _], Students),
member([_, 18, _, _], Students),
member([_, 19, _, win], Students),
member([_, 20, stu, _], Students),
member([_, 21, _, _], Students),
member([_, 22, _, _], Students),
member([_, 23, _, _], Students),
member([_, _, ulm, _], Students),
member([_, _, fra, _], Students),
member([_, _, pas, _], Students),
member([_, _, hei, inf], Students),
member([_, _, aug, _], Students),
member([_, _, stu, _], Students),
member([_, _, _, win], Students),
member([_, _, _, wig], Students),
member([_, _, _, bwl], Students),
member([_, _, _, inf], Students),
member([_, _, _, gbm], Students),
member([_, _, _, rwi], Students).
As I tested it to see if there are any error so far, I encountered the following output:
?- students(X).
X = [[manuel, 19, ulm, win], [tobias, 21, pas, _1574], [louise, 20, stu, _1604], [sophia, 22, fra, _1634], [hannes, 18, hei, inf], [oliver, 23, aug, _1694]]
X = [[manuel, 19, ulm, win], [tobias, 21, pas, _1350], [louise, 20, stu, _1380], [sophia, 22, fra, _1410], [hannes, 18, hei, inf], [oliver, 23, aug, _1470]]
X = [[manuel, 19, ulm, win], [tobias, 21, pas, _1350], [louise, 20, stu, _1380], [sophia, 22, fra, _1410], [hannes, 18, hei, inf], [oliver, 23, aug, _1470]]
X = [[manuel, 19, ulm, win], [tobias, 21, pas, _1350], [louise, 20, stu, _1380], [sophia, 22, fra, _1410], [hannes, 18, hei, inf], [oliver, 23, aug, _1470]]
...
Since there are more rules needed to solve it completely I was expecting more than one solution. But I'm confused why win and inf are used correctly but wig, bwl, rwi and gbm are not.
Could you explain to me why this happens and how to fix it?
(I don't know if it's just a problem of the dialect. Thus, I tested it on the website https://swish.swi-prolog.org/example/examples.swinb)