3.3 Interne Funktionsweise

Dieses Kapitel befasst sich ein wenig mit der internen Struktur des CNF-DNF-Konverters und damit, wie dieser mit aussagenlogischen Formeln arbeitet.

Abbildung: Klassendiagramm der Datenstruktur für aussagenlogische Formeln
Image formula
Abbildung 10 zeigt die Klassenstruktur, die zur Speicherung aussagenlogischer Formeln in einer leicht verarbeitbaren Form verwendet wird. Jede aussagenlogische Formel wird als Instanz der Klasse Formula gespeichert. Formula bietet unter anderem Funktionen, um

Um aus einer Texteingabe eine Instanz von Formula zu erhalten, verwendet der KNF-DNF-Konverter eine Kombination von Scanner (JFlex (JFlex

sowie Parser (CUP

Die Grammatik, auf welche bereits in den vorhergehenden Kapiteln Bezug genommen wurde, ist die Grammatik $G=<V,T,P,S>$, die in Abbildung 11 beschrieben wird.

% latex2html id marker 1368
\fbox{
\begin{minipage}{14.5cm}
\begin{center}
\beg...
...d{center}\caption{Vom Parser verwendete Grammatik $G=<V,T,P,S>$}
\end{minipage}}

Neben der Datenstruktur, die auf Formula aufbaut, gibt es weiters Datenstrukturen, die eine Formel in KNF beziehungsweise DNF in Mengennotation repräsentieren. Instanzen von Subklassen von Formula, die das Interface ClauseConvertible oder DNFClauseConvertible implementieren, können, sofern es sich bei dieser Instanz um die Repräsentation einer Formel in KNF oder DNF handelt, in Mengennotation übertragen werden. Eine Formel in Mengennotation kann auch wieder in eine aussagenlogische Formel in ,,herkömmlicher Darstellung” konvertiert werden.

Das Besondere an dieser Mengennotation im CNF-DNF-Konverter ist einerseits, dass sie nicht nur, wie im Skriptum zur Lehrveranstaltung Theoretische Informatik und Logik, für Formeln in KNF, sondern auch für Formeln in DNF Verwendung findet. Der Sinn dahinter ist jener, dass in Mengennotation Vereinfachungen der Formel leichter möglich sind. Dazu wird die Formel zunächst in Mengennotation übertragen, dann werden die unten beschriebenen Vereinfachungen durchgeführt und die Formel wird wieder in ,,normale Darstellung,, übertragen.

Die unten beschrieben Vereinfachungsschritte werden dabei vom Programm durchgeführt. Die Erlärungne, die als Begründungen für die Korrektheit der einzelnen Umformungsschritte gegeben werden, sind rein informativer Natur und nicht als formale Beweise anzusehen.

Im Programm werden die Ergebnisse dieser Umformungsschritte nur für Formeln in KNF im Detail beschrieben, für Formeln in DNF bekommt der Benutzer lediglich die vereinfachte Form in ,,herkömmlicher Darstellung” zu sehen. Der Grund dafür ist jener, dass die Mengennotation in der Lehrveranstaltung Theoretische Informatik und Logik nur für aussagenlogische Formeln in KNF verwendet wird und daher die Teilnehmer dieser Lehrveranstaltung nicht durch die Verwendung der Mengennotation für Formeln in DNF im Programm verwirrt werden sollen.

Paul Staroch
2007-04-12