Zulip Chat Archive

Stream: Is there code for X?

Topic: Limits of c^(1/n) and (n+c)^(1/n)


Michael Stoll (Jun 09 2025 at 18:55):

I need the facts that limnc1/n=1\lim_{n \to \infty} c^{1/n} = 1 (for cR>0c \in \mathbb{R}_{>0}) and limn(n+c)1/n=1\lim_{n \to \infty} (n + c)^{1/n} = 1 (for cRc \in \mathbb{R}) ,
but can't seem to find something along these lines in Mathlib:

@loogle Filter.Tendsto (fun _ : ℕ ↦ Real.rpow _ _) Filter.atTop _

loogle (Jun 09 2025 at 18:55):

:shrug: nothing found

Michael Stoll (Jun 09 2025 at 18:58):

OK; found docs#tendsto_rpow_div (which is for a real variable). I wonder why

@loogle Filter.Tendsto, Real.rpow

loogle (Jun 09 2025 at 18:58):

:shrug: nothing found

Michael Stoll (Jun 09 2025 at 18:58):

doesn't find anything...

Michael Stoll (Jun 09 2025 at 19:00):

docs#tendsto_rpow_div_mul_add should be usable for the second one.

Michael Stoll (Jun 09 2025 at 19:01):

@loogle Filter.Tendsto (fun x : ℝ ↦ ?c ^ (1/ x)) Filter.atTop

loogle (Jun 09 2025 at 19:01):

:search: tendsto_rpow_div

Michael Stoll (Jun 09 2025 at 19:01):

Is there no version with a constant ?c?

Michael Stoll (Jun 09 2025 at 19:03):

I guess it can be deduced via docs#Filter.Tendsto.rpow, but I would have expected this to be there.

Michael Stoll (Jun 09 2025 at 19:06):

Michael Stoll said:

I wonder why ... doesn't find anything...

I guess this is because it's syntactically HPow.hpow and not Real.rpow.
Loogling is an art :shrug:

Yakov Pechersky (Jun 09 2025 at 19:06):

There's also docs#tendsto_zpow_atTop_zero wrong variable

Jireh Loreaux (Jun 09 2025 at 19:11):

@loogle Filter.Tendsto, "rpow"

loogle (Jun 09 2025 at 19:11):

:search: tendsto_rpow_atTop, tendsto_exp_div_rpow_atTop, and 28 more

Jireh Loreaux (Jun 09 2025 at 19:12):

I couldn't find it in this list, so I doubt we have it.

Jireh Loreaux (Jun 09 2025 at 19:14):

But you should be able to prove it relatively easily from docs#Real.continuousAt_const_rpow

Yakov Pechersky (Jun 09 2025 at 19:20):

import Mathlib

open Filter Topology

lemma Filter.Tendsto.const_rpow_inv_atTop {c : } (hc0 : c  0) :
    Tendsto (fun k :   c ^ (k⁻¹)) atTop (𝓝 1) := by
  simpa using (tendsto_const_nhds (x := c)).rpow tendsto_inv_atTop_zero (Or.inl hc0)

lemma Filter.Tendsto.const_npow_inv_atTop {c : } (hc0 : c  0) :
    Tendsto (fun k :   c ^ ((k : )⁻¹)) atTop (𝓝 1) :=
  (const_rpow_inv_atTop hc0).comp tendsto_natCast_atTop_atTop

Michael Stoll (Jun 09 2025 at 19:21):

Here is my use case.

import Mathlib

open Filter Topology

example : Tendsto (fun n :   (4 * ((n : ) + 1)) ^ (1 / n : )) atTop (𝓝 1) := by
  have hc : (fun N :   (4 * ((N : ) + 1)) ^ (1 / N : )) =
       (fun x :   x ^ (4 / (1 * x + -4)))  fun N :   4 * ((N : ) + 1) := by
    ext1 N
    rcases eq_or_ne N 0 with rfl | hN₀
    · simp
    simp only [Function.comp_apply]
    congr 1
    ring
  rw [hc]
  exact (tendsto_rpow_div_mul_add 4 1 (-4) zero_ne_one).comp <|
    (tendsto_atTop_add_const_right atTop 1 tendsto_natCast_atTop_atTop).const_mul_atTop
      zero_lt_four

Michael Stoll (Jun 09 2025 at 19:22):

Using docs#tendsto_rpow_div_mul_add is a bit more efficient here, maybe.

Yakov Pechersky (Jun 09 2025 at 19:23):

Yours is a bit harder than the initial question because you have to show that the root shrinks faster than the linear function grows.

Yakov Pechersky (Jun 09 2025 at 19:23):

Ah, that was the second question

Yakov Pechersky (Jun 09 2025 at 19:31):

example : Tendsto (fun n :   (4 * ((n : ) + 1)) ^ (1 / n : )) atTop (𝓝 1) := by
  have := (tendsto_rpow_div_mul_add 1 4⁻¹ (-1) (by norm_num))
  have hn : Tendsto (fun n :   (4 * (n + 1))) atTop atTop := by
    apply Tendsto.const_mul_atTop (by norm_num)
    sorry -- don't remember lemma names
  refine (this.comp (hn.comp tendsto_natCast_atTop_atTop)).congr ?_
  intro
  simp

Michael Stoll (Jun 09 2025 at 19:32):

This is the same proof, modulo permutation...

Yakov Pechersky (Jun 09 2025 at 19:32):

Yeah, just avoiding the explicit hc writing

Michael Stoll (Jun 09 2025 at 19:40):

import Mathlib

open Filter Topology

example : Tendsto (fun n :   (4 * ((n : ) + 1)) ^ (1 / n : )) atTop (𝓝 1) := by
  have := tendsto_rpow_div_mul_add 1 4⁻¹ (-1) (by norm_num)
  have hn : Tendsto (fun x :   (4 * (x + 1))) atTop atTop :=
    (tendsto_atTop_add_const_right atTop 1 tendsto_id).const_mul_atTop zero_lt_four
  exact (this.comp (hn.comp tendsto_natCast_atTop_atTop)).congr fun N  by simp

Yakov Pechersky (Jun 09 2025 at 19:45):

This is a lot like the "invisible mathematics" talk

Michael Stoll (Jun 09 2025 at 19:45):

I guessI should listen to it :smiley:


Last updated: Dec 20 2025 at 21:32 UTC