Documentation

Mathlib.Data.Finset.Preimage

Preimage of a Finset under an injective map. #

noncomputable def Finset.preimage {α : Type u} {β : Type v} (s : Finset β) (f : α → β) (hf : Set.InjOn f (f ⁻¹' ↑s)) :

Preimage of s : Finset β under a map f injective on f ⁻¹' s as a Finset.

Equations
Instances For
    @[simp]
    theorem Finset.mem_preimage {α : Type u} {β : Type v} {f : α → β} {s : Finset β} {hf : Set.InjOn f (f ⁻¹' ↑s)} {x : α} :
    x ∈ Finset.preimage s f hf ↔ f x ∈ s
    @[simp]
    theorem Finset.coe_preimage {α : Type u} {β : Type v} {f : α → β} (s : Finset β) (hf : Set.InjOn f (f ⁻¹' ↑s)) :
    ↑(Finset.preimage s f hf) = f ⁻¹' ↑s
    @[simp]
    theorem Finset.preimage_empty {α : Type u} {β : Type v} {f : α → β} :
    @[simp]
    theorem Finset.preimage_univ {α : Type u} {β : Type v} {f : α → β} [Fintype α] [Fintype β] (hf : Set.InjOn f (f ⁻¹' ↑Finset.univ)) :
    Finset.preimage Finset.univ f hf = Finset.univ
    @[simp]
    theorem Finset.preimage_inter {α : Type u} {β : Type v} [DecidableEq α] [DecidableEq β] {f : α → β} {s : Finset β} {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 : Finset β} {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.preimage (Finset.map f s) ⇑f ⋯ = s
    theorem Finset.monotone_preimage {α : Type u} {β : Type v} {f : α → β} (h : Function.Injective f) :
    Monotone fun (s : Finset β) => Finset.preimage s f ⋯
    theorem Finset.image_subset_iff_subset_preimage {α : Type u} {β : Type v} [DecidableEq β] {f : α → β} {s : Finset α} {t : Finset β} (hf : Set.InjOn f (f ⁻¹' ↑t)) :
    theorem Finset.map_subset_iff_subset_preimage {α : Type u} {β : Type v} {f : α ↪ β} {s : Finset α} {t : Finset β} :
    Finset.map f s ⊆ t ↔ s ⊆ Finset.preimage t ⇑f ⋯
    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 (Finset.preimage s 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) :
    theorem Finset.preimage_subset {α : Type u} {β : Type v} {f : α ↪ β} {s : Finset β} {t : Finset α} (hs : s ⊆ Finset.map f t) :
    Finset.preimage s ⇑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 α) :
    (Finset.sigma t fun (a : α) => Finset.preimage s (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) :
    (Finset.sigma t fun (a : α) => Finset.preimage s (Sigma.mk a) ⋯) = s
    theorem Finset.sigma_image_fst_preimage_mk {α : Type u} {β : α → Type u_1} [DecidableEq α] (s : Finset ((a : α) × β a)) :
    (Finset.sigma (Finset.image Sigma.fst s) fun (a : α) => Finset.preimage s (Sigma.mk a) ⋯) = s