import TestGame.Metadata
import Mathlib

Game "TestGame"
World "Contradiction"
Level 5

Title "Nicht-nicht"

Introduction
"
Wenn man ein Nicht (`¬`) im Goal hat, will man meistens einen Widerspruch starten,
wie im nächsten Level dann gezeigt wird. Manchmal aber hat man Terme der Form
`¬ (¬ A)`, in welchem Fall das Lemma `not_not` nützlich ist, welches du mit
`rw` oder `apply` benützen kannst.
"

Statement
    "Zeige, dass $\\neg(\\neg A)$ äquivalent zu $A$ ist."
    (A : Prop) : ¬ (¬ A) ↔ A := by
  rw [not_not]

Message (A : Prop) : ¬ (¬ A) ↔ A => "Da `not_not` ein Lemma der Form `X ↔ Y` ist,
kannst du wahlweise `rw [not_not]` oder `apply not_not` benützen.

- `rw` ersetzt `¬ (¬ A)` mit `A` und schliesst dann `A ↔ A` mit `rfl`.
- `apply` hingegen funktioniert hier nur, weil das gesamte Goal
genau mit der Aussage des Lemmas übereinstimmt.
"

Tactics rw apply

Lemmas not_not
