Logik:Klausuren/04.11.2004/5. Aufgabe
Inhaltsverzeichnis
1. Aufgabenstellung[Bearbeiten]
Natürliche Zahlen können als iterierte Nachfolger der Zahl $ 0\, $ dargestellt werden
$ d.h.\qquad 1=s(0)\,,\ 2=s(s(0))\,,\ 3=s(s(s(0)))\, $ usw.
Die Addition zweier natürlicher Zahlen in iterrierter darstellung wird durch das folgende Programm realisiert:
$ add\,(N\,,0\,,N)\,. $
$ add\,(N\,,s(M)\,,s(K)):-add(N\,,M\,,K). $
a) Welcher Additionsaufgabe in Zahlendarstellung entspricht der Aufruf
$ ?-add\,(s(0)\,,s(s(s(0)))\,,E)\,. $
b) Geben Sie den vollständigen Ableitungsbaum für den Aufruf:
$ ?-add\,(s(s(0))\,,s(s(0))\,,E)\,. $ an.
Wie lautet das Ergebnis für $ E\, $ ?
c) Schreiben Sie ein Prologprogramm, das die Multiplikation zweier natürlicher Zahlen in iterirter Darstellung repräsentiert.
z.B. soll der Aufruf
$ ?-mal(\,s(s(s(0)))\,,s(s(0))\,,M\,). $
das Ergebnis $ M\,=s(s(s(s(s(s(0)))))) $ liefern.
( Sie können die natürlichen Zahlen wie oben angegeben als definiert voraussetzen.)
2. Lösung[Bearbeiten]
a)
$ ?-add\,(s(0)\,,s(s(s(0)))\,,E)\,.\Longrightarrow \ 1+3=4 $
b)
c)
$ mal(\,N\,,0\,,0). $
$ mal(\,N\,,s(M)\,,E):-mal(\,N,M,E1),\ add(\,E1,N,E). $