# Syntax & Semantik
## Definition
Die Syntax beschreibt jeweils die Form, in der Dinge niedergeschrieben oder abgespeichert sind, während die Semantik bedeutet, wie das Geschriebene/das Gespeicherte interpretiert wird.

Folgend einige Beispiele:

| Syntax                             | Semantik                                       |
| ---------------------------------- | ---------------------------------------------- |
| Paritur                            | Musik (Schallwellen)                           |
| Java-Code                          | Verhalten des Computers                        |
| Terme einer mathematischen Theorie | Mathematische Objekte                          |
| Aussagenlogische Formeln           | Boolsche Funktionen                            |
| Peano-Axiome                       | Die Struktur ($\mathbb{N}$, $+$, $\cdot$ etc.) |
| Feynnman-Diagramm                  | Wechselwirkungen                               |

Abgesehen von den bereits aus dem Kapitel "Grundbegriffe und elementare Logik" bekannten Ausdrücke sind auch folgende Ausdrücke wichtig:
  - $\top$: Gleichbedeutend mit `true`
  - $\bot$: Gleichbedeutend mit `false`

## Darstellung
Um leichter Erkenntnisse über Wahrheitswerte von Aussagen zu ziehen, können diese in verschiedene Darstellungsformen gebracht werden.

Im Folgenden werden einige davon aufgezeigt.

### Ableitungsbaum
Ein Ableitungsbaum lässt es zu, den Überblick über eine Aussage bei einer bestimmten Belegung zu geben.

Folgende Formel gilt es darzustellen:
$$f = (((a \wedge b) \vee (\neg c)) \wedge (a \vee b))$$

Folgendes ist der Ableitungsbaum unter der Bedingung, dass $a = 1$, $b = 0$ und $c = 0$ entspricht:

```mermaid
flowchart BT;
a((a: 1));
b((b: 0));
c((c: 0));
a --- 1((AND));
b --- 1;
c --- 2((NOT));
1 -- 0 --- 3((OR));
2 -- 1 --- 3;
a --- 4((OR));
b --- 4;
3 -- 1 --- 5((AND));
4 -- 1 --- 5;
5 --- f((f: 1))
```

### Boolsche Funktionen
Ein weiterer Weg, eine Aussage darzustellen ist als boolsche Funktionen.

Hierbei werden jeweils algebraische Operatoren durch eine Funktion ersetzt, die dasselbe aussagt, nämlich folgende:

| Operator     | Funktion           |
| ------------ | ------------------ |
| $\neg A$     | $\text{not}(A)$    |
| $A \wedge B$ | $\text{or}(A, B)$  |
| $A \vee B$   | $\text{and}(A, B)$ |

$$\begin{aligned}
\newcommand{\and}{\mathop{\mathrm{and}}}
    \text{or}(x,y) &= \begin{cases}
        true & \text{falls} & x = true & \text{oder} & y = true \\
        false & \text{sonst}
    \end{cases} \\

    \text{and}(x,y) &= \begin{cases}
        true & \text{falls} & x = true & \text{und} & y = true \\
        false & \text{sonst}
    \end{cases} \\

    \text{not}(x) &= \begin{cases}
        true & \text{falls} & x = false \\
        false & \text{sonst}
    \end{cases}
\end{aligned}$$

### Wahrheitstabelle
Ein weiterer Weg, welcher es einem erleichtert, Erkenntnisse aus einer Aussage zu treffen, ist das Ausarbeiten einer Wahrheitstabelle, indem man alle einzelnen Terme berechnet.

Folgend ein Beispiel für diesen algebraischen Ausdruck:
$$p_0 \rightarrow (q \vee p_1)$$

| $p_0$ |   q   | $p_1$ | $q \vee p_1$ | $p_0 \rightarrow (q \vee p_1)$ |
| :---: | :---: | :---: | :----------: | :----------------------------: |
|  $0$  |  $0$  |  $0$  |     $0$      |              $1$               |
|  $0$  |  $0$  |  $1$  |     $1$      |              $1$               |
|  $0$  |  $1$  |  $0$  |     $1$      |              $1$               |
|  $0$  |  $1$  |  $1$  |     $1$      |              $1$               |
|  $1$  |  $0$  |  $0$  |     $0$      |              $0$               |
|  $1$  |  $0$  |  $1$  |     $1$      |              $1$               |
|  $1$  |  $1$  |  $0$  |     $1$      |              $1$               |
|  $1$  |  $1$  |  $1$  |     $1$      |              $1$               |

#### Boolsche Operatoren als Wahrheitstabellen
Folgendes sind boolsche Operatoren dargestellt als Wahrheitstabellen.

