You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
lean4game/server/adam/Adam/Levels/SetTheory/L10_Morgan.lean

62 lines
1.9 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import Adam.Metadata
import Mathlib.Data.Set.Basic
Game "Adam"
World "SetTheory"
Level 10
Title "Morgansche Regeln"
Introduction
"
Die De-Morgan'schen Regeln sagen `(A B)ᶜ = Aᶜ ∩ Bᶜ`
und `(A ∩ B)ᶜ = Aᶜ Bᶜ` sind in Lean als
`compl_union` und `compl_inter`.
Zudem gibt es die Lemmas `mem_compl_iff : x ∈ Aᶜ ↔ x ∉ A` und
`not_mem_compl_iff`, mit welchen
man die de-Morganschen Regeln einfach selber beweisen könnten.
Die meisten Aufgaben über Mengen sind eine Kombination von `rw` und `simp_rw` verschiedenster
NewLemma in `import Mathlib.Data.Set`.
Die Taktik `simp_rw` funktioniert ähnlich wie `rw`, aber sie versucht jedes Lemma so oft
wie möglich anzuwenden. Wir kennen also 4 etwas verwandte Optionen um Lemmas und Theoreme zu
brauchen:
- `rw [lemma_A, lemma_B]`: führt jedes Lemma genau einmal aus in der Reihenfolge.
- `simp_rw [lemma_A, lemma_B]` : führt jedes Lemma in Reihenfolge so oft aus wie möglich.
- `simp only [lemma_A, lemma_B]` : sucht eine Kombination der beiden Lemmas, ohne bestimmte
Reihenfolge.
- `simp [lemma_A, lemma_B]` : Braucht die beiden Lemmas und alle simp-Lemmas.
"
open Set
#check compl_union
#check compl_inter
#check mem_compl_iff
Statement
(A B C : Set ) : (A \ B)ᶜ ∩ (C \ B)ᶜ = ((univ \ A) \ C) (univ \ Bᶜ) := by
Hint "Oft kann es auch nützlich sein, mit `rw [← …]` rückwärts umzuschreiben.
Der ganze Level ist mit `rw`/`simp_rw` und den Lemmas in deiner Bibliothek
lösbar."
rw [←compl_union]
rw [←union_diff_distrib]
rw [diff_diff]
simp_rw [←compl_eq_univ_diff]
rw [←compl_inter]
rw [diff_eq_compl_inter]
rw [inter_comm]
OnlyTactic rw simp_rw tauto trivial assumption rfl «have» «suffices»
NewTactic simp_rw
LemmaTab "Set"
NewLemma Set.mem_compl_iff Set.compl_union Set.diff_diff Set.compl_inter
Set.diff_eq_compl_inter Set.inter_comm