File: Mathlib/Order/Filter/Interval.lean

full_name: Filter.TendstoIxxClass.tendsto_Ixx
code: /-- A pair of filters `l₁`, `l₂` has `TendstoIxxClass Ixx` property if `Ixx a b` tends to
`l₂.small_sets` as `a` and `b` tend to `l₁`. In all instances `Ixx` is one of `Set.Icc`, `Set.Ico`,
`Set.Ioc`, or `Set.Ioo`. The instances provide the best `l₂` for a given `l₁`. In many cases
`l₁ = l₂` but sometimes we can drop an endpoint from an interval: e.g., we prove
`TendstoIxxClass Set.Ico (𝓟 (Set.Iic a)) (𝓟 (Set.Iio a))`, i.e., if `u₁ n` and `u₂ n` belong
eventually to `Set.Iic a`, then the interval `Set.Ico (u₁ n) (u₂ n)` is eventually included in
`Set.Iio a`.

We mark `l₂` as an `outParam` so that Lean can automatically find an appropriate `l₂` based on
`Ixx` and `l₁`. This way, e.g., `tendsto.Ico h₁ h₂` works without specifying explicitly `l₂`. -/
class TendstoIxxClass (Ixx : α → α → Set α) (l₁ : Filter α) (l₂ : outParam <| Filter α) : Prop where
  /-- `Function.uncurry Ixx` tends to `l₂.smallSets` along `l₁ ×ˢ l₁`. In other words, for any
  `s ∈ l₂` there exists `t ∈ l₁` such that `Ixx x y ⊆ s` whenever `x ∈ t` and `y ∈ t`.

  Use lemmas like `Filter.Tendsto.Icc` instead. -/
  tendsto_Ixx : Tendsto (fun p : α × α => Ixx p.1 p.2) (l₁ ×ˢ l₁) l₂.smallSets
goal: Filter.Tendsto (fun p => Ixx p.1 p.2) (l₁ ×ˢ l₁) (Filter.smallSets l₂)

full_name: Filter.TendstoIxxClass
code: /-- A pair of filters `l₁`, `l₂` has `TendstoIxxClass Ixx` property if `Ixx a b` tends to
`l₂.small_sets` as `a` and `b` tend to `l₁`. In all instances `Ixx` is one of `Set.Icc`, `Set.Ico`,
`Set.Ioc`, or `Set.Ioo`. The instances provide the best `l₂` for a given `l₁`. In many cases
`l₁ = l₂` but sometimes we can drop an endpoint from an interval: e.g., we prove
`TendstoIxxClass Set.Ico (𝓟 (Set.Iic a)) (𝓟 (Set.Iio a))`, i.e., if `u₁ n` and `u₂ n` belong
eventually to `Set.Iic a`, then the interval `Set.Ico (u₁ n) (u₂ n)` is eventually included in
`Set.Iio a`.

We mark `l₂` as an `outParam` so that Lean can automatically find an appropriate `l₂` based on
`Ixx` and `l₁`. This way, e.g., `tendsto.Ico h₁ h₂` works without specifying explicitly `l₂`. -/
class TendstoIxxClass (Ixx : α → α → Set α) (l₁ : Filter α) (l₂ : outParam <| Filter α) : Prop where
  /-- `Function.uncurry Ixx` tends to `l₂.smallSets` along `l₁ ×ˢ l₁`. In other words, for any
  `s ∈ l₂` there exists `t ∈ l₁` such that `Ixx x y ⊆ s` whenever `x ∈ t` and `y ∈ t`.

  Use lemmas like `Filter.Tendsto.Icc` instead. -/
  tendsto_Ixx : Tendsto (fun p : α × α => Ixx p.1 p.2) (l₁ ×ˢ l₁) l₂.smallSets
goal: Prop

full_name: Filter.Tendsto.Icc
code: protected theorem Tendsto.Icc {l₁ l₂ : Filter α} [TendstoIxxClass Icc l₁ l₂] {lb : Filter β}
    {u₁ u₂ : β → α} (h₁ : Tendsto u₁ lb l₁) (h₂ : Tendsto u₂ lb l₁) :
    Tendsto (fun x => Icc (u₁ x) (u₂ x)) lb l₂.smallSets 
goal: Filter.Tendsto (fun x => Set.Icc (u₁ x) (u₂ x)) lb l₂.smallSets

full_name: Filter.Tendsto.Ioc
code: protected theorem Tendsto.Ioc {l₁ l₂ : Filter α} [TendstoIxxClass Ioc l₁ l₂] {lb : Filter β}
    {u₁ u₂ : β → α} (h₁ : Tendsto u₁ lb l₁) (h₂ : Tendsto u₂ lb l₁) :
    Tendsto (fun x => Ioc (u₁ x) (u₂ x)) lb l₂.smallSets 
