<div class="notebook open-fullscreen"> <div class="nb-cell markdown" name="md1"> ## Repräsentation von Modellen in Prolog </div> <div class="nb-cell markdown" name="md2"> **Programmierübung:** Schreibe ein Prädikat =isModel/1=, das überprüft, ob ein Modell ein Modell in Prolognotation ist. Als Argument erhält das Prädikat ein Modell in der obigen Notation =model/2=. Dazu müssen wir zwei Sachen überprüfen: 1. Was sind gültige Einträge für die Domäne =D=? 2. Was sind gültige Einträge für =F= und taucht jeder Eintrag höchstens ein mal auf? Die Prädikate =sublist/2= und =pairlist/2= können euch helfen, Punkt zwei zu prüfen. Die reichen aber nicht aus, ihr benötigt noch weitere Hilfsprädikate! </div> <div class="nb-cell program" name="p1"> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Eure Lösung: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Hilfsprädikate: sublist([],_L). sublist([H|T],L):- member(H,L), sublist(T,L). pairlist([],_L). pairlist([(A,B)|T],L):- member(A,L), member(B,L), pairlist(T,L). </div> <div class="nb-cell query" name="q1"> isModel(model([d1,d2,d3,d4,d5],[f(0,mia,d3),f(1,robber,[d2,d4,d5]),f(2,love,[(d2,d3),(d1,d4)])])). </div> </div>