import TestGame.Metadata
import Std.Tactic.RCases
import Mathlib.Tactic.Cases
import Mathlib.Logic.Basic

Game "TestGame"
World "Implication"
Level 11

Title "Lemmas"

Introduction
"
Wenn die Aussage eines Lemmas eine Äquivalenz ist, kann man dieses auch mit `rw` brauchen,
wie du es von Äquivalenzen kennst.

Ein wichtiges Lemma ist dass $\\neg(\\neg A))$ und $A$ äquivalent sind:

```
lemma not_not (A : Prop) : ¬¬A ↔ A := by
  ...
```

Mit `rw [not_not]` sucht Lean also im Goal ein Term `¬¬(·)` und entfernt dort das `¬¬`.
"

Statement
"Zeige, dass $A ∨ (¬¬B) ∧ C$ und $A ∨ B ∧ C$ äquivalent sind."
    (A B C : Prop) : A ∨ (¬¬B) ∧ C ↔ A ∨ B ∧ C := by
  rw [not_not]

Conclusion
"
`rw` hat automatisch `rfl` ausgeführt und dadurch den Beweis beendet.
"

NewTactic rw

NewLemma not_not not_or_of_imp