goal: Filter.Tendsto (fun x => Set.Ioc (u₁ x) (u₂ x)) lb l₂.smallSets

full_name: Filter.Tendsto.Ico
code: protected theorem Tendsto.Ico {l₁ l₂ : Filter α} [TendstoIxxClass Ico l₁ l₂] {lb : Filter β}
    {u₁ u₂ : β → α} (h₁ : Tendsto u₁ lb l₁) (h₂ : Tendsto u₂ lb l₁) :
    Tendsto (fun x => Ico (u₁ x) (u₂ x)) lb l₂.smallSets 
goal: Filter.Tendsto (fun x => Set.Ico (u₁ x) (u₂ x)) lb l₂.smallSets

full_name: Filter.Tendsto.Ioo
code: protected theorem Tendsto.Ioo {l₁ l₂ : Filter α} [TendstoIxxClass Ioo l₁ l₂] {lb : Filter β}
    {u₁ u₂ : β → α} (h₁ : Tendsto u₁ lb l₁) (h₂ : Tendsto u₂ lb l₁) :
    Tendsto (fun x => Ioo (u₁ x) (u₂ x)) lb l₂.smallSets 
goal: Filter.Tendsto (fun x => Set.Ioo (u₁ x) (u₂ x)) lb l₂.smallSets

full_name: Filter.tendstoIxxClass_principal
code: theorem tendstoIxxClass_principal {s t : Set α} {Ixx : α → α → Set α} :
    TendstoIxxClass Ixx (𝓟 s) (𝓟 t) ↔ ∀ᵉ (x ∈ s) (y ∈ s), Ixx x y ⊆ t 
goal: Filter.TendstoIxxClass Ixx (𝓟 s) (𝓟 t) ↔ ∀ x ∈ s, ∀ y ∈ s, Ixx x y ⊆ t

