|
|
|
|
import Adam.Metadata
|
|
|
|
|
|
|
|
|
|
import Mathlib
|
|
|
|
|
import Duper.Tactic
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import Mathlib.Order.Disjoint
|
|
|
|
|
|
|
|
|
|
set_option tactic.hygienic false
|
|
|
|
|
|
|
|
|
|
Game "Adam"
|
|
|
|
|
World "SetTheory"
|
|
|
|
|
Level 4
|
|
|
|
|
|
|
|
|
|
Title "Mengen"
|
|
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
|
"
|
|
|
|
|
`∈ ∉ ⊆ ⊂ ⋃ ⋂`
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
open Set
|
|
|
|
|
|
|
|
|
|
-- open_locale cardinal
|
|
|
|
|
|
|
|
|
|
variables {X : Type _} (x : X) (A B : Set X)
|
|
|
|
|
|
|
|
|
|
#check A.Nonempty
|
|
|
|
|
#check Nonempty A
|
|
|
|
|
#check insert x A -- {x} ∪ A
|
|
|
|
|
-- #check disjoint A B -- needs Mathlib.Order.Disjoint
|
|
|
|
|
#check A ∆ B
|
|
|
|
|
#check Nontrivial A
|
|
|
|
|
|
|
|
|
|
#check ({2} : Set ℕ)
|
|
|
|
|
|
|
|
|
|
example : ({2} : Set ℕ) ⊆ {4, 2, 3} := by
|
|
|
|
|
simp only [mem_singleton_iff, mem_insert_iff, or_self, singleton_subset_iff, or_false, or_true]
|
|
|
|
|
|
|
|
|
|
example : ({2, 3, 5} : Set ℕ) ⊆ {4, 2, 5, 7, 3} := by
|
|
|
|
|
intro n hn
|
|
|
|
|
simp only [mem_insert_iff, mem_singleton_iff] at *
|
|
|
|
|
tauto
|
|
|
|
|
|
|
|
|
|
example : {2, 3, 5} ⊆ (univ : Set ℕ) := by
|
|
|
|
|
tauto
|
|
|
|
|
|
|
|
|
|
example : 3 ∈ ({4, 2, 5, 7, 3} : Set ℕ) := by
|
|
|
|
|
tauto
|
|
|
|
|
|
|
|
|
|
example : ({4, 9} : Set ℕ) = Set.insert 4 {9} := by
|
|
|
|
|
rfl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#check Finset.card
|
|
|
|
|
|
|
|
|
|
variable (A : Finset ℕ)
|
|
|
|
|
|
|
|
|
|
#check A.card
|
|
|
|
|
|
|
|
|
|
-- card_union_eq
|
|
|
|
|
example (A B : Finset ℕ) (h : Disjoint A B) : (A ∪ B).card = A.card + B.card := by
|
|
|
|
|
-- Not a suitable proof for the course.
|
|
|
|
|
rw [← Finset.disjUnion_eq_union A B h, Finset.card_disjUnion _ _ _]
|
|
|
|
|
|
|
|
|
|
example : ¬Disjoint {n : ℤ | ∃ k, n = 2 * k} {3, 5, 6, 9, 11} := by
|
|
|
|
|
rw [not_disjoint_iff]
|
|
|
|
|
use 6
|
|
|
|
|
constructor
|
|
|
|
|
rw [mem_setOf_eq]
|
|
|
|
|
use 3
|
|
|
|
|
tauto
|
|
|
|
|
|
|
|
|
|
example : {n : ℕ | Even n ∨ Odd n} = univ := by
|
|
|
|
|
rw [setOf_or]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#check Set.eq_of_mem_singleton
|
|
|
|
|
#check {n : ℤ | ∃ k, n = 2 * k}
|
|
|
|
|
#check {n : ℤ // ∃ k, n = 2 * k}
|
|
|
|
|
#check ℤ
|
|
|
|
|
variables (C : Set ℤ)
|
|
|
|
|
#check {n ∈ C | ∃ (k : ℤ), n = 2 * k}
|
|
|
|
|
#check {n : ℤ | n ∈ C ∧ ∃ (k : ℤ), n = 2 * k}
|
|
|
|
|
#check {x ∈ A | x = x}
|
|
|
|
|
#check {y | y ∈ A}
|
|
|
|
|
#check setOf_and
|
|
|
|
|
#check setOf_or
|
|
|
|
|
#check Disjoint C univ
|
|
|
|
|
|
|
|
|
|
example : {n ∈ C | ∃ (k : ℤ), n = 2 * k} = {n : ℤ | n ∈ C ∧ ∃ (k : ℤ), n = 2 * k} := by
|
|
|
|
|
rfl
|