Logik:Klausuren/01.02.2002/A.2 Aufgabe
Inhaltsverzeichnis
1. Aufgabenstellung
Die Absorptionsregel besagt, dass $ ((F_1 \and F_2 ) \or F_1) \equiv F_1\; $ für beliebige aussagenlogische Formeln $ F_1, F_2\; $ gilt.
a) Schreiben Sie ein Prolog-Programm, das die Transformation $ F[G]\; $ in $ F[G/H]\; $ , nämlich die Ersetzung einer Teilformel $ G\; $ der Form $ G = ((F_1 \and F_2) \or F_1)\; $ in eine Teilformeln $ H = F_1\; $ (Anwendung der Absorptionsregel) realisiert.
Sie können sich auf aussagenlogische Formeln beschränken, die nur die logischen
Operatoren $ \neg , \and , \or; $ enthalten, wobei die Definition der entsprechenden Prolog-Operatoren $ \mathsf{neg, and}\; $ und $ \mathsf{or}\; $ schon vorliegt.
b) Schreiben Sie ein Prologprogramm, das die von Ihnen unter a) definierte Prozedur so lange auf die Ausgangsformel anwendet, bis diese keine Teilformeln der Form $ ((F_1 \and F_2) \or F_1)\; $ mehr enthält.
2. Lösung
a)
$ \mathsf{trans(((F1\ and\ F2) or F1), F1).}\; $
$ \mathsf{trans(neg\ F,\ neg\ Fneu)\ :-\ trans(F,Fneu).}\; $
$ \mathsf{trans((F\ and\ G),\ (Fneu\ and\ G))\ :-\ trans(F,Fneu).}\; $
$ \mathsf{trans((F\ and\ G),\ (F\ and\ Gneu))\ :-\ trans(G,Gneu).}\; $
$ \mathsf{trans((F\ or\ G),\ (Fneu\ or\ G))\ :-\ trans(F,Fneu).}\; $
$ \mathsf{trans((F\ or\ G),\ (F\ or\ Gneu))\ :-\ trans(G,Gneu).}\; $
b)
$ \mathsf{transalle(F,Erg)\ :-\ transform(F,T,Erg).}\; $
$ \mathsf{transform(F,T,Erg)\ :-\ trans(F,Tneu), transform(Tneu,T,Erg).}\; $
$ \mathsf{transform(F,T,F).}\; $