Überblick über die Aussagenlogik, Teil 1 - Goethe

Werbung
Überblick über die Aussagenlogik, Teil 1
Nick Pahlevan
[email protected]
Frankfurt am Main
April 2012
Dieser Vortrag wurde im Rahmen des Seminars Aktuelle Themen aus der
Wissensverarbeitung [WV-BS] im Sommersemester 2012 an der Johann Wolfgang Goethe
– Universität Frankfurt am Main von mir angefertigt und gehalten.
1
Inhaltsverzeichnis
1
Was ist Aussagenlogik?
2
Die Syntax der Aussagenlogik
3
Die Semantik der Aussagenlogik
4
Erfüllbarkeit, Widersprüchlichkeit und Tautologieeigenschaft von
Aussagenlogischen Formeln
5
Aussagenlogische Umformungen und Vereinfachungen
6
Negationsnormalform
7
Zusammenfassung
8
Quellen
2
1
Was ist Aussagenlogik?
Die Aussagenlogik hat ihre Ursprünge in der booleschen Algebra. Boole (1815-1864) führte
eine Algebra ein, deren Objekte als Wahrheitswerte mit den Werten wahr oder falsch belegt
wurden, um mittels logischen Verknüpfungen („und“, „oder“, und „nicht“) komplexe
Gleichungssysteme zu lösen. Dieses Prinzip lässt sich auf Aussagen erweitern, welche im Rahmen
der Aussagenlogik sprachliche Gebilde darstellen, die entweder wahr oder falsch sind und mittels
Junktoren zu komplexeren Aussagen verknüpft werden können. Aussagen, welche nicht aus
anderen Aussagen zusammengesetzt sind, werden atomare Aussagen genannt. Diese elementaren
Aussagen werden durch Aussagenvariablen repräsentiert, deren Elemente zusammen mit den
Wahrheitswerten als atomare Formeln bzw. Atome bezeichnet werden. Die atomaren Formeln
gehören zur Menge der aussagenlogischen Formeln (kurz Formeln genannt), welche wir näher
betrachten werden. Ziel dieses Vortrages ist es einen Überblick über diese und weitere wichtige
Elemente der Aussagenlogik zu bieten, welche insbesondere beim maschinengestützten Beweisen
eine wesentliche Rolle spielen. Dazu wird die funktionale Programmiersprache Ocaml (Objective
CAML) herangezogen, ein Abkömmling der Sprache Edinburgh ML, welche eigens entwickelt
wurde um Theorembeweiser zu schreiben. Der wesentliche Teil dieser Arbeit basiert auf den
Ausarbeitungen von John Harrison [1]. Zusätzlich wurde zur Abdeckung der wesentlichen
Definitionen das Vorlesungsskript von Nicole Schweikhardt herangezogen [2].
2
Die Syntax der Aussagenlogik
Ausdrücke der Aussagenlogik (aussagenlogische Formeln) werden formal durch die folgende
Grammatik in BNF (Backus-Naur-Form) gebildet:
Definition 2.1: Syntax einer aussagenlogischen Formel in EBNF
A :: = X | (A ˄ A) | (A ˅ A) | (¬A) | (A ⇒ A) | (A ⇔ A) | ⊤ | ⊥
wobei X: Nichtterminal für aussagenlogische Variablen
A : Nichtterminal für Aussagen
⊤ : logisches Wahr
⊥ : logisches Falsch
˄ : logisches und (Konjunktion)
˅ : logisches oder (Disjunktion)
¬ : Negation
⇒ : Implikation
⇔ : Biimplikation
3
Die erste Aufgabe ist es einen Datentypen in Ocaml zu definieren, der die abstrakte Syntax der
Aussagenlogik darstellt. Dazu wird die rekursive Definition der aussagenlogischen Formel
betrachtet und dem entsprechend ein Datentyp in Ocaml definiert (Abbildung 1). Diese rekursive
Typdefinition beinhaltet als Datenkonstruktoren die Konstanten True und False, die atomaren
Aussagen (Atom) vom Typ `a, die Junktoren (Not, And usw.) sowie zusätzlich Forall und
Exists zur Darstellung von Formeln in der Prädikatenlogik. Interessant ist, dass der Typ `a von
atomaren Aussagen zu einem Parameter der Definition des Typs von Formeln wird und somit als
Typvariable fungiert (parametrische Polymorphie). Dies geschieht, um später wiederholten
Aufwand bei der Logik erster Stufe zu vermeiden.
Boole benutzte in seiner Algebra übliche arithmetische Symbole um logische Verknüpfungen
darzustellen (z.b. „p+q“ für „p or q“). Um jedoch irreführende Schlüsse zu vermeiden (Regeln
der arithmetischen Operationen gelten nicht immer für die logischen Verknüpfungen), werden wir
darauf verzichten und die Standardsymbolik für Junktoren verwenden (Abbildung 2). Diese werden
durch abstrakte Syntaxkonstrukte in unseren Ocaml Programmen repräsentiert (welche auch eine
ASCII Annäherung unterstützen). Die Operatorrangfolge kann anhand der Position in der Tabelle
abgelesen werden (die Negation hat die höchste Priorität, während die Biimplikation die niedrigste
hat). Die binären Junktoren werden rechtsassoziativ ausgewertet.
4
Um diese Symbole in Programmen zu verarbeiten, ist eine automatische Parse- und Printfunktion
für unsere aussagenlogischen Formeln von Nöten. Auch hier ist der Typ der atomaren Aussagen
ein Parameter der Typdefinition. Bei der Typdefinition von parse_formula (Abbildung 3) fällt
auf, dass direkt ein Paar von Atomparsern benutzt wird. Dies geschieht um später in der Logik
erster Stufe mit speziellen Infix-Formeln wie x<y umgehen zu können.
Neben der Parsefunktion ist die Printfunktion von großer Bedeutung.
Die Funktion
print_qformula gibt eine Formel mit Anführungszeichen aus. Ihr Typ erwartet einen
primitiven Aussagenprinter und leitet daraus einen allgemeinen Printer für alle Formeltypen ab
(Abbildung 4).
Die Funktion print_propvar beschreibt eine einfache Funktion um Aussagenvariablen
auszugeben, mittels let print_prop_formula... wird der Printer zusätzlich eingestellt und
installiert (Abbildung 5).
5
Somit haben wir es geschafft, dass unsere aussagenlogischen Formeln automatisch geparst und
ausgegeben werden (Abbildung 6). Bei längeren Formeln wird automatisch ein passender
Zeilenumbruch eingefügt.
Um mit aussagenlogischen Formeln in Ocaml besser umgehen zu können, gibt es desweiteren
einige gebräuchliche Syntaxoperationen, deren Funktion wir kurz beschreiben (Abbildung 7).
Möchte man eine bestimmte atomare Aussage innerhalb einer Formel durch eine andere Aussage
ersetzen bietet sich die Erste der folgenden rekursiven Funktionen an (Abbildung 8). Onatoms f
fm wendet die Funktion f auf alle Atome der Formel fm an. Mittels der zweiten Funktion lässt
sich eine Binärfunktion über alle Atome einer Formel iteriereren . Die dritte Funktion liefert den
Satz aller innerhalb einer Formel benutzten Atome.
6
3
Die Semantik der Aussagenlogik
Die Bedeutung einer aussagenlogischen Formel nimmt immer einen der beiden Wahrheitswerte
true oder false an. Darauf lässt sich jedoch nur schließen, wenn man genau über die
Wahrheitswerte der atomaren Formeln innerhalb einer Formel bescheid weiß. Unter einer Belegung
oder Bewertung einer atomaren Formel versteht man die Zuordnung eines Wahrheitswertes.
Genauer handelt es sich um eine Abbildung der Menge von Atomen auf die Menge der
Wahrheitswerte als Funktion von Variablen nach Formeln. Wenn wir in Ocaml eine Formel p
sowie eine Belegung v gegeben haben, können wir auf den übergeordneten Wahrheitswert mittels
folgender rekursiver Funktion schließen (Abbildung 9).
Die logischen Verbindungen werden mittels dem in Ocaml eingebauten Typen bool realisiert.
Die Wahrheitstabelle gibt an, welche Wahrheitswerte eine Formel in Abhängigkeit ihrer
Subformeln annehmen kann (Abbildung 10).
7
Um für jede mögliche aussagenlogische Formel eine Wahrheitstabelle zu erhalten gehen wir wie
folgt vor (Abbildung 11). Wir definieren eine Funktion onallvaluations welche überprüft,
ob eine Funktion subfn den Wert true für alle möglichen Belegungen der Atome ats annimmt
und eine bereits existierende Belegung v für alle anderen Atome benutzt.
Durch sukzessive
Modifizierung von v und Umstellung jedes Atoms zu true und false, werden rekursiv alle
Belegungen durchsucht. Diese Funktion wird nun in der
verwendet, welche
Funktion print_truthtable
eine Formel erwartet und die Wahrheitstabelle dafür ausgibt. Die
Wahrheitstabelle hat 2n Einträge für Formeln mit n verschiedenen Atomen.
4
Erfüllbarkeit, Widersprüchlichkeit und Tautologieeigenschaft von
Aussagenlogischen Formeln
Definition 4.1: Erfüllbarkeitsbegriffe
Sei p eine aussagenlogische Formel. Dann seien folgende Erfüllbarkeitsbegriffe vereinbart:
p heißt erfüllbar : ⇔ Es gibt I mit I(p) = 1
p heißt falsifizierbar : ⇔ Es gibt I mit I(p) = 0
p heißt tautologisch (allgemeingültig) : ⇔ Für alle I gilt I(p) = 1
p heißt widerspruchsvoll (unerfüllbar) : ⇔ Für alle I gilt I(p) = 0
8
Eine Belegung v erfüllt eine Formel p, wenn eval p v den Wahrheitswert true ausgibt. Die
folgende Funktion gibt an, ob eine Formel eine Tautologie ist, indem sie jede Belegung auf ihren
Wahrheitswert (true) überprüft (Abbildung 12). Die Funktion bricht bei der ersten falschen
Belegung mit dem Wert false ab, um nicht unnötig noch die anderen Belegungen zu überprüfen.
Nach den obigen Definitionen wissen wir, dass jede Tautologie erfüllbar ist und eine Formel
unerfüllbar ist wenn sie nicht erfüllbar ist. Genauso können wir darauf schließen, dass wenn eval
(not p) v den Wahrheitswert false ausgibt, iff eval p v den Wahrheitswert true
ausgeben muss. Also ist p eine Tautologie genau dann wenn not p nicht erfüllbar ist. Diese
Beziehung machen wir uns zu Nutze, um unsere Erfüllbarkeits- und Unerfüllbarkeitsfunktionen
mittels der Tautologieeigenschaft zu definieren (Abbildung 13).
Manchmal möchten wir beweisen, dass bestimmte Ausdrücke ersetzt werden können, ohne dass
sich die Erfüllbarkeit einer aussagenlogischen Formel ändert. Hierfür benutzen wir das Prinzip der
Substitution. Allgemein bedeutet dies die Ersetzung eines Ausdrucks durch einen anderen. Eine
Substitution auf eine Formel anzuwenden bedeutet aber vorallem, alle Vorkommen bestimmter
Atome durch andere Formeln zu ersetzen. Werden in einer Tautologie für alle Aussagenvariablen
Xi, i=1,2,..., alle Vorkommen von Xi jeweils durch die gleiche Formel Ψi ersetzt, so ist die
entstehende Formel ebenfalls eine Tautologie. Wir definieren die Substitution in Ocaml wie folgt
(Abbildung 14).
9
5
Aussagenlogische Umformungen und Vereinfachungen
Wichtige Tautologien stellen die De Morgansche Regeln dar (Abbildung 15).
So sieht man leicht, dass z.B. eine Aussage wie „Ich spreche nicht (Deutsch oder Englisch)“
dasselbe bedeutet wie „Ich spreche nicht Deutsch und ich spreche nicht Englisch“. Was jedoch
ebenso auffällt ist, wie einfach eine Disjunktion durch eine Konjunktion ersetzt werden kann. Es
gibt aber auch andere Möglichkeiten logische Verknüpfungen mittels anderen logischen
Verknüpfungen auszudrücken. So kann man mittels folgenden Äquivalenzen eine äquivalente
Formel bilden, welche nur die Junktoren
und
benutzt. Man nennt die Menge
auch eine
adäquate (ausreichende) Menge an Junktoren.
Dies lässt jedoch nicht darauf schließen, dass irgendein einzelner Junktor ausreicht, um alle
anderen Junktoren damit auszudrücken. Es gibt zwei Verknüpfungszeichen, die jeweils einzeln
eine adäquate Menge von Verknüpfungszeichen darstellen. Diese sind NAND und NOR. So wie
die Namen bereits verraten gilt für NAND:
und für NOR gilt:
. Die zugehörige Wahrheitstabelle sieht wie folgt aus (Abbildung 18):
10
Eine weitere häufig auftretende Eigenschaft von aussagenlogischen Formeln ist Dualität. Gegeben
sei eine Formel, die nur die Junktoren
,
, ˄ und ˅ enthält. Unter dem Dual dieser Formel
verstehen wir dann die Formel, die bei systematischer Vertauschung der Junktoren und der
Wahrheitswerte ensteht. Dies wird in Ocaml wie folgt definiert und liefert dann für die
Beispielformel <<p\/~p>>> die Formel <<p/\~p>> (Abbildung 18).
Man kann leicht erkennen, dass dual(dual(p))= p ergeben muss. So kann man für die
semantische Schlüsseleigenschaft von Dualität folgern: eval (dual p) v = not(eval p
(not○v)) für jede Belegung v (wobei not○v = v‘ und v‘ gerade aus v ensteht, indem alle
Belegungen negiert werden) . Das bedeutet, wenn p und q logisch äquivalent sind, gilt dies auch
für dual p und dual q. Und wenn p eine Tautologie ist, dann genauso ¬(dual p).
11
6
Negationsnormalform
Definition 6.1: Negationsnormalform (NNF)
Eine Formel ist in Negationsnormalform (NNF), wenn in allen Unterformeln der Form ¬p die
Formel p atomar ist (z.B. ¬A ˄ ¬B, aber nicht ¬(A ˄ B)) .
Für viele Aufgaben ist es wichtig die aussagenlogischen Formeln so zu vereinfachen, dass unnötige
Informationen aus den Formeln „verschwinden“. In der Algebra lässt sich zum Beispiel ein
Ausdruck wie (x+y)(y-x)+y+x2 in die Normalform y2+y vereinfachen. Man sieht dann schnell, dass
der Wert von x aus der ursprünglichen Formel eigentlich irrelevant ist. Genauso gibt es in der
Aussagenlogik mehrere Möglichkeiten Formeln zu vereinfachen. Wenn die Wahrheitswerte true
und false zusammen in einer Formel auftreten, gibt es immer die Möglichkeit mittels Tautologie
auf eine einfachere Formel zurückzugreifen, z.B.
. Diese und weitere Vereinfachungen
werden wie folgt definiert und mittels einer buttom-up Rekursion implementiert (Abbildung 19).
Wir bezeichnen atomare Formeln oder die Negation davon auch als Literale. Eine Formel ist in
Negationsnormalform (NNF), wenn sie aus Literalen besteht, die nur durch die binären Junktoren ˅
und ˄ verbunden sind (und die Werte
und
und
) . Genauer enthalten diese Formeln die Junktoren
nicht, und ¬ steht nur vor Atomen. Jede Formel lässt sich in eine logisch äquivalente
Formel in NNF umwandeln. Dies geschieht mittels Anwendung der De Morganschen Regeln, die
Regel der Doppelnegation, sowie weitere Tautologien. Dabei werden die Negationsoperator
rekursiv Stufe für Stufe näher an die Atome gebracht, um die Form zu erfüllen (Abbildung 20).
Um eine exponentielle Vergrößerung der Ausgabeformel in NNF zu verhindern (aus n Junktoren
können im schlechtesten Fall 2n Junktoren in NNF werden), verwenden wir weiterhin den
Biimplikationsoperator
und die dazugehörige Tautologie .
12
.
Wir bauen dann folgendermaßen die Vereinfachungen aus Abbildung 20 in unsere Funktion ein:
let nenf fm = nenf(psimplify fm);;.
7
Zusammenfassung
Nach einer allgemeineren Einführung die Aussagenlogik habe wir uns intensiver mit der Syntax
und Semantik und insbesondere deren Implementierung in der funktionalen Programmiersprache
Ocaml beschäftigt. Dabei haben wir die Parse- und Printfunktion näher durchleuchtet sowie
nützliche Syntaxoperationen zum Umgang mit aussagenlogischen Formeln vorgestellt. Danach
haben wir festgestellt, wie Wahrheitstabellen implementiert werden und auf das Problem der
exponentiellen Vergrößerung hingewiesen. Daraufhin haben wir die Erfüllbarkeitsbegriffe definiert
und jeweils an Beispielen vorgeführt. Wir haben gezeigt, dass aussagenlogische Formeln mittels
den Prinzipien Substitution und Dualität vereinfacht werden können. Zusätzlich haben wir die de
Morganschen Regeln kennengelernt, die die Grundlage für viele logische Umformungen darstellen.
So verschiebt man mittels dieser Regeln bei der Negationsnormalform die Negationen nach innen
und beseitigt dabei zugleich eventuell auftretende doppelte Negationen. Wir verbleiben mit einem
gewecktem Interesse für erweiterte aussagenlogische Probleme und deren Lösung.
13
8
Quellen
[1] John Harrison Propositional logic: The syntax of propositional logic, The semantics of
propositional logic, Validity, satisfiability and tautology, The De Morgan laws, adequacy and
duality, Simplification and negation normal form, Kapitel 2.1 bis einschließlich 2.5 aus Handbook
of Practical Logic and Automated Reasoning, ISBN 9780521899574, Cambridge University
Press, 2009
[2] Nicole Schweikardt Skript zur Vorlesung "Diskrete Modellierung", Goethe-Universität
Frankfurt am Main, 2011.
ku• k
14
Herunterladen