@[simp]
theorem
Finset.preimage_inter
{α : Type u}
{β : Type v}
[DecidableEq α]
[DecidableEq β]
{f : α → β}
{s t : Finset β}
(hs : Set.InjOn f (f ⁻¹' ↑s))
(ht : Set.InjOn f (f ⁻¹' ↑t))
:
@[simp]
theorem
Finset.preimage_union
{α : Type u}
{β : Type v}
[DecidableEq α]
[DecidableEq β]
{f : α → β}
{s t : Finset β}
(hst : Set.InjOn f (f ⁻¹' ↑(s ∪ t)))
:
@[simp]
theorem
Finset.preimage_compl
{α : Type u}
{β : Type v}
[DecidableEq α]
[DecidableEq β]
[Fintype α]
[Fintype β]
{f : α → β}
(s : Finset β)
(hf : Function.Injective f)
:
@[simp]
theorem
Finset.preimage_map
{α : Type u}
{β : Type v}
(f : α ↪ β)
(s : Finset α)
:
(Finset.map f s).preimage ⇑f ⋯ = s
theorem
Finset.image_subset_iff_subset_preimage
{α : Type u}
{β : Type v}
[DecidableEq β]
{f : α → β}
{s : Finset α}
{t : Finset β}
(hf : Set.InjOn f (f ⁻¹' ↑t))
:
Finset.image f s ⊆ t ↔ s ⊆ t.preimage f hf
theorem
Finset.card_preimage
{α : Type u}
{β : Type v}
(s : Finset β)
(f : α → β)
(hf : Set.InjOn f (f ⁻¹' ↑s))
[DecidablePred fun (x : β) => x ∈ Set.range f]
:
(s.preimage f hf).card = (Finset.filter (fun (x : β) => x ∈ Set.range f) s).card
theorem
Finset.image_preimage
{α : Type u}
{β : Type v}
[DecidableEq β]
(f : α → β)
(s : Finset β)
[(x : β) → Decidable (x ∈ Set.range f)]
(hf : Set.InjOn f (f ⁻¹' ↑s))
:
Finset.image f (s.preimage f hf) = Finset.filter (fun (x : β) => x ∈ Set.range f) s
theorem
Finset.image_preimage_of_bij
{α : Type u}
{β : Type v}
[DecidableEq β]
(f : α → β)
(s : Finset β)
(hf : Set.BijOn f (f ⁻¹' ↑s) ↑s)
:
Finset.image f (s.preimage f ⋯) = s
theorem
Finset.preimage_subset_of_subset_image
{α : Type u}
{β : Type v}
[DecidableEq β]
{f : α → β}
{s : Finset β}
{t : Finset α}
(hs : s ⊆ Finset.image f t)
{hf : Set.InjOn f (f ⁻¹' ↑s)}
:
s.preimage f hf ⊆ t
theorem
Finset.preimage_subset
{α : Type u}
{β : Type v}
{f : α ↪ β}
{s : Finset β}
{t : Finset α}
(hs : s ⊆ Finset.map f t)
:
s.preimage ⇑f ⋯ ⊆ t
theorem
Finset.subset_map_iff
{α : Type u}
{β : Type v}
{f : α ↪ β}
{s : Finset β}
{t : Finset α}
:
s ⊆ Finset.map f t ↔ ∃ u ⊆ t, s = Finset.map f u
theorem
Finset.sigma_preimage_mk
{α : Type u}
{β : α → Type u_1}
[DecidableEq α]
(s : Finset ((a : α) × β a))
(t : Finset α)
:
(t.sigma fun (a : α) => s.preimage (Sigma.mk a) ⋯) = Finset.filter (fun (a : (a : α) × β a) => a.fst ∈ t) s
theorem
Finset.sigma_preimage_mk_of_subset
{α : Type u}
{β : α → Type u_1}
[DecidableEq α]
(s : Finset ((a : α) × β a))
{t : Finset α}
(ht : Finset.image Sigma.fst s ⊆ t)
:
theorem
Finset.sigma_image_fst_preimage_mk
{α : Type u}
{β : α → Type u_1}
[DecidableEq α]
(s : Finset ((a : α) × β a))
:
((Finset.image Sigma.fst s).sigma fun (a : α) => s.preimage (Sigma.mk a) ⋯) = s