import Adam.Metadata

import Init.Data.ToString
-- #check List UInt8

set_option tactic.hygienic false

Game "Adam"
World "Implication"
Level 7

Title "Genau dann, wenn"

Introduction
"
**Operationsleiter**: Hier ist noch so etwas.
"

Statement (A B C D : Prop) (h₁ : C ↔ D) (h₂ : A ↔ B) (h₃ : A ↔ D) : B ↔ C := by
  Hint "**Du**: $B \\iff A \\iff D \\iff C$, die sind doch alle äquivalent…

  **Robo**: Ja, aber du musst ihm helfen, die Äquivalenzen umzuschreiben. Mit `rw [h₁]` kannst du `C` durch `D`
  ersetzen."
  rw [h₁]
  Hint "**Du** Und wenn ich in die andere Richtung umschreiben möchte?

  **Robo**: Dann schreibst du ein `←` vor den Namen, also `rw [← hₓ]`."
  Branch
    rw [← h₃]
    Hint "**Du**: Ehm, das war verkehrt.

    **Robo**: Ja, anders herum wär's besser gewesen.  Aber wenn du jetzt einfach weitermachst, bis Du
    sowas wie `A ↔ A` erhältst, kann `rfl` das beweisen.

    **Robo: Da fällt mir ein, `rw` wendet ohnehin auch versuchsweise `rfl` an. 
  Das heißt, Du musst `rfl` nicht einmal ausschreiben."
    rw [h₂]
  rw [←h₂]
  assumption

Conclusion "**Operationsleiter**:  Wenn Ihr so weitermacht, dann kommen wir ja durch den ganzen Packen durch!"

NewTactic rw assumption
DisabledTactic tauto
-- NewLemma Iff.symm
