Lattice structure on finite sets #
This file puts a lattice structure on finite sets using the union and intersection operators.
For Finset α, where α is a lattice, see also Mathlib/Data/Finset/Lattice/Fold.lean.
Main declarations #
There is a natural lattice structure on the subsets of a set.
In Lean, we use lattice notation to talk about things involving unions and intersections. See
Mathlib/Order/Lattice.lean. For the lattice structure on finsets, ⊥ is called bot with
⊥ = ∅ and ⊤ is called top with ⊤ = univ.
Implementation Notes #
All the theorems and instances expect DecidableEq instance for α
Tags #
finite sets, finset
Lattice structure #
@[instance_reducible]
Equations
- One or more equations did not get rendered due to their size.
union #
theorem Finset.mem_union_left {α : Type u_1} [DecidableEq α] {s : Finset α} {a : α} (t : Finset α) (h : a ∈ s) :
theorem Finset.mem_union_right {α : Type u_1} [DecidableEq α] {t : Finset α} {a : α} (s : Finset α) (h : a ∈ t) :
@[simp]
theorem Finset.union_subset {α : Type u_1} [DecidableEq α] {s t u : Finset α} (hs : s ⊆ u) :
t ⊆ u → s ∪ t ⊆ u
@[simp]
@[simp]
theorem Finset.union_subset_union {α : Type u_1} [DecidableEq α] {s t u v : Finset α} (hsu : s ⊆ u) (htv : t ⊆ v) :
theorem Finset.union_subset_union_left {α : Type u_1} [DecidableEq α] {s₁ s₂ t : Finset α} (h : s₁ ⊆ s₂) :
theorem Finset.union_subset_union_right {α : Type u_1} [DecidableEq α] {s t₁ t₂ : Finset α} (h : t₁ ⊆ t₂) :
instance Finset.instCommutativeUnion {α : Type u_1} [DecidableEq α] :
Std.Commutative fun (x1 x2 : Finset α) => x1 ∪ x2
@[simp]
instance Finset.instAssociativeUnion {α : Type u_1} [DecidableEq α] :
Std.Associative fun (x1 x2 : Finset α) => x1 ∪ x2
@[simp]
instance Finset.instIdempotentOpUnion {α : Type u_1} [DecidableEq α] :
Std.IdempotentOp fun (x1 x2 : Finset α) => x1 ∪ x2
theorem Finset.union_subset_left {α : Type u_1} [DecidableEq α] {s t u : Finset α} (h : s ∪ t ⊆ u) :
s ⊆ u
theorem Finset.union_subset_right {α : Type u_1} [DecidableEq α] {s t u : Finset α} (h : s ∪ t ⊆ u) :
t ⊆ u
@[simp]
@[simp]
@[simp]
@[simp]
theorem Finset.union_congr_left {α : Type u_1} [DecidableEq α] {s t u : Finset α} (ht : t ⊆ s ∪ u) (hu : u ⊆ s ∪ t) :
theorem Finset.union_congr_right {α : Type u_1} [DecidableEq α] {s t u : Finset α} (hs : s ⊆ t ∪ u) (ht : t ⊆ s ∪ u) :
theorem Finset.mem_of_mem_inter_left {α : Type u_1} [DecidableEq α] {a : α} {s₁ s₂ : Finset α} (h : a ∈ s₁ ∩ s₂) :
theorem Finset.mem_of_mem_inter_right {α : Type u_1} [DecidableEq α] {a : α} {s₁ s₂ : Finset α} (h : a ∈ s₁ ∩ s₂) :
@[simp]
@[simp]
theorem Finset.subset_inter {α : Type u_1} [DecidableEq α] {s₁ s₂ u : Finset α} :
s₁ ⊆ s₂ → s₁ ⊆ u → s₁ ⊆ s₂ ∩ u
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem Finset.inter_subset_inter {α : Type u_1} [DecidableEq α] {x y s t : Finset α} (h : x ⊆ y) (h' : s ⊆ t) :
theorem Finset.inter_subset_inter_left {α : Type u_1} [DecidableEq α] {s t u : Finset α} (h : t ⊆ u) :
theorem Finset.inter_subset_inter_right {α : Type u_1} [DecidableEq α] {s t u : Finset α} (h : s ⊆ t) :
@[instance_reducible]
Equations
- Finset.instDistribLattice = { toLattice := Finset.instLattice, le_sup_inf := ⋯ }
@[simp]
@[simp]
@[simp]
@[simp]
theorem Finset.inter_congr_left {α : Type u_1} [DecidableEq α] {s t u : Finset α} (ht : s ∩ u ⊆ t) (hu : s ∩ t ⊆ u) :
theorem Finset.inter_congr_right {α : Type u_1} [DecidableEq α] {s t u : Finset α} (hs : t ∩ u ⊆ s) (ht : s ∩ u ⊆ t) :