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

import Adam.ToBePorted

Game "Adam"
World "Contradiction"
Level 4

Title "Per Widerspruch"

Introduction
"
*Oddeus* Geht zu einem Regal mit vielen Dokumenten und beginnt zu suchen.

**Oddeus**: Ich hab's gleich. Hier ist eine Notiz meiner Gelehrter, die mir
mit solchen kryptischen Nachrichten helfen wollten.

Auf dem Pergament steht das ein Lemma mit dem Namen `not_imp_not`:
"

Statement not_imp_not (A B : Prop) : A → B ↔ (¬ B → ¬ A) := by
  Hint "**Du**: Ich glaube, dafür kenn ich das meiste schon."
  Hint (hidden := true) "**Robo**: Fang doch mal mit `constructor` an."
  constructor
  intro h b
  by_contra a
  Hint "**Robo**: Zur Erinnerung, hier würde ich mit `suffices g : B` einen Widerspruch
  herbeiführen."
  suffices b : B
  contradiction
  apply h
  assumption
  intro h a
  Hint "**Robo**: Hier würde ich ebenfalls einen Widerspruch anfangen."
  by_contra b
  Hint (hidden := true) "**Robo**: `suffices g : ¬ A` sieht nach einer guten Option aus."
  suffices g : ¬ A
  contradiction
  apply h
  assumption

DisabledTactic rw
DisabledLemma not_not

Conclusion "**Du**: Und wie hilft uns das jetzt, was steht denn in dem Brief?"