##### `AND` $\wedge$
|  $F$  |  $G$  | $F \wedge G$ |
| :---: | :---: | :----------: |
|  $0$  |  $0$  |     $0$      |
|  $0$  |  $1$  |     $0$      |
|  $1$  |  $0$  |     $0$      |
|  $1$  |  $1$  |     $1$      |

##### `OR` $\vee$
|  $F$  |  $G$  | $F \vee G$ |
| :---: | :---: | :--------: |
|  $0$  |  $0$  |    $0$     |
|  $0$  |  $1$  |    $1$     |
|  $1$  |  $0$  |    $1$     |
|  $1$  |  $1$  |    $1$     |

##### Implikation $\Rightarrow$
|  $F$  |  $G$  | $F \Rightarrow G$ |
| :---: | :---: | :---------------: |
|  $0$  |  $0$  |        $1$        |
|  $0$  |  $1$  |        $1$        |
|  $1$  |  $0$  |        $0$        |
|  $1$  |  $1$  |        $1$        |

#### Negation $\neg$
|  $F$  | $\neg F$ |
| :---: | :------: |
|  $0$  |   $1$    |
|  $1$  |   $0$    |

## Semantische Eigenschaften
Über eine Formel $A$ mit der Belegung $B$ können unter bestimmten Umständen bestimmte Aussagen getroffen werden.

Folgend sind Aussagen und dazugehörige Umstände aufgelistet.

| Bezeichnung       | Alternative Bezeichnung           | Beschreibung                                                                   |
| ----------------- | --------------------------------- | ------------------------------------------------------------------------------ |
| _Gültig_          | _richtig_ oder _wahr_             | Die gegebene Formel ist unter der Belegung $B$ wahr.                           |
| _Allgemeingültig_ | _Tautologie_ oder _immer wahr_    | Die gegebene Formel ist, unabhängig der Belegung $B$, immer wahr.              |
| _Ungültig_        | _falsch_ oder _unwahr_            | Die gegebene Formel ist unter der Belegung $B$ nicht wahr.                     |
| _Unerfüllbar_     | _Widerspruch_ oder _immer falsch_ | Die gegebene Formel ist, unabhängig der Belegung $B$, immer falsch.            |
| _erfüllbar_       |                                   | Es gibt mindestens eine Belegung $B$ unter der die Formel erfüllbar ist.       |
| _widerlegbar_     |                                   | Es gibt mindestens eine Belegung $B$ unter der die Formel nicht erfüllbar ist. |

## Normalformen
Normalformen beinhalten generell nur `AND`s ($\wedge$), `OR`s ($\vee$) und `NOT`s ($\neg$).

### Negationsnormalform `NNF`
Die Negationsnormalform (`NNF`) ist die Form einer Formel, in der nur atomare (nicht aufteilbare) Teilformeln negiert sind.

Folgendes Beispiel anhand dieser Formel:
$$\neg(A \rightarrow (B \wedge \neg(C \vee D)))$$

Diese Form ist nicht komplett normalisiert, da sie den Operator $\rightarrow$ beinhaltet.
Dieser Operator wird im Folgenden umgeformt.

$$\neg(\neg A \vee (B \wedge \neg(C \vee D)))$$

Diese Formel ist keine `NNF`, da 2 nicht-atomare Formeln negiert sind.
Im Folgenden werden diese entfernt.

$$(\neg\neg A \wedge \neg(B \wedge (\neg C \wedge \neg D)))$$
$$(\neg\neg A \wedge (\neg B \vee \neg(\neg C \wedge \neg D)))$$

Nun ist nur noch eine letzte nicht-atomare Teilformel negiert. Dieser Teil wird nun entfernt:

$$(\neg\neg A \wedge (\neg B \vee (\neg\neg C \vee \neg\neg D)))$$

In einem letzten Schritt werden nun doppelte Negationen weg vereinfacht:

$$(A \wedge (\neg B \vee (C \vee D)))$$

Bei dieser Formel handelt es sich nun um eine Negationsnormalform (`NNF`), da nur atomare Teilformeln negiert sind und nur $\neg$s, $\vee$s und $\wedge$s in der Formel genutzt werden.

### Disjunktive Normalform `DNF`
Die Disjunktive Normalform ist eine Umformung der Formel, in der alle Belegungen für die die Formel $true$ ergibt, mit einander "verodert" werden.

Das sieht folgendermassen aus:

