<div class="notebook"> <div class="nb-cell markdown" name="md1"> ## 03.05. Addition </div> <div class="nb-cell markdown" name="md2"> Bei der derzeitigen Definition des Prädikats add/3 erhält man auf manche Anfragen mit mehr als einer Variablen konkrete Zahlen als Antworten, für andere erhält man lediglich eine Angabe über die Beziehungen, die zwischen den Variablenbelegungen herrschen müssen: </div> <div class="nb-cell program" data-background="true" name="p1"> % add/3 % Ankerklausel add(0,Y,Y). % rekursive Klausel add(succ(X),Y,succ(Z)):- add(X,Y,Z). </div> <div class="nb-cell query" name="q1"> add(succ(0),Y,Z). </div> <div class="nb-cell markdown" name="md3"> Kannst du die Definition von add/3 so anpassen, dass du immer konkrete Zahlen als Antwort erhälst? </div> <div class="nb-cell markdown" name="md4"> % im Moment bekommen wir konkrete Zahlen als Antwort, wenn wir z.B. diese Anfrage stellen: ?- add(X,succ(0),Z). X = 0, Z = succ(0); X = succ(0), Z = succ(succ(0)); X = succ(succ(0)), Z = succ(succ(succ(0))) ; Wennn wir aber ``?- add(succ(0),Y,Z).`` fragen, dann ist die Antwort ``Z=succ(Y).`` Ändere die Wissensbasis so, dass immer konkrete Zahlen in der succ-Notation als Antwort kommen. </div> </div>