| def Set α := α → Prop | |
| class HasMem (α : outParam $ Type u) (β : Type v) where | |
| mem : α → β → Prop | |
| infix:50 " ∈ " => HasMem.mem | |
| instance {α : Type u} : HasMem α (Set α) := ⟨λ a s => s a⟩ | |
| instance {α : Type u} : LE (Set α) := ⟨λ s t => ∀ {x : α}, x ∈ s → x ∈ t⟩ | |
| class HasInf (P : Type u) where | |
| inf : P → P → P | |
| infix:70 " ⊓ " => HasInf.inf | |
| instance {α : Type u} : HasInf (Set α) := ⟨λ s t x => x ∈ s ∧ x ∈ t⟩ | |
| theorem infLeLeft {s t : Set α} : s ⊓ t ≤ s := And.left | |
| theorem infLeRight {s t : Set α} : s ⊓ t ≤ t := And.right | |
| theorem inter_mem_sets_iff {α : Type u} (f : Set (Set α)) (hf : ∀ {s t}, s ∈ f → s ≤ t → t ∈ f) {x y : Set α} | |
| : x ⊓ y ∈ f → x ∈ f ∧ y ∈ f := by | |
| intro h | |
| refine ⟨hf h infLeLeft, hf h ?_⟩ | |
| apply infLeRight |