/*
Datei............: Aufg0425.java
Projekt..........: Einführung in die Java-Programmierung
Erstellt.........: 18.10.97, Guido Krüger
Geändert.........: --
Aufgabe..........: Musterlösung zu Aufgabe 04.25
Kommentare.......:

Um die Äquivalenz zweier logischer Ausdrücke empirisch zu 
überprüfen, braucht bloß ihre Wahrheitstabelle an allen
Stellen verglichen werden. Gibt es keine Unterschiede, ist die 
Äquivalenz nachgewiesen, andernfalls ist sie widerlegt. 

Das folgende Programm zeigt dies für die erste der beiden
Regeln von Aufgabe 04.25. Der Einfachheit halber werden die
vier möglichen Werte der Operanden in einem zweidimensionalen
Array gehalten, das in einer Schleife durchlaufen wird. 
Innerhalb der Schleife wird für jedes Element das Ergebnis
der Auswertung der beiden Ausdrücke miteinander verglichen.
Gibt es einen Unterschied, so wird dieser auf dem Bildschirm 
ausgegeben, andernfalls bestätigt das Programm die Richtigkeit
der deMorgan'schen Regeln. 

Die Überprüfung der zweiten der beiden Regeln sei dem
Leser zur Übung überlassen.
*/
public class Aufg0425
{
  public static void main(String args[])
  {
    boolean aData[][] = {
      {false, false},
      {false, true },
      {true,  false},
      {true,  true }
    };
    boolean res1, res2;
    boolean error = false;

    System.out.println("Empirischer Check der deMorgan'schen Regeln");
    for (int i = 0; i < aData.length; ++i) {
      res1 = !(aData[i][0] && aData[i][1]);
      res2 = !aData[i][0] || !aData[i][1];
      if (res1 != res2) {
	System.out.println(
	  "Regel ungültig" +
	  " für a = " + aData[i][0] + 
	  " und b = " + aData[i][1]
	);
	error = true;
      }
    }
    if (!error) {
      System.out.println("Ein Glück, sie gelten noch");
    }
  }
}

