Finite sets in a sigma type #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines a few finset
constructions on Σ i, α i
.
Main declarations #
finset.sigma
: Given a finsets
inι
and finsetst i
in eachα i
,s.sigma t
is the finset of the dependent sumΣ i, α i
finset.sigma_lift
: Lifts mapsα i → β i → finset (γ i)
to a mapΣ i, α i → Σ i, β i → finset (Σ i, γ i)
.
TODO #
finset.sigma_lift
can be generalized to any alternative functor. But to make the generalization
worth it, we must first refactor the functor library so that the alternative
instance for finset
is computable and universe-polymorphic.
theorem
finset.pairwise_disjoint_map_sigma_mk
{ι : Type u_1}
{α : ι → Type u_2}
{s : finset ι}
{t : Π (i : ι), finset (α i)} :
↑s.pairwise_disjoint (λ (i : ι), finset.map (function.embedding.sigma_mk i) (t i))
@[simp]
theorem
finset.disj_Union_map_sigma_mk
{ι : Type u_1}
{α : ι → Type u_2}
{s : finset ι}
{t : Π (i : ι), finset (α i)} :
s.disj_Union (λ (i : ι), finset.map (function.embedding.sigma_mk i) (t i)) finset.pairwise_disjoint_map_sigma_mk = s.sigma t
theorem
finset.sigma_eq_bUnion
{ι : Type u_1}
{α : ι → Type u_2}
[decidable_eq (Σ (i : ι), α i)]
(s : finset ι)
(t : Π (i : ι), finset (α i)) :
s.sigma t = s.bUnion (λ (i : ι), finset.map (function.embedding.sigma_mk i) (t i))
theorem
finset.sigma_lift_mono
{ι : Type u_1}
{α : ι → Type u_2}
{β : ι → Type u_3}
{γ : ι → Type u_4}
[decidable_eq ι]
{f g : Π ⦃i : ι⦄, α i → β i → finset (γ i)}
(h : ∀ ⦃i : ι⦄ ⦃a : α i⦄ ⦃b : β i⦄, f a b ⊆ g a b)
(a : Σ (i : ι), α i)
(b : Σ (i : ι), β i) :
finset.sigma_lift f a b ⊆ finset.sigma_lift g a b