full_name: Filter.tendstoIxxClass_inf
code: theorem tendstoIxxClass_inf {l₁ l₁' l₂ l₂' : Filter α} {Ixx} [h : TendstoIxxClass Ixx l₁ l₂]
    [h' : TendstoIxxClass Ixx l₁' l₂'] : TendstoIxxClass Ixx (l₁ ⊓ l₁') (l₂ ⊓ l₂') 
goal: Filter.TendstoIxxClass Ixx (l₁ ⊓ l₁') (l₂ ⊓ l₂')

full_name: Filter.tendstoIxxClass_of_subset
code: theorem tendstoIxxClass_of_subset {l₁ l₂ : Filter α} {Ixx Ixx' : α → α → Set α}
    (h : ∀ a b, Ixx a b ⊆ Ixx' a b) [h' : TendstoIxxClass Ixx' l₁ l₂] : TendstoIxxClass Ixx l₁ l₂ 
goal: Filter.TendstoIxxClass Ixx l₁ l₂

full_name: Filter.HasBasis.tendstoIxxClass
code: theorem HasBasis.tendstoIxxClass {ι : Type*} {p : ι → Prop} {s} {l : Filter α}
    (hl : l.HasBasis p s) {Ixx : α → α → Set α}
    (H : ∀ i, p i → ∀ x ∈ s i, ∀ y ∈ s i, Ixx x y ⊆ s i) : TendstoIxxClass Ixx l l 
goal: Filter.TendstoIxxClass Ixx l l

full_name: Filter.tendsto_Icc_atTop_atTop
code: instance tendsto_Icc_atTop_atTop : TendstoIxxClass Icc (atTop : Filter α) atTop 
goal: Filter.TendstoIxxClass Set.Icc Filter.atTop Filter.atTop

full_name: Filter.tendsto_Ico_atTop_atTop
code: instance tendsto_Ico_atTop_atTop : TendstoIxxClass Ico (atTop : Filter α) atTop 
goal: Filter.TendstoIxxClass Set.Ico Filter.atTop Filter.atTop

full_name: Filter.tendsto_Ioc_atTop_atTop
code: instance tendsto_Ioc_atTop_atTop : TendstoIxxClass Ioc (atTop : Filter α) atTop 
goal: Filter.TendstoIxxClass Set.Ioc Filter.atTop Filter.atTop

full_name: Filter.tendsto_Ioo_atTop_atTop
code: instance tendsto_Ioo_atTop_atTop : TendstoIxxClass Ioo (atTop : Filter α) atTop 
goal: Filter.TendstoIxxClass Set.Ioo Filter.atTop Filter.atTop

full_name: Filter.tendsto_Icc_atBot_atBot
code: instance tendsto_Icc_atBot_atBot : TendstoIxxClass Icc (atBot : Filter α) atBot 
goal: Filter.TendstoIxxClass Set.Icc Filter.atBot Filter.atBot

full_name: Filter.tendsto_Ico_atBot_atBot
code: instance tendsto_Ico_atBot_atBot : TendstoIxxClass Ico (atBot : Filter α) atBot 
goal: Filter.TendstoIxxClass Set.Ico Filter.atBot Filter.atBot

full_name: Filter.tendsto_Ioc_atBot_atBot
code: instance tendsto_Ioc_atBot_atBot : TendstoIxxClass Ioc (atBot : Filter α) atBot 
goal: Filter.TendstoIxxClass Set.Ioc Filter.atBot Filter.atBot

full_name: Filter.tendsto_Ioo_atBot_atBot
code: instance tendsto_Ioo_atBot_atBot : TendstoIxxClass Ioo (atBot : Filter α) atBot 
goal: Filter.TendstoIxxClass Set.Ioo Filter.atBot Filter.atBot

full_name: Filter.OrdConnected.tendsto_Icc
code: instance OrdConnected.tendsto_Icc {s : Set α} [hs : OrdConnected s] :
    TendstoIxxClass Icc (𝓟 s) (𝓟 s) 
goal: Filter.TendstoIxxClass Set.Icc (𝓟 s) (𝓟 s)

full_name: Filter.tendsto_Ico_Ici_Ici
code: instance tendsto_Ico_Ici_Ici {a : α} : TendstoIxxClass Ico (𝓟 (Ici a)) (𝓟 (Ici a)) 
goal: Filter.TendstoIxxClass Set.Ico (𝓟 (Set.Ici a)) (𝓟 (Set.Ici a))

full_name: Filter.tendsto_Ico_Ioi_Ioi
code: instance tendsto_Ico_Ioi_Ioi {a : α} : TendstoIxxClass Ico (𝓟 (Ioi a)) (𝓟 (Ioi a)) 
goal: Filter.TendstoIxxClass Set.Ico (𝓟 (Set.Ioi a)) (𝓟 (Set.Ioi a))

full_name: Filter.tendsto_Ico_Iic_Iio
code: instance tendsto_Ico_Iic_Iio {a : α} : TendstoIxxClass Ico (𝓟 (Iic a)) (𝓟 (Iio a)) 
goal: Filter.TendstoIxxClass Set.Ico (𝓟 (Set.Iic a)) (𝓟 (Set.Iio a))

full_name: Filter.tendsto_Ico_Iio_Iio
code: instance tendsto_Ico_Iio_Iio {a : α} : TendstoIxxClass Ico (𝓟 (Iio a)) (𝓟 (Iio a)) 
goal: Filter.TendstoIxxClass Set.Ico (𝓟 (Set.Iio a)) (𝓟 (Set.Iio a))

full_name: Filter.tendsto_Ioc_Ici_Ioi
code: instance tendsto_Ioc_Ici_Ioi {a : α} : TendstoIxxClass Ioc (𝓟 (Ici a)) (𝓟 (Ioi a)) 
goal: Filter.TendstoIxxClass Set.Ioc (𝓟 (Set.Ici a)) (𝓟 (Set.Ioi a))

full_name: Filter.tendsto_Ioc_Iic_Iic
code: instance tendsto_Ioc_Iic_Iic {a : α} : TendstoIxxClass Ioc (𝓟 (Iic a)) (𝓟 (Iic a)) 
goal: Filter.TendstoIxxClass Set.Ioc (𝓟 (Set.Iic a)) (𝓟 (Set.Iic a))

full_name: Filter.tendsto_Ioc_Iio_Iio
code: instance tendsto_Ioc_Iio_Iio {a : α} : TendstoIxxClass Ioc (𝓟 (Iio a)) (𝓟 (Iio a)) 
goal: Filter.TendstoIxxClass Set.Ioc (𝓟 (Set.Iio a)) (𝓟 (Set.Iio a))

full_name: Filter.tendsto_Ioc_Ioi_Ioi
code: instance tendsto_Ioc_Ioi_Ioi {a : α} : TendstoIxxClass Ioc (𝓟 (Ioi a)) (𝓟 (Ioi a)) 
goal: Filter.TendstoIxxClass Set.Ioc (𝓟 (Set.Ioi a)) (𝓟 (Set.Ioi a))

full_name: Filter.tendsto_Ioo_Ici_Ioi
code: instance tendsto_Ioo_Ici_Ioi {a : α} : TendstoIxxClass Ioo (𝓟 (Ici a)) (𝓟 (Ioi a)) 
goal: Filter.TendstoIxxClass Set.Ioo (𝓟 (Set.Ici a)) (𝓟 (Set.Ioi a))

full_name: Filter.tendsto_Ioo_Iic_Iio
code: instance tendsto_Ioo_Iic_Iio {a : α} : TendstoIxxClass Ioo (𝓟 (Iic a)) (𝓟 (Iio a)) 
goal: Filter.TendstoIxxClass Set.Ioo (𝓟 (Set.Iic a)) (𝓟 (Set.Iio a))

full_name: Filter.tendsto_Ioo_Ioi_Ioi
code: instance tendsto_Ioo_Ioi_Ioi {a : α} : TendstoIxxClass Ioo (𝓟 (Ioi a)) (𝓟 (Ioi a)) 
goal: Filter.TendstoIxxClass Set.Ioo (𝓟 (Set.Ioi a)) (𝓟 (Set.Ioi a))

full_name: Filter.tendsto_Ioo_Iio_Iio
code: instance tendsto_Ioo_Iio_Iio {a : α} : TendstoIxxClass Ioo (𝓟 (Iio a)) (𝓟 (Iio a)) 
goal: Filter.TendstoIxxClass Set.Ioo (𝓟 (Set.Iio a)) (𝓟 (Set.Iio a))

full_name: Filter.tendsto_Icc_Icc_Icc
code: instance tendsto_Icc_Icc_Icc {a b : α} : TendstoIxxClass Icc (𝓟 (Icc a b)) (𝓟 (Icc a b)) 
goal: Filter.TendstoIxxClass Set.Icc (𝓟 (Set.Icc a b)) (𝓟 (Set.Icc a b))

full_name: Filter.tendsto_Ioc_Icc_Icc
code: instance tendsto_Ioc_Icc_Icc {a b : α} : TendstoIxxClass Ioc (𝓟 (Icc a b)) (𝓟 (Icc a b)) 
goal: Filter.TendstoIxxClass Set.Ioc (𝓟 (Set.Icc a b)) (𝓟 (Set.Icc a b))

full_name: Filter.tendsto_Icc_pure_pure
code: instance tendsto_Icc_pure_pure {a : α} : TendstoIxxClass Icc (pure a) (pure a : Filter α) 
goal: Filter.TendstoIxxClass Set.Icc (pure a) (pure a)

full_name: Filter.tendsto_Ico_pure_bot
code: instance tendsto_Ico_pure_bot {a : α} : TendstoIxxClass Ico (pure a) ⊥ 
goal: Filter.TendstoIxxClass Set.Ico (pure a) ⊥

full_name: Filter.tendsto_Ioc_pure_bot
code: instance tendsto_Ioc_pure_bot {a : α} : TendstoIxxClass Ioc (pure a) ⊥ 
goal: Filter.TendstoIxxClass Set.Ioc (pure a) ⊥

full_name: Filter.tendsto_Ioo_pure_bot
code: instance tendsto_Ioo_pure_bot {a : α} : TendstoIxxClass Ioo (pure a) ⊥ 
goal: Filter.TendstoIxxClass Set.Ioo (pure a) ⊥

full_name: Filter.tendsto_Icc_uIcc_uIcc
code: instance tendsto_Icc_uIcc_uIcc {a b : α} : TendstoIxxClass Icc (𝓟 [[a, b]]) (𝓟 [[a, b]]) 
goal: Filter.TendstoIxxClass Set.Icc (𝓟 (Set.uIcc a b)) (𝓟 (Set.uIcc a b))

full_name: Filter.tendsto_Ioc_uIcc_uIcc
code: instance tendsto_Ioc_uIcc_uIcc {a b : α} : TendstoIxxClass Ioc (𝓟 [[a, b]]) (𝓟 [[a, b]]) 
goal: Filter.TendstoIxxClass Set.Ioc (𝓟 (Set.uIcc a b)) (𝓟 (Set.uIcc a b))

full_name: Filter.tendsto_uIcc_of_Icc
code: instance tendsto_uIcc_of_Icc {l : Filter α} [TendstoIxxClass Icc l l] :
    TendstoIxxClass uIcc l l 
goal: Filter.TendstoIxxClass Set.uIcc l l

full_name: Filter.Tendsto.uIcc
code: protected theorem Tendsto.uIcc {l : Filter α} [TendstoIxxClass Icc l l] {f g : β → α}
    {lb : Filter β} (hf : Tendsto f lb l) (hg : Tendsto g lb l) :
    Tendsto (fun x => [[f x, g x]]) lb l.smallSets 
goal: Filter.Tendsto (fun x => Set.uIcc (f x) (g x)) lb l.smallSets