import Adam.Metadata
import Adam.Levels.SetTheory.L03_Subset

import Mathlib.Init.Set
import Mathlib.Tactic.Tauto
import Mathlib

set_option tactic.hygienic false

Game "Adam"
World "SetTheory"
Level 4

Title "Teilmengen"

Introduction
"
Etwas weiter kommt ihr an einem kleinen Gemüsestand vorbei. Da ihr nicht so
richtig einen Plan habt, fragt ihr den Verkäufer.

**Verkäufer**: Hier ist was ganz wichtiges, was ihr noch oft brauchen werdet:
Ein zentrales Lemma ist `Subset.antisymm_iff` welches folgendes sagt:

```
lemma antisymm_iff {α : Type} {A B : Set α} : A = B ↔ A ⊆ B ∧ B ⊆ A
```

Fast immer wenn man Gleichheiten von Mengen zeigen muss, will man diese in zwei Ungleichungen
aufteilen.
"

open Set Subset

Statement Set.subset_empty_iff {A : Type _} (s : Set A) :
    s ⊆ ∅ ↔ s = ∅ := by
  Hint "**Du**: Ja, die einzige Teilmenge der leeren Menge ist die leere Menge.
  Das ist doch eine Tautologie?

  **Robo**: Ja schon, aber zuerst einmal explizit."
  Hint (hidden := true) "**Robo**: Fang doch einmal mit `constructor` an."
  constructor
  intro h
  Hint "**Robo**: Gleichheit zwischen Mengen kann man zum Beispiel zeigen,
  indem man `A ⊆ B` und `B ⊆ A` zeigt.

  Dieser Schritt ist `apply Subset.antisymm`"
  apply Subset.antisymm
  assumption
  Hint "**Robo**: Hier ist das Lemma `empty_subset` hilfreich."
  apply empty_subset
  intro h
  rw [h]

DisabledTactic tauto
NewLemma Set.Subset.antisymm Set.Subset.antisymm_iff Set.empty_subset Set.subset_univ
LemmaTab "Set"
