Documentation

Mathlib.Order.Filter.Basic

Theory of filters on sets #

A filter on a type α is a collection of sets of α which contains the whole α, is upwards-closed, and is stable under intersection. They are mostly used to abstract two related kinds of ideas:

Main definitions #

In this file, we endow Filter α it with a complete lattice structure. This structure is lifted from the lattice structure on Set (Set X) using the Galois insertion which maps a filter to its elements in one direction, and an arbitrary set of sets to the smallest filter containing it in the other direction. We also prove Filter is a monadic functor, with a push-forward operation Filter.map and a pull-back operation Filter.comap that form a Galois connections for the order on filters.

The examples of filters appearing in the description of the two motivating ideas are:

The predicate "happening eventually" is Filter.Eventually, and "happening often" is Filter.Frequently, whose definitions are immediate after Filter is defined (but they come rather late in this file in order to immediately relate them to the lattice structure).

Notation #

References #

Important note: Bourbaki requires that a filter on X cannot contain all sets of X, which we do not require. This gives Filter X better formal properties, in particular a bottom element ⊥ for its lattice structure, at the cost of including the assumption [NeBot f] in a number of lemmas and definitions.

@[implicit_reducible]
instance Filter.inhabitedMem {α : Type u} {f : Filter α} :
Inhabited { s : Set α // s ∈ f }
Equations
theorem Filter.filter_eq_iff {α : Type u} {f g : Filter α} :
f = g ↔ f.sets = g.sets
@[simp]
theorem Filter.sets_subset_sets {α : Type u} {f g : Filter α} :
f.sets ⊆ g.sets ↔ g ≤ f
@[simp]
theorem Filter.sets_ssubset_sets {α : Type u} {f g : Filter α} :
f.sets ⊂ g.sets ↔ g < f
theorem Filter.coext {α : Type u} {f g : Filter α} (h : ∀ (s : Set α), sᶜ ∈ f ↔ sᶜ ∈ g) :
f = g

An extensionality lemma that is useful for filters with good lemmas about sᶜ ∈ f (e.g., Filter.comap, Filter.coprod, Filter.Coprod, Filter.cofinite).

@[implicit_reducible]
instance Filter.instTransSetSupersetMem {α : Type u} :
Trans (fun (x1 x2 : Set α) => x1 ⊇ x2) (fun (x1 : Set α) (x2 : Filter α) => x1 ∈ x2) fun (x1 : Set α) (x2 : Filter α) => x1 ∈ x2
Equations
@[implicit_reducible]
instance Filter.instTransSetMemSubset {α : Type u} :
Trans Membership.mem (fun (x1 x2 : Set α) => x1 ⊆ x2) Membership.mem
Equations
@[simp]
theorem Filter.inter_mem_iff {α : Type u} {f : Filter α} {s t : Set α} :
s ∩ t ∈ f ↔ s ∈ f ∧ t ∈ f
theorem Filter.sdiff_mem {α : Type u} {f : Filter α} {s t : Set α} (hs : s ∈ f) (ht : tᶜ ∈ f) :
s \ t ∈ f
@[deprecated Filter.sdiff_mem (since := "2026-06-03")]
theorem Filter.diff_mem {α : Type u} {f : Filter α} {s t : Set α} (hs : s ∈ f) (ht : tᶜ ∈ f) :
s \ t ∈ f

Alias of Filter.sdiff_mem.

theorem Filter.congr_sets {α : Type u} {f : Filter α} {s t : Set α} (h : {x : α | x ∈ s ↔ x ∈ t} ∈ f) :
s ∈ f ↔ t ∈ f
theorem Filter.copy_eq {α : Type u} {f : Filter α} {S : Set (Set α)} (hmem : ∀ (s : Set α), s ∈ S ↔ s ∈ f) :
f.copy S hmem = f
theorem Filter.biInter_mem' {α : Type u} {f : Filter α} {β : Type v} {s : β → Set α} {is : Set β} (hf : is.Subsingleton) :
⋂ i ∈ is, s i ∈ f ↔ ∀ i ∈ is, s i ∈ f

Weaker version of Filter.biInter_mem that assumes Subsingleton β rather than Finite β.

theorem Filter.iInter_mem' {α : Type u} {f : Filter α} {β : Sort v} {s : β → Set α} [Subsingleton β] :
⋂ (i : β), s i ∈ f ↔ ∀ (i : β), s i ∈ f

Weaker version of Filter.iInter_mem that assumes Subsingleton β rather than Finite β.

theorem Filter.exists_mem_subset_iff {α : Type u} {f : Filter α} {s : Set α} :
(∃ t ∈ f, t ⊆ s) ↔ s ∈ f
theorem Filter.monotone_mem {α : Type u} {f : Filter α} :
Monotone fun (s : Set α) => s ∈ f
theorem Filter.exists_mem_and_iff {α : Type u} {f : Filter α} {P Q : Set α → Prop} (hP : Antitone P) (hQ : Antitone Q) :
((∃ u ∈ f, P u) ∧ ∃ u ∈ f, Q u) ↔ ∃ u ∈ f, P u ∧ Q u
theorem Filter.mem_principal_self {α : Type u} (s : Set α) :
theorem Filter.eventually_mem_principal {α : Type u} (s : Set α) :
∀ᶠ (x : α) in principal s, x ∈ s
theorem Filter.not_le {α : Type u} {f g : Filter α} :
¬f ≤ g ↔ ∃ s ∈ g, s ∉ f
inductive Filter.GenerateSets {α : Type u} (g : Set (Set α)) :
Set α → Prop

GenerateSets g s: s is in the filter closure of g.

Instances For
    def Filter.generate {α : Type u} (g : Set (Set α)) :

    generate g is the largest filter containing the sets g.

    Equations
    Instances For
      theorem Filter.mem_generate_of_mem {α : Type u} {s : Set (Set α)} {U : Set α} (h : U ∈ s) :
      theorem Filter.le_generate_iff {α : Type u} {s : Set (Set α)} {f : Filter α} :
      @[simp]
      theorem Filter.generate_singleton {α : Type u} (s : Set α) :
      def Filter.mkOfClosure {α : Type u} (s : Set (Set α)) (hs : (generate s).sets = s) :

      mkOfClosure s hs constructs a filter on α whose elements set is exactly s : Set (Set α), provided one gives the assumption hs : (generate s).sets = s.

      Equations
      Instances For
        theorem Filter.mkOfClosure_sets {α : Type u} {s : Set (Set α)} {hs : (generate s).sets = s} :

        Galois insertion from sets of sets into filters.

        Equations
        Instances For
          theorem Filter.mem_inf_iff {α : Type u} {f g : Filter α} {s : Set α} :
          s ∈ f ⊓ g ↔ ∃ t₁ ∈ f, ∃ t₂ ∈ g, s = t₁ ∩ t₂
          theorem Filter.mem_inf_of_left {α : Type u} {f g : Filter α} {s : Set α} (h : s ∈ f) :
          s ∈ f ⊓ g
          theorem Filter.mem_inf_of_right {α : Type u} {f g : Filter α} {s : Set α} (h : s ∈ g) :
          s ∈ f ⊓ g
          theorem Filter.inter_mem_inf {α : Type u} {f g : Filter α} {s t : Set α} (hs : s ∈ f) (ht : t ∈ g) :
          s ∩ t ∈ f ⊓ g
          theorem Filter.mem_inf_of_inter {α : Type u} {f g : Filter α} {s t u : Set α} (hs : s ∈ f) (ht : t ∈ g) (h : s ∩ t ⊆ u) :
          u ∈ f ⊓ g
          theorem Filter.mem_inf_iff_superset {α : Type u} {f g : Filter α} {s : Set α} :
          s ∈ f ⊓ g ↔ ∃ t₁ ∈ f, ∃ t₂ ∈ g, t₁ ∩ t₂ ⊆ s
          theorem Filter.mem_sdiff_iff_union {α : Type u} {f g : Filter α} {s : Set α} :
          s ∈ f \ g ↔ ∀ t ∈ g, s ∪ t ∈ f
          theorem Filter.isLUB_sSup {α : Type u} (s : Set (Filter α)) :
          IsLUB s (sSup s)
          theorem Filter.isGLB_sInf {α : Type u} (s : Set (Filter α)) :
          IsGLB s (sInf s)
          @[implicit_reducible]

          Complete lattice structure on Filter α.

          Equations
          • One or more equations did not get rendered due to their size.
          @[implicit_reducible]
          instance Filter.instInhabited {α : Type u} :
          Equations
          theorem Filter.NeBot.ne {α : Type u} {f : Filter α} (hf : f.NeBot) :
          @[simp]
          theorem Filter.not_neBot {α : Type u} {f : Filter α} :
          theorem Filter.NeBot.mono {α : Type u} {f g : Filter α} (hf : f.NeBot) (hg : f ≤ g) :
          theorem Filter.neBot_of_le {α : Type u} {f g : Filter α} [hf : f.NeBot] (hg : f ≤ g) :
          @[simp]
          theorem Filter.sup_neBot {α : Type u} {f g : Filter α} :
          (f ⊔ g).NeBot ↔ f.NeBot ∨ g.NeBot
          theorem Filter.eq_or_neBot {α : Type u} (f : Filter α) :

          Either f = ⊥ or Filter.NeBot f. This is a version of eq_or_ne that uses Filter.NeBot as the second alternative, to be used as an instance.

          theorem Filter.sup_sets_eq {α : Type u} {f g : Filter α} :
          (f ⊔ g).sets = f.sets ∩ g.sets
          theorem Filter.sSup_sets_eq {α : Type u} {s : Set (Filter α)} :
          (sSup s).sets = ⋂ f ∈ s, f.sets
          theorem Filter.iSup_sets_eq {α : Type u} {ι : Sort x} {f : ι → Filter α} :
          (iSup f).sets = ⋂ (i : ι), (f i).sets
          theorem Filter.generate_union {α : Type u} {s t : Set (Set α)} :
          theorem Filter.generate_iUnion {α : Type u} {ι : Sort x} {s : ι → Set (Set α)} :
          generate (⋃ (i : ι), s i) = ⨅ (i : ι), generate (s i)
          @[simp]
          theorem Filter.mem_sup {α : Type u} {f g : Filter α} {s : Set α} :
          s ∈ f ⊔ g ↔ s ∈ f ∧ s ∈ g
          theorem Filter.union_mem_sup {α : Type u} {f g : Filter α} {s t : Set α} (hs : s ∈ f) (ht : t ∈ g) :
          s ∪ t ∈ f ⊔ g
          @[simp]
          theorem Filter.mem_iSup {α : Type u} {ι : Sort x} {x : Set α} {f : ι → Filter α} :
          x ∈ iSup f ↔ ∀ (i : ι), x ∈ f i
          @[simp]
          theorem Filter.iSup_neBot {α : Type u} {ι : Sort x} {f : ι → Filter α} :
          (⨆ (i : ι), f i).NeBot ↔ ∃ (i : ι), (f i).NeBot
          theorem Filter.iInf_eq_generate {α : Type u} {ι : Sort x} (s : ι → Filter α) :
          iInf s = generate (⋃ (i : ι), (s i).sets)
          theorem Filter.mem_iInf_of_mem {α : Type u} {ι : Sort x} {f : ι → Filter α} (i : ι) {s : Set α} (hs : s ∈ f i) :
          s ∈ ⨅ (i : ι), f i
          theorem Filter.iInf_sets_induct {α : Type u} {ι : Sort x} {f : ι → Filter α} {s : Set α} (hs : s ∈ iInf f) {p : Set α → Prop} (uni : p Set.univ) (ins : ∀ {i : ι} {s₁ s₂ : Set α}, s₁ ∈ f i → p s₂ → p (s₁ ∩ s₂)) :
          p s
          @[simp]
          theorem Filter.le_principal_iff {α : Type u} {s : Set α} {f : Filter α} :
          theorem Filter.Iic_principal {α : Type u} (s : Set α) :
          theorem Filter.principal_mono {α : Type u} {s t : Set α} :
          @[simp]
          theorem Filter.principal_eq_iff_eq {α : Type u} {s t : Set α} :
          @[simp]
          theorem Filter.join_principal_eq_sSup {α : Type u} {s : Set (Filter α)} :
          theorem Filter.generate_eq_biInf {α : Type u} (S : Set (Set α)) :
          generate S = ⨅ s ∈ S, principal s

          Lattice equations #

          theorem Filter.empty_mem_iff_bot {α : Type u} {f : Filter α} :
          theorem Filter.nonempty_of_mem {α : Type u} {f : Filter α} [hf : f.NeBot] {s : Set α} (hs : s ∈ f) :
          theorem Filter.NeBot.nonempty_of_mem {α : Type u} {f : Filter α} (hf : f.NeBot) {s : Set α} (hs : s ∈ f) :
          @[simp]
          theorem Filter.empty_notMem {α : Type u} (f : Filter α) [f.NeBot] :
          ∅ ∉ f
          theorem Filter.nonempty_of_neBot {α : Type u} (f : Filter α) [f.NeBot] :
          theorem Filter.compl_notMem {α : Type u} {f : Filter α} {s : Set α} [f.NeBot] (h : s ∈ f) :
          sᶜ ∉ f
          theorem Filter.filter_eq_bot_of_isEmpty {α : Type u} [IsEmpty α] (f : Filter α) :
          f = ⊥
          theorem Filter.disjoint_iff {α : Type u} {f g : Filter α} :
          Disjoint f g ↔ ∃ s ∈ f, ∃ t ∈ g, Disjoint s t
          theorem Filter.disjoint_of_disjoint_of_mem {α : Type u} {f g : Filter α} {s t : Set α} (h : Disjoint s t) (hs : s ∈ f) (ht : t ∈ g) :
          theorem Filter.NeBot.not_disjoint {α : Type u} {f : Filter α} {s t : Set α} (hf : f.NeBot) (hs : s ∈ f) (ht : t ∈ f) :
          theorem Filter.inf_eq_bot_iff {α : Type u} {f g : Filter α} :
          f ⊓ g = ⊥ ↔ ∃ U ∈ f, ∃ V ∈ g, U ∩ V = ∅
          @[implicit_reducible]
          instance Filter.unique {α : Type u} [IsEmpty α] :

          There is exactly one filter on an empty type.

          Equations
          theorem Filter.NeBot.nonempty {α : Type u} (f : Filter α) [hf : f.NeBot] :
          theorem Filter.eq_top_of_neBot {α : Type u} [Subsingleton α] (l : Filter α) [l.NeBot] :
          l = ⊤

          There are only two filters on a Subsingleton: ⊥ and ⊤. If the type is empty, then they are equal.

          theorem Filter.forall_mem_nonempty_iff_neBot {α : Type u} {f : Filter α} :
          (∀ s ∈ f, s.Nonempty) ↔ f.NeBot
          theorem Filter.eq_sInf_of_mem_iff_exists_mem {α : Type u} {S : Set (Filter α)} {l : Filter α} (h : ∀ {s : Set α}, s ∈ l ↔ ∃ f ∈ S, s ∈ f) :
          l = sInf S
          theorem Filter.eq_iInf_of_mem_iff_exists_mem {α : Type u} {ι : Sort x} {f : ι → Filter α} {l : Filter α} (h : ∀ {s : Set α}, s ∈ l ↔ ∃ (i : ι), s ∈ f i) :
          l = iInf f
          theorem Filter.eq_biInf_of_mem_iff_exists_mem {α : Type u} {ι : Sort x} {f : ι → Filter α} {p : ι → Prop} {l : Filter α} (h : ∀ {s : Set α}, s ∈ l ↔ ∃ (i : ι), p i ∧ s ∈ f i) :
          l = ⨅ (i : ι), ⨅ (_ : p i), f i
          theorem Filter.iInf_sets_eq {α : Type u} {ι : Sort x} {f : ι → Filter α} (h : Directed (fun (x1 x2 : Filter α) => x1 ≥ x2) f) [ne : Nonempty ι] :
          (iInf f).sets = ⋃ (i : ι), (f i).sets
          theorem Filter.mem_iInf_of_directed {α : Type u} {ι : Sort x} {f : ι → Filter α} (h : Directed (fun (x1 x2 : Filter α) => x1 ≥ x2) f) [Nonempty ι] (s : Set α) :
          s ∈ iInf f ↔ ∃ (i : ι), s ∈ f i
          theorem Filter.mem_biInf_of_directed {α : Type u} {β : Type v} {f : β → Filter α} {s : Set β} (h : DirectedOn (f ⁻¹'o fun (x1 x2 : Filter α) => x1 ≥ x2) s) (ne : s.Nonempty) {t : Set α} :
          t ∈ ⨅ i ∈ s, f i ↔ ∃ i ∈ s, t ∈ f i
          theorem Filter.biInf_sets_eq {α : Type u} {β : Type v} {f : β → Filter α} {s : Set β} (h : DirectedOn (f ⁻¹'o fun (x1 x2 : Filter α) => x1 ≥ x2) s) (ne : s.Nonempty) :
          (⨅ i ∈ s, f i).sets = ⋃ i ∈ s, (f i).sets
          @[simp]
          theorem Filter.sup_join {α : Type u} {f₁ f₂ : Filter (Filter α)} :
          f₁.join ⊔ f₂.join = (f₁ ⊔ f₂).join
          @[simp]
          theorem Filter.iSup_join {α : Type u} {ι : Sort w} {f : ι → Filter (Filter α)} :
          ⨆ (x : ι), (f x).join = (⨆ (x : ι), f x).join
          @[implicit_reducible]

          The dual version does not hold! Filter α is not a CompleteDistribLattice.

          Equations
          theorem Filter.iInf_neBot_of_directed' {α : Type u} {ι : Sort x} {f : ι → Filter α} [Nonempty ι] (hd : Directed (fun (x1 x2 : Filter α) => x1 ≥ x2) f) :
          (∀ (i : ι), (f i).NeBot) → (iInf f).NeBot

          If f : ι → Filter α is directed, ι is not empty, and ∀ i, f i ≠ ⊥, then iInf f ≠ ⊥. See also iInf_neBot_of_directed for a version assuming Nonempty α instead of Nonempty ι.

          theorem Filter.iInf_neBot_of_directed {α : Type u} {ι : Sort x} {f : ι → Filter α} [hn : Nonempty α] (hd : Directed (fun (x1 x2 : Filter α) => x1 ≥ x2) f) (hb : ∀ (i : ι), (f i).NeBot) :

          If f : ι → Filter α is directed, α is not empty, and ∀ i, f i ≠ ⊥, then iInf f ≠ ⊥. See also iInf_neBot_of_directed' for a version assuming Nonempty ι instead of Nonempty α.

          theorem Filter.sInf_neBot_of_directed' {α : Type u} {s : Set (Filter α)} (hne : s.Nonempty) (hd : DirectedOn (fun (x1 x2 : Filter α) => x1 ≥ x2) s) (hbot : ⊥ ∉ s) :
          theorem Filter.sInf_neBot_of_directed {α : Type u} [Nonempty α] {s : Set (Filter α)} (hd : DirectedOn (fun (x1 x2 : Filter α) => x1 ≥ x2) s) (hbot : ⊥ ∉ s) :
          theorem Filter.iInf_neBot_iff_of_directed' {α : Type u} {ι : Sort x} {f : ι → Filter α} [Nonempty ι] (hd : Directed (fun (x1 x2 : Filter α) => x1 ≥ x2) f) :
          (iInf f).NeBot ↔ ∀ (i : ι), (f i).NeBot
          theorem Filter.iInf_neBot_iff_of_directed {α : Type u} {ι : Sort x} {f : ι → Filter α} [Nonempty α] (hd : Directed (fun (x1 x2 : Filter α) => x1 ≥ x2) f) :
          (iInf f).NeBot ↔ ∀ (i : ι), (f i).NeBot

          principal equations #

          @[simp]
          theorem Filter.inf_principal {α : Type u} {s t : Set α} :
          @[simp]
          theorem Filter.sup_principal {α : Type u} {s t : Set α} :
          @[simp]
          theorem Filter.iSup_principal {α : Type u} {ι : Sort w} {s : ι → Set α} :
          ⨆ (x : ι), principal (s x) = principal (⋃ (i : ι), s i)
          @[simp]
          theorem Filter.principal_sdiff_principal {α : Type u} {s t : Set α} :
          @[simp]
          theorem Filter.hnot_principal {α : Type u} {s : Set α} :
          @[simp]
          theorem Filter.principal_eq_bot_iff {α : Type u} {s : Set α} :
          @[simp]
          theorem Filter.principal_neBot_iff {α : Type u} {s : Set α} :

          Alias of the reverse direction of Filter.principal_neBot_iff.

          theorem Filter.mem_inf_principal' {α : Type u} {f : Filter α} {s t : Set α} :
          s ∈ f ⊓ principal t ↔ tᶜ ∪ s ∈ f
          theorem Filter.mem_inf_principal {α : Type u} {f : Filter α} {s t : Set α} :
          s ∈ f ⊓ principal t ↔ {x : α | x ∈ t → x ∈ s} ∈ f
          theorem Filter.iSup_inf_principal {α : Type u} {ι : Sort x} (f : ι → Filter α) (s : Set α) :
          ⨆ (i : ι), f i ⊓ principal s = (⨆ (i : ι), f i) ⊓ principal s
          theorem Filter.inf_principal_eq_bot {α : Type u} {f : Filter α} {s : Set α} :
          f ⊓ principal s = ⊥ ↔ sᶜ ∈ f
          theorem Filter.mem_of_eq_bot {α : Type u} {f : Filter α} {s : Set α} (h : f ⊓ principal sᶜ = ⊥) :
          s ∈ f
          theorem Filter.sdiff_mem_inf_principal_compl {α : Type u} {f : Filter α} {s : Set α} (hs : s ∈ f) (t : Set α) :
          s \ t ∈ f ⊓ principal tᶜ
          @[deprecated Filter.sdiff_mem_inf_principal_compl (since := "2026-06-03")]
          theorem Filter.diff_mem_inf_principal_compl {α : Type u} {f : Filter α} {s : Set α} (hs : s ∈ f) (t : Set α) :
          s \ t ∈ f ⊓ principal tᶜ

          Alias of Filter.sdiff_mem_inf_principal_compl.

          theorem Filter.principal_le_iff {α : Type u} {s : Set α} {f : Filter α} :
          principal s ≤ f ↔ ∀ V ∈ f, s ⊆ V
          theorem Filter.join_mono {α : Type u} {f₁ f₂ : Filter (Filter α)} (h : f₁ ≤ f₂) :
          f₁.join ≤ f₂.join

          Eventually #

          theorem Filter.eventually_iff {α : Type u} {f : Filter α} {P : α → Prop} :
          (∀ᶠ (x : α) in f, P x) ↔ {x : α | P x} ∈ f
          @[simp]
          theorem Filter.eventually_mem_set {α : Type u} {s : Set α} {l : Filter α} :
          (∀ᶠ (x : α) in l, x ∈ s) ↔ s ∈ l
          theorem Filter.ext' {α : Type u} {f₁ f₂ : Filter α} (h : ∀ (p : α → Prop), (∀ᶠ (x : α) in f₁, p x) ↔ ∀ᶠ (x : α) in f₂, p x) :
          f₁ = f₂
          theorem Filter.Eventually.filter_mono {α : Type u} {f₁ f₂ : Filter α} (h : f₁ ≤ f₂) {p : α → Prop} (hp : ∀ᶠ (x : α) in f₂, p x) :
          ∀ᶠ (x : α) in f₁, p x
          theorem Filter.eventually_of_mem {α : Type u} {f : Filter α} {P : α → Prop} {U : Set α} (hU : U ∈ f) (h : ∀ x ∈ U, P x) :
          ∀ᶠ (x : α) in f, P x
          theorem Filter.Eventually.and {α : Type u} {p q : α → Prop} {f : Filter α} :
          Filter.Eventually p f → Filter.Eventually q f → ∀ᶠ (x : α) in f, p x ∧ q x
          @[simp]
          theorem Filter.eventually_true {α : Type u} (f : Filter α) :
          ∀ᶠ (x : α) in f, True
          theorem Filter.Eventually.of_forall {α : Type u} {p : α → Prop} {f : Filter α} (hp : ∀ (x : α), p x) :
          ∀ᶠ (x : α) in f, p x
          @[simp]
          theorem Filter.eventually_false_iff_eq_bot {α : Type u} {f : Filter α} :
          (∀ᶠ (x : α) in f, False) ↔ f = ⊥
          @[simp]
          theorem Filter.eventually_const {α : Type u} {f : Filter α} [t : f.NeBot] {p : Prop} :
          (∀ᶠ (x : α) in f, p) ↔ p
          theorem Filter.eventually_iff_exists_mem {α : Type u} {p : α → Prop} {f : Filter α} :
          (∀ᶠ (x : α) in f, p x) ↔ ∃ v ∈ f, ∀ y ∈ v, p y
          theorem Filter.Eventually.exists_mem {α : Type u} {p : α → Prop} {f : Filter α} (hp : ∀ᶠ (x : α) in f, p x) :
          ∃ v ∈ f, ∀ y ∈ v, p y
          theorem Filter.Eventually.mp {α : Type u} {p q : α → Prop} {f : Filter α} (hp : ∀ᶠ (x : α) in f, p x) (hq : ∀ᶠ (x : α) in f, p x → q x) :
          ∀ᶠ (x : α) in f, q x
          theorem Filter.Eventually.mono {α : Type u} {p q : α → Prop} {f : Filter α} (hp : ∀ᶠ (x : α) in f, p x) (hq : ∀ (x : α), p x → q x) :
          ∀ᶠ (x : α) in f, q x
          theorem Filter.forall_eventually_of_eventually_forall {α : Type u} {β : Type v} {f : Filter α} {p : α → β → Prop} (h : ∀ᶠ (x : α) in f, ∀ (y : β), p x y) (y : β) :
          ∀ᶠ (x : α) in f, p x y
          @[simp]
          theorem Filter.eventually_and {α : Type u} {p q : α → Prop} {f : Filter α} :
          (∀ᶠ (x : α) in f, p x ∧ q x) ↔ (∀ᶠ (x : α) in f, p x) ∧ ∀ᶠ (x : α) in f, q x
          theorem Filter.Eventually.congr {α : Type u} {f : Filter α} {p q : α → Prop} (h' : ∀ᶠ (x : α) in f, p x) (h : ∀ᶠ (x : α) in f, p x ↔ q x) :
          ∀ᶠ (x : α) in f, q x
          theorem Filter.eventually_congr {α : Type u} {f : Filter α} {p q : α → Prop} (h : ∀ᶠ (x : α) in f, p x ↔ q x) :
          (∀ᶠ (x : α) in f, p x) ↔ ∀ᶠ (x : α) in f, q x
          @[simp]
          theorem Filter.eventually_or_distrib_left {α : Type u} {f : Filter α} {p : Prop} {q : α → Prop} :
          (∀ᶠ (x : α) in f, p ∨ q x) ↔ p ∨ ∀ᶠ (x : α) in f, q x
          @[simp]
          theorem Filter.eventually_or_distrib_right {α : Type u} {f : Filter α} {p : α → Prop} {q : Prop} :
          (∀ᶠ (x : α) in f, p x ∨ q) ↔ (∀ᶠ (x : α) in f, p x) ∨ q
          theorem Filter.eventually_imp_distrib_left {α : Type u} {f : Filter α} {p : Prop} {q : α → Prop} :
          (∀ᶠ (x : α) in f, p → q x) ↔ p → ∀ᶠ (x : α) in f, q x
          @[simp]
          theorem Filter.eventually_bot {α : Type u} {p : α → Prop} :
          ∀ᶠ (x : α) in ⊥, p x
          @[simp]
          theorem Filter.eventually_top {α : Type u} {p : α → Prop} :
          (∀ᶠ (x : α) in ⊤, p x) ↔ ∀ (x : α), p x
          @[simp]
          theorem Filter.eventually_sup {α : Type u} {p : α → Prop} {f g : Filter α} :
          (∀ᶠ (x : α) in f ⊔ g, p x) ↔ (∀ᶠ (x : α) in f, p x) ∧ ∀ᶠ (x : α) in g, p x
          @[simp]
          theorem Filter.eventually_sSup {α : Type u} {p : α → Prop} {fs : Set (Filter α)} :
          (∀ᶠ (x : α) in sSup fs, p x) ↔ ∀ f ∈ fs, ∀ᶠ (x : α) in f, p x
          @[simp]
          theorem Filter.eventually_iSup {α : Type u} {ι : Sort x} {p : α → Prop} {fs : ι → Filter α} :
          (∀ᶠ (x : α) in ⨆ (b : ι), fs b, p x) ↔ ∀ (b : ι), ∀ᶠ (x : α) in fs b, p x
          @[simp]
          theorem Filter.eventually_principal {α : Type u} {a : Set α} {p : α → Prop} :
          (∀ᶠ (x : α) in principal a, p x) ↔ ∀ x ∈ a, p x
          theorem Filter.Eventually.forall_mem {α : Type u_2} {f : Filter α} {s : Set α} {P : α → Prop} (hP : ∀ᶠ (x : α) in f, P x) (hf : principal s ≤ f) (x : α) :
          x ∈ s → P x
          theorem Filter.eventually_inf {α : Type u} {f g : Filter α} {p : α → Prop} :
          (∀ᶠ (x : α) in f ⊓ g, p x) ↔ ∃ s ∈ f, ∃ t ∈ g, ∀ x ∈ s ∩ t, p x
          theorem Filter.eventually_inf_principal {α : Type u} {f : Filter α} {p : α → Prop} {s : Set α} :
          (∀ᶠ (x : α) in f ⊓ principal s, p x) ↔ ∀ᶠ (x : α) in f, x ∈ s → p x
          theorem Filter.eventually_iff_all_subsets {α : Type u} {f : Filter α} {p : α → Prop} :
          (∀ᶠ (x : α) in f, p x) ↔ ∀ (s : Set α), ∀ᶠ (x : α) in f, x ∈ s → p x

          Frequently #

          theorem Filter.Eventually.frequently {α : Type u} {f : Filter α} [f.NeBot] {p : α → Prop} (h : ∀ᶠ (x : α) in f, p x) :
          ∃ᶠ (x : α) in f, p x
          theorem Filter.Frequently.of_forall {α : Type u} {f : Filter α} [f.NeBot] {p : α → Prop} (h : ∀ (x : α), p x) :
          ∃ᶠ (x : α) in f, p x
          theorem Filter.Frequently.mp {α : Type u} {p q : α → Prop} {f : Filter α} (h : ∃ᶠ (x : α) in f, p x) (hpq : ∀ᶠ (x : α) in f, p x → q x) :
          ∃ᶠ (x : α) in f, q x
          theorem Filter.frequently_congr {α : Type u} {p q : α → Prop} {f : Filter α} (h : ∀ᶠ (x : α) in f, p x ↔ q x) :
          (∃ᶠ (x : α) in f, p x) ↔ ∃ᶠ (x : α) in f, q x
          theorem Filter.Frequently.filter_mono {α : Type u} {p : α → Prop} {f g : Filter α} (h : ∃ᶠ (x : α) in f, p x) (hle : f ≤ g) :
          ∃ᶠ (x : α) in g, p x
          theorem Filter.Frequently.mono {α : Type u} {p q : α → Prop} {f : Filter α} (h : ∃ᶠ (x : α) in f, p x) (hpq : ∀ (x : α), p x → q x) :
          ∃ᶠ (x : α) in f, q x
          theorem Filter.Frequently.and_eventually {α : Type u} {p q : α → Prop} {f : Filter α} (hp : ∃ᶠ (x : α) in f, p x) (hq : ∀ᶠ (x : α) in f, q x) :
          ∃ᶠ (x : α) in f, p x ∧ q x
          theorem Filter.Eventually.and_frequently {α : Type u} {p q : α → Prop} {f : Filter α} (hp : ∀ᶠ (x : α) in f, p x) (hq : ∃ᶠ (x : α) in f, q x) :
          ∃ᶠ (x : α) in f, p x ∧ q x
          theorem Filter.Frequently.exists {α : Type u} {p : α → Prop} {f : Filter α} (hp : ∃ᶠ (x : α) in f, p x) :
          ∃ (x : α), p x
          theorem Filter.Eventually.exists {α : Type u} {p : α → Prop} {f : Filter α} [f.NeBot] (hp : ∀ᶠ (x : α) in f, p x) :
          ∃ (x : α), p x
          theorem Filter.frequently_iff_neBot {α : Type u} {l : Filter α} {p : α → Prop} :
          (∃ᶠ (x : α) in l, p x) ↔ (l ⊓ principal {x : α | p x}).NeBot
          theorem Filter.frequently_mem_iff_neBot {α : Type u} {l : Filter α} {s : Set α} :
          (∃ᶠ (x : α) in l, x ∈ s) ↔ (l ⊓ principal s).NeBot
          theorem Filter.frequently_iff_forall_eventually_exists_and {α : Type u} {p : α → Prop} {f : Filter α} :
          (∃ᶠ (x : α) in f, p x) ↔ ∀ {q : α → Prop}, (∀ᶠ (x : α) in f, q x) → ∃ (x : α), p x ∧ q x
          theorem Filter.frequently_iff {α : Type u} {f : Filter α} {P : α → Prop} :
          (∃ᶠ (x : α) in f, P x) ↔ ∀ {U : Set α}, U ∈ f → ∃ x ∈ U, P x
          @[simp]
          theorem Filter.not_eventually {α : Type u} {p : α → Prop} {f : Filter α} :
          (¬∀ᶠ (x : α) in f, p x) ↔ ∃ᶠ (x : α) in f, ¬p x
          @[simp]
          theorem Filter.not_frequently {α : Type u} {p : α → Prop} {f : Filter α} :
          (¬∃ᶠ (x : α) in f, p x) ↔ ∀ᶠ (x : α) in f, ¬p x
          @[simp]
          theorem Filter.frequently_true_iff_neBot {α : Type u} (f : Filter α) :
          (∃ᶠ (x : α) in f, True) ↔ f.NeBot
          @[simp]
          theorem Filter.frequently_false {α : Type u} (f : Filter α) :
          ¬∃ᶠ (x : α) in f, False
          @[simp]
          theorem Filter.frequently_const {α : Type u} {f : Filter α} [f.NeBot] {p : Prop} :
          (∃ᶠ (x : α) in f, p) ↔ p
          @[simp]
          theorem Filter.frequently_or_distrib {α : Type u} {f : Filter α} {p q : α → Prop} :
          (∃ᶠ (x : α) in f, p x ∨ q x) ↔ (∃ᶠ (x : α) in f, p x) ∨ ∃ᶠ (x : α) in f, q x
          theorem Filter.frequently_or_distrib_left {α : Type u} {f : Filter α} [f.NeBot] {p : Prop} {q : α → Prop} :
          (∃ᶠ (x : α) in f, p ∨ q x) ↔ p ∨ ∃ᶠ (x : α) in f, q x
          theorem Filter.frequently_or_distrib_right {α : Type u} {f : Filter α} [f.NeBot] {p : α → Prop} {q : Prop} :
          (∃ᶠ (x : α) in f, p x ∨ q) ↔ (∃ᶠ (x : α) in f, p x) ∨ q
          theorem Filter.frequently_imp_distrib {α : Type u} {f : Filter α} {p q : α → Prop} :
          (∃ᶠ (x : α) in f, p x → q x) ↔ (∀ᶠ (x : α) in f, p x) → ∃ᶠ (x : α) in f, q x
          theorem Filter.frequently_imp_distrib_left {α : Type u} {f : Filter α} [f.NeBot] {p : Prop} {q : α → Prop} :
          (∃ᶠ (x : α) in f, p → q x) ↔ p → ∃ᶠ (x : α) in f, q x
          theorem Filter.frequently_imp_distrib_right {α : Type u} {f : Filter α} [f.NeBot] {p : α → Prop} {q : Prop} :
          (∃ᶠ (x : α) in f, p x → q) ↔ (∀ᶠ (x : α) in f, p x) → q
          theorem Filter.eventually_imp_distrib_right {α : Type u} {f : Filter α} {p : α → Prop} {q : Prop} :
          (∀ᶠ (x : α) in f, p x → q) ↔ (∃ᶠ (x : α) in f, p x) → q
          @[simp]
          theorem Filter.frequently_and_distrib_left {α : Type u} {f : Filter α} {p : Prop} {q : α → Prop} :
          (∃ᶠ (x : α) in f, p ∧ q x) ↔ p ∧ ∃ᶠ (x : α) in f, q x
          @[simp]
          theorem Filter.frequently_and_distrib_right {α : Type u} {f : Filter α} {p : α → Prop} {q : Prop} :
          (∃ᶠ (x : α) in f, p x ∧ q) ↔ (∃ᶠ (x : α) in f, p x) ∧ q
          @[simp]
          theorem Filter.frequently_bot {α : Type u} {p : α → Prop} :
          ¬∃ᶠ (x : α) in ⊥, p x
          @[simp]
          theorem Filter.frequently_top {α : Type u} {p : α → Prop} :
          (∃ᶠ (x : α) in ⊤, p x) ↔ ∃ (x : α), p x
          @[simp]
          theorem Filter.frequently_principal {α : Type u} {a : Set α} {p : α → Prop} :
          (∃ᶠ (x : α) in principal a, p x) ↔ ∃ x ∈ a, p x
          theorem Filter.frequently_inf_principal {α : Type u} {f : Filter α} {s : Set α} {p : α → Prop} :
          (∃ᶠ (x : α) in f ⊓ principal s, p x) ↔ ∃ᶠ (x : α) in f, x ∈ s ∧ p x
          theorem Filter.Frequently.of_inf_principal {α : Type u} {f : Filter α} {s : Set α} {p : α → Prop} :
          (∃ᶠ (x : α) in f ⊓ principal s, p x) → ∃ᶠ (x : α) in f, x ∈ s ∧ p x

          Alias of the forward direction of Filter.frequently_inf_principal.

          theorem Filter.Frequently.inf_principal {α : Type u} {f : Filter α} {s : Set α} {p : α → Prop} :
          (∃ᶠ (x : α) in f, x ∈ s ∧ p x) → ∃ᶠ (x : α) in f ⊓ principal s, p x

          Alias of the reverse direction of Filter.frequently_inf_principal.

          theorem Filter.frequently_sup {α : Type u} {p : α → Prop} {f g : Filter α} :
          (∃ᶠ (x : α) in f ⊔ g, p x) ↔ (∃ᶠ (x : α) in f, p x) ∨ ∃ᶠ (x : α) in g, p x
          @[simp]
          theorem Filter.frequently_sSup {α : Type u} {p : α → Prop} {fs : Set (Filter α)} :
          (∃ᶠ (x : α) in sSup fs, p x) ↔ ∃ f ∈ fs, ∃ᶠ (x : α) in f, p x
          @[simp]
          theorem Filter.frequently_iSup {α : Type u} {β : Type v} {p : α → Prop} {fs : β → Filter α} :
          (∃ᶠ (x : α) in ⨆ (b : β), fs b, p x) ↔ ∃ (b : β), ∃ᶠ (x : α) in fs b, p x
          theorem Filter.Eventually.choice {α : Type u} {β : Type v} {r : α → β → Prop} {l : Filter α} [l.NeBot] (h : ∀ᶠ (x : α) in l, ∃ (y : β), r x y) :
          ∃ (f : α → β), ∀ᶠ (x : α) in l, r x (f x)
          theorem Filter.skolem {ι : Type u_2} {α : ι → Type u_3} [∀ (i : ι), Nonempty (α i)] {P : (i : ι) → α i → Prop} {F : Filter ι} :
          (∀ᶠ (i : ι) in F, ∃ (b : α i), P i b) ↔ ∃ (b : (i : ι) → α i), ∀ᶠ (i : ι) in F, P i (b i)

          Relation “eventually equal” #

          theorem Filter.EventuallyEq.eventually {α : Type u} {β : Type v} {l : Filter α} {f g : α → β} (h : f =ᶠ[l] g) :
          ∀ᶠ (x : α) in l, f x = g x
          @[simp]
          theorem Filter.eventuallyEq_top {α : Type u} {β : Type v} {f g : α → β} :
          f =ᶠ[⊤] g ↔ f = g
          theorem Filter.EventuallyEq.rw {α : Type u} {β : Type v} {l : Filter α} {f g : α → β} (h : f =ᶠ[l] g) (p : α → β → Prop) (hf : ∀ᶠ (x : α) in l, p x (f x)) :
          ∀ᶠ (x : α) in l, p x (g x)
          theorem Filter.eventuallyEq_set {α : Type u} {s t : Set α} {l : Filter α} :
          s =ᶠ[l] t ↔ ∀ᶠ (x : α) in l, x ∈ s ↔ x ∈ t
          theorem Filter.Eventually.set_eq {α : Type u} {s t : Set α} {l : Filter α} :
          (∀ᶠ (x : α) in l, x ∈ s ↔ x ∈ t) → s =ᶠ[l] t

          Alias of the reverse direction of Filter.eventuallyEq_set.

          theorem Filter.EventuallyEq.mem_iff {α : Type u} {s t : Set α} {l : Filter α} :
          s =ᶠ[l] t → ∀ᶠ (x : α) in l, x ∈ s ↔ x ∈ t

          Alias of the forward direction of Filter.eventuallyEq_set.

          @[simp]
          theorem Filter.eventuallyEq_univ {α : Type u} {s : Set α} {l : Filter α} :
          theorem Filter.EventuallyEq.exists_mem {α : Type u} {β : Type v} {l : Filter α} {f g : α → β} (h : f =ᶠ[l] g) :
          ∃ s ∈ l, Set.EqOn f g s
          theorem Filter.eventuallyEq_of_mem {α : Type u} {β : Type v} {l : Filter α} {f g : α → β} {s : Set α} (hs : s ∈ l) (h : Set.EqOn f g s) :
          f =ᶠ[l] g
          theorem Filter.eventuallyEq_iff_exists_mem {α : Type u} {β : Type v} {l : Filter α} {f g : α → β} :
          f =ᶠ[l] g ↔ ∃ s ∈ l, Set.EqOn f g s
          theorem Filter.EventuallyEq.filter_mono {α : Type u} {β : Type v} {l l' : Filter α} {f g : α → β} (h₁ : f =ᶠ[l] g) (h₂ : l' ≤ l) :
          f =ᶠ[l'] g
          @[simp]
          theorem Filter.EventuallyEq.refl {α : Type u} {β : Type v} (l : Filter α) (f : α → β) :
          f =ᶠ[l] f
          theorem Filter.EventuallyEq.rfl {α : Type u} {β : Type v} {l : Filter α} {f : α → β} :
          f =ᶠ[l] f
          theorem Filter.EventuallyEq.of_eq {α : Type u} {β : Type v} {l : Filter α} {f g : α → β} (h : f = g) :
          f =ᶠ[l] g
          theorem Eq.eventuallyEq {α : Type u} {β : Type v} {l : Filter α} {f g : α → β} (h : f = g) :
          f =ᶠ[l] g

          Alias of Filter.EventuallyEq.of_eq.

          theorem Filter.EventuallyEq.symm {α : Type u} {β : Type v} {f g : α → β} {l : Filter α} (H : f =ᶠ[l] g) :
          g =ᶠ[l] f
          theorem Filter.eventuallyEq_comm {α : Type u} {β : Type v} {f g : α → β} {l : Filter α} :
          f =ᶠ[l] g ↔ g =ᶠ[l] f
          theorem Filter.EventuallyEq.trans {α : Type u} {β : Type v} {l : Filter α} {f g h : α → β} (H₁ : f =ᶠ[l] g) (H₂ : g =ᶠ[l] h) :
          f =ᶠ[l] h
          theorem Filter.EventuallyEq.congr_left {α : Type u} {β : Type v} {l : Filter α} {f g h : α → β} (H : f =ᶠ[l] g) :
          f =ᶠ[l] h ↔ g =ᶠ[l] h
          theorem Filter.EventuallyEq.congr_right {α : Type u} {β : Type v} {l : Filter α} {f g h : α → β} (H : g =ᶠ[l] h) :
          f =ᶠ[l] g ↔ f =ᶠ[l] h
          @[implicit_reducible]
          instance Filter.instTransForallEventuallyEq {α : Type u} {β : Type v} {l : Filter α} :
          Trans (fun (x1 x2 : α → β) => x1 =ᶠ[l] x2) (fun (x1 x2 : α → β) => x1 =ᶠ[l] x2) fun (x1 x2 : α → β) => x1 =ᶠ[l] x2
          Equations
          theorem Filter.EventuallyEq.prodMk {α : Type u} {β : Type v} {γ : Type w} {l : Filter α} {f f' : α → β} (hf : f =ᶠ[l] f') {g g' : α → γ} (hg : g =ᶠ[l] g') :
          (fun (x : α) => (f x, g x)) =ᶠ[l] fun (x : α) => (f' x, g' x)
          theorem Filter.EventuallyEq.fun_comp {α : Type u} {β : Type v} {γ : Type w} {f g : α → β} {l : Filter α} (H : f =ᶠ[l] g) (h : β → γ) :
          h ∘ f =ᶠ[l] h ∘ g

          See EventuallyEq.comp_tendsto in Mathlib.Order.Filter.Tendsto for a similar statement w.r.t. composition on the right.

          theorem Filter.EventuallyEq.comp₂ {α : Type u} {β : Type v} {γ : Type w} {δ : Type u_2} {f f' : α → β} {g g' : α → γ} {l : Filter α} (Hf : f =ᶠ[l] f') (h : β → γ → δ) (Hg : g =ᶠ[l] g') :
          (fun (x : α) => h (f x) (g x)) =ᶠ[l] fun (x : α) => h (f' x) (g' x)
          theorem Filter.EventuallyEq.mul {α : Type u} {β : Type v} [Mul β] {f f' g g' : α → β} {l : Filter α} (h : f =ᶠ[l] g) (h' : f' =ᶠ[l] g') :
          f * f' =ᶠ[l] g * g'
          theorem Filter.EventuallyEq.add {α : Type u} {β : Type v} [Add β] {f f' g g' : α → β} {l : Filter α} (h : f =ᶠ[l] g) (h' : f' =ᶠ[l] g') :
          f + f' =ᶠ[l] g + g'
          theorem Filter.EventuallyEq.fun_add {α : Type u} {β : Type v} [Add β] {f f' g g' : α → β} {l : Filter α} (h : f =ᶠ[l] g) (h' : f' =ᶠ[l] g') :
          (fun (i : α) => f i + f' i) =ᶠ[l] fun (i : α) => g i + g' i

          Eta-expanded form of Filter.EventuallyEq.add

          theorem Filter.EventuallyEq.fun_mul {α : Type u} {β : Type v} [Mul β] {f f' g g' : α → β} {l : Filter α} (h : f =ᶠ[l] g) (h' : f' =ᶠ[l] g') :
          (fun (i : α) => f i * f' i) =ᶠ[l] fun (i : α) => g i * g' i

          Eta-expanded form of Filter.EventuallyEq.mul

          theorem Filter.EventuallyEq.mul_left {α : Type u} {β : Type v} {l : Filter α} [Mul β] {f₁ f₂ f₃ : α → β} (h : f₁ =ᶠ[l] f₂) :
          f₃ * f₁ =ᶠ[l] f₃ * f₂
          theorem Filter.EventuallyEq.add_left {α : Type u} {β : Type v} {l : Filter α} [Add β] {f₁ f₂ f₃ : α → β} (h : f₁ =ᶠ[l] f₂) :
          f₃ + f₁ =ᶠ[l] f₃ + f₂
          theorem Filter.EventuallyEq.mul_right {α : Type u} {β : Type v} {l : Filter α} [Mul β] {f₁ f₂ f₃ : α → β} (h : f₁ =ᶠ[l] f₂) :
          f₁ * f₃ =ᶠ[l] f₂ * f₃
          theorem Filter.EventuallyEq.add_right {α : Type u} {β : Type v} {l : Filter α} [Add β] {f₁ f₂ f₃ : α → β} (h : f₁ =ᶠ[l] f₂) :
          f₁ + f₃ =ᶠ[l] f₂ + f₃
          theorem Filter.EventuallyEq.pow_const {α : Type u} {β : Type v} {γ : Type u_2} [Pow β γ] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) (c : γ) :
          f ^ c =ᶠ[l] g ^ c
          theorem Filter.EventuallyEq.const_vadd {α : Type u} {β : Type v} {γ : Type u_2} [VAdd γ β] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) (c : γ) :
          c +ᵥ f =ᶠ[l] c +ᵥ g
          theorem Filter.EventuallyEq.const_smul {α : Type u} {β : Type v} {γ : Type u_2} [SMul γ β] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) (c : γ) :
          c • f =ᶠ[l] c • g
          theorem Filter.EventuallyEq.fun_const_smul {α : Type u} {β : Type v} {γ : Type u_2} [SMul γ β] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) (c : γ) :
          (fun (i : α) => c • f i) =ᶠ[l] fun (i : α) => c • g i

          Eta-expanded form of Filter.EventuallyEq.const_smul

          theorem Filter.EventuallyEq.fun_pow_const {α : Type u} {β : Type v} {γ : Type u_2} [Pow β γ] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) (c : γ) :
          (fun (i : α) => f i ^ c) =ᶠ[l] fun (i : α) => g i ^ c

          Eta-expanded form of Filter.EventuallyEq.pow_const

          theorem Filter.EventuallyEq.fun_const_vadd {α : Type u} {β : Type v} {γ : Type u_2} [VAdd γ β] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) (c : γ) :
          (fun (i : α) => c +ᵥ f i) =ᶠ[l] fun (i : α) => c +ᵥ g i

          Eta-expanded form of Filter.EventuallyEq.const_vadd

          theorem Filter.EventuallyEq.inv {α : Type u} {β : Type v} [Inv β] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) :
          theorem Filter.EventuallyEq.neg {α : Type u} {β : Type v} [Neg β] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) :
          theorem Filter.EventuallyEq.fun_neg {α : Type u} {β : Type v} [Neg β] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) :
          (fun (i : α) => -f i) =ᶠ[l] fun (i : α) => -g i

          Eta-expanded form of Filter.EventuallyEq.neg

          theorem Filter.EventuallyEq.fun_inv {α : Type u} {β : Type v} [Inv β] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) :
          (fun (i : α) => (f i)⁻¹) =ᶠ[l] fun (i : α) => (g i)⁻¹

          Eta-expanded form of Filter.EventuallyEq.inv

          theorem Filter.EventuallyEq.div {α : Type u} {β : Type v} [Div β] {f f' g g' : α → β} {l : Filter α} (h : f =ᶠ[l] g) (h' : f' =ᶠ[l] g') :
          f / f' =ᶠ[l] g / g'
          theorem Filter.EventuallyEq.sub {α : Type u} {β : Type v} [Sub β] {f f' g g' : α → β} {l : Filter α} (h : f =ᶠ[l] g) (h' : f' =ᶠ[l] g') :
          f - f' =ᶠ[l] g - g'
          theorem Filter.EventuallyEq.fun_div {α : Type u} {β : Type v} [Div β] {f f' g g' : α → β} {l : Filter α} (h : f =ᶠ[l] g) (h' : f' =ᶠ[l] g') :
          (fun (i : α) => f i / f' i) =ᶠ[l] fun (i : α) => g i / g' i

          Eta-expanded form of Filter.EventuallyEq.div

          theorem Filter.EventuallyEq.fun_sub {α : Type u} {β : Type v} [Sub β] {f f' g g' : α → β} {l : Filter α} (h : f =ᶠ[l] g) (h' : f' =ᶠ[l] g') :
          (fun (i : α) => f i - f' i) =ᶠ[l] fun (i : α) => g i - g' i

          Eta-expanded form of Filter.EventuallyEq.sub

          theorem Filter.EventuallyEq.smul {α : Type u} {β : Type v} {𝕜 : Type u_2} [SMul 𝕜 β] {l : Filter α} {f f' : α → 𝕜} {g g' : α → β} (hf : f =ᶠ[l] f') (hg : g =ᶠ[l] g') :
          (fun (x : α) => f x • g x) =ᶠ[l] fun (x : α) => f' x • g' x
          theorem Filter.EventuallyEq.vadd {α : Type u} {β : Type v} {𝕜 : Type u_2} [VAdd 𝕜 β] {l : Filter α} {f f' : α → 𝕜} {g g' : α → β} (hf : f =ᶠ[l] f') (hg : g =ᶠ[l] g') :
          (fun (x : α) => f x +ᵥ g x) =ᶠ[l] fun (x : α) => f' x +ᵥ g' x
          theorem Filter.EventuallyEq.star {α : Type u} {R : Type u_2} [Star R] {f g : α → R} {l : Filter α} (h : f =ᶠ[l] g) :
          theorem Filter.EventuallyEq.fun_star {α : Type u} {R : Type u_2} [Star R] {f g : α → R} {l : Filter α} (h : f =ᶠ[l] g) :
          (fun (i : α) => star (f i)) =ᶠ[l] fun (i : α) => star (g i)

          Eta-expanded form of Filter.EventuallyEq.star

          theorem Filter.EventuallyEq.sup {α : Type u} {β : Type v} [Max β] {l : Filter α} {f f' g g' : α → β} (hf : f =ᶠ[l] f') (hg : g =ᶠ[l] g') :
          f ⊔ g =ᶠ[l] f' ⊔ g'
          theorem Filter.EventuallyEq.inf {α : Type u} {β : Type v} [Min β] {l : Filter α} {f f' g g' : α → β} (hf : f =ᶠ[l] f') (hg : g =ᶠ[l] g') :
          f ⊓ g =ᶠ[l] f' ⊓ g'
          theorem Filter.EventuallyEq.preimage {α : Type u} {β : Type v} {l : Filter α} {f g : α → β} (h : f =ᶠ[l] g) (s : Set β) :
          theorem Filter.EventuallyEq.inter {α : Type u} {s t s' t' : Set α} {l : Filter α} (h : s =ᶠ[l] t) (h' : s' =ᶠ[l] t') :
          s ∩ s' =ᶠ[l] t ∩ t'
          theorem Filter.EventuallyEq.union {α : Type u} {s t s' t' : Set α} {l : Filter α} (h : s =ᶠ[l] t) (h' : s' =ᶠ[l] t') :
          s ∪ s' =ᶠ[l] t ∪ t'
          theorem Filter.EventuallyEq.compl {α : Type u} {s t : Set α} {l : Filter α} (h : s =ᶠ[l] t) :
          theorem Filter.EventuallyEq.diff {α : Type u} {s t s' t' : Set α} {l : Filter α} (h : s =ᶠ[l] t) (h' : s' =ᶠ[l] t') :
          s \ s' =ᶠ[l] t \ t'
          theorem Filter.EventuallyEq.symmDiff {α : Type u} {s t s' t' : Set α} {l : Filter α} (h : s =ᶠ[l] t) (h' : s' =ᶠ[l] t') :
          theorem Filter.eventuallyEq_empty {α : Type u} {s : Set α} {l : Filter α} :
          s =ᶠ[l] ∅ ↔ ∀ᶠ (x : α) in l, x ∉ s
          theorem Filter.inter_eventuallyEq_left {α : Type u} {s t : Set α} {l : Filter α} :
          s ∩ t =ᶠ[l] s ↔ ∀ᶠ (x : α) in l, x ∈ s → x ∈ t
          theorem Filter.inter_eventuallyEq_right {α : Type u} {s t : Set α} {l : Filter α} :
          s ∩ t =ᶠ[l] t ↔ ∀ᶠ (x : α) in l, x ∈ t → x ∈ s
          @[simp]
          theorem Filter.eventuallyEq_principal {α : Type u} {β : Type v} {s : Set α} {f g : α → β} :
          theorem Filter.eventuallyEq_inf_principal_iff {α : Type u} {β : Type v} {F : Filter α} {s : Set α} {f g : α → β} :
          f =ᶠ[F ⊓ principal s] g ↔ ∀ᶠ (x : α) in F, x ∈ s → f x = g x
          theorem Filter.EventuallyEq.sub_eq {α : Type u} {β : Type v} [AddGroup β] {f g : α → β} {l : Filter α} (h : f =ᶠ[l] g) :
          f - g =ᶠ[l] 0
          theorem Filter.eventuallyEq_iff_sub {α : Type u} {β : Type v} [AddGroup β] {f g : α → β} {l : Filter α} :
          f =ᶠ[l] g ↔ f - g =ᶠ[l] 0
          theorem Filter.eventuallyEq_iff_all_subsets {α : Type u} {β : Type v} {f g : α → β} {l : Filter α} :
          f =ᶠ[l] g ↔ ∀ (s : Set α), ∀ᶠ (x : α) in l, x ∈ s → f x = g x
          theorem Filter.EventuallyLE.congr {α : Type u} {β : Type v} [LE β] {l : Filter α} {f f' g g' : α → β} (H : f ≤ᶠ[l] g) (hf : f =ᶠ[l] f') (hg : g =ᶠ[l] g') :
          f' ≤ᶠ[l] g'
          theorem Filter.eventuallyLE_congr {α : Type u} {β : Type v} [LE β] {l : Filter α} {f f' g g' : α → β} (hf : f =ᶠ[l] f') (hg : g =ᶠ[l] g') :
          f ≤ᶠ[l] g ↔ f' ≤ᶠ[l] g'
          theorem Filter.eventuallyLE_iff_all_subsets {α : Type u} {β : Type v} [LE β] {f g : α → β} {l : Filter α} :
          f ≤ᶠ[l] g ↔ ∀ (s : Set α), ∀ᶠ (x : α) in l, x ∈ s → f x ≤ g x
          theorem Filter.EventuallyEq.le {α : Type u} {β : Type v} [Preorder β] {l : Filter α} {f g : α → β} (h : f =ᶠ[l] g) :
          theorem Filter.EventuallyEq.ge {α : Type u} {β : Type v} [Preorder β] {l : Filter α} {f g : α → β} (h : f =ᶠ[l] g) :
          theorem Filter.EventuallyLE.refl {α : Type u} {β : Type v} [Preorder β] (l : Filter α) (f : α → β) :
          theorem Filter.EventuallyLE.rfl {α : Type u} {β : Type v} [Preorder β] {l : Filter α} {f : α → β} :
          theorem Filter.EventuallyLE.trans {α : Type u} {β : Type v} [Preorder β] {l : Filter α} {f g h : α → β} (H₁ : f ≤ᶠ[l] g) (H₂ : g ≤ᶠ[l] h) :
          @[implicit_reducible]
          instance Filter.instTransForallEventuallyLE {α : Type u} {β : Type v} [Preorder β] {l : Filter α} :
          Trans (fun (x1 x2 : α → β) => x1 ≤ᶠ[l] x2) (fun (x1 x2 : α → β) => x1 ≤ᶠ[l] x2) fun (x1 x2 : α → β) => x1 ≤ᶠ[l] x2
          Equations
          theorem Filter.EventuallyEq.trans_le {α : Type u} {β : Type v} [Preorder β] {l : Filter α} {f g h : α → β} (H₁ : f =ᶠ[l] g) (H₂ : g ≤ᶠ[l] h) :
          @[implicit_reducible]
          instance Filter.instTransForallEventuallyEqEventuallyLE {α : Type u} {β : Type v} [Preorder β] {l : Filter α} :
          Trans (fun (x1 x2 : α → β) => x1 =ᶠ[l] x2) (fun (x1 x2 : α → β) => x1 ≤ᶠ[l] x2) fun (x1 x2 : α → β) => x1 ≤ᶠ[l] x2
          Equations
          theorem Filter.EventuallyLE.trans_eq {α : Type u} {β : Type v} [Preorder β] {l : Filter α} {f g h : α → β} (H₁ : f ≤ᶠ[l] g) (H₂ : g =ᶠ[l] h) :
          @[implicit_reducible]
          instance Filter.instTransForallEventuallyLEEventuallyEq {α : Type u} {β : Type v} [Preorder β] {l : Filter α} :
          Trans (fun (x1 x2 : α → β) => x1 ≤ᶠ[l] x2) (fun (x1 x2 : α → β) => x1 =ᶠ[l] x2) fun (x1 x2 : α → β) => x1 ≤ᶠ[l] x2
          Equations
          theorem Filter.EventuallyLE.antisymm {α : Type u} {β : Type v} [PartialOrder β] {l : Filter α} {f g : α → β} (h₁ : f ≤ᶠ[l] g) (h₂ : g ≤ᶠ[l] f) :
          f =ᶠ[l] g
          theorem Filter.eventuallyLE_antisymm_iff {α : Type u} {β : Type v} [PartialOrder β] {l : Filter α} {f g : α → β} :
          f =ᶠ[l] g ↔ f ≤ᶠ[l] g ∧ g ≤ᶠ[l] f
          theorem Filter.EventuallyLE.ge_iff_eq {α : Type u} {β : Type v} [PartialOrder β] {l : Filter α} {f g : α → β} (h : f ≤ᶠ[l] g) :
          g ≤ᶠ[l] f ↔ f =ᶠ[l] g
          theorem Filter.EventuallyLE.ge_iff_eq' {α : Type u} {β : Type v} [PartialOrder β] {l : Filter α} {f g : α → β} (h : g ≤ᶠ[l] f) :
          f ≤ᶠ[l] g ↔ f =ᶠ[l] g
          theorem Filter.Eventually.ne_of_lt {α : Type u} {β : Type v} [Preorder β] {l : Filter α} {f g : α → β} (h : ∀ᶠ (x : α) in l, f x < g x) :
          ∀ᶠ (x : α) in l, f x ≠ g x
          theorem Filter.Eventually.ne_of_gt {α : Type u} {β : Type v} [Preorder β] {l : Filter α} {f g : α → β} (h : ∀ᶠ (x : α) in l, g x < f x) :
          ∀ᶠ (x : α) in l, f x ≠ g x
          theorem Filter.Eventually.ne_top_of_lt {α : Type u} {β : Type v} [Preorder β] [OrderTop β] {l : Filter α} {f g : α → β} (h : ∀ᶠ (x : α) in l, f x < g x) :
          ∀ᶠ (x : α) in l, f x ≠ ⊤
          theorem Filter.Eventually.ne_bot_of_gt {α : Type u} {β : Type v} [Preorder β] [OrderBot β] {l : Filter α} {f g : α → β} (h : ∀ᶠ (x : α) in l, g x < f x) :
          ∀ᶠ (x : α) in l, f x ≠ ⊥
          theorem Filter.Eventually.lt_top_of_ne {α : Type u} {β : Type v} [PartialOrder β] [OrderTop β] {l : Filter α} {f : α → β} (h : ∀ᶠ (x : α) in l, f x ≠ ⊤) :
          ∀ᶠ (x : α) in l, f x < ⊤
          theorem Filter.Eventually.bot_lt_of_ne {α : Type u} {β : Type v} [PartialOrder β] [OrderBot β] {l : Filter α} {f : α → β} (h : ∀ᶠ (x : α) in l, f x ≠ ⊥) :
          ∀ᶠ (x : α) in l, ⊥ < f x
          theorem Filter.Eventually.lt_top_iff_ne_top {α : Type u} {β : Type v} [PartialOrder β] [OrderTop β] {l : Filter α} {f : α → β} :
          (∀ᶠ (x : α) in l, f x < ⊤) ↔ ∀ᶠ (x : α) in l, f x ≠ ⊤
          theorem Filter.Eventually.bot_lt_iff_ne_bot {α : Type u} {β : Type v} [PartialOrder β] [OrderBot β] {l : Filter α} {f : α → β} :
          (∀ᶠ (x : α) in l, ⊥ < f x) ↔ ∀ᶠ (x : α) in l, f x ≠ ⊥
          theorem Filter.EventuallyLE.inter {α : Type u} {s t s' t' : Set α} {l : Filter α} (h : s ≤ᶠ[l] t) (h' : s' ≤ᶠ[l] t') :
          s ∩ s' ≤ᶠ[l] t ∩ t'
          theorem Filter.EventuallyLE.union {α : Type u} {s t s' t' : Set α} {l : Filter α} (h : s ≤ᶠ[l] t) (h' : s' ≤ᶠ[l] t') :
          s ∪ s' ≤ᶠ[l] t ∪ t'
          theorem Filter.EventuallyLE.compl {α : Type u} {s t : Set α} {l : Filter α} (h : s ≤ᶠ[l] t) :
          theorem Filter.EventuallyLE.diff {α : Type u} {s t s' t' : Set α} {l : Filter α} (h : s ≤ᶠ[l] t) (h' : t' ≤ᶠ[l] s') :
          s \ s' ≤ᶠ[l] t \ t'
          theorem Filter.set_eventuallyLE_iff_mem_inf_principal {α : Type u} {s t : Set α} {l : Filter α} :
          s ≤ᶠ[l] t ↔ t ∈ l ⊓ principal s
          theorem Filter.set_eventuallyLE_iff_inf_principal_le {α : Type u} {s t : Set α} {l : Filter α} :
          s ≤ᶠ[l] t ↔ l ⊓ principal s ≤ l ⊓ principal t
          theorem Filter.set_eventuallyEq_iff_inf_principal {α : Type u} {s t : Set α} {l : Filter α} :
          s =ᶠ[l] t ↔ l ⊓ principal s = l ⊓ principal t
          theorem Filter.EventuallyLE.sup {α : Type u} {β : Type v} [SemilatticeSup β] {l : Filter α} {f₁ f₂ g₁ g₂ : α → β} (hf : f₁ ≤ᶠ[l] f₂) (hg : g₁ ≤ᶠ[l] g₂) :
          f₁ ⊔ g₁ ≤ᶠ[l] f₂ ⊔ g₂
          theorem Filter.EventuallyLE.inf {α : Type u} {β : Type v} [SemilatticeInf β] {l : Filter α} {f₁ f₂ g₁ g₂ : α → β} (hf : f₂ ≤ᶠ[l] f₁) (hg : g₂ ≤ᶠ[l] g₁) :
          f₂ ⊓ g₂ ≤ᶠ[l] f₁ ⊓ g₁
          theorem Filter.EventuallyLE.sup_le {α : Type u} {β : Type v} [SemilatticeSup β] {l : Filter α} {f g h : α → β} (hf : f ≤ᶠ[l] h) (hg : g ≤ᶠ[l] h) :
          f ⊔ g ≤ᶠ[l] h
          theorem Filter.EventuallyLE.le_inf {α : Type u} {β : Type v} [SemilatticeInf β] {l : Filter α} {f g h : α → β} (hf : h ≤ᶠ[l] f) (hg : h ≤ᶠ[l] g) :
          h ≤ᶠ[l] f ⊓ g
          theorem Filter.EventuallyLE.le_sup_of_le_left {α : Type u} {β : Type v} [SemilatticeSup β] {l : Filter α} {f g h : α → β} (hf : h ≤ᶠ[l] f) :
          h ≤ᶠ[l] f ⊔ g
          theorem Filter.EventuallyLE.inf_le_of_left_le {α : Type u} {β : Type v} [SemilatticeInf β] {l : Filter α} {f g h : α → β} (hf : f ≤ᶠ[l] h) :
          f ⊓ g ≤ᶠ[l] h
          theorem Filter.EventuallyLE.le_sup_of_le_right {α : Type u} {β : Type v} [SemilatticeSup β] {l : Filter α} {f g h : α → β} (hg : h ≤ᶠ[l] g) :
          h ≤ᶠ[l] f ⊔ g
          theorem Filter.EventuallyLE.inf_le_of_right_le {α : Type u} {β : Type v} [SemilatticeInf β] {l : Filter α} {f g h : α → β} (hg : g ≤ᶠ[l] h) :
          f ⊓ g ≤ᶠ[l] h
          theorem Filter.join_le {α : Type u} {f : Filter (Filter α)} {l : Filter α} (h : ∀ᶠ (m : Filter α) in f, m ≤ l) :
          f.join ≤ l
          theorem Set.EqOn.eventuallyEq {α : Type u_1} {β : Type u_2} {s : Set α} {f g : α → β} (h : EqOn f g s) :
          theorem Set.EqOn.eventuallyEq_of_mem {α : Type u_1} {β : Type u_2} {s : Set α} {l : Filter α} {f g : α → β} (h : EqOn f g s) (hl : s ∈ l) :
          f =ᶠ[l] g
          theorem HasSubset.Subset.eventuallyLE {α : Type u_1} {l : Filter α} {s t : Set α} (h : s ⊆ t) :
          theorem Filter.compl_mem_comk {α : Type u_1} {p : Set α → Prop} {he : p ∅} {hmono : ∀ (t : Set α), p t → ∀ s ⊆ t, p s} {hunion : ∀ (s : Set α), p s → ∀ (t : Set α), p t → p (s ∪ t)} {s : Set α} :
          sᶜ ∈ comk p he hmono hunion ↔ p s