import TestGame.Metadata
import Std.Tactic.RCases
import Mathlib.Tactic.LeftRight
import Mathlib.Tactic.Contrapose
import Mathlib.Tactic.Use
import Mathlib.Tactic.Ring

import TestGame.ToBePorted

Game "TestGame"
World "Contradiction"
Level 3

Title "Ad absurdum"

Introduction
"
Aber, die Aussagen müssen wirklich exakte Gegenteile sein.

Hier musst du zuerst eines der Lemmas `not_odd : ¬ odd n ↔ even n` oder
`not_even : ¬ even n ↔ odd n` benützen, um einer der Terme umzuschreiben.
"

Statement
  "Ein Widerspruch impliziert alles."
  (n : ℕ) (h₁ : even n) (h₂ : odd n) : n = 128 := by
  rw [← not_even] at h₂
  contradiction

Message (n : ℕ) (h₁ : even n) (h₂ : odd n) : n = 128 =>
"Schreibe zuerst eine der Aussagen mit `rw [←not_even] at h₂` um, damit diese genaue
Gegenteile sind."

Conclusion
"
Detail: `¬ A` ist übrigens als `A → false` implementiert, was aussagt, dass
\"falls `A` wahr ist, impliziert das `false` und damit einen Widerspruch\".
"
-- TODO: Oder doch ganz entfernen?

Tactics contradiction
