Documentation

Mathlib.Order.Filter.Pi

(Co)product of a family of filters #

In this file we define two filters on Π i, α i and prove some basic properties of these filters.

def Filter.pi {ι : Type u_1} {α : ι → Type u_2} (f : (i : ι) → Filter (α i)) :
Filter ((i : ι) → α i)

The product of an indexed family of filters.

Equations
Instances For
    instance Filter.pi.isCountablyGenerated {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} [Countable ι] [∀ (i : ι), Filter.IsCountablyGenerated (f i)] :
    Equations
    • ⋯ = ⋯
    theorem Filter.tendsto_eval_pi {ι : Type u_1} {α : ι → Type u_2} (f : (i : ι) → Filter (α i)) (i : ι) :
    theorem Filter.tendsto_pi {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {β : Type u_3} {m : β → (i : ι) → α i} {l : Filter β} :
    Filter.Tendsto m l (Filter.pi f) ↔ ∀ (i : ι), Filter.Tendsto (fun (x : β) => m x i) l (f i)
    theorem Filter.le_pi {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {g : Filter ((i : ι) → α i)} :
    g ≤ Filter.pi f ↔ ∀ (i : ι), Filter.Tendsto (Function.eval i) g (f i)
    theorem Filter.pi_mono {ι : Type u_1} {α : ι → Type u_2} {f₁ : (i : ι) → Filter (α i)} {f₂ : (i : ι) → Filter (α i)} (h : ∀ (i : ι), f₁ i ≤ f₂ i) :
    theorem Filter.mem_pi_of_mem {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} (i : ι) {s : Set (α i)} (hs : s ∈ f i) :
    theorem Filter.pi_mem_pi {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : (i : ι) → Set (α i)} {I : Set ι} (hI : Set.Finite I) (h : ∀ i ∈ I, s i ∈ f i) :
    theorem Filter.mem_pi {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : Set ((i : ι) → α i)} :
    s ∈ Filter.pi f ↔ ∃ (I : Set ι), Set.Finite I ∧ ∃ (t : (i : ι) → Set (α i)), (∀ (i : ι), t i ∈ f i) ∧ Set.pi I t ⊆ s
    theorem Filter.mem_pi' {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : Set ((i : ι) → α i)} :
    s ∈ Filter.pi f ↔ ∃ (I : Finset ι) (t : (i : ι) → Set (α i)), (∀ (i : ι), t i ∈ f i) ∧ Set.pi (↑I) t ⊆ s
    theorem Filter.mem_of_pi_mem_pi {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : (i : ι) → Set (α i)} [∀ (i : ι), Filter.NeBot (f i)] {I : Set ι} (h : Set.pi I s ∈ Filter.pi f) {i : ι} (hi : i ∈ I) :
    s i ∈ f i
    @[simp]
    theorem Filter.pi_mem_pi_iff {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : (i : ι) → Set (α i)} [∀ (i : ι), Filter.NeBot (f i)] {I : Set ι} (hI : Set.Finite I) :
    Set.pi I s ∈ Filter.pi f ↔ ∀ i ∈ I, s i ∈ f i
    theorem Filter.Eventually.eval_pi {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {p : (i : ι) → α i → Prop} {i : ι} (hf : ∀ᶠ (x : α i) in f i, p i x) :
    ∀ᶠ (x : (i : ι) → α i) in Filter.pi f, p i (x i)
    theorem Filter.eventually_pi {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {p : (i : ι) → α i → Prop} [Finite ι] (hf : ∀ (i : ι), ∀ᶠ (x : α i) in f i, p i x) :
    ∀ᶠ (x : (i : ι) → α i) in Filter.pi f, ∀ (i : ι), p i (x i)
    theorem Filter.hasBasis_pi {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {ι' : ι → Type} {s : (i : ι) → ι' i → Set (α i)} {p : (i : ι) → ι' i → Prop} (h : ∀ (i : ι), Filter.HasBasis (f i) (p i) (s i)) :
    Filter.HasBasis (Filter.pi f) (fun (If : Set ι × ((i : ι) → ι' i)) => Set.Finite If.1 ∧ ∀ i ∈ If.1, p i (If.2 i)) fun (If : Set ι × ((i : ι) → ι' i)) => Set.pi If.1 fun (i : ι) => s i (If.2 i)
    theorem Filter.le_pi_principal {ι : Type u_1} {α : ι → Type u_2} (s : (i : ι) → Set (α i)) :
    Filter.principal (Set.pi Set.univ s) ≤ Filter.pi fun (i : ι) => Filter.principal (s i)
    @[simp]
    theorem Filter.pi_principal {ι : Type u_1} {α : ι → Type u_2} [Finite ι] (s : (i : ι) → Set (α i)) :
    (Filter.pi fun (i : ι) => Filter.principal (s i)) = Filter.principal (Set.pi Set.univ s)
    @[simp]
    theorem Filter.pi_pure {ι : Type u_1} {α : ι → Type u_2} [Finite ι] (f : (i : ι) → α i) :
    (Filter.pi fun (x : ι) => pure (f x)) = pure f
    @[simp]
    theorem Filter.pi_inf_principal_univ_pi_eq_bot {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : (i : ι) → Set (α i)} :
    Filter.pi f ⊓ Filter.principal (Set.pi Set.univ s) = ⊥ ↔ ∃ (i : ι), f i ⊓ Filter.principal (s i) = ⊥
    @[simp]
    theorem Filter.pi_inf_principal_pi_eq_bot {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : (i : ι) → Set (α i)} [∀ (i : ι), Filter.NeBot (f i)] {I : Set ι} :
    @[simp]
    theorem Filter.pi_inf_principal_univ_pi_neBot {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : (i : ι) → Set (α i)} :
    @[simp]
    theorem Filter.pi_inf_principal_pi_neBot {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : (i : ι) → Set (α i)} [∀ (i : ι), Filter.NeBot (f i)] {I : Set ι} :
    instance Filter.PiInfPrincipalPi.neBot {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : (i : ι) → Set (α i)} [h : ∀ (i : ι), Filter.NeBot (f i ⊓ Filter.principal (s i))] {I : Set ι} :
    Equations
    • ⋯ = ⋯
    @[simp]
    theorem Filter.pi_eq_bot {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} :
    Filter.pi f = ⊥ ↔ ∃ (i : ι), f i = ⊥
    @[simp]
    theorem Filter.pi_neBot {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} :
    Filter.NeBot (Filter.pi f) ↔ ∀ (i : ι), Filter.NeBot (f i)
    instance Filter.instNeBotForAllPi {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} [∀ (i : ι), Filter.NeBot (f i)] :
    Equations
    • ⋯ = ⋯
    @[simp]
    theorem Filter.map_eval_pi {ι : Type u_1} {α : ι → Type u_2} (f : (i : ι) → Filter (α i)) [∀ (i : ι), Filter.NeBot (f i)] (i : ι) :
    @[simp]
    theorem Filter.pi_le_pi {ι : Type u_1} {α : ι → Type u_2} {f₁ : (i : ι) → Filter (α i)} {f₂ : (i : ι) → Filter (α i)} [∀ (i : ι), Filter.NeBot (f₁ i)] :
    Filter.pi f₁ ≤ Filter.pi f₂ ↔ ∀ (i : ι), f₁ i ≤ f₂ i
    @[simp]
    theorem Filter.pi_inj {ι : Type u_1} {α : ι → Type u_2} {f₁ : (i : ι) → Filter (α i)} {f₂ : (i : ι) → Filter (α i)} [∀ (i : ι), Filter.NeBot (f₁ i)] :
    Filter.pi f₁ = Filter.pi f₂ ↔ f₁ = f₂

    n-ary coproducts of filters #

    def Filter.coprodᵢ {ι : Type u_1} {α : ι → Type u_2} (f : (i : ι) → Filter (α i)) :
    Filter ((i : ι) → α i)

    Coproduct of filters.

    Equations
    Instances For
      theorem Filter.mem_coprodᵢ_iff {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : Set ((i : ι) → α i)} :
      s ∈ Filter.coprodᵢ f ↔ ∀ (i : ι), ∃ t₁ ∈ f i, Function.eval i ⁻¹' t₁ ⊆ s
      theorem Filter.compl_mem_coprodᵢ {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {s : Set ((i : ι) → α i)} :
      sᶜ ∈ Filter.coprodᵢ f ↔ ∀ (i : ι), (Function.eval i '' s)ᶜ ∈ f i
      theorem Filter.coprodᵢ_neBot_iff' {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} :
      Filter.NeBot (Filter.coprodᵢ f) ↔ (∀ (i : ι), Nonempty (α i)) ∧ ∃ (d : ι), Filter.NeBot (f d)
      @[simp]
      theorem Filter.coprodᵢ_neBot_iff {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} [∀ (i : ι), Nonempty (α i)] :
      theorem Filter.coprodᵢ_eq_bot_iff' {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} :
      Filter.coprodᵢ f = ⊥ ↔ (∃ (i : ι), IsEmpty (α i)) ∨ f = ⊥
      @[simp]
      theorem Filter.coprodᵢ_eq_bot_iff {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} [∀ (i : ι), Nonempty (α i)] :
      @[simp]
      theorem Filter.coprodᵢ_bot' {ι : Type u_1} {α : ι → Type u_2} :
      @[simp]
      theorem Filter.coprodᵢ_bot {ι : Type u_1} {α : ι → Type u_2} :
      (Filter.coprodᵢ fun (x : ι) => ⊥) = ⊥
      theorem Filter.NeBot.coprodᵢ {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} [∀ (i : ι), Nonempty (α i)] {i : ι} (h : Filter.NeBot (f i)) :
      theorem Filter.coprodᵢ_neBot {ι : Type u_1} {α : ι → Type u_2} [∀ (i : ι), Nonempty (α i)] [Nonempty ι] (f : (i : ι) → Filter (α i)) [H : ∀ (i : ι), Filter.NeBot (f i)] :
      theorem Filter.coprodᵢ_mono {ι : Type u_1} {α : ι → Type u_2} {f₁ : (i : ι) → Filter (α i)} {f₂ : (i : ι) → Filter (α i)} (hf : ∀ (i : ι), f₁ i ≤ f₂ i) :
      theorem Filter.map_pi_map_coprodᵢ_le {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {β : ι → Type u_3} {m : (i : ι) → α i → β i} :
      Filter.map (fun (k : (i : ι) → α i) (i : ι) => m i (k i)) (Filter.coprodᵢ f) ≤ Filter.coprodᵢ fun (i : ι) => Filter.map (m i) (f i)
      theorem Filter.Tendsto.pi_map_coprodᵢ {ι : Type u_1} {α : ι → Type u_2} {f : (i : ι) → Filter (α i)} {β : ι → Type u_3} {m : (i : ι) → α i → β i} {g : (i : ι) → Filter (β i)} (h : ∀ (i : ι), Filter.Tendsto (m i) (f i) (g i)) :
      Filter.Tendsto (fun (k : (i : ι) → α i) (i : ι) => m i (k i)) (Filter.coprodᵢ f) (Filter.coprodᵢ g)