Hm. Also,
letztes Mal haben wir genau bei der Folie aufgehört,
also es ging um Prädikaten, logische Resolution, also ein Ableitungsverfahren,
also Ziel ist ein Ableitungsverfahren in der Prädikatenlogik einzuführen,
mit dem man dann Formeln auf Unerführbarkeit testen kann,
so wie wir das in der Aussagelogik auch gemacht haben.
In der Aussagenlogik war die Idee, dass man gesagt hat, naja,
immer diese Wahrheitstafeln aufzumalen, dass es irgendwie zwar funktioniert,
immer, ist aber eine ziemliche Brutforce-Methode,
kann man das nicht irgendwie cleverer machen?
Gibt es da nicht irgendwas, wo man vielleicht mal
eine Abkürzung nehmen kann
Und dann hatte man dieses Resolutionsverfahren,
was dann eben im Allgemeinen auch nicht schneller ist, aber in ganz,
ganz vielen Fällen eben dann eben doch schneller sein kann.
Und in der Prädikatenlogik hat man dann gesagt,
es wäre auch schön, wenn man da ein Resolutionsverfahren hat.
Und da ist der Hintergrund aber auch noch der,
dass man mit so einer Brut-Force-Methode wie Wahrheitstafeln oder so überhaupt nicht arbeiten kann.
Also man braucht zwingend was anderes. Und dann haben wir
uns letztes Mal erst mal damit beschäftigt,
dass wir gesehen haben, okay, Prädikatenlogik ist unentscheidbar.
Und dann haben wir Herbrand-Universen eingeführt, mit dem man gesehen hat,
dass man schon ganz, ganz viel von den Strukturen,
die man so sucht, quasi vorgegeben kriegt.
Man weiß, wie das Universum aussieht. Man weiß,
wie die Interpretation von konstanten Variablen und Funktionssymbolen aussieht.
Und dann muss man sich nur noch darauf quasi konzentrieren,
was man mit dem Prädikatensymbolen macht. Das war so diese
Idee bei den Herbert-Universen. Und dann gab es diesen Satz,
dass man gesagt hat, wenn eine Formel erfüllbar ist,
dann gibt es auf jeden Fall auch ein Herbrand-Modell dafür.
Das ist schon mal schön zu wissen,
dann weiß man tatsächlich, ja,
es reicht auch sich auf Herbrand-Modelle einzuschränken und die irgendwie
zu versuchen,
systematisch durchzugehen
Und dann gab es nachher die Idee, mit der Herbrand-Expansion,
die hier benutzt wird. Jetzt wird gesagt, hier,
wenn ich so eine Aufzählung der Herbrand-Expansion von F habe,
dann kann ich quasi mit der arbeiten und immer mehr formeln aus dieser Aufzählung herausnehmen,
mit Unverknüpfen und immer gucken, ob das unerfüllbar ist.
Und die Idee bei dieser Herbrand-Expansion,
ich gehe da mal zurück hin, da ist sie,
die Idee bei dieser Herbrand-Expansion ist,
dass wenn ich so eine Formel F in geschlossener School in Form habe,
also vorne alles Altquanturen,
dann in F-Stern keine freien Variablen mehr nachher,
also alles gebunden
Und die Formel F-Stern nehme ich mir jetzt und setze hier dann all diese Variablen Y1 bis YK durch Therme des Herbrand-Universums,
also nicht durch Thermen des Herband-Universums,
sondern durch Elemente des Herbrand-Universums und die Elemente des Herbrand-Universums hier D von F,
das waren ja gerade geschlossene Therme.
Und das nannte man da die Herbrand-Expansion von F und dann konnte man eben diesen Satz zeigen,
F ist genau dann erfüllbar,
wenn diese Formelmenge EF im Aussagen logischen Sinne erfüllbar ist,
weil ich all diese Formeln, die hier jetzt stehen,
Also F-Sterne und die ganzen Substitutionen dahinter,
die kann ich alle als Aussagen logische Formeln interpretieren,
weil sowas widersteht dann zum Beispiel P von A und P von B oder irgendwie sowas.
Dieses P von A,
P von B, A und B sind Konstanten,
da sind keine Variablen mehr drin und so,
sowas kann ich auch einfach dann als Außerheimogische Formel betrachten,
dass er entweder wahr oder falsch.
Und hier wird dann eben gesagt in dem Satz, wenn er verfüllbar ist,
dann ist diese Formelmenge EF im Aussagen logisch im Sinne erfüllbar.
Und wenn die im Aussagen logisch im Sinne erfüllbar ist,
dann ist die Formel erfüllbar.
Ja, wo da?
Nee, nicht in jeder Logik, weil du müsstest ja irgendwie gucken,
ob du überhaupt solche Formeln da einführen könntest.
Also du wirst wahrscheinlich immer versuchen, sowas irgendwie hinzukriegen in fortgeschrittenen Logiken. Aber in jeder,
also ich kenne jetzt auch nicht jede Logik, von daher ist die Aussage,
dass das nicht so ist, ein bisschen gewagt von mir,
aber ich würde nicht sagen, dass das überall geht.
Genau, so, aber in der geht's. Und die Idee jetzt hier ist noch,
das quasi umzudrehen, nicht mit Erfüllbarkeit zu arbeiten,
sondern mit Unerfüllbarkeit und dann eben hier unten diesen Satz von Herbrand zu haben,
dass eine Aussage in School in Form genau dann unerfüllbar ist,
wenn es so eine endliche Teilmenge von EF gibt,
die unerfüllbar ist.
Und damit arbeitet dann
dieser Algorithmus hier
Der, ne, dass ich jetzt quasi versuche,
in dieser Aufzählung von EF eine endliche Teilmenge zu finden, die unerfüllbar ist.
Und wenn ich eine finde, dann weiß ich,
okay, dann muss auch die ganze Formel unerfüllbar sein.
Und das Ganze hängt also quasi,
also dass hier die Folgerung, die hier ist ziemlich einfach,
wenn man mich vorher Erfüllbarkeit habe mit einer genauen Wenderbeziehung,
da werde ich auch Unerfüllbarkeit hier haben,
aber der Satz hier, an dem hängt das irgendwie.
F ist genau dann erfüllbar,
wenn die Formelmenge EF im Aussagen logischen Sinne erfüllbar ist.
Wenn ihr euch die Formelmenge EF nochmal ansieht, Wie würde,
oder wie könnte man da rangehen, das zu beweisen?
Also wenn ich jetzt zeigen will, wenn F erfüllbar ist,
dann ist EF erfüllbar und andersrum.
So, warum wird das wohl so sein? Meint ihr
? Da gibt es quasi so einen ganz einfachen Zusammenhang,
mit dem man das sofort erschlägt.
Also EF im Aussagen logisch im Sinne erfüllbar müsste ja bedeuten,
ich muss all diese Formeln,
die jetzt in EF drin sind,
die muss ich
warm machen können
Und dann ist EF im Auswahl logischen Sinne erfüllbar.
Und F ist im Prädikaten logisch im Sinne erfüllbar,
wenn ich eben eine Struktur finde,
die diese Formel hier wahrmacht, die Formel F,
also für alle Y1 und so weiter.
Wenn ihr euch jetzt einmal überlegt, was ist diese Mantik von,
für alle Y1, für alle Y2 und so weiter.
Und was ist diese Mantik von diesen Formel EF war machen,
dann habt ihr schon fast.
Aber was braucht man noch als Zwischenschritt?
Erinnert ihr das noch von, ich glaube,
letzten Montag haben wir
das gemacht
Wenn ihr euch das anguckt, passiert da im Grunde genommen
nämlich genau das Gleiche, deswegen gilt der Satz auch.
Hier, guck mal, hier wird gesagt, für alle Y1,
für alle Y2 und so weiter, soll F-Stern gelten.
Naja, und hier wird gesagt, ich nehme mal diese Formel
F-Stern und setze sukzessive für Y1 bis YK, alle Elemente meines Universums ein.
Das klingt schon irgendwie sehr ähnlich, ne? In einem Fall
habe ich es mit den Quantoren ausgedrückt und hier sage ich halt,
nimm beliebige K-Elemente aus dem Universum,
substituiere sie und die Aussage logische Formel, die rauskommt, muss wahr sein.
Ich habe dann quasi sowas wie, Für alle XP von X,
das ist meine Prädikat logische Formel. Und hier sage ich jetzt,
naja, dann gucke ich mir halt die Aussagen logischen Formeln an, P1,
P2, P3, P4, P5, P6 und die müssen alle wahr sein.
Und das Buzzword, was ich gesucht habe, ist über Führungslämmer. Wenn ihr hier mit einer Struktur rangeht,
wenn ihr sagt, A von FS1 genau dann,
wenn, dann kommt daraus genau dann,
wenn A und jetzt ist unterhalb dieses As,
haben wir immer so als Subindizis geschrieben,
steht da jetzt genau dieser ganze Kram hier,
dieses Y1 nach T-1, Y2 nach T-2,
Y3 nach T3 und so weiter,
von F-Stern muss eins sein.
Mit dem Überführungslämmer kommt er dann
genau dahin
Dass dann A von dem hier alles eins sein muss.
Und dann habt ihr schon. Also der Schritt da geht mit
dem Überführungslämmer und dann sieht man sofort, dass das gelten muss.
Und die intuitive Idee ist, sich zu überlegen,
wenn ich diese Formel hier prädikatenlogisch wahrmachen will,
diese Formel F, dann sagt diese Mantik mir,
ich muss für Y 1 bis Y K alle Elemente des Universums einsetzen können und das muss immer wahr sein.
Und die Aussagen logische Interpretation hier für das F-Stern mit den ganzen Substitutionen,
die sagt mir, da wird halt sukzessive für Y 1
bis Y K jedes Element des Universums eingesetzt.
Also genau das Gleiche wie das, was wir eben gemacht haben.
Und die Aussagen logische Formel, die rauskommt,
die muss immer wahr sein
Gucke ich mir alle außer logischen Formeln an,
die Rand rauskommt, die müssen immer wahr sein.
Das ist die Idee, wenn man den Satz hier beweisen will,
wenn er das euch im Schöning anguckt,
dann ist das auch nur so ein Dreizeiler oder Vierzeiler.
Und die eigentliche Arbeit, die liegt vorher darin,
dass man sagen kann, eine Formel ist erfüllbar,
genau dann, wenn ein Herbrandtmodell für sie existiert.
Da ist die eigentliche Arbeit drin,
weil das braucht man dann hier nämlich auch wieder.
Der geht dann relativ schnell. Der geht dann auch
schnell und dann kann man eben den Algorithmus machen.
Nochmal die Idee ist, ich starte mit einer Prädikaten
logischen Formel in Scholem-Form, geschlossen und in School in Form.
Und dann substituiere ich immer für die Variablen in der Matrix,
nach und nach alle Elemente des Herbon-Universums.
Und die Formel, die dann rauskommt, die nehme ich.
Das sind Formel F1 und dann substituiere ich die Variablen durch andere Elemente des Herbon-Universums
, kommt eine Formel F2 raus und so weiter.
Und dann gucke ich immer, ob die Formel,
die entsteht, ob die unerfüllbar ist.
Und wenn ich dann irgendwann mal finde, die unerfüllbar ist,
weiß ich, die ursprüngliche Formel ist unerfüllbar.
Problem dabei? Also warum ist das bei Weitem nicht
so cool wie in der Aussagenlogik
Ja, das ursprüngliche Problem ist nicht entscheidbar,
der Algorithmus terminiert nicht immer so rum.
Wenn ich hier immer wieder prüfe, ob das so unerfüllbar ist,
wenn die ursprüngliche Formel erfüllbar ist, dann wird das ja nie klappen.
Dann baue ich also sukzessive immer weiter F1, F2,
F3, F4, F5 und so weiter auf.
Gucke immer, ob das unerfüllbar ist, kommt immer raus,
nee, ist nicht unerfüllbar. Also baue ich mir hier
die nächste F6, F7 und so, gucke wieder,
ob das unerfüllbar ist und mache immer so weiter.
Und dann hört das aber leider nie auf.
Ist irgendwie doof, ne? Also das stört da
schon mal
Was kann ein von der, das stört einen bezüglich
der Effektivität, was stört einen bezüglich der Effizienz?
Vielleicht. Was könnte man da schöner machen? Ja. Zum Beispiel,
also genau da oben, ich produziere da unter Umständen,
keine Ahnung, F1 bis F1.000 und vielleicht brauche ich nur
F8.90 und F850 oder irgendwie so.
Also eigentlich brauche ich nur die beiden und ich produziere alles
auf dem Weg dahin. Das finde ich doof.
Was ist noch wahnsinnig ineffizient oder vermutlich? Nicht im Worst
Case, aber so im Allgemeinen,
was ist da noch ineffizient
Achso, nee, das machst du hoffentlich nicht.
Er meinte gerade, für jedes N wird wieder F1 plus FN aufgestellt.
Das bleibt man hoffentlich nicht. Man speichert hoffentlich die bis
N, die man hat und konstruiert nur den nächsten.
Sonst wäre auch das wahnsinnig ineffizient, ja. Nee,
das macht man hoffentlich nicht. Aber wenn ihr so beim fünften Punkt hier guckt,
was wir vorhin einmal ganz kurz in der Wiederholung hatten,
dieses Testen mit Wahrheitstafeln, das ist meistens nicht gerade der effizienteste Weg,
etwas in der Aussagenlogik zu machen.
Wenn ich das also hier jedes Mal wieder mit einer Wahrheitstafel mache,
hier steht jetzt auch nur zum Beispiel,
wenn ich das jedes Mal mit einer Wahrheitstafel mache,
Boah, das kann man sich mal überlegen.
Vielleicht mache ich das lieber mit Resolution oder sowas.
Dann habe ich zumindest da mal so einen Effizienzgewinn unter Umständen.
Okay, einmal hier zur Wiederholung. Das hier ist
ein Semi-Entscheidungsverfahren für das Unerfüllbarkeitsproblem und auch für das Gültigkeitsproblem.
Wenn ich das Gültigkeitsproblem lösen will, nehme ich die Formel,
negiere sie, dann weiß ich,
die negierte Formel müsste unerfüllbar sein und tu die da
rein.
Also die Tschüss
Wetter überleben. So, zweiter Versuch. So knapp
am Ende vorbeigeschifft, wo man ja auch sieht,
so hier hättest du auch nicht mehr mit weitergehen können.
Also, sieben... Nochmal, weiß ich nicht.
Deswegen steht da sieben ihr Entscheidungsverfahren. Genau,
das ist ein Algorithmus, der nicht immer terminiert,
deswegen ist das auch kein Algorithmus,
der das Problem entscheidet
Sondern eben nur so halb entscheidet, weil er quasi auf einer Hälfte der Instanzen
irgendwie gute Arbeit macht und auf der anderen nicht so.
Trotzdem sind die Verfahren meistens schon relativ gut, weil man,
wenn man jetzt aus praktischer Sicht da rangeht und man hat jetzt irgendwie eine Formel,
die man auf Gültigkeit prüfen will oder auf Wunderfüllbarkeit,
dann hat man meistens eine ungefähre Vorstellung davon,
wie lange das wohl dauern sollte.
Und wenn du da jetzt irgendwie der Meinung bist,
naja, die Formel,
die ist nur so und so groß und eigentlich müsste das auch noch
so und so lange mal berechnet sein und das ist dann noch nicht berechnet,
dann weißt du schon so, oh,
dann klappt das vielleicht gar nicht.
Ganz sicher kannst du dir da nicht sein,
das ist immer so ein bisschen,
aber dann kann man vielleicht noch mit anderen Techniken
da rangehen
Also für die beiden haben wir ein Semi-Entscheidungsverfahren, Verfahren,
das uns zumindest auf den Instanzen, die unerfüllbar sind,
dann wirklich mal sagt, jo, die Formel ist unerfüllbar,
aber bei erfüllbaren Instanzen dann eben nicht sagt,
dass die erfüllbar sind und wir können uns dann eben nicht hundertprozentig sicher sein,
kommt irgendwann nochmal das Ergebnis,
die Formel ist unerfüllbar oder bleibt das jetzt?
Also ist die Formel eigentlich erfüllbar? Was man noch machen kann,
ist, man kann systematisch alle endlichen Modelle durchgehen,
da fängt man mit Modellen der Größe 1 an,
mit Herborn-Modell der Größe 2, der große Strukturen,
Entschuldigung, Strukturen, der Größe 2, 3,
4 und so weiter und guckt immer,
ob das endliche Modell Formel erfüllt.
Dann hat man noch ein Semi-Entscheidungsverfahren für die erfüllbaren Formeln mit endlichen Modellen.
Aber das Problem bleiben dann eben die erfüllbaren,
aber nicht gültigen Formeln mit unendlichen Modellen. Da kommt man
irgendwie nicht ran. Und an alles wird man auch nicht rankommen,
weil wir ja vorher einmal kurz andiskutiert haben, Prädikatenlogik ist unentscheidbar.
Also wird man nicht für alle Arten von Formeln ein Entscheidungsverfahren haben.
Wenn ich hier jetzt auch noch ein Semi-Entscheidungsverfahren für hätte,
hätte ich viel Semi-Entscheidungsverfahren,
dann starte ich die alle in Parallelen und irgendwann muss eins ja sagen,
dann habe ich plötzlich ein Entscheidungsverfahren für alles.
Also das wird nicht funktionieren. Und da ist dann eben
auch irgendwie die Krux
Also es ist eben die Entscheidungsverfahren für eine relativ große Klasse von Formeln,
aber eine relativ große Klasse von vorne bleibt dann eben auch irgendwie verwehrt.
Ja, und jetzt kommt die Überleitung zur Prädikatenlogischen Resolution.
Dieser Algorithmus von Gilmore, den wir eben gesehen haben,
der greift ja quasi auf Unerfüllbarkeitstests in der Aussagenlogogik zurück.
Und jetzt könnte man als erstes machen hier, statt mit Wahrheitstafeln
zu arbeiten, arbeitet man mal mit Aussagen logischer Resolution.
Und daraus wird man dann eine Idee extrahieren,
dass man sagt, hey,
jetzt mache ich nicht Aussagenlogische Resolution,
sondern ich komme zu einer anderen Art von Resolution und die
werden wir dann prädikatenlogische Resolution nennen
Das wollen wir heute noch machen. Also erstmal die Idee,
wie man quasi aus dem Algorithmus von Gilmore, den sogenannten Grundresolutionsalgorithmus macht.
Im Grunde genommen steht da genau das Gleiche,
nur dass da, wo im fünften Schritt eben stand,
auf Unerfüllbarkeit mit Wahrheitstafel entsteht hier jetzt, macht das mit Resolution.
Und das Ganze ist so ein bisschen ausführlich aufgeschrieben hier mit
den Mengen M und so und wie man die Resolutionen da berechnet.
Aber im Grunde genommen läuft es darauf hinaus einfach zu sagen,
ich arbeite mit Resolution als mein Erfüllbarkeitstest
So, jetzt hier diese Bezeichnung Grundresolution, nochmal ein bisschen Begriffe,
die rührt daher, dass man so eine Substitution,
also wir hatten ja vorhin die Substitutionen,
die mit der Matrix F. Stern, diese ganzen Formeln konstruiert haben,
die dann in der Herbert-Expansion EF waren.
Und so eine Substitution, die alle freien Variablen in der Formel nimmt und
durch Variablen freie Therme ersetzt, die nennt man eine Grundsubstitution.
Und all diese Substitutionen bei EF, das waren alles Grundsubstitutionen,
da kommt dann eben die Bezeichnung Grundresolutionsalgorithmus her,
Und so eine Formel, die dabei entsteht,
wenn ich alle freien Variablen in F-Stern ersetze, durch eine Grundsubstitution,
die nenne ich die entstehende Formel, eine Grundinstanz von F-Stern.
Und sonst, wenn ich eben nicht alle freien Variablen durchgeschlossene Therme setze, nenne ich das nur eine Instanz. Und das,
was wir jetzt gleich machen werden, ist,
dass man quasi sagt, das ist ein bisschen doof,
sich immer gleich so weit festzulegen, dass man zu einer Formel,
also zu der Formel F-Sterne Grundinstanz macht, das stört einen,
warum, wenn ich P von X habe,
warum muss ich mich gleich festlegen auf P von A oder so,
kann ich das nicht zurückhaltender machen und an einigen Stellen
die Variablen stehen lassen
Quasi nicht weiterarbeite mit Grundinstanzen, sondern eben nur mit Instanzen.
Und dann später, wenn es nötig erscheint, da das dann erst mache.
Idee dabei ist, also übernächste Folie kommt das, da nochmal,
was jetzt der Grundresolutionsalgorithmus sagt, der Grund, also stopp,
genau, dann nach endlich vielen Schritt mit der Ausgabe unerfüllbar, wenn F unerfüllbar ist.
Und hat mal wieder das Problem, Semiteilungsverfahren. Und dann kann man eben sehen,
wenn man den ein-, zweimal durchspielt,
dass der genauso wie der ursprüngliche Algorithmus von Gilmore viel mehr Elemente macht als eigentlich nötig,
weil der auch immer mit Grundinstanzen arbeitet,
macht er eine Grundinstanz, guckt, ob da was geht,
dann macht er die nächste Grundinstanz und eigentlich braucht er das gar nicht machen.
Beispiel dafür, Wenn ich die Formel hier habe,
für alle XP von X und Nicht-P F von X.
Jetzt mache ich einmal die Substitution X durch A zu ersetzen. Dann kriege ich irgendwie,
also F-Stern ist ja der Teil ohne das für alle X,
also P von X und Nicht-P von F von X.
Jetzt hätte ich überall X durch A. Dann kriege ich das,
was hier links steht, die beiden Klauseln, kriege ich.
Wenn ich nur mit denen resolviere, dann komme ich
noch nicht weit, weil das irgendwie gar nicht funktioniert.
Dann ersetze ich als nächstes hier oben wieder in der Matrix
alle X durch F von A,
dann kriege ich die Dinger raus,
die hier rechts stehen
Das Links hier ist jetzt quasi mein F1 und die beiden Klauseln rechts,
die sind mein F2. Jetzt habe ich F1 und F2 und gucke,
ob ich das zu lernen Klausel resolvieren kann.
Da geht's, die mit der und dann bin ich fertig.
Und die Idee gleich wird sein, also kann man sich vorstellen,
dass das bei größeren Beispielen richtig lästig wird,
dass ich dann vielleicht erst mal irgendwie 20 Mal die ganze Formel hinschreibe,
immer mit anderen Grundsubstitutionen, um dann irgendwann mal die vier Grundsubstitutionen zu haben,
die ich eigentlich nur brauche.
Und die Idee ist, das wäre ja schön,
wenn ich hier einfach bei dem P von X Und ich da einfach hinschreiben könnte,
F von A und bei dem Nicht-P von F von X,
das X durch ein A ersetze,
also dass ich genau diese beiden Klauseln hier habe.
Und dann sage ich, und die resolviere ich jetzt.
Also losgehe mit den Klauseln P von X und nicht P von F von X.
Und da setze ich einmal X durch F von A,
einmal X durch A, resolviere, bin fertig.
Und da habe ich quasi die Variablen erst genau dann ersetzt,
wenn ich das machen wollte.
Dann, wenn es Sinn ergab und auch quasi zielführend.
Genau, also ich brauche hier gar nicht alles und da
möchte ich gerne hinkommen
Ja, steht das nochmal, was ich eben erzählt habe?
Also wenn man das müsste macht, dann merkt man,
dass man sich durch diese Grundsubstitution zu schnell einschränkt und eigentlich erst später substituieren möchte.
Und Ziel ist dann so eine zurückhaltende Art und Weise der Substitution zu machen,
also nicht mehr als gerade nötig ist, zu substituieren.
Und insbesondere nicht mehr als nötig geschlossene Therme einzuführen. Sprich,
nicht immer gleich mit Grundinstanzen zu arbeiten, sondern da,
wo es irgendwie Sinn macht, erstmal nur mit einer Instanz zu arbeiten.
Beispiel dafür, wenn ich die beiden Klauseln hier habe,
Also P von X und nicht Kuh von G von X
und hier habe ich die andere Klausel,
nicht PF von Y und ich möchte die beiden resolvieren,
dann wäre es schön,
wenn ich jetzt einfach hier auf der linken Seite X durch F von Y ersetze.
Dann habe ich hier P von F von Y und hier nicht P von F von Y.
Das sieht dann so aus wie in der Aussagenlogik,
einmal die atomare Formel positiv, einmal negativ, resolvieren.
Und dann kommt eben auf die Klausel,
da habe ich ja X durch F von Y ersetzt,
also bleibt übrig, nicht Kuh von G von F von Y, also das hier.
Und das Schöne, wenn ich das so mache, ist,
Ich musste mich jetzt vorher nicht festlegen, was ich hier für eine,
für eine Konstante oder sowas oder einen geschlossenen Thermen einsetzen wollte.
Ich habe das jetzt immer noch frei und kann später,
wenn ich jetzt sehe, oh, es wäre total praktisch,
wenn hier ein A steht oder so,
dann kann ich das noch machen.
Wenn ich mich hier jetzt schon hätte festlegen müssen und dann später irgendwann feststelle,
doof gelaufen, ich brauche was ganz anderes,
dann muss ich den ganzen Weg wieder zurückgehen und das ersetzen,
was stört.
Und das möchte man gerne verhindern.
Also hier irgendwie zurückhaltend substituieren, nicht gleich mit
geschlossenen Thermen arbeiten
Können wir aktuell nicht machen, dass hier ist unsere Wunschvorstellung,
da wollen wir hin mit solchen Substitutionen zu arbeiten.
Klappt noch nicht. Und genau das wird jetzt bei der Prädikaten
logischen Resolution eingeführt. Und ein Hilfsmittel, was man braucht,
ist der sogenannte Unifikationsalgorithmus, der uns quasi dabei hilft,
auf diese Art von Substitution zu kommen.
Dieses X nach F von Y. Da würde ich mir jetzt die beiden,
ich gucke mir die beiden Klauseln an,
ich komme irgendwie auf die Idee,
ich möchte gerne das P von X und das nicht P von F von Y miteinander resolvieren.
Die Idee ist quasi,
ich starte den Unifikationsalgorithmus und wenn der mir sagt,
ja, die beiden Literale sind unifizierbar,
lassen sich quasi vereinheitlichen,
dann kann ich
das machen
Und hier, wenn ich hier X durch F von Y ersetze,
dann sind die beiden Literale,
mal abgesehen von der Negation vorneweg, identisch.
Also vereinheitlicht dann. Und das macht der Unifikationsalgorithmus.
Und der macht das mit beliebig vielen Literalen. Das werden
wir auch gleich noch sehen, dass das praktisch ist.
Der kriegt quasi eine Menge von Literalen und versucht dann eine Substitution zu finden,
sodass wenn ich diese Substitution auf die Literale anwende,
überall das Gleiche rauskommt.
Unifikationsalgorithmus,
Vereinheitlichen von Literalen
So, bevor wir den genau definieren,
hier die Definition nochmal von dem Unifikator, so eine Substitution Siegma,
nennt man Unifikator, so eine Menge von Literalen,
wenn auf jedes Literal der Unifikator angewendet,
überall das Gleiche rauskommt.
Wenn also quasi der Unifikator auf diese Menge angewendet,
wenn die Menge dann nur noch die Mächtigkeit eins hat.
Also eine Substitution, die irgendwie Variablen durch Therme ersetzt,
wenn nicht auf jedes Literal dieser Menge an,
L1 bis LK,
und wenn überall das Gleiche rauskommt,
dann nenne ich das
ein Unifikator
Und da gibt es auch diesen Begriff allgemeinster Unifikator,
wenn quasi jeder andere Unifikator umgangssprachlich, wenn der mehr tut.
Also wenn, ist für jeden anderen Unifikator noch eine Substitution gibt,
sodass sich dieser andere Unifikator Sigma Strich ausdrücken lässt durch
allgemeinsten Unifikator Sigma und dann noch irgendwie eine weitere Substitution.
Also allgemein Sonifikator, der tut sozusagen am wenigsten,
das am wenigsten nötige, um die Literalmenge Großelter zu vereinheitlichen.
Okay, und jetzt ist halt das Ziel,
einen Algorithmus aufzustellen, der so einen allgemeinsten Unifikator-Sieg mal ermittelt,
wenn er denn existiert oder zu sagen, nee, geht nicht.
Das ist glücklicherweise jetzt auch mal entscheidbar,
so dafür kann man Algorithmus angeben, das tatsächlich tut.
Und zwar mit dem nachfolgenden Algorithmus. Ich stelle den Algorithmus
mal vor, dann machen wir noch ein Beispiel.
Man glaubt relativ schnell, dass der korrekt ist,
wenn man da nochmal genau den Beweis nachlesen will,
dann könnt ihr das im Buch von Schöning nachlesen.
Wir wollen es einmal machen, damit wir dann zur Prädikaten logischen Resolution kommen.
Der Algorithmus funktioniert wie folgt. Ich fange mit einer leeren Substitution
an, also am Anfang substituiere ich noch gar nichts.
Und solange jetzt die Substitution angewendet auf die Literalmenge L. noch nicht eins ist.
Sprich, solange das noch kein Unifikator ist, mache ich weiter.
Und irgendwo in der Weißschleife wird ein Abbruchbedingung sein für den Fall,
dass die gar nicht unifizierbar ist, diese Literalmenge Elben.
Und jetzt macht er folgendes, er wandert von links
nach rechts durch all diese Literale. Also ihr schreibt euch
quasi Literale untereinander und wandert von links nach rechts rüber.
Und sobald dann an einer Stelle ein Unterschied ist,
stoppt er erstmal. Also nehmen wir mal an,
ihr habt sowas wie P von X und P von F von A,
dann P ist bei beiden noch gleich,
öffnende Klammer ist bei beiden noch gleich und an der
dritten Stelle steht beim IMX und beim anderen F ist
ein Unterschied
Jetzt hört er erst mal auf und guckt sich an, was diesen Unterschied verursacht.
Und wenn, hier steht keines der beiden so.
Er guckt halt, sobald es mindestens zwei literale unterscheidenden,
stoppt er und hält die beiden Literale mal fest.
Und dann guckt er, ist eins davon eine Variable,
also mindestens eins davon. Beide ist auch okay,
aber mindestens eins davon muss eine Variable sein.
Wenn keins davon eine Variable ist, dann hört er mit nicht unifizierbar auf.
Wenn ihr zum Beispiel so das habt wie P von A und P von B,
von links nach rechts durchgehen,
dann habt ihr so einen Unterschied bei A,
B. Und dann sagt er, oh, das ist nicht unifizierbar,
weil ich bei so einer Substitution ja immer nur Variablen durch irgendwas ersetzen darf.
Wenn ich einen Unterschied durch zwei Konstanten habe,
kann ich nicht unifizieren
Wenn eins von beiden eine Variable ist, dann nennen wir
die mal X und das andere ist dann so ein Therm-Tee.
Jetzt guckt man nochmal, zweites Abbruchkriterium oder zweites negatives Abbruchkriterium,
wenn die Variable X jetzt in diesem Therm-Tee auch noch vorkommt,
dann sage ich auch nicht unifizierbar.
Warum? Dann habe ich so einen Fall wie P von
X und P von F von X.
Da gibt es diesen Unterschied an der einen Stelle,
steht X, an der anderen Stelle steht F von X.
Wenn ich jetzt X durch F von X ersetze,
dann habe ich die gleiche Situation,
die vorher nur ein bisschen weiter nach rechts verschoben.
Ist auch doof, sehen wir auch gleich
ein Beispiel
Oder? Ja, ich glaube, sie haben nicht mehr gespielt.
Und ansonsten, wenn das nicht der Fall ist,
dann füge ich an meine bisherige Substitution, die Substitution X nach Tee an,
also X durch den Therm Tee ersetzen und mach weiter.
Jetzt habe ich X durch den Therm Tee ersetzt,
jetzt steht also an beiden Stellen der Therm Tee,
dann ist das also schon mal gleich.
Dann lese ich weiter von links nach rechts,
bis ich wieder den nächsten Unterschied finde und mache dann wieder das,
was da in der Schleife steht.
Beispiel, wenn ich die Literalmenge habe, drei Literale,
P von XY, P von F von AG,
von XP, von F von Z,
G von FVZ
Geht man die alle drei von links nach rechts durch.
Erstes Symbol ist ein P, ist gleich. Zweites Symbol
öffnende Klammer ist gleich. Drittes Symbol. Bei dem einen steht ein X,
bei dem anderen beiden steht F von AF von Z.
Da ist also nur Unterschied. Jetzt nimmt man sich
zwei von denen, wo ein Unterschied ist.
Zum Beispiel hier das X und da das F von A.
Und guckt sich an, ist eins davon eine Variable.
Sieht man, X ist eine Variable.
Dann guckt man nochmal Tritt X in dem anderen Therm auf
. X tritt in F von A nicht auf.
Also alles gut, ich ersetze X durch F von A.
Also erster Unterschied zum Beispiel hier bei X und F
von A. Also nehme ich diese Substitution X nach F von
Oder wenn ich auch diesen Unterschied nehmen würde, hier X und F von Z,
dann könnte ich auch X durch FVZ ersetzen oder so.
Aber bleiben wir bei dem ersten Beispiel,
X wird durch F&A setzt, Substitutionen darauf angewendet, also überall,
wo X steht, wird jetzt F von A hingeschrieben.
Dann habe ich also hier aus dem X und F
von A gemacht und hier hinten aber auch.
Also überall, wo ich steht, F von A hin schreiben.
Jetzt liest man wieder von links nach rechts rüber und guckt,
wo ein Unterschied auftritt. Also P ist gut,
öffnet Klammer ist gut, F ist gut,
öffnet eine Klammer ist gut und jetzt hat man eine Stelle,
wo zweimal ein A steht, aber einmal ein Set,
also auch wieder ein Unterschied.
Also hier steht ein A Da steht nahe, und da steht ein Set.
Also als nächste Substitution, Z durch A ersetzen. Jetzt wird es schon kleiner,
weil ich jetzt, warum eigentlich, ach so hier,
wenn ich bei dem zweiten und dritten Literal,
wenn ich bei dem dritten Literal Z durch A ersetze,
dann ist das zweite und dritte Literal schon gleich.
Also in der Menge nur noch einmal hinschreiben, ist
schon kleiner geworden. Ist aber immer noch zwei Literale,
also sind wir immer noch nicht fertig,
weiter von links nach rechts lesen,
jetzt findet man hier so einen Unterschied Y und hier geh
von F von
Dann nochmal Y ersetzen durch Geh von F&A. Und dann sieht man,
dann ist hier das erste und zweite Literal identisch.
Jetzt hat man eine Menge mit nur noch einem Literal und dann ist man fertig.
Und dann ist eben der allgemeinste Unifikator gegeben durch die drei Substitutionen hintereinander ausgeführt. Das war jetzt ein positives Beispiel. Und die zwei negativen Beispiele,
die passieren können, sind, wenn Entweder hier bei dem zweiten Schritt,
wenn der jetzt nicht Y stehen würde,
sondern geh von F von B. Dann gehe ich von links nach rechts durch,
bis ich an der Stelle bin,
wo da das B steht und hier das A,
stelle ich fest, da ist ein Unterschied,
keins davon ist eine Variable, breche ich ab mit nicht unifizierbar.
Die eine Möglichkeit,
wo was passieren kann und die andere Möglichkeit,
wenn wieder in der zweiten, wieder beim zweiten Punkt hier,
wenn ihr nicht geh von F von A steht,
sondern geh von F von Y. Dann habe ich hier das Y,
hier G von F von Y und dann ist eben Y die Variable,
die tritt aber auch in dem Therm auf der rechten Seite auf,
dann sagt der Algorithmus auch,
nicht unifizierbar
Begründung kann man in dem Fall relativ schnell sich überlegen,
wenn ich hier Y dann ersetzen würde,
durchgehe von F von Y, dann mache ich das ja überall.
Dann habe ich hier stehen G von F von Y
und hier habe ich plötzlich stehen G von F,
von G von F, von Y. Das war so länger geworden.
Dann finde ich wieder an der gleichen, nicht an der gleichen Stelle,
aber ich finde den gleichen Unterschied weiter nach rechts verschoben.
Dann bin ich genauso klug wie vorher und dann müsste ich wieder
Y ersetzen durch G von F von Y. Funktioniert nicht.
Das ist irgendwie doof. Und das andere,
wenn keins davon Variable ist, dann funktioniert es halt einfach nicht,
weil diese Substitution hier eben nur Variablen durch irgendetwas ersetzen dürfen,
also Variablen durch Therme.
Deswegen diese beiden Abbruchbedingungen. Deswegen ist das Ding
auch korrekt
Ja, das ist der Substitutionsel, der Unifikationsalgorithmus.
Klar. Das wird an der ersten Stelle für den Prozess.
Ja, wir nennen jetzt, wie man erfahren ist.
Ja. Was ist denn die Umkehrfunktion von F&A?
Du bist ja rein syntaktisch. Ich könnte auch sagen,
da steht Dreieck, Kreis, Viereck.
Was ist denn da für die Umkehrfunktion?
Das macht ja gar keinen Sinn. Noch mehr,
das sind Tax
Du kommst immer gleich mit Semantik, das ist Sintax.
Da ist nichts mit Umkehrfunktion, da ist auch nicht mit F tut irgendwas.
Das ist ein purer Sintax. Kurz zusammengefasst, ja.
Weil der Unterschied wäre dann ja auch an der Stelle,
wo bei dem einem Literal A steht und bei dem anderen steht F von irgendwas.
Und dann ist das ungefähr genauso,
wie wenn da steht A und B. AF,
kann ich auch nicht A durch irgendwas ersetzen,
geht halt nicht.
Noch mehr
Und da das Pool sinntaktisch ist, ist das auch ein herrlich,
naja, will nicht sagen stupide, aber ein sehr geradliniges Verfahren.
Ich lese immer wieder von links nach rechts durch, gucke,
wo ich Unterschiede finde. Und wenn ich einen finde,
dann ersetze ich eine der Variablen, die ich da so finde durch das andere.
Mache ich weiter. Nur Fragen, was ist denn das zweite? So,
dann haben wir das ja gemacht,
weil wir ursprünglich diese Idee hier verfolgt hatten,
die hier, dass wir gesagt haben,
wenn ich in dieser Klausel so ein Literal P von X
habe und in dieser Klausel so ein Literal nicht P von F und Y,
Würde ich auf die jetzt diesen Unifikationsalgorithmus anwenden?
Dann würde mir der Unifikationsalgorithmus sagen, ersetz mal hier X
durch F von Y, dann hast du die beiden unifiziert.
Dann weiß ich, abhol, ich kann die unifizieren und dann kann ich Resolution machen. Das ist gleich so die Idee. Es gibt einmal ganz kurz diesen Kniff,
dass man sagen muss, hier, wo die negativ auftreten,
da schmeiße ich halt die Negation weg,
sonst würde der Unifikationsalgorithmus gleich am Anfang sagen,
das eine fängt mit nicht an, das andere nicht,
also nicht unifizierbar, den Kniff einmal wegzunehmen,
sieht das gleich in der Beschreibung noch einen Ticken komplizierter aus,
als es sein müsste,
aber hier ist einfach die Idee,
man ignoriert entweder das nicht auf der einen Seite
oder schreibt auf der anderen Seite ganz viele Nichte dazu und
dann startet man
den Unifikationsalgorithmus
So, genau, damit können wir jetzt diese zurückhaltende Resolution machen und dann eben prädikatenlogische Resolutionen formulieren.
Und das Schwierige ist jetzt halt zu formulieren, wie die Resolvente gebildet wird. In der Aussagenlogik haben wir gesagt,
ich habe zwei Klauseln, K1, K2,
in der Einklausel tritt das Literal L auf,
in der anderen Klausel tritt das Literal Kompliment von L auf,
dann schmeiße ich die beiden raus,
also aus der einen Klausel das Positive,
aus der anderen Klausel das Negative,
alles andere vereinige ich und dann habe ich meine neue Resolvente.
Das geht hier so ähnlich,
wird halt nur durch diese Solifikation verkompliziert,
sieht man schon,
Folie wird größer
Wie wird das gemacht? Er, K1-K2 sind prädikat,
logische Klauseln. Er soll gleich die Prädikaten logische Resolvente sein.
Und das macht man jetzt wie folgt. Der erste Schritt ist
im Grunde genommen auch wieder ein Hilfsschritt, damit man die Unifikation machen kann.
Im ersten Schritt nehme ich mir zwei Substitutionen,
S1 und S2, die benennen einfach nur Variablen um,
und zwar so, dass es eins,
wenn nicht auf die Klausel K1 an und es zwei auf die Klausel K2,
und dann sollen die keine gemeinsamen Variablen
mehr haben
Hintergrund ist, wenn ich in der Einklausel P von X
habe und in der anderen P von F von X oder halt
nicht P von F und X, dann möchte ich die unifizieren können.
Könnte ich aber nicht mit dem Monifikationsalgorithmus, weil der mir sagen würde,
X kann ich nicht durch F von X ersetzen. Das ist aber doof,
weil P von X und nicht P von F von X möchte ich gerne zur leeren Klausel resolvieren können,
weil kann man sich überlegen, wenn ich sowas habe wie für alle X,
P von X und nicht P von F und X,
das wird nicht klappen.
Dann sage ich nämlich einerseits, P von 1 soll gelten,
OP von 2 und P von 3 und P von 4 und so,
also die sollen alle gelten und andererseits P von F von
1 und F von 2 und F von 3 und so,
die sollen alle nicht gelten.
Das wird aber irgendwie nicht funktionieren.
Die können nicht alle gleichzeitig gelten und nicht gelten
Irgendwohin muss das FIA abbilden. Deswegen hier einmal die gemeinsamen,
die variablen Umbenennung, damit die halt unterschiedlich benannt sind.
Und jetzt kommt das, wie wir das auch aus der Aussagenlogik kennen.
Jetzt nehme ich mir aus der Einklausel K1S1,
ganz viele Literale raus, die, nehmen wir mal,
die sind jetzt alle positiv und aus K2S2,
ganz viele, die negativ sind.
Ja, aus L-I, also aus KNSS1 nehme ich mir L1 bis LM
raus und aus K2S2 nehme ich mir L1 Strich bis L-N Strich raus.
Und zwar so, dass die Menge,
wenn ich all diese Literale zusammenschmeiße, dass die unifizierbar ist.
Wobei ich eben, das war noch dieser Kniff,
den ich eben schon erzählt habe, eins davon,
also entweder hier L1 bis LM, die negiere ich alle noch.
Damit dann eben nicht die Literale positiv und negativ bilanzt sind,
sondern entweder sind sie jetzt alle positiv oder alle negativ.
Aber ich nehme mir halt aus K1S1 ganz viele Literale raus,
wo ich der Meinung bin, die kann ich unifizieren.
Zum Beispiel sowas wie P von X und P von Y
nehme ich mir aus der einen Klausel K1S1 raus.
Und aus K2S2 nehme ich mir dann viel reicht raus,
nicht P von F von X.
Und dann gucke ich, ob ich die drei unifizieren kann
Und wenn das geht, dann kann ich mit denen arbeiten,
nennen wir mal Sub hier den allgemeinsten Unifikator von denen.
Ja, dann ist die Aussage im Grunde genommen,
dass die eigentlich alle jetzt gleich gemacht werden können.
Und jetzt schmeiße ich die raus. Jetzt schmeiße ich
dieses L1 bis LM aus der einen Klausel raus und L1
Strich bis LN Strich aus der anderen.
Vereinige das, genauso wie ich das in der Haussage,
wo ich auch mache, und wende dann noch auf das,
was übrig bleibt, diesen allgemeinsten Unifikator an.
Das muss ich
auch immer machen
Also erstens eine Variablenumbenennung, okay, die macht man halt einfach,
dann literale auswählen, mit denen man arbeiten will,
so wie man das in der Aussagelogie auch gemacht hat.
Nur dass hier jetzt das Problem ist,
das muss nicht einfach nur an der einen Seite positiv in anderen negativ sein,
sondern es muss noch so sein, dass ich sage,
die kann ich unifizieren.
Man testet sich, dass ich die unifizieren kann und dann schmeiße ich
sie raus und wenn du diesen allgemeinsten Unifikator noch auf das,
was übrig geblieben ist, an.
Und dann habe ich meine Resolvente. Puh, Beispiel.
Die beiden klauseln da oben
Wenn ich K1, K2 da oben habe,
also P von F von X in K1,
Nicht-Kuh von Z in K1,
P von Z in K1. Und bei K2 jetzt nicht P von X und R
von geh von X von A. Jetzt kann man so draufgucken und dann stellt man erstmal fest,
naja,
mit dem Kuh werde ich nicht arbeiten können und mit dem R werde ich nicht arbeiten können.
Die treten nämlich auf der jeweils anderen Seite gar nicht auf.
Also wenn überhaupt, dann kann ich irgendwie mit dem P arbeiten.
Jetzt tritt hier links P immer positiv auf und hier
rechts bei K2 tritt P negativ auf.
Kann ich also versuchen, die zu unifizieren.
Ich muss mir mindestens eine aus K2 rausnehmen,
da nehme ich mir also nicht P von X raus und
mindestens eine aus K1. Ich kann aber auch versuchen,
mit allen
zu arbeiten
Und dann machen wir das auch mal in dem Fall.
In dem Fall nehme ich mir aus K1 beide,
also P von F&XP von Z und aus K2 nicht P von X.
Und wenn man jetzt den Unifikationsalgorithmus auf diese drei Literale anwenden würde,
dann würde man feststellen, das klappt nicht,
weil ich dann irgendwie hier auf das X stoße und hier auf das F von X,
da müsste ich also X durch F von X ersetzen und da wurde ja Monifikationsalgorithmus gesagt,
das darf man nicht.
Und deswegen gibt es diesen Schritt vorne weg,
dass man gesagt hat, okay, erstmal Variablenumbenennung,
also erstmal in K2 auf K2 und K1 so variablen Umbenennung
anwenden,
dass die keine gemeinsamen Variablen mehr haben
Dass das, was hier jetzt passiert,
im ersten Schritt bleibt auf der linken Seite alles so,
wie es ist und auf der rechten Seite ersetzen wir X eben durch U. Und jetzt wurde hier,
die beiden X wurden hier durch Uhr setzt,
sieht gut aus,
treten hier hier X und Z auf und auf der rechten Seite U,
das ist okay.
Jetzt kann ich den Unifikationsalgorithmus auf die drei Literale anwenden,
also auf P von F von XP von Z und nicht P von U.
Nicht PVU wird noch negiert oder so,
sodass das wieder P von U ergibt und dann kann ich
auf die drei den Unifikationsalgorithmus anwenden.
Dann kommt da eine Substitution raus, die mir dann sagt,
Z durch F von X ersetzen und U durch F
von X ersetzen
Jetzt würde man, jetzt, da ist es anders aufgeschrieben,
als eben die Reihenfolge in der Definition ist.
Jetzt würde man normalerweise die drei rausschmeißen. Das,
was übrig bleibt, vereinigen und darauf die Substitution nochmal anwenden.
Damit man hier aber einmal sehen kann,
dass da jetzt dreimal tatsächlich irgendwie das Gleiche rauskommt.
Ich habe das hier so gemacht,
dass ich erstmal auf beides den allgemeinsten Unifikator angewendet habe.
Dann sieht man hier, Z wird durch F von X ersetzt.
Also das P von Z wird P von F von X.
Das ist also nur noch einmal da. Nicht Kuh von Z
wird nicht Kuh von F von X. U tritt da nicht
auf und auf der rechten Seite wird U durch F von X ersetzt.
Und das Z tritt da nicht auf.
Dann kommt das raus
Und jetzt sieht man sehr schön, dass hier links eben
das Literal einmal positiv auftritt und hier rechts das Literal einmal negativ.
Und dann schmeißt man die noch raus mit diesem Resolutionsschritt,
vereinigt alles weitere und hat dann hier unten die Resolvente.
Und das Schöne ist eben, dass man sich jetzt hier
bei dem X für das Q von F von X gar nicht festgelegt hat.
Also vorher stand da ein Set, jetzt steht dann F von X,
das ist zwar schon irgendwie eine Änderung,
irgendwie hängt da jetzt noch die Funktion drin,
dieses Funktionssymbol,
aber mit dem X kann ich irgendwie später noch Dinge tun
und habe mich noch nicht gleich auf eine Grundinstanz
da festgelegt
Ja, und dann gibt es so bisher jetzt noch so zwei Kurzschreibweisen.
Entweder fässt man gleich zusammen hier diese variablen Umbenennung und die Substitution hier.
Wenn man das gleich zusammenfassen will, gleiches Beispiel, nur kürzer,
dann das hier sind die Ursprungsvariablen und dann schreibt man einfach hin für S1,
also die linke Seite, nichts tun für S2,
die rechte Seite X durch Y ersetzen.
Und das hier ist der allgemeinste Sonifikator. Und wenn
man das jetzt Schritt für Schritt auf beiden Seiten durchgeht,
also hier X durch X durch U ersetzen und dann U durch F von X,
dann kommt genau das Gleiche raus wie vorher und das,
was sie unten eben auch steht und auf der linken Seite auch.
Muss man nur einmal aufpassen,
dass man jetzt nicht auf beiden Seiten X durch Uhr setzt,
also dass sie das S1 auf die linke Seite bezieht und das S2 auf die rechte Seite.
Und wenn man noch mehr abkürzen will,
dann spart man sich sogar noch diese Umbenennung von S1 und S2.
Jetzt muss man sich aber bewusst machen,
dass man auf der rechten Seite die Xe,
X wird durch Uhr setzt und U durch F von X,
also wird im Grunde genommen X durch F von X ersetzt.
X zu U, U zu F von X,
also eigentlich X zu Ephonix.
Und auf der linken Seite wird Z durch F und X
ersetzt.
Dann kann man
das so zusammenfassen
Dass die kurzschreibweise die kompakteste Schreibweise,
da muss man sich aber bewusst machen, dass man,
dass hier solche Variablen Umbenennungen, dass die nur deswegen funktionieren,
weil man quasi vorher ja eigentlich noch umbenannt hat und dann den Unifikationsalgorithmus angewandt hat und das dann nochmal zusammengefasst hat.
Da muss man ein bisschen aufpassen, was man tut,
weil man da sonst manchmal Gefahr läuft,
wenn hier auf der linken Seite,
wenn hier nicht P von Z gestanden hätte,
sondern P von X. Da muss ich aufpassen,
dann kann ich die nicht einfach unifizieren,
weil dann steht hier ja P von X und hier P von F von X und die beiden lassen sich nicht unifizieren.
Das kriege ich auch nicht mit einer Variablen Umbenennung hin,
weil ich dann ja die beiden X
gleichzeitig umbenennen müsste
Deswegen muss man da an der Stelle ein bisschen aufpassen,
aber mit ein bisschen Übung kriegt man das gut hin.
Und wer sich daran stört, der macht es einfach hier
ganz ausführlich und dann ist man auf jeden Fall auf der sicheren Seite.
Wird halt nur vom Aufschreiben sehr viel länger.
Genau. Zweites Beispiel, ist das eigentlich das gleiche?
Genau. Gleiche Formel oder gleich die gleichen Klauseln,
aber jetzt nehmen wir aus der ersten Klausel K1 hier nicht beide Literale,
sondern wir entscheiden uns nur eins zu nehmen.
Wir nehmen nur das P von
Man muss ja nicht immer alles mitnehmen. Nehmen wir nur
das Bief und Set und dann sieht das irgendwie folgt aus,
dass man wieder zuerst die Variablen Umbenennung macht.
Dann hat man hier P von Z gewählt und darf P von U.
Die beiden unifizieren, also U durch Z ersetzen und dann resolvieren.
Also hier das P von Z rausschmeißen,
da das Nicht-P von Z rausschmeißen, alles andere zusammenfassen,
dann landet man hier.
Dann ist hier weiterhin P von F von X drin.
Dafür ist aber anders als eben dieses Kuh von Z
noch nicht so aufgebläht wie vorher.
Steht jetzt nicht Kuh von Z statt.
Was hatten wir eben nicht? Kuh von F von X
, glaube ich
Also das, damit ihr sehen könnt,
man kann halt mehrere unterschiedliche, man hat mehrere unterschiedliche Möglichkeiten,
literale aus den einzelnen Klauseln zu nehmen.
Ja, und die kann man jetzt auch wieder zusammenfassen,
entweder mit der, genau, da nur in der Schreibweise,
weil bei dem anderen Schritt gar nicht so viel passiert,
dass es jetzt direkt die Schreibweise einfach alles zusammenzufassen und direkt anzugeben.
Genau, und dann ist das Ziel, genauso wie eine Aussagenlogik,
auch zur Box zu kommen und dann,
wenn man zur Box kommt, kann man sagen,
okay,
die ursprüngliche Formel ist unerfüllbar
Und jetzt gibt es leider nicht diese Möglichkeit zu sagen,
naja, wenn ich nicht zur Box kommen kann,
dann muss die Formel erfüllbar sein,
weil man eben schon eine relativ kleine Formeln sogar konzipieren.
Die haben dann irgendwie nur zwei, drei,
vier Literale, wo man immer weiter Resolventen bilden kann,
wo man also unendlich viele Resolventen bilden kann und deswegen nicht so wie eine Aussagenlogik so einen Punkt hat,
wo man sagt,
ab dem ist Resthoch N von F das Gleiche wie Resthoch N plus 1 von F und so weiter.
Also dass das dann irgendwann abbricht. Das passiert hier halt
nicht zwingend und deswegen terminiert das eben auch nicht.
Wenn man unter Umständen immer weiter resolvieren kann.
Das ist das eine und genau, das zweite mit der Unifikation
habe ich eben schon gesagt, Nee, genau.
Okay. Ach so, genau. Und die muss in geschlossener School
in Form sein. Also so wie man gesagt hat,
in der Aussagenlogik muss die Formel in KNF sein,
in konjunktiver Normalform, muss die hier in geschlossener School in Form sein.
Und noch genauer, sie muss in Klausel-Normalform sein.
Also die Matrix muss in KNF sein.
Und davor stehen nur Altquantoren. Dann kann ich das machen.
Fragen dazu? Bestimmt
Also der Satz dazu,
den wollen wir jetzt nicht mehr ausführlich machen, aber der Satz,
wenn ich eine Aussage in School im Fort habe,
mit dieser Matrix im KNF,
dann ist die Formel eben genau dann unerfüllbar,
wenn ich die Box ableiten kann.
Und im Beweis wird sehr stark, deswegen kann man das hier nochmal anklingen lassen,
im Beweis wird sehr stark auf diese Grundresolution zurückgegriffen.
Das ist quasi im Beweis auf die Grundresolution zurückgegriffen wird.
Und dort wird ja darauf zurückgegriffen, dass die Aussagen logische Resolution korrekt und vollständig ist.
Und das wird hier eben benutzt. Und falls ihr den Beweis mal lest,
dann kann man da auch nochmal sehen,
wie wichtig halt diese Rolle der School im Form ist,
dass eben alles allquantifiziert sein muss und dass ich
keine freien Variablen haben will und so weiter.
Deswegen ist diese Herstellung der Normalform,
die wir letzte Woche ja ausführlich gemacht haben,
so wichtig
Sodass man eben keine Existenzkonturen haben will und all solche Sachen.
Fragen, ja. Genau, du kannst nur zeigen,
dass die, also wenn du mit dieser Prädikaten logischen Resolution
zur Box kommst, dann weißt du die Formel ist unerfüllbar.
Wenn du nicht zur Box kommst,
aber immer weitermachen kannst, dann kann es sein,
dass du entweder nur noch nicht zur Box gekommen bist oder
die Formel tatsächlich erfüllbar ist.
Und das weißt du halt nicht. Es gibt auch Fälle,
wo man nur endlich viele Resolventen bilden kann.
Da kann man dann auch mit Sicherheit sagen,
mehr geht nicht.
Also muss die Formel
erfüllbar sein
Aber es gibt eben auch diese Fälle, wo man immer
weitere Resolventen bilden kann und die treten halt leider schon relativ früh auf so.
Und da weiß man es dann halt nicht. Oder zumindest
nicht algorithmisch einfach. Sonst noch. Bei dem endlichen Universum
immer weiß, ob es erfüllbar ist. Du meinst,
ob man bei Formeln, die erfüllbar sind,
mit einem endlichen Universum, ob man das immer rauskriegt.
So rum. Ja, weil du im Grunde genommen die endlichen,
also wenn es für eine Formel ein endliches Modell gibt,
dann nehmen wir mal an, das hat 3.44088 Elemente.
So, dann fängst du halt an,
gehst alle Universen durch mit einem Element, mit zwei,
mit drei, mit vier und mit fünf und so weiter,
bist du bei diesem mit 3.498 bist.
Und dann kriegst du das. Also du musst halt mit Herbrand-Universen arbeiten,
weil du da dann ja diese gewisse Struktur immer drin hast und sagen kannst, okay,
ich gucke mir jetzt alle an bis zu dieser Länge und mit so und so vielen Elementen.
Und dann gehst du alle Möglichkeiten durch,
von mir aus noch die Predikatensymbole auszuwerten,
weil du dann ja auch, wenn du das Universum endlich isst,
gibt es nur endlich viele Möglichkeiten, die Predikatensymbole auszuwerten.
Die sind ja immer Teilmengen dieses Universums.
Und dann kommst du da hin. Also das wird kombinatorisch,
das heißt ein totaler Albtraum, aber Kann man machen.
Und man kann es auch cleverer machen als so.
Und dann ist das ein bisschen zugänglicher. Aber um das Allgemeine
führt halt kein Weg drumherum. Und das Problem ist halt auch da wieder,
du kannst halt nicht direkt sagen,
für diese Formel gibt es auf jeden Fall ein endliches Modell für dieses nicht.
Oder würde ja schon reichen,
wenn ich auf eine Formel drauf gucken könnte und wüsste,
algorithmisch, ich gucke mir alles an und kann ausrechnen,
wenn diese Formel überhaupt erfüllbar ist,
dann hat sie ja auch ein endliches.
Wenn ich sowas machen könnte,
wäre ich auch schon wieder ein Schritt weiter.
Das geht auch nicht
so richtig
Ich habe gemerkt, dass ich da welche... Ja,
da war gerade die, also die Frage ist,
wenn man jetzt längere Formeln hat,
ob es da irgendwelche Heuristiken gibt,
dass man quasi den Suchraum der Resolventen, die zur Verfügung stehen,
dass man das einschränken kann.
Das könnt ihr selbst beantworten. Gibt es das?
Also es könnt ihr selbst beantworten,
weil ihr da schon wisst
Weil ihr schon wissen solltet, könntet, müsstet. Ja,
wobei, wann ist die Klausur in acht Wochen,
also weil es in acht Wochen wissen können solltet?
Er sagt, nein, weil es unentscheidbar ist,
kramt mal so in eurem Wissen über Aussagelogik,
was hatten wir da so bei Resolutionen noch?
Was hatten wir da? Wir hatten Aussagen logische Resolution
und dann hatten wir, es war sogar auf dem Aufgabenzettel
Ja, PN, genau. PR-Resolution, N-Resolution.
Damit streckt man ja in den Suchraum schon bedeutend ein.
Dass man sagt, eine der beteiligten Klauseln darf nur positive Literale enthalten.
Und das kann man auch bei der Prädikatenlogik wieder machen,
also zeigen, dass P- und N-Resolution für die Prädikatenlogik auch wieder diesen Satz erfüllt,
also auch wieder korrekt und vollständig ist.
Und genau, damit kann man dann arbeiten. Aber es
ist auf jeden Fall deutlich komplizierter als in der Aussagenlogik,
weil man auch nicht mit diesen Identifikationen zu tun hat und so.
Aber man kann es halt schick implementieren,
da muss man sich nicht immer um das ganze Klein-Klein selbst kümmern,
das hat man implementiert
Und damit dann recht gut arbeiten. Und die Formeln,
wo du gerade meintest, die Formeln auf dem Aufgabenzettel seien schon groß,
die sind ja eigentlich gar nicht so groß.
Das sind ja so Beispiele, die man,
die dann für einen Menschen dann irgendwie noch recht zugänglich sind und wo ein bisschen mal was passiert so,
wenn man das jetzt irgendwie nur drei Klauseln sind,
dann passiert da nicht so viel,
also nimmt man mal vier oder fünf.
Aber richtig groß ist dann sowas wie,
ne, in der KI oder bei Datenbanken oder so,
wenn das dann irgendwie 100, 200 Klauseln hat oder so.
Und da will man dann eben auch,
dann will man sich ein Verfahren mit kleinen Beispielen überlegt haben,
dann Korrektheit und Vollständigkeitsbeweis gemacht haben, sodass man weiß,
ja, das Verfahren funktioniert tatsächlich immer, dann implementiert man das,
zeigt von seinem Algorithmus auch nochmal, dass der das Richtige tut.
Und dann kann man große Formeln bearbeiten,
dafür ist ein Computer da
Unter anderem. Und zum Chatten-Spielen, was ja noch so einfällt.
Noch Fragen. Okay. Also das Prädikat logischere Situation könnt
ihr auch noch mal ordentlich üben auf dem aktuellen Zettel.
Da sind da irgendwie drei Aufgaben zu und zwei zur Unifikation.
Und das haben wir heute und letztes Mal gesehen.
Wir haben hier irgendwie Formeln gesehen, die unendlich große Modelle benötigen.
Das war ganz am Anfang von dem Foliensatz und gesehen,
dass die Prädikaten-Logik unentscheidbar ist.
Einmal hier im Fettdruck, damit ihr euch das merkt.
Also den ersten Punkt schön zu wissen, aber kein Must-Have.
Den zweiten Punkt sollte man als Informatiker wissen.
Prädikaten-Logik. Unentscheidbar außer Logik entscheidbar
Also Aussagen, Louis, kann ich alles mit Brutforce machen, Prädikatenlogik nicht mehr.
Dann haben wir eben hier den dritten und vierten Punkt,
diese schönen Ideen von Herbrand und noch einigen anderen hier Gödel und Skolem gesehen,
wie man eben versucht,
die Semantik der Prädikatenlogik zugänglicher zu machen,
indem man quasi Sintax und Semantik gleichschaltet und dann so Verfahren versucht zu entwickeln,
dass man sagt,
naja gut,
dann weiß ich ja schon relativ viel über das Aussehen
meiner Strukturen und vielleicht kann ich das eben dann ausnutzen
Und von den beiden war dann eben der Übergang zu dieser Prädikaten
logischen Resolution und da hat man dann eben diesen Unifikationsalgorithmus gebraucht und das auch beides nochmal im Fettdruck,
weil wir das zwar jetzt nicht mit Beweisen unterfüttert haben,
wer das nachlesen möchte,
steht das im Schöning schön beschrieben drin.
Ist aber schon, das ist schon anspruchsvoll so,
aber kann man gut da nachlesen, aber anwenden solltet ihr das können,
dass ihr mal so ein,
zwei Mal so einen Unifikationsalgorithmus angewandelt habt und auch diese Prädikaten logische Resolution.
Genau, weil es dafür dann vielleicht auch mal so eine
kleine Klausuraufgabe irgendwie gibt,
ne?
Gut. Fragen? Dann sind wir am Ende des Logikteils quasi.
Können wir einmal wiederholen, was wir eigentlich gemacht haben im Logikteil,
bevor wir dann nächste Woche anfangen mit Turing-Maschinen und Zeit- und Platzkomplexität.
So Turing-Maschinen haben wir ja schon gehabt und auch so uns mit Entscheidbarkeit und Unschaltbarkeit beschäftigt.
Und was wir dann nächste Woche machen wollen, ist,
dass wir dann sagen, wenn ich jetzt,
also ich weiß jetzt Probleme, gar nicht effektiv lösbar sind,
also überhaupt nicht lösbar, unentscheidbare Probleme.
Und jetzt wollen wir nochmal den Finger drauflegen auf Probleme,
wo ich zwar sagen kann, ich kann die lösen,
vielleicht auch einfach mit so einem Brutforsting,
einmal irgendwie alles ausprobieren und dann kriege ich mein Ergebnis.
Aber dass ich dann sagen kann,
boah, das Brutforst dauert aber schon ganz schön lange,
also Beispiel Erfüllbarkeitsprobleme in der Aussagenlogik, zwei Hochenden,
Zeilen von der Wahrheitstafel aufmalen, ist für relativ kleine N schon relativ hässlich.
Und dass man dann versucht zu zeigen,
das geht auch gar nicht besser, dass man dann irgendwie sagt,
okay, es gibt gar keinen Algorithmus,
der das Problem irgendwie schnell löst.
Dann hat man so einen Begriff, dass man sagt,
effektiv geht es zwar,
also ich kann es machen,
aber von Effizienzbetrachtung geht es nicht
Aus praktischer Sicht kann ich es nicht machen.
Da wollen wir nächste Woche nochmal hin.
Mal kurz Logikteil wiederholen, so, was haben wir gemacht?
Aussagen, Logikprädikatenlogik. Erstmal so die zwei großen Logiken,
die wir gemacht haben. Und so die Unterpunkte,
die sich ähneln, Sintax haben wir bei beiden gemacht,
Semantik haben wir bei beiden gemacht.
Und dann haben wir eben gesagt, so Feuerbarkeit,
Äquivalenz und ja zwei semantische Begriffe, die jetzt Zusammenhänge herstellen zwischen Formeln.
Bei Prädikatenlogik habe ich es mal nur eingeklammert,
weil wir es da auch gemacht haben,
aber damit quasi die Folgebarkeits- und Äquivalenzbegriffe einfach aus der Aussagenlogik übertragen.
Aber da sollte man eben auch sagen können, naja,
gegeben zwei Prädikaten, logische Formeln,
was müsste ich tun,
wenn ich die auf Äquivalenz testen will
Und dann haben wir uns Normalformen bei beiden angeguckt,
also Normalformen hergestellt, die wir dann insbesondere eben beim Resolutionsverfahren gebraucht haben.
Und das Resolutionsverfahren hat uns eben geholfen, Volkerbarkeit zu bestimmen,
Äquivalenz zu bestimmen, unerfüllbare Formen zu ermitteln,
Tautologien zu ermitteln, was können wir damit alles machen.
Und in der Aussagenlogik hatten wir hier noch die Hornformeln als Einschub,
wo man gesagt hat, naja,
wenn ich irgendwie an diese erfüllbare Unerfüllbarkeitssache ran will,
kann ich auch so daran gehen,
dass ich in der Aussagenlogik die Logik einschränke.
Das könnte man in der Prädikatenlogik auch machen,
haben wir da jetzt aber als extra Kapitel nicht gehabt.
Da könnte man jetzt auch sagen, hey, ich schränke mich irgendwie ein,
Ich erlaube vielleicht nur zwei Quanturen statt beliebig viele.
Dann habe ich eine spezielle Teillogik der Prädikatenlogik.
Kann ich da vielleicht irgendwie Dinge ausrechnen?
Oder ich erlaube nur ein spezielles Universum oder irgendwie solche Sachen.
Das haben wir gemacht. So im Einzelnen einmal die ganzen Begriffe,
dass man die nochmal so Revue passieren lassen kann.
Außer an Logik sinntags. Strukturbäume, das war quasi,
statt die Form linear aufzuschreiben, die Formel in so einem Baum aufzumalen.
Und dann strukturelle Induktionen, um Beweise so zu führen,
die dann oder Eigenschaften zu zeigen,
die für alle Formeln der Aussagenlogik
gelten müssen
Und strukturelle Rekursion, um irgendwie Form, um Funktionen für die Formeln einzuführen.
Als Beispiel haben wir da Grad und Tiefe genommen.
Also Grad hat irgendwie die jungen Touren gezählt und Tiefe irgendwie
die Jungtoren auf dem längsten Ast im Strukturbaum. Semantik,
mit den ganzen Wahrheitstafeln arbeiten können und irgendwie mit Auswertungen arbeiten
können und auch mal mit so Formulierungen arbeiten zu können,
wie sei A, eine Belegung,
die F wahrmacht und was gilt denn jetzt und so weiter,
dass man sowas ein bisschen übt.
Und dann eben diese ganzen Begriffe, eine erfüllende Belegung,
falsifizierende Modell und so weiter und so weiter und hier unten die Notation,
A, ist Modell für F,
A, ist kein Modell für F,
F ist eine Tautologie,
F ist eine Kontradition
Jo, außer logisches Mantik, jetzt kommen Folgebarkeit und Äquivalenz.
Da haben wir die Begriffe erstmal definiert. Äquivalenz,
wenn der Wahrheitswerteverlauf komplett übereinstimmt, Volkerbarkeit,
geh folgt aus F. Genau, dann werden jede strukturell jede Belegung,
die Modell für FSA Modell für G ist.
Und dann haben wir eben einen Nachweis mit und ohne Wahrheitstafeln
gemacht. Also ohne geht dann immer mit so Formulierungen,
sei a ein Modell für und dann ist es auch ein Modell für die andere Seite.
Und eben Gegenbeispiele, dass man irgendwie zeigen kann,
dass das nicht gilt.
Das haben wir so bei Folgebarkeit und Äquivalenz gemacht
Und dann nächster Schritt mit den Normalformen, KNF&DNF,
da hat man vorher noch diese Begriffe Literalklausel, duale Klausel gebraucht,
DNFKNF dann hergestellt und da eben entweder die Herstellung durch Äquivalenzumformung oder mit Wahrheitstafeln.
Genau. Und das mit basierend auf dem Ersetzbarkeitstheorien,
da steht da vor allem nochmal,
damit man sich einmal bewusst machen kann,
was eigentlich dahintersteht,
dass man solche Äquivalenzumformungen machen kann und weil das eben auch das Beispiel ist,
was wir hatten,
um eine strukturelle Induktion mal zu machen und mit der mal
was Sinnvolles zu beweisen
Genau, und dann haben wir, dann hatten wir so,
ne, Syntaxemantik zusammen und dann haben wir uns,
haben wir diese Berechnung von Erfüllbarkeit oder Unerfüllbarkeit so ins Zentrum
gerückt und vor allem eben das effizient zu machen,
dass wir das machen können, wussten wir,
war jetzt Tafel aufstellen fertig, aber wir wollten es auch effizient machen.
Und da haben wir dann einmal, wie gesagt, diese,
kein Exkurs, aber diesen anderen Pfad mal verfolgt und uns Hornformeln eingeguckt,
angeguckt, die eben eine Einschränkung der Aussagenlogik sind.
Und das Schöne ist eben, es ist zwar eine Einschränkung,
man kann damit aber relativ viel machen, zum Beispiel basiert Prolog da drauf,
was ja schon eine recht umfangreiche Programmiersprache ist und da hat man eben so einen sehr effizienten Erfüllbarkeits- beziehungsweise Unerfüllbarkeitstest mit diesem Markierungsalgorithmus.
Und das andere, wenn man jetzt die Logik nicht einschränken will,
sondern wenn man die so belassen will,
wie sie ist, dass es dann eben diese Resolution,
die steht ja nur in Klammern spezielles Ableitungsverfahren,
das andere Ableitungsverfahren haben wir uns gar nicht angeguckt,
aber es ist eben kein semantisches Verfahren,
sondern Resolution ist immer eins.
Das sind taktisch arbeitet und eben einfach ein Ableitungsverfahren ist.
Und hier stehen sie auch nochmal, die Verfeinerung per Resolution,
N-Resolution, Einheitsresolution hatten wir auch, da konnte man ja aber sehen,
dass sie nicht vollständig ist.
Korrekt, ja, bin ich vollständig
Genau, und das hat die Aussagelogik dann abgeschlossen.
Also Syntaxemantik, Normalform, Resolution ist so das große Thema,
dann noch so Hornformeln einmal als Abzweigung. Genau,
und das Ähnliche dann noch mal in der Prädikatenlogik,
auch da Syntax, Syntax natürlich viel aufwendiger,
weil man noch die ganzen anderen Dinge hat,
die man in der Aussage, glaube ich, nicht hatte.
Und dann eben der Formelaufbau viel komplexer ist und man sich
auch bei dem variablen Gedanken machen muss,
sind die jetzt gebunden, sind die frei und so weiter.
Und dann konnte man da auch strukturelle Induktion und strukturelle Rekursion
machen. Könnte man hier jetzt einklammern,
weil wir das nicht so speziell gemacht haben,
aber dass man weiß,
könnte man da prinzipiell
auch machen
Aber die könnte man jetzt auch mal einklammern da.
Dann Semantik, auch deutlich komplexer, insbesondere wegen diesen X-Varianten,
die man eben für die Auswertung von Quantoren gebraucht hat.
Und sonst weitere semantische Begriffe, insbesondere Vollgabarkeit und Äquivalenz,
wie in der Aussagenlogik auch.
Und auch diese ganzen Sachen wie Modellsein für Tautologie sein,
Kontralektion sein, Kontingent sein und so,
alles wie in der Aussagenlogik definiert.
Aber der Schwerpunkt hier eben darauf,
wie ich eine komplexe Formel auswerte und wie ich mit
den X-Varianten arbeite
Genau, dann Folgebarkeit, Äquivalenz und so weiter.
Und dann auch da Ersetzbarkeitstheorien gemacht und dann versucht, Normalformen herzustellen.
Und da gab es eben diese zwei Unterschiede basierend auf Äquivalenz oder basierend auf Erfüllbarkeitsequivalenz.
Und Äquivalenz, erstmal hat man die Aussagen logischen übertragen.
Dann hat man mit gebundener Umbenennung durfte man gebundene Variablen umbenennen
und ist damit auch zu äquivalenten Formeln gekommen.
Und dann diese Premix-Fonds mit Quanturen nach vorne ziehen.
Und insbesondere für die hat man eben diese neuen Äquivalenzen gebraucht,
die man durch Quanturen kriegt. Und auch nicht nur die neuen Äquivalenzen sind in dem Fall spannend,
sondern auch die Nicht-Äquivalenzen, dass man sich mal überlegt,
dass irgendwie für alle X existierten Y eine andere Aussage ist,
als es existierten Y für alle X,
ohne dass man semantisch sieht,
dass das irgendwie was anderes ist
Genau, und dann auf Erfüllbarkeitsäquivalenz basierend, also nicht mehr,
dass sie den komplett gleichen Wahrheitswerteverlauf haben, aber dass man zumindest weiß,
F ist erfüllbar, genau dann, wenn geherfüllbar ist.
Und F ist unerfüllbar, genau, wenn G unerfüllbar ist,
das reicht dann eben insbesondere über sowas wie dem Resolutionsverfahren nachher.
Und da ist man eben, wenn man jetzt freie Variablen noch bindet,
die hat man dadurch Existenzquanturen gebunden und dann schoole Misierung,
um Existenzkonturen komplett wegzukriegen und zuletzt Klausur-Normalform, Matrix in KNF bringen.
Jo, letzter Punkt, Resolution, den weiß man,
Aussagelogik ist unentscheidbar, also gibt es kein richtig schönes Entscheidungsverfahren,
aber immerhin ein Semi-Entscheidungsverfahren Und genau, das haben wir ja heute noch gemacht,
dass man da so mit Unifikationsalgorithmus arbeitet und Resolventen dann bilden kann.
Und dann auch wieder der Resolutionssatz gilt, sprich,
wenn ich zur Box komme, weiß ich die Formel ist unerfüllbar.
Super, das war der Logikteil. Ausgelassen haben wir,
Endlichkeitssatz haben wir nur kurz erwähnt und dann im Grunde genommen die,
was im Schöning so die Kapitel 2, 3,
2, 4, 2, 5 sind in der Prädikatenlogik,
die haben wir so vogelperspektivartig behandelt,
damit ihr halt so ein bisschen mitkriegt,
dass es da komplizierter wird,
aber dass man da eben auch spannende Sachen machen kann und
dass ihr mal gesehen habt,
wie eben dieses Prädikatenlogische Resolutionsverfahren funktioniert
Noch Fragen. Bitte? Nein. Fragen. Erstens,
zweitens, ganz okay. Dann, falls ihr noch
Lust habt, habe ich noch ganz viele Fragen.
Das heißt Folie 12 von 32, da kommen jetzt noch ganz viele Fragen.
Die erste ist auch ganz einfach, hoffe ich.
Bei der ersten erwarte ich so eine Trefferquote von 90 Prozent.
95 Prozent? Kann man machen
Was ist in der Formel der Hauptoperator? Das sieht man
gar nicht mehr, ne? Sehr gut. Viertens,
also das und, irgendwie die äußeren Klammern fehlen
Und dann guckt man eben, was ist der Operator,
der zuletzt angewendet wurde und das ist eben das und,
das unverknüpft die Teilformel links und die Teilformel rechts.
Ja, da wird schon. Es wird schon fieser,
was ist die korrekte Formulierung der Induktionsannahme,
wenn man jetzt einen strukturellen Induktionsbeweis machen will?
Das ist die korrekte Formulierung
Genau, das zweite. F&G soll nicht einfach irgendwelche Formeln
sein, wie bei der ersten, das ist doof.
Und drittens und viertens sagen im Grunde genommen das Gleiche aus,
nämlich dass die Behauptung für alle Formeln gelten soll.
Wenn ihr aber annehmt, dass eure Behauptung für alle Formeln gilt,
dann müsst ihr nichts mehr machen. Also wenn ihr sagt,
so gelte die Behauptung für alle Formeln und dann legt ihr los und dann sagt ihr,
oh, guck mal, so gilt sie auch für F und G.
Dann sagt man, ja, hast du auch schon angenommen.
So, da muss man irgendwie nichts mehr machen.
Also nehmt ihr nur an, dass die Formel,
dass die Behauptung für zwei Formeln F und G gilt.
Und dann zeigt ihr, dann gilt sie auch für F und G, F oder G, F impliziert G und so weiter. Und wenn man halt sich ein bisschen unsicher ist,
was man jetzt überhaupt benutzen darf,
dann schreibt man halt hin, seien F und G-Formeln,
für die die Behauptung gilt und sagt, das heißt,
und dann schreibt man hin, was jetzt gelten muss,
wenn für F und G die Behauptung gilt und nimmt mir mal an,
man will sowas zeigen wie Tiefe von X, kleiner gleich,
Grad von X, dann weiß man eben, okay,
wenn die Behauptung fair von G gilt,
heißt das Tiefe von F. Kleiner gleich Grad von F und Tiefe von G. Kleiner gleich Grad von G.
Und dann weiß man, dann steht es da,
womit man arbeiten darf, das hilft oft. Ganz typische Klausuraufgaben,
sieben Formeln gegeben oder so und dann T ist Tautologie, K-Kontralektion,
F-Kontingent und dann sind da immer so kleinere Formeln gegeben und man soll dann eben sagen,
ist die Formel jetzt irgendwie Tautologie,
Kontralektion und so weiter.
T steht immer für Tautologie,
K für Kontralektion und F-Kontingent
Musik Ja, kannst du,
ich glaube, du kannst ein paar Mal neu drücken
Genau. Tautologie oder auch allgemeingültig. Das ist ja
der gleiche Begriff. Also die Formel ist immer wahr.
Wenn ich T und K habe, Cars eine Kontraliktion,
dann ist T und K auch eine Kontradiktion, also auch immer falsch.
Und wenn ich in der Implikation die Prämisse falsch mache,
dann ist die ganze Implikation immer wahr, also eine Tautologie.
Eins und drei ist hier, beides richtig. Erfüllbar könnte man
auch noch sagen, aber das wäre nicht ganz hinreichend,
aber in der, das wäre auch eine richtige Aussage,
aber zwei,
fünf ist falsch und sechs
gibt auch keine Punkte
1 und 3 ist super und 4 geht noch so in die richtige Richtung.
In der Klausur würde dann noch so einschränken, so ein Satz stehen,
dass die keine, also dass diese ganzen Formen TK&F, dass die keine Aussagensymbole gemeinsam haben. Ansonsten,
wenn ich zum Beispiel sage, sein F- und G-Kontingent,
was ist jetzt F- oder Nicht-G,
dann würde man zuerst denken, naja gut,
wenn die Kontingent sind, ist auch F- oder Nicht-G-Kontingent,
wenn die aber Aussagen sowohl gemeinsam haben können,
dann können ja F- und G beide A sein,
dann steht da A oder Nicht A,
das ist eine Tautologie, dann ist das nicht mehr Kontingent.
Deswegen müssen die eigentlich auch noch alle nichts gemeinsam haben,
damit man die Aussagen schön machen kann.
Ähnliche Frage
Tee-Tautologie KK-Kontradiktion F-Kontingent. Also Tee braucht man
gar nicht mehr,
die Tautologie
Kontingent, wer begründet das mal?
Gib mir mal eine Belegung, die das
zu falsch auswertet
Warte. Machen wir das, was du zuerst gesagt hast.
Also K, die Kontraditionen nehmen wir weg,
weil K oder Nicht-F ist ja das Gleiche wie nicht F.
Da gehe ich mit. Jetzt steht also F impliziert nicht
F. Und jetzt nehmen wir nochmal diese Umformung, A impliziert
B ist ja nicht A oder B. Dann steht da also
F impliziert nicht F. Das wird also nicht F oder warte
. Nicht F oder nicht F. Genau. Ja genau,
dann haben wir einfach nicht F. Also können wir das zu Null oder Eins machen.
Richtig? Okay. Warum, warte, das gefällt mir
Ich habe mir da was anderes bei gedacht. Ah,
ja, doch, alles gut. Wäre eben schon so,
wie ich einen Knoten im Kopf hatte,
den könnte das jetzt ein bisschen überfordern.
Es sind überall so viele Nullen und Einsen
... Bei F überall eine Eins, wo G eine hat.
Genau, also folgt F aus G,
also G-Folgerungszeichen F. Also immer wenn G zu 1 ausgewertet wird,
soll auch F zu 1 ausgewertet werden.
Das heißt, F muss überall eine Eins haben,
wo G eine hat
Vielleicht auch noch an anderen Stellen, aber das ist egal.
Okay, das ist gut. Also drittens ist es richtig.
Und zweitens, was niemand gedrückt hat, stimmt das nicht auch?
Zweitens wäre auch richtig, ne? Er folgt ja aus
G. Das heißt, wenn F irgendwo eine Null hat,
darf jeder keine Eins haben, musste also auch eine Null haben.
Das könnte man auch nehmen. Das ist nicht so die schöne Definition.
Also drittens ist die Definition, drittens ist super.
Zweitens wäre aber auch noch, also zweitens würde er auch stimmen.
Bei G überall eine Eins, überall eine Null,
wo F eine hat. Wenn F irgendwo eine Null hat,
folgt F aus G, dann muss jeder auch eine Null haben,
weil wenn jeder eine Eins hat, ja genau, also zweitens und drittens.
Aber drittens ist das Schöne, ne?
Also drittens ist gut
Wenn, äh, wenn sowas irgendwie kommt,
dann einmal kurz Wahrheitshafel machen, sich klar machen,
wo die Einsen stehen müssen und dann kann man das beantworten,
sonst kriegt man da, glaube ich,
echt einen Knoten im Kopf.
Richtig oder falsch? Ja,
das geht schnell
Falsch ist richtig. Zweitens ist das richtig.
Die nicht ganz exakte Begründung wäre zu sagen,
da hat wohl jemand versucht, das Distributivgesetz anzuwenden,
da hat es aber falsch gemacht,
weil beim Distributivgesetz haben wir A oder B und A oder C.
So, das wäre das Distributivgesetz. Das als Begründung ist nicht so richtig schick,
weil es könnte ja auch sein, dass das trotzdem gilt,
nur dass wir das nicht als Distributivgesetz genommen haben
Also wenn man richtig zeigen will, dass es falsch ist,
dann gibt man noch eine Belegung an, die das falsch macht.
Also die zeigt, dass die Äquivalenz nicht gilt.
Und hier auf der rechten Seite, die rechte Seite wird ja nur wahr,
wenn A und ein weiteres Aussagensymbol wahrgemacht wird.
Also mindestens ein weiteres. Entweder muss A und B
wahr sein oder A und C oder halt alle drei.
Und hier auf der linken Seite reicht es aber, wenn A wahr ist.
Also wenn ich A zu eins auswerte und B und C
zu null, dann habe ich etwas,
was die linke Seite warm macht, die rechte aber nicht.
Also keine Äquivalenz. Es gibt auch noch weitere Beispiele,
aber das ist eins
Weiteres Faktenwissen, was würde man da machen?
Kann ja nochmal so im Kopf Revue passieren lassen,
was man bei einer DNF,
das war diese Oder-Verknüpfung von den Dingern,
die mit unverknüpft sind
Drittens ist richtig. Das ist so ein Ding,
das muss ich mir jedes Mal neu überlegen.
Also aus irgendwelchen Gründen will das sonst nicht in meinen Kopf rein.
Aber die Überlegung ist, eine DNF hat was mit Oder-Verknüpfung
zu tun und bei Oder-Verknüpfung pflanzen sich die Einsen quasi fort.
Also wenn ich mir eine Zeile angucke, die zu eins ausgewertet wird,
mir dafür die duale Klauselmache, die genau passt,
die genau an der Stelle eine Eins hat und dann verknüpfe ich das für all diese Zeilen mit.
Oder dann kriege ich all die Zeilen raus,
wo das zu eins ausgewertet wird. Was ist da so
die Idee? Also man guckt sich die Zeilen an,
in denen F zu eins ausgewertet wird und dann macht
man weiter
Terminiert der Markierungsalgorithmus immer.
Hornfrommeln? Ja, bei Hornfrommeln angekommen.
I, wer hat denn drittens gedrückt? Drittens,
also ihr dürft alles drücken, aber nicht drittens,
drittens ist das so richtig, das ist so richtig eklig.
Ja, ich habe ein Markierungsalgum, das terminiert immer,
aber manchmal ist die Ausgabe falsch. Dann könnte man den
Algorithmus nehmen und wegschmeißen. Also das ist das nicht.
Das ist zum Beispiel bei keinem Algorithmus, den wir gemacht haben,
so könnt ihr euch so merken und auch bei Algorithmen,
die man in der Informatik üblicherweise behandelt, nicht,
weil man mit einer fehlerhaften Ausgabe können wir überhaupt nichts anfangen.
Auch randomisierte Algorithmen zum Beispiel,
die gehen vielleicht nochmal so in die Richtung,
dass sie bei irgendwas sagen, weiß ich nicht.
Aber ein falsches Ergebnis zu liefern ist richtig blöd.
Das hilft irgendwie
gar nicht
Allein analysierten könnte man da sogar noch so Tweeks machen,
aber so üblicherweise ist das blöd. Ja,
aber manchmal hilft die Ausgabe nicht, dass wir so dieses Verfahren,
wenn er manchmal vielleicht sagen würde, weiß ich nicht,
keine Ahnung, so.
Aber der ist ja sehr deterministisch. Also entweder wird er
ein gutes Ergebnis liefern oder irgendwie nicht so.
Und der terminiert immer, der hat ja immer weiter
Aussagensymbole markiert, bis nichts Neues mehr zu markieren ist.
Es gibt nur endlich viele zu markieren,
also muss er nach endlich vielen Schritten aufhören.
Und dann, ja, die Ausgabe ist glücklicherweise immer korrekt.
Deswegen ist der ja so schön. Also die
mittlerweile nur noch kleine Mehrheit gewinnt noch
Auf... Ui, geh folgt aus F gilt genau dann,
wenn ich nichts falsch gemacht habe, ist nur eine davon richtig.
Es muss reichen, ne? Alles klar.
Paul hat gesagt 15 Sekunden. 10, neun.
I don't know
Was ist denn F überhaupt? Sechstens. Ja,
sechstens, genau. Da auch noch hässlich geschrieben,
weil normalerweise habe ich es immer so geschrieben,
dass ich gesagt habe, F und Nicht-G.
Also geh folgt aus F. Es war genau dann,
wenn F impliziert gehende Tautologie ist. Das stimmt,
genau dann, wenn nicht F oder G eine Tautologie ist.
Und das ist eine Tautologie, also nicht F oder G ist eine Tautologie,
genau dann, wenn die Negation davon eine Kontradiktion ist,
also F und nicht G.
Und das haben wir gerade hier, ne?
F und nicht
Also. Ja, das wird langsam,
das ist zwar noch die Mehrheit, aber nicht mehr so,
also mehr Leute sagen was anderes, das ist schon...
Ja, hier, jetzt komm. Also, wenn ich
die beiden Klauseln habe und ich bastel mir eine resolvente,
wie sieht ihr aus?
Aussagen logische Resolution
Sechstens vielleicht auch noch für keins davon.
Weiß ich nicht oder keins davon
Ja. Sehr gut. Top. Genau, der, ne? Also ich,
das einzige Literal, was bei beiden überhaupt positiv und negativ auftritt,
ist das B, also hier B, da nicht B,
also das aus beiden rausschmeißen und den Rest zusammentun,
dann habe ich A, C, C,
nicht D, C brauche ich nicht zweimal hinschreiben,
dann habe ich A,
C nicht D.
Und das eben in einer. Hierbei erstens hätte ich
einfach alles miteinander vereinigt, da passiert nicht so viel.
Jetzt kommen noch die fiesen Prädikaten
logischen Fragen
Wann gilt das? Ah, die Mehrheit ist nicht mehr
, die Mehrheit schafft es nicht mehr. Hier,
E ist richtig, die 15 bei E sind richtig,
ne? Ich muss ja die Struktur auf das Tupel
AX anwenden
Die Struktur, ob es die Struktur auf A angewendet ist,
i von A, also bleibt schon nur noch hier,
viertens oder fünftens. Und die Struktur auf X angewendet,
das ist gerade die Struktur, die X auf D abbildet.
Also kommt da IAB raus und da muss ich gucken,
ist das in i von P drin.
Also der. Zu der... Nee, du willst ja,
also die Folgebarkeit gilt, wenn F impliziert gehende Tautologie ist.
Also erst das Modellierungszeichen dann
F impliziert
Das ist eine Tautologie genau dann, wenn nicht F oder
G eine Tautologie ist? Nicht F oder G? Und
wenn du das negierst, das muss eine Kontradiktion sein.
Und nicht F oder G negiert, dem Morgen und doppelte Integration.
Also nicht Nicht F und nicht G. Und nicht nicht FSF,
also F und Nicht G. Genau.
Bitte? Wegen des genau dann Vens.
Das hier fordert mehr. Also wenn das gilt,
dann gilt auch die Folgebarkeit, das stimmt.
Aber wenn die Folgebarkeit stimmt,
muss nicht die Equalenz gelten
So, genau. Wir sind irgendwie out of time,
ne? Ich gehe noch einmal kurz die letzten Fragen,
dass ihr die sehen könnt, einmal hier.
Da geht es um gebundene Umbenennung. Da wird ein freies Y gebunden.
Da wird es sehr kompliziert. Was stimmt? Skolemisierung,
Udifizierung und einmal was zur Prädikatenlogischen Resolventenbildung. Ich lasse die
mal alle drin, könnt ihr hier mit der Nachbereitung euch nochmal angucken.
Und bei den letzten steht nur noch die Behauptung,
müssen im Allgemeinen bei der Klausur eben dann auch irgendwie begründet werden.
Das sind jetzt auch nicht so typische Klausuraufgaben,
aber so von den Ideen her, dass man sehen kann, okay,
wenn man die ganzen Begriffe hat, dann kann man,
glaube ich, auch mit der Klausur gut umgehen.
Und genau, eine Sache noch ganz kurz, ganz schnell.
Morgen fällt wahrscheinlich aus, ich schreibe irgendwie in einer Stunde
oder so noch mal eine Stinemail.
Also guckt noch mal rein, damit ihr nicht morgen um
8 Uhr hier seid und ich nicht da bin.
Also morgen fällt wahrscheinlich aus, wir liegen aber gut im Tempo,
von daher ist das nicht so tragisch.
Und falls es stattfindet, dann machen wir so Turing-Maschinen-Wiederholung und
einen leichten Einstieg dann an diese Zeit- und Platzkomplexität und sonst
machen wir das ganz normal nächste Woche.
Okay,
Paul noch
Das war wieder ab und zu weiter.
Nach Beweis in der Fotos, wenn was? Naja,
wenn wir die Sachen bewiesen haben in der Fotos,
also wüsste ich jetzt nicht, kannst du mir das Beispiel genauer nennen?
Also normalerweise sollen sie ja irgendwie begründen, warum,
wie sie zu ihrem Ergebnis gekommen sind.
Wenn das jetzt so Rechenaufgaben sind, wo sie irgendwie nur
zur Box bei der Resolution kommen sollen und sie kommen dahin.
Ja, okay, dann steht da halt nicht,
dass sie jetzt unerfüllbar ist, weil sie zur Box gekommen sind,
finde ich jetzt nicht so tragisch.
Aber bei den Okay. Normalerweise soll es begründet werden alles
. Okay, ihr geht schon alle, ne?