|  $A$  |  $B$  |  $C$  |  $D$  | $B \vee D$ | $(B \vee D) \wedge C$ | $\neg A \wedge ((B \vee D) \wedge C)$ |
| :---: | :---: | :---: | :---: | :--------: | :-------------------: | :-----------------------------------: |
|  $0$  |  $0$  |  $0$  |  $0$  |    $0$     |          $0$          |                  $0$                  |
|  $0$  |  $0$  |  $0$  |  $1$  |    $1$     |          $0$          |                  $0$                  |
|  $0$  |  $0$  |  $1$  |  $0$  |    $0$     |          $0$          |                  $0$                  |
|  $0$  |  $0$  |  $1$  |  $1$  |    $1$     |          $1$          |                  $1$                  |
|  $0$  |  $1$  |  $0$  |  $0$  |    $1$     |          $0$          |                  $0$                  |
|  $0$  |  $1$  |  $0$  |  $1$  |    $1$     |          $0$          |                  $0$                  |
|  $0$  |  $1$  |  $1$  |  $0$  |    $1$     |          $1$          |                  $1$                  |
|  $0$  |  $1$  |  $1$  |  $1$  |    $1$     |          $1$          |                  $1$                  |
|  $1$  |  $0$  |  $0$  |  $0$  |    $0$     |          $0$          |                  $0$                  |
|  $1$  |  $0$  |  $0$  |  $1$  |    $1$     |          $0$          |                  $0$                  |
|  $1$  |  $0$  |  $1$  |  $0$  |    $0$     |          $0$          |                  $0$                  |
|  $1$  |  $0$  |  $1$  |  $1$  |    $1$     |          $1$          |                  $0$                  |
|  $1$  |  $1$  |  $0$  |  $0$  |    $1$     |          $0$          |                  $0$                  |
|  $1$  |  $1$  |  $0$  |  $1$  |    $1$     |          $0$          |                  $0$                  |
|  $1$  |  $1$  |  $1$  |  $0$  |    $1$     |          $1$          |                  $0$                  |
|  $1$  |  $1$  |  $1$  |  $1$  |    $1$     |          $1$          |                  $0$                  |

Wie zu sehen ist, ist diese Formel an folgenden Stellen wahr:
  - $\neg A \wedge \neg B \wedge C \wedge D$
  - $\neg A \wedge B \wedge C \wedge \neg D$
  - $\neg A \wedge B \wedge C \wedge D$

Die `DNF` erreicht man nun die Teilformeln der genannten Stellen mit einem `OR` verknüpft:
$$(\neg A \wedge \neg B \wedge C \wedge D) \vee (\neg A \wedge B \wedge C \wedge \neg D) \vee (\neg A \wedge B \wedge C \wedge D)$$

### Konjunktive Normalform `KNF`
Bei der Konjunktiven Normalform wiederum, werden alle negierten Belegungen, in denen die gegebene Formel $false$ ergibt miteinander "geandet".

Folgendes wieder anhand eines realen Beispiels:

|  $A$  |  $B$  |  $C$  | $A \vee C$ | $B \vee (A \wedge C)$ |
| :---: | :---: | :---: | :--------: | :-------------------: |
|  $0$  |  $0$  |  $0$  |    $0$     |          $0$          |
|  $0$  |  $0$  |  $1$  |    $0$     |          $0$          |
|  $0$  |  $1$  |  $0$  |    $0$     |          $1$          |
|  $0$  |  $1$  |  $1$  |    $0$     |          $1$          |
|  $1$  |  $0$  |  $0$  |    $0$     |          $0$          |
|  $1$  |  $0$  |  $1$  |    $1$     |          $1$          |
|  $1$  |  $1$  |  $0$  |    $0$     |          $1$          |
|  $1$  |  $1$  |  $1$  |    $1$     |          $1$          |

An folgenden Stellen ergibt diese Formel $false$:
  - $\neg A \wedge \neg B \wedge \neg C$  
    Negation: $A \vee B \vee C$
  - $\neg A \wedge \neg B \wedge C$  
    Negation: $A \vee B \vee \neg C$
  - $A \wedge \neg B \wedge \neg C$  
    Negation: $\neg A \vee B \vee C$

Um nun eine `KNF` zu erhalten müssen die Negationen der genannten Stellen mit dem $\vee$-Operator verknüpft werden:
$$(A \vee B \vee C) \wedge (A \vee B \vee \neg C) \wedge (\neg A \vee B \vee C)$$

# Quellen
  - [YouTube - Konjunktive Normalform KNF / conjunctive normal form CNF | Digitaltechnik](https://www.youtube.com/watch?v=l6b7895U-u8)
  - [YouTube - Disjunktive Normalform DNF / disjunctive normal form | Digitaltechnik](https://www.youtube.com/watch?v=GyQITHPQst4)
