# Zulip Chat Archive

## Stream: new members

### Topic: Specializing filters to sequences

#### Jalex Stark (Mar 03 2020 at 19:53):

I am trying to show that the big oh relation defined in analysis.asymptotics is the same as the one I know as a working computer scientist. The hope would be to use my definition for proving some ``atomic'' inequalities like

\forall \eps : \R, \eps > 0 \i (\lamdba n, log n) is_o (\lambda n, n^\eps)

and then use the abstract API in mathlib for facts like "is_o is a partial order"

import tactic import data.nat.basic import analysis.complex.exponential import analysis.asymptotics noncomputable theory open_locale classical def is_O' (f g : ℝ → ℝ) : Prop := asymptotics.is_O f g (filter.at_top) def is_O (f g : ℝ → ℝ) : Prop := ∃ c N : ℕ, ∀ x : ℝ , (N:ℝ) ≤ x → f x ≤ c * g x theorem is_O_eq_is_O' (f g : ℝ → ℝ ) : is_O f g → is_O' f g := begin rw [is_O, is_O', asymptotics.is_O], intro, cases a with c a, cases a with N a, use c, refine asymptotics.is_O_with_of_le' filter.at_top _, end

#### Yury G. Kudryashov (Mar 03 2020 at 19:57):

I'd first `simp only [is_O', asymptotics.is_O, filter.mem_at_top_sets]`

#### Jalex Stark (Mar 03 2020 at 20:00):

That brings me to `lean is_O f g → (∃ (c : ℝ), asymptotics.is_O_with c f g filter.at_top)`

#### Yury G. Kudryashov (Mar 03 2020 at 20:02):

BTW, why do you want `C N : nat`

?

#### Jalex Stark (Mar 03 2020 at 20:02):

That's just how a computer scientist would state it. The arguments are the same with c N : \R

#### Yury G. Kudryashov (Mar 03 2020 at 20:03):

import analysis.asymptotics open filter open_locale filter lemma is_O_iff {f g : ℝ → ℝ} : asymptotics.is_O f g at_top ↔ ∃ (c N : ℝ), ∀ x : ℝ , N ≤ x → abs (f x) ≤ c * abs (g x) := by simp only [asymptotics.is_O, asymptotics.is_O_with, eventually_at_top, real.norm_eq_abs]

#### Jalex Stark (Mar 03 2020 at 20:03):

The computer scientist also wants the functions to be `\N \to \N `

but that seems like more work

#### Jalex Stark (Mar 03 2020 at 20:04):

hmm I have open_locale filter but it says unknown identifier 'eventually_at_top'

#### Yury G. Kudryashov (Mar 03 2020 at 20:05):

Fixed.

#### Jalex Stark (Mar 03 2020 at 20:05):

Awesome, thanks!

#### Yury G. Kudryashov (Mar 03 2020 at 20:09):

More generally:

lemma is_O_at_top_iff {α : Type*} [lattice.semilattice_sup α] [nonempty α] {E : Type*} [has_norm E] {f g : α → E} : asymptotics.is_O f g at_top ↔ ∃ c N, ∀ x : α, N ≤ x → ∥f x∥ ≤ c * ∥g x∥ := by simp only [asymptotics.is_O, asymptotics.is_O_with, eventually_at_top]

Feel free to prove a similar fact about `is_o`

, and PR both of them.

Last updated: Dec 20 2023 at 11:08 UTC