Documentation

Mathlib.Order.Filter.Map

Theorems about map and comap on filters. #

Push-forwards, pull-backs, and the monad structure #

@[simp]
theorem Filter.map_principal {α : Type u_1} {β : Type u_2} {s : Set α} {f : αβ} :
map f (principal s) = principal (f '' s)
@[simp]
theorem Filter.eventually_map {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {P : βProp} :
(∀ᶠ (b : β) in map m f, P b) ∀ᶠ (a : α) in f, P (m a)
@[simp]
theorem Filter.frequently_map {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {P : βProp} :
(∃ᶠ (b : β) in map m f, P b) ∃ᶠ (a : α) in f, P (m a)
@[simp]
theorem Filter.mem_map {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {t : Set β} :
t map m f m ⁻¹' t f
theorem Filter.mem_map' {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {t : Set β} :
t map m f {x : α | m x t} f
theorem Filter.image_mem_map {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {s : Set α} (hs : s f) :
m '' s map m f
@[simp]
theorem Filter.image_mem_map_iff {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {s : Set α} (hf : Function.Injective m) :
m '' s map m f s f
theorem Filter.range_mem_map {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} :
theorem Filter.mem_map_iff_exists_image {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {t : Set β} :
t map m f sf, m '' s t
@[simp]
theorem Filter.map_id {α : Type u_1} {f : Filter α} :
map id f = f
@[simp]
theorem Filter.map_id' {α : Type u_1} {f : Filter α} :
map (fun (x : α) => x) f = f
@[simp]
theorem Filter.map_compose {α : Type u_1} {β : Type u_2} {γ : Type u_3} {m : αβ} {m' : βγ} :
map m' map m = map (m' m)
@[simp]
theorem Filter.map_map {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : Filter α} {m : αβ} {m' : βγ} :
map m' (map m f) = map (m' m) f
theorem Filter.map_congr {α : Type u_1} {β : Type u_2} {m₁ m₂ : αβ} {f : Filter α} (h : m₁ =ᶠ[f] m₂) :
map m₁ f = map m₂ f

If functions m₁ and m₂ are eventually equal at a filter f, then they map this filter to the same filter.

theorem Filter.mem_comap' {α : Type u_1} {β : Type u_2} {f : αβ} {l : Filter β} {s : Set α} :
s comap f l {y : β | ∀ ⦃x : α⦄, f x = yx s} l
theorem Filter.mem_comap'' {α : Type u_1} {β : Type u_2} {f : αβ} {l : Filter β} {s : Set α} :
theorem Filter.mem_comap_prod_mk {α : Type u_1} {β : Type u_2} {x : α} {s : Set β} {F : Filter (α × β)} :
s comap (Prod.mk x) F {p : α × β | p.1 = xp.2 s} F

RHS form is used, e.g., in the definition of UniformSpace.

@[simp]
theorem Filter.eventually_comap {α : Type u_1} {β : Type u_2} {f : αβ} {l : Filter β} {p : αProp} :
(∀ᶠ (a : α) in comap f l, p a) ∀ᶠ (b : β) in l, ∀ (a : α), f a = bp a
@[simp]
theorem Filter.frequently_comap {α : Type u_1} {β : Type u_2} {f : αβ} {l : Filter β} {p : αProp} :
(∃ᶠ (a : α) in comap f l, p a) ∃ᶠ (b : β) in l, ∃ (a : α), f a = b p a
theorem Filter.mem_comap_iff_compl {α : Type u_1} {β : Type u_2} {f : αβ} {l : Filter β} {s : Set α} :
s comap f l (f '' s) l
theorem Filter.compl_mem_comap {α : Type u_1} {β : Type u_2} {f : αβ} {l : Filter β} {s : Set α} :
s comap f l (f '' s) l
theorem Filter.pure_sets {α : Type u_1} (a : α) :
(pure a).sets = {s : Set α | a s}
@[simp]
theorem Filter.eventually_pure {α : Type u_1} {a : α} {p : αProp} :
(∀ᶠ (x : α) in pure a, p x) p a
@[simp]
theorem Filter.principal_singleton {α : Type u_1} (a : α) :
@[simp]
theorem Filter.map_pure {α : Type u_1} {β : Type u_2} (f : αβ) (a : α) :
map f (pure a) = pure (f a)
theorem Filter.pure_le_principal {α : Type u_1} {s : Set α} (a : α) :
@[simp]
theorem Filter.join_pure {α : Type u_1} (f : Filter α) :
(pure f).join = f
@[simp]
theorem Filter.pure_bind {α : Type u_1} {β : Type u_2} (a : α) (m : αFilter β) :
(pure a).bind m = m a
theorem Filter.map_bind {γ : Type u_3} {α : Type u_6} {β : Type u_7} (m : βγ) (f : Filter α) (g : αFilter β) :
map m (f.bind g) = f.bind (map m g)
theorem Filter.bind_map {γ : Type u_3} {α : Type u_6} {β : Type u_7} (m : αβ) (f : Filter α) (g : βFilter γ) :
(map m f).bind g = f.bind (g m)

Filter as a Monad #

In this section we define Filter.monad, a Monad structure on Filters. This definition is not an instance because its Seq projection is not equal to the Filter.seq function we use in the Applicative instance on Filter.

The monad structure on filters.

Equations
Instances For
    Equations
    @[simp]
    theorem Filter.map_def {α β : Type u_6} (m : αβ) (f : Filter α) :
    m <$> f = map m f
    @[simp]
    theorem Filter.bind_def {α β : Type u_6} (f : Filter α) (m : αFilter β) :
    f >>= m = f.bind m

    map and comap equations #

    @[simp]
    theorem Filter.mem_comap {α : Type u_1} {β : Type u_2} {g : Filter β} {m : αβ} {s : Set α} :
    s comap m g tg, m ⁻¹' t s
    theorem Filter.preimage_mem_comap {α : Type u_1} {β : Type u_2} {g : Filter β} {m : αβ} {t : Set β} (ht : t g) :
    m ⁻¹' t comap m g
    theorem Filter.Eventually.comap {α : Type u_1} {β : Type u_2} {g : Filter β} {p : βProp} (hf : ∀ᶠ (b : β) in g, p b) (f : αβ) :
    ∀ᶠ (a : α) in Filter.comap f g, p (f a)
    theorem Filter.comap_id {α : Type u_1} {f : Filter α} :
    comap id f = f
    theorem Filter.comap_id' {α : Type u_1} {f : Filter α} :
    comap (fun (x : α) => x) f = f
    theorem Filter.comap_const_of_not_mem {α : Type u_1} {β : Type u_2} {g : Filter β} {t : Set β} {x : β} (ht : t g) (hx : xt) :
    comap (fun (x_1 : α) => x) g =
    theorem Filter.comap_const_of_mem {α : Type u_1} {β : Type u_2} {g : Filter β} {x : β} (h : tg, x t) :
    comap (fun (x_1 : α) => x) g =
    theorem Filter.map_const {α : Type u_1} {β : Type u_2} {f : Filter α} [f.NeBot] {c : β} :
    map (fun (x : α) => c) f = pure c
    theorem Filter.comap_comap {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : Filter α} {m : γβ} {n : βα} :
    comap m (comap n f) = comap (n m) f

    The variables in the following lemmas are used as in this diagram:

        φ
      α → β
    θ ↓   ↓ ψ
      γ → δ
        ρ
    
    theorem Filter.map_comm {α : Type u_1} {β : Type u_2} {γ : Type u_3} {δ : Type u_4} {φ : αβ} {θ : αγ} {ψ : βδ} {ρ : γδ} (H : ψ φ = ρ θ) (F : Filter α) :
    map ψ (map φ F) = map ρ (map θ F)
    theorem Filter.comap_comm {α : Type u_1} {β : Type u_2} {γ : Type u_3} {δ : Type u_4} {φ : αβ} {θ : αγ} {ψ : βδ} {ρ : γδ} (H : ψ φ = ρ θ) (G : Filter δ) :
    comap φ (comap ψ G) = comap θ (comap ρ G)
    theorem Function.Semiconj.filter_map {α : Type u_1} {β : Type u_2} {f : αβ} {ga : αα} {gb : ββ} (h : Semiconj f ga gb) :
    theorem Function.Commute.filter_map {α : Type u_1} {f g : αα} (h : Function.Commute f g) :
    theorem Function.Semiconj.filter_comap {α : Type u_1} {β : Type u_2} {f : αβ} {ga : αα} {gb : ββ} (h : Semiconj f ga gb) :
    theorem Function.LeftInverse.filter_map {α : Type u_1} {β : Type u_2} {f : αβ} {g : βα} (hfg : LeftInverse g f) :
    theorem Function.LeftInverse.filter_comap {α : Type u_1} {β : Type u_2} {f : αβ} {g : βα} (hfg : LeftInverse g f) :
    theorem Function.RightInverse.filter_map {α : Type u_1} {β : Type u_2} {f : αβ} {g : βα} (hfg : RightInverse g f) :
    theorem Function.RightInverse.filter_comap {α : Type u_1} {β : Type u_2} {f : αβ} {g : βα} (hfg : RightInverse g f) :
    theorem Set.LeftInvOn.filter_map_Iic {α : Type u_1} {β : Type u_2} {s : Set α} {f : αβ} {g : βα} (hfg : LeftInvOn g f s) :
    theorem Set.RightInvOn.filter_map_Iic {α : Type u_1} {β : Type u_2} {t : Set β} {f : αβ} {g : βα} (hfg : RightInvOn g f t) :
    def Filter.kernMap {α : Type u_1} {β : Type u_2} (m : αβ) (f : Filter α) :

    The analog of kernImage for filters. A set s belongs to Filter.kernMap m f if either of the following equivalent conditions hold.

    1. There exists a set t ∈ f such that s = kernImage m t. This is used as a definition.
    2. There exists a set t such that tᶜ ∈ f and sᶜ = m '' t, see Filter.mem_kernMap_iff_compl and Filter.compl_mem_kernMap.

    This definition because it gives a right adjoint to Filter.comap, and because it has a nice interpretation when working with co- filters (Filter.cocompact, Filter.cofinite, ...). For example, kernMap m (cocompact α) is the filter generated by the complements of the sets m '' K where K is a compact subset of α.

    Equations
    Instances For
      theorem Filter.mem_kernMap {α : Type u_1} {β : Type u_2} {m : αβ} {f : Filter α} {s : Set β} :
      s kernMap m f tf, Set.kernImage m t = s
      theorem Filter.mem_kernMap_iff_compl {α : Type u_1} {β : Type u_2} {m : αβ} {f : Filter α} {s : Set β} :
      s kernMap m f ∃ (t : Set α), t f m '' t = s
      theorem Filter.compl_mem_kernMap {α : Type u_1} {β : Type u_2} {m : αβ} {f : Filter α} {s : Set β} :
      s kernMap m f ∃ (t : Set α), t f m '' t = s
      theorem Filter.comap_le_iff_le_kernMap {α : Type u_1} {β : Type u_2} {g : Filter β} {m : αβ} {f : Filter α} :
      comap m g f g kernMap m f
      theorem Filter.gc_comap_kernMap {α : Type u_1} {β : Type u_2} (m : αβ) :
      theorem Filter.kernMap_principal {α : Type u_1} {β : Type u_2} {m : αβ} {s : Set α} :
      @[simp]
      theorem Filter.comap_principal {α : Type u_1} {β : Type u_2} {m : αβ} {t : Set β} :
      @[simp]
      theorem Filter.comap_pure {α : Type u_1} {β : Type u_2} {m : αβ} {b : β} :
      theorem Filter.map_le_iff_le_comap {α : Type u_1} {β : Type u_2} {f : Filter α} {g : Filter β} {m : αβ} :
      map m f g f comap m g
      theorem Filter.gc_map_comap {α : Type u_1} {β : Type u_2} (m : αβ) :
      theorem Filter.map_mono {α : Type u_1} {β : Type u_2} {m : αβ} :
      theorem Filter.comap_mono {α : Type u_1} {β : Type u_2} {m : αβ} :
      theorem GCongr.Filter.map_le_map {α : Type u_1} {β : Type u_2} {m : αβ} {F G : Filter α} (h : F G) :

      Temporary lemma that we can tag with gcongr

      theorem GCongr.Filter.comap_le_comap {α : Type u_1} {β : Type u_2} {m : αβ} {F G : Filter β} (h : F G) :

      Temporary lemma that we can tag with gcongr

      @[simp]
      theorem Filter.map_bot {α : Type u_1} {β : Type u_2} {m : αβ} :
      @[simp]
      theorem Filter.map_sup {α : Type u_1} {β : Type u_2} {f₁ f₂ : Filter α} {m : αβ} :
      map m (f₁ f₂) = map m f₁ map m f₂
      @[simp]
      theorem Filter.map_iSup {α : Type u_1} {β : Type u_2} {ι : Sort u_5} {m : αβ} {f : ιFilter α} :
      map m (⨆ (i : ι), f i) = ⨆ (i : ι), map m (f i)
      @[simp]
      theorem Filter.map_top {α : Type u_1} {β : Type u_2} (f : αβ) :
      @[simp]
      theorem Filter.comap_top {α : Type u_1} {β : Type u_2} {m : αβ} :
      @[simp]
      theorem Filter.comap_inf {α : Type u_1} {β : Type u_2} {g₁ g₂ : Filter β} {m : αβ} :
      comap m (g₁ g₂) = comap m g₁ comap m g₂
      @[simp]
      theorem Filter.comap_iInf {α : Type u_1} {β : Type u_2} {ι : Sort u_5} {m : αβ} {f : ιFilter β} :
      comap m (⨅ (i : ι), f i) = ⨅ (i : ι), comap m (f i)
      theorem Filter.le_comap_top {α : Type u_1} {β : Type u_2} (f : αβ) (l : Filter α) :
      theorem Filter.map_comap_le {α : Type u_1} {β : Type u_2} {g : Filter β} {m : αβ} :
      map m (comap m g) g
      theorem Filter.le_comap_map {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} :
      f comap m (map m f)
      @[simp]
      theorem Filter.comap_bot {α : Type u_1} {β : Type u_2} {m : αβ} :
      theorem Filter.neBot_of_comap {α : Type u_1} {β : Type u_2} {g : Filter β} {m : αβ} (h : (comap m g).NeBot) :
      theorem Filter.comap_inf_principal_range {α : Type u_1} {β : Type u_2} {g : Filter β} {m : αβ} :
      theorem Filter.disjoint_comap {α : Type u_1} {β : Type u_2} {g₁ g₂ : Filter β} {m : αβ} (h : Disjoint g₁ g₂) :
      Disjoint (comap m g₁) (comap m g₂)
      theorem Filter.comap_iSup {α : Type u_1} {β : Type u_2} {ι : Sort u_6} {f : ιFilter β} {m : αβ} :
      comap m (iSup f) = ⨆ (i : ι), comap m (f i)
      theorem Filter.comap_sSup {α : Type u_1} {β : Type u_2} {s : Set (Filter β)} {m : αβ} :
      comap m (sSup s) = fs, comap m f
      theorem Filter.comap_sup {α : Type u_1} {β : Type u_2} {g₁ g₂ : Filter β} {m : αβ} :
      comap m (g₁ g₂) = comap m g₁ comap m g₂
      theorem Filter.map_comap {α : Type u_1} {β : Type u_2} (f : Filter β) (m : αβ) :
      theorem Filter.map_comap_of_mem {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} (hf : Set.range m f) :
      map m (comap m f) = f
      instance Filter.canLift {α : Type u_1} {β : Type u_2} (c : βα) (p : αProp) [CanLift α β c p] :
      CanLift (Filter α) (Filter β) (map c) fun (f : Filter α) => ∀ᶠ (x : α) in f, p x
      theorem Filter.comap_le_comap_iff {α : Type u_1} {β : Type u_2} {f g : Filter β} {m : αβ} (hf : Set.range m f) :
      comap m f comap m g f g
      theorem Filter.map_comap_of_surjective {α : Type u_1} {β : Type u_2} {f : αβ} (hf : Function.Surjective f) (l : Filter β) :
      map f (comap f l) = l
      theorem Filter.comap_injective {α : Type u_1} {β : Type u_2} {f : αβ} (hf : Function.Surjective f) :
      theorem Function.Surjective.filter_map_top {α : Type u_1} {β : Type u_2} {f : αβ} (hf : Surjective f) :
      theorem Filter.image_mem_of_mem_comap {α : Type u_1} {β : Type u_2} {f : Filter α} {c : βα} (h : Set.range c f) {W : Set β} (W_in : W comap c f) :
      c '' W f
      theorem Filter.image_coe_mem_of_mem_comap {α : Type u_1} {f : Filter α} {U : Set α} (h : U f) {W : Set U} (W_in : W comap Subtype.val f) :
      theorem Filter.comap_map {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} (h : Function.Injective m) :
      comap m (map m f) = f
      theorem Filter.mem_comap_iff {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} (inj : Function.Injective m) (large : Set.range m f) {S : Set α} :
      S comap m f m '' S f
      theorem Filter.map_le_map_iff_of_injOn {α : Type u_1} {β : Type u_2} {l₁ l₂ : Filter α} {f : αβ} {s : Set α} (h₁ : s l₁) (h₂ : s l₂) (hinj : Set.InjOn f s) :
      map f l₁ map f l₂ l₁ l₂
      theorem Filter.map_le_map_iff {α : Type u_1} {β : Type u_2} {f g : Filter α} {m : αβ} (hm : Function.Injective m) :
      map m f map m g f g
      theorem Filter.map_eq_map_iff_of_injOn {α : Type u_1} {β : Type u_2} {f g : Filter α} {m : αβ} {s : Set α} (hsf : s f) (hsg : s g) (hm : Set.InjOn m s) :
      map m f = map m g f = g
      theorem Filter.map_inj {α : Type u_1} {β : Type u_2} {f g : Filter α} {m : αβ} (hm : Function.Injective m) :
      map m f = map m g f = g
      theorem Filter.map_injective {α : Type u_1} {β : Type u_2} {m : αβ} (hm : Function.Injective m) :
      theorem Filter.comap_neBot_iff {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} :
      (comap m f).NeBot tf, ∃ (a : α), m a t
      theorem Filter.comap_neBot {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} (hm : tf, ∃ (a : α), m a t) :
      (comap m f).NeBot
      theorem Filter.comap_neBot_iff_frequently {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} :
      (comap m f).NeBot ∃ᶠ (y : β) in f, y Set.range m
      theorem Filter.comap_neBot_iff_compl_range {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} :
      (comap m f).NeBot (Set.range m)f
      theorem Filter.comap_eq_bot_iff_compl_range {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} :
      theorem Filter.comap_surjective_eq_bot {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} (hm : Function.Surjective m) :
      comap m f = f =
      theorem Filter.disjoint_comap_iff {α : Type u_1} {β : Type u_2} {g₁ g₂ : Filter β} {m : αβ} (h : Function.Surjective m) :
      Disjoint (comap m g₁) (comap m g₂) Disjoint g₁ g₂
      theorem Filter.NeBot.comap_of_range_mem {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} :
      f.NeBot∀ (hm : Set.range m f), (comap m f).NeBot
      @[simp]
      theorem Filter.comap_fst_neBot_iff {α : Type u_1} {β : Type u_2} {f : Filter α} :
      instance Filter.comap_fst_neBot {α : Type u_1} {β : Type u_2} [Nonempty β] {f : Filter α} [f.NeBot] :
      @[simp]
      theorem Filter.comap_snd_neBot_iff {α : Type u_1} {β : Type u_2} {f : Filter β} :
      instance Filter.comap_snd_neBot {α : Type u_1} {β : Type u_2} [Nonempty α] {f : Filter β} [f.NeBot] :
      theorem Filter.comap_eval_neBot_iff' {ι : Type u_6} {α : ιType u_7} {i : ι} {f : Filter (α i)} :
      (comap (Function.eval i) f).NeBot (∀ (j : ι), Nonempty (α j)) f.NeBot
      @[simp]
      theorem Filter.comap_eval_neBot_iff {ι : Type u_6} {α : ιType u_7} [∀ (j : ι), Nonempty (α j)] {i : ι} {f : Filter (α i)} :
      instance Filter.comap_eval_neBot {ι : Type u_6} {α : ιType u_7} [∀ (j : ι), Nonempty (α j)] (i : ι) (f : Filter (α i)) [f.NeBot] :
      theorem Filter.comap_coe_neBot_of_le_principal {γ : Type u_3} {s : Set γ} {l : Filter γ} [h : l.NeBot] (h' : l principal s) :
      theorem Filter.NeBot.comap_of_surj {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} (hf : f.NeBot) (hm : Function.Surjective m) :
      (comap m f).NeBot
      theorem Filter.NeBot.comap_of_image_mem {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} (hf : f.NeBot) {s : Set α} (hs : m '' s f) :
      (comap m f).NeBot
      @[simp]
      theorem Filter.map_eq_bot_iff {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} :
      map m f = f =
      theorem Filter.map_neBot_iff {α : Type u_1} {β : Type u_2} (f : αβ) {F : Filter α} :
      (map f F).NeBot F.NeBot
      theorem Filter.NeBot.map {α : Type u_1} {β : Type u_2} {f : Filter α} (hf : f.NeBot) (m : αβ) :
      theorem Filter.NeBot.of_map {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} :
      (Filter.map m f).NeBotf.NeBot
      instance Filter.map_neBot {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} [hf : f.NeBot] :
      (map m f).NeBot
      theorem Filter.sInter_comap_sets {α : Type u_1} {β : Type u_2} (f : αβ) (F : Filter β) :
      ⋂₀ (comap f F).sets = UF, f ⁻¹' U
      theorem Filter.map_iInf_le {α : Type u_1} {β : Type u_2} {ι : Sort u_5} {f : ιFilter α} {m : αβ} :
      map m (iInf f) ⨅ (i : ι), map m (f i)
      theorem Filter.map_iInf_eq {α : Type u_1} {β : Type u_2} {ι : Sort u_5} {f : ιFilter α} {m : αβ} (hf : Directed (fun (x1 x2 : Filter α) => x1 x2) f) [Nonempty ι] :
      map m (iInf f) = ⨅ (i : ι), map m (f i)
      theorem Filter.map_biInf_eq {α : Type u_1} {β : Type u_2} {ι : Type w} {f : ιFilter α} {m : αβ} {p : ιProp} (h : DirectedOn (f ⁻¹'o fun (x1 x2 : Filter α) => x1 x2) {x : ι | p x}) (ne : ∃ (i : ι), p i) :
      map m (⨅ (i : ι), ⨅ (_ : p i), f i) = ⨅ (i : ι), ⨅ (_ : p i), map m (f i)
      theorem Filter.map_inf_le {α : Type u_1} {β : Type u_2} {f g : Filter α} {m : αβ} :
      map m (f g) map m f map m g
      theorem Filter.map_inf {α : Type u_1} {β : Type u_2} {f g : Filter α} {m : αβ} (h : Function.Injective m) :
      map m (f g) = map m f map m g
      theorem Filter.map_inf' {α : Type u_1} {β : Type u_2} {f g : Filter α} {m : αβ} {t : Set α} (htf : t f) (htg : t g) (h : Set.InjOn m t) :
      map m (f g) = map m f map m g
      theorem Filter.disjoint_of_map {α : Type u_6} {β : Type u_7} {F G : Filter α} {f : αβ} (h : Disjoint (map f F) (map f G)) :
      theorem Filter.disjoint_map {α : Type u_1} {β : Type u_2} {m : αβ} (hm : Function.Injective m) {f₁ f₂ : Filter α} :
      Disjoint (map m f₁) (map m f₂) Disjoint f₁ f₂
      theorem Filter.map_equiv_symm {α : Type u_1} {β : Type u_2} (e : α β) (f : Filter β) :
      map (⇑e.symm) f = comap (⇑e) f
      theorem Filter.map_eq_comap_of_inverse {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {n : βα} (h₁ : m n = id) (h₂ : n m = id) :
      map m f = comap n f
      theorem Filter.comap_equiv_symm {α : Type u_1} {β : Type u_2} (e : α β) (f : Filter α) :
      comap (⇑e.symm) f = map (⇑e) f
      theorem Filter.map_swap_eq_comap_swap {α : Type u_1} {β : Type u_2} {f : Filter (α × β)} :
      theorem Filter.map_swap4_eq_comap {α : Type u_1} {β : Type u_2} {γ : Type u_3} {δ : Type u_4} {f : Filter ((α × β) × γ × δ)} :
      map (fun (p : (α × β) × γ × δ) => ((p.1.1, p.2.1), p.1.2, p.2.2)) f = comap (fun (p : (α × γ) × β × δ) => ((p.1.1, p.2.1), p.1.2, p.2.2)) f

      A useful lemma when dealing with uniformities.

      theorem Filter.le_map {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {g : Filter β} (h : sf, m '' s g) :
      g map m f
      theorem Filter.le_map_iff {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αβ} {g : Filter β} :
      g map m f sf, m '' s g
      theorem Filter.push_pull {α : Type u_1} {β : Type u_2} (f : αβ) (F : Filter α) (G : Filter β) :
      map f (F comap f G) = map f F G
      theorem Filter.push_pull' {α : Type u_1} {β : Type u_2} (f : αβ) (F : Filter α) (G : Filter β) :
      map f (comap f G F) = G map f F
      theorem Filter.disjoint_comap_iff_map {α : Type u_1} {β : Type u_2} {f : αβ} {F : Filter α} {G : Filter β} :
      Disjoint F (comap f G) Disjoint (map f F) G
      theorem Filter.disjoint_comap_iff_map' {α : Type u_1} {β : Type u_2} {f : αβ} {F : Filter α} {G : Filter β} :
      Disjoint (comap f G) F Disjoint G (map f F)
      theorem Filter.neBot_inf_comap_iff_map {α : Type u_1} {β : Type u_2} {f : αβ} {F : Filter α} {G : Filter β} :
      (F comap f G).NeBot (map f F G).NeBot
      theorem Filter.neBot_inf_comap_iff_map' {α : Type u_1} {β : Type u_2} {f : αβ} {F : Filter α} {G : Filter β} :
      (comap f G F).NeBot (G map f F).NeBot
      theorem Filter.comap_inf_principal_neBot_of_image_mem {α : Type u_1} {β : Type u_2} {f : Filter β} {m : αβ} (hf : f.NeBot) {s : Set α} (hs : m '' s f) :
      theorem Filter.singleton_mem_pure {α : Type u_1} {a : α} :
      instance Filter.pure_neBot {α : Type u} {a : α} :
      @[simp]
      theorem Filter.le_pure_iff {α : Type u_1} {f : Filter α} {a : α} :
      f pure a {a} f
      theorem Filter.mem_seq_def {α : Type u_1} {β : Type u_2} {f : Filter (αβ)} {g : Filter α} {s : Set β} :
      s f.seq g uf, tg, xu, yt, x y s
      theorem Filter.mem_seq_iff {α : Type u_1} {β : Type u_2} {f : Filter (αβ)} {g : Filter α} {s : Set β} :
      s f.seq g uf, tg, u.seq t s
      theorem Filter.mem_map_seq_iff {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : Filter α} {g : Filter β} {m : αβγ} {s : Set γ} :
      s (map m f).seq g ∃ (t : Set β) (u : Set α), t g u f xu, yt, m x y s
      theorem Filter.seq_mem_seq {α : Type u_1} {β : Type u_2} {f : Filter (αβ)} {g : Filter α} {s : Set (αβ)} {t : Set α} (hs : s f) (ht : t g) :
      s.seq t f.seq g
      theorem Filter.le_seq {α : Type u_1} {β : Type u_2} {f : Filter (αβ)} {g : Filter α} {h : Filter β} (hh : tf, ug, t.seq u h) :
      h f.seq g
      theorem Filter.seq_mono {α : Type u_1} {β : Type u_2} {f₁ f₂ : Filter (αβ)} {g₁ g₂ : Filter α} (hf : f₁ f₂) (hg : g₁ g₂) :
      f₁.seq g₁ f₂.seq g₂
      @[simp]
      theorem Filter.pure_seq_eq_map {α : Type u_1} {β : Type u_2} (g : αβ) (f : Filter α) :
      (pure g).seq f = map g f
      @[simp]
      theorem Filter.seq_pure {α : Type u_1} {β : Type u_2} (f : Filter (αβ)) (a : α) :
      f.seq (pure a) = map (fun (g : αβ) => g a) f
      @[simp]
      theorem Filter.seq_assoc {α : Type u_1} {β : Type u_2} {γ : Type u_3} (x : Filter α) (g : Filter (αβ)) (h : Filter (βγ)) :
      h.seq (g.seq x) = ((map (fun (x1 : βγ) (x2 : αβ) => x1 x2) h).seq g).seq x
      theorem Filter.prod_map_seq_comm {α : Type u_1} {β : Type u_2} (f : Filter α) (g : Filter β) :
      (map Prod.mk f).seq g = (map (fun (b : β) (a : α) => (a, b)) g).seq f
      theorem Filter.seq_eq_filter_seq {α β : Type u} (f : Filter (αβ)) (g : Filter α) :
      f <*> g = f.seq g

      bind equations #

      @[simp]
      theorem Filter.eventually_bind {α : Type u_1} {β : Type u_2} {f : Filter α} {m : αFilter β} {p : βProp} :
      (∀ᶠ (y : β) in f.bind m, p y) ∀ᶠ (x : α) in f, ∀ᶠ (y : β) in m x, p y
      @[simp]
      theorem Filter.eventuallyEq_bind {α : Type u_1} {β : Type u_2} {γ : Type u_3} {f : Filter α} {m : αFilter β} {g₁ g₂ : βγ} :
      g₁ =ᶠ[f.bind m] g₂ ∀ᶠ (x : α) in f, g₁ =ᶠ[m x] g₂
      @[simp]
      theorem Filter.eventuallyLE_bind {α : Type u_1} {β : Type u_2} {γ : Type u_3} [LE γ] {f : Filter α} {m : αFilter β} {g₁ g₂ : βγ} :
      g₁ ≤ᶠ[f.bind m] g₂ ∀ᶠ (x : α) in f, g₁ ≤ᶠ[m x] g₂
      theorem Filter.mem_bind' {α : Type u_1} {β : Type u_2} {s : Set β} {f : Filter α} {m : αFilter β} :
      s f.bind m {a : α | s m a} f
      @[simp]
      theorem Filter.mem_bind {α : Type u_1} {β : Type u_2} {s : Set β} {f : Filter α} {m : αFilter β} :
      s f.bind m tf, xt, s m x
      theorem Filter.bind_le {α : Type u_1} {β : Type u_2} {f : Filter α} {g : αFilter β} {l : Filter β} (h : ∀ᶠ (x : α) in f, g x l) :
      f.bind g l
      theorem Filter.bind_mono {α : Type u_1} {β : Type u_2} {f₁ f₂ : Filter α} {g₁ g₂ : αFilter β} (hf : f₁ f₂) (hg : g₁ ≤ᶠ[f₁] g₂) :
      f₁.bind g₁ f₂.bind g₂
      theorem Filter.bind_inf_principal {α : Type u_1} {β : Type u_2} {f : Filter α} {g : αFilter β} {s : Set β} :
      (f.bind fun (x : α) => g x principal s) = f.bind g principal s
      theorem Filter.sup_bind {α : Type u_1} {β : Type u_2} {f g : Filter α} {h : αFilter β} :
      (f g).bind h = f.bind h g.bind h
      theorem Filter.principal_bind {α : Type u_1} {β : Type u_2} {s : Set α} {f : αFilter β} :
      (principal s).bind f = xs, f x
      theorem Filter.map_surjOn_Iic_iff_le_map {α : Type u_1} {β : Type u_2} {F : Filter α} {G : Filter β} {m : αβ} :
      Set.SurjOn (map m) (Set.Iic F) (Set.Iic G) G map m F
      theorem Filter.map_surjOn_Iic_iff_surjOn {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {m : αβ} :
      theorem Set.SurjOn.filter_map_Iic {α : Type u_1} {β : Type u_2} {s : Set α} {t : Set β} {m : αβ} :

      Alias of the reverse direction of Filter.map_surjOn_Iic_iff_surjOn.

      theorem Filter.filter_injOn_Iic_iff_injOn {α : Type u_1} {β : Type u_2} {s : Set α} {m : αβ} :
      theorem Set.InjOn.filter_map_Iic {α : Type u_1} {β : Type u_2} {s : Set α} {m : αβ} :

      Alias of the reverse direction of Filter.filter_injOn_Iic_iff_injOn.