mathlib documentation

analysis.special_functions.pow

Power function on , , ℝ≥0, and ℝ≥0∞ #

We construct the power functions x ^ y where

We also prove basic properties of these functions.

def complex.cpow (x y : ) :

The complex power function x^y, given by x^y = exp(y log x) (where log is the principal determination of the logarithm), unless x = 0 where one sets 0^0 = 1 and 0^y = 0 for y ≠ 0.

Equations
@[instance]
Equations
@[simp]
theorem complex.cpow_eq_pow (x y : ) :
x.cpow y = x ^ y
theorem complex.cpow_def (x y : ) :
x ^ y = ite (x = 0) (ite (y = 0) 1 0) (complex.exp ((complex.log x) * y))
theorem complex.cpow_def_of_ne_zero {x : } (hx : x 0) (y : ) :
@[simp]
theorem complex.cpow_zero (x : ) :
x ^ 0 = 1
@[simp]
theorem complex.cpow_eq_zero_iff (x y : ) :
x ^ y = 0 x = 0 y 0
@[simp]
theorem complex.zero_cpow {x : } (h : x 0) :
0 ^ x = 0
@[simp]
theorem complex.cpow_one (x : ) :
x ^ 1 = x
@[simp]
theorem complex.one_cpow (x : ) :
1 ^ x = 1
theorem complex.cpow_add {x : } (y z : ) (hx : x 0) :
x ^ (y + z) = (x ^ y) * x ^ z
theorem complex.cpow_mul {x y : } (z : ) (h₁ : -π < ((complex.log x) * y).im) (h₂ : ((complex.log x) * y).im π) :
x ^ y * z = (x ^ y) ^ z
theorem complex.cpow_neg (x y : ) :
x ^ -y = (x ^ y)⁻¹
theorem complex.cpow_sub {x : } (y z : ) (hx : x 0) :
x ^ (y - z) = x ^ y / x ^ z
theorem complex.cpow_neg_one (x : ) :
x ^ -1 = x⁻¹
@[simp]
theorem complex.cpow_nat_cast (x : ) (n : ) :
x ^ n = x ^ n
@[simp]
theorem complex.cpow_int_cast (x : ) (n : ) :
x ^ n = x ^ n
theorem complex.cpow_nat_inv_pow (x : ) {n : } (hn : 0 < n) :
(x ^ (n)⁻¹) ^ n = x
theorem complex.has_strict_deriv_at_const_cpow {x y : } (h : x 0 y 0) :
has_strict_deriv_at (λ (y : ), x ^ y) ((x ^ y) * complex.log x) y
theorem filter.tendsto.cpow {α : Type u_1} {l : filter α} {f g : α → } {a b : } (hf : filter.tendsto f l (𝓝 a)) (hg : filter.tendsto g l (𝓝 b)) (ha : 0 < a.re a.im 0) :
filter.tendsto (λ (x : α), f x ^ g x) l (𝓝 (a ^ b))
theorem filter.tendsto.const_cpow {α : Type u_1} {l : filter α} {f : α → } {a b : } (hf : filter.tendsto f l (𝓝 b)) (h : a 0 b 0) :
filter.tendsto (λ (x : α), a ^ f x) l (𝓝 (a ^ b))
theorem continuous_within_at.cpow {α : Type u_1} [topological_space α] {f g : α → } {s : set α} {a : α} (hf : continuous_within_at f s a) (hg : continuous_within_at g s a) (h0 : 0 < (f a).re (f a).im 0) :
continuous_within_at (λ (x : α), f x ^ g x) s a
theorem continuous_within_at.const_cpow {α : Type u_1} [topological_space α] {f : α → } {s : set α} {a : α} {b : } (hf : continuous_within_at f s a) (h : b 0 f a 0) :
continuous_within_at (λ (x : α), b ^ f x) s a
theorem continuous_at.cpow {α : Type u_1} [topological_space α] {f g : α → } {a : α} (hf : continuous_at f a) (hg : continuous_at g a) (h0 : 0 < (f a).re (f a).im 0) :
continuous_at (λ (x : α), f x ^ g x) a
theorem continuous_at.const_cpow {α : Type u_1} [topological_space α] {f : α → } {a : α} {b : } (hf : continuous_at f a) (h : b 0 f a 0) :
continuous_at (λ (x : α), b ^ f x) a
theorem continuous_on.cpow {α : Type u_1} [topological_space α] {f g : α → } {s : set α} (hf : continuous_on f s) (hg : continuous_on g s) (h0 : ∀ (a : α), a s0 < (f a).re (f a).im 0) :
continuous_on (λ (x : α), f x ^ g x) s
theorem continuous_on.const_cpow {α : Type u_1} [topological_space α] {f : α → } {s : set α} {b : } (hf : continuous_on f s) (h : b 0 ∀ (a : α), a sf a 0) :
continuous_on (λ (x : α), b ^ f x) s
theorem continuous.cpow {α : Type u_1} [topological_space α] {f g : α → } (hf : continuous f) (hg : continuous g) (h0 : ∀ (a : α), 0 < (f a).re (f a).im 0) :
continuous (λ (x : α), f x ^ g x)
theorem continuous.const_cpow {α : Type u_1} [topological_space α] {f : α → } {b : } (hf : continuous f) (h : b 0 ∀ (a : α), f a 0) :
continuous (λ (x : α), b ^ f x)
theorem has_strict_fderiv_at.cpow {E : Type u_1} [normed_group E] [normed_space E] {f g : E → } {f' g' : E →L[] } {x : E} (hf : has_strict_fderiv_at f f' x) (hg : has_strict_fderiv_at g g' x) (h0 : 0 < (f x).re (f x).im 0) :
has_strict_fderiv_at (λ (x : E), f x ^ g x) (((g x) * f x ^ (g x - 1)) f' + ((f x ^ g x) * complex.log (f x)) g') x
theorem has_strict_fderiv_at.const_cpow {E : Type u_1} [normed_group E] [normed_space E] {f : E → } {f' : E →L[] } {x : E} {c : } (hf : has_strict_fderiv_at f f' x) (h0 : c 0 f x 0) :
has_strict_fderiv_at (λ (x : E), c ^ f x) (((c ^ f x) * complex.log c) f') x
theorem has_fderiv_at.cpow {E : Type u_1} [normed_group E] [normed_space E] {f g : E → } {f' g' : E →L[] } {x : E} (hf : has_fderiv_at f f' x) (hg : has_fderiv_at g g' x) (h0 : 0 < (f x).re (f x).im 0) :
has_fderiv_at (λ (x : E), f x ^ g x) (((g x) * f x ^ (g x - 1)) f' + ((f x ^ g x) * complex.log (f x)) g') x
theorem has_fderiv_at.const_cpow {E : Type u_1} [normed_group E] [normed_space E] {f : E → } {f' : E →L[] } {x : E} {c : } (hf : has_fderiv_at f f' x) (h0 : c 0 f x 0) :
has_fderiv_at (λ (x : E), c ^ f x) (((c ^ f x) * complex.log c) f') x
theorem has_fderiv_within_at.cpow {E : Type u_1} [normed_group E] [normed_space E] {f g : E → } {f' g' : E →L[] } {x : E} {s : set E} (hf : has_fderiv_within_at f f' s x) (hg : has_fderiv_within_at g g' s x) (h0 : 0 < (f x).re (f x).im 0) :
has_fderiv_within_at (λ (x : E), f x ^ g x) (((g x) * f x ^ (g x - 1)) f' + ((f x ^ g x) * complex.log (f x)) g') s x
theorem has_fderiv_within_at.const_cpow {E : Type u_1} [normed_group E] [normed_space E] {f : E → } {f' : E →L[] } {x : E} {s : set E} {c : } (hf : has_fderiv_within_at f f' s x) (h0 : c 0 f x 0) :
has_fderiv_within_at (λ (x : E), c ^ f x) (((c ^ f x) * complex.log c) f') s x
theorem differentiable_at.cpow {E : Type u_1} [normed_group E] [normed_space E] {f g : E → } {x : E} (hf : differentiable_at f x) (hg : differentiable_at g x) (h0 : 0 < (f x).re (f x).im 0) :
differentiable_at (λ (x : E), f x ^ g x) x
theorem differentiable_at.const_cpow {E : Type u_1} [normed_group E] [normed_space E] {f : E → } {x : E} {c : } (hf : differentiable_at f x) (h0 : c 0 f x 0) :
differentiable_at (λ (x : E), c ^ f x) x
theorem differentiable_within_at.cpow {E : Type u_1} [normed_group E] [normed_space E] {f g : E → } {x : E} {s : set E} (hf : differentiable_within_at f s x) (hg : differentiable_within_at g s x) (h0 : 0 < (f x).re (f x).im 0) :
differentiable_within_at (λ (x : E), f x ^ g x) s x
theorem differentiable_within_at.const_cpow {E : Type u_1} [normed_group E] [normed_space E] {f : E → } {x : E} {s : set E} {c : } (hf : differentiable_within_at f s x) (h0 : c 0 f x 0) :
differentiable_within_at (λ (x : E), c ^ f x) s x
theorem has_strict_deriv_at.cpow {f g : } {f' g' x : } (hf : has_strict_deriv_at f f' x) (hg : has_strict_deriv_at g g' x) (h0 : 0 < (f x).re (f x).im 0) :
has_strict_deriv_at (λ (x : ), f x ^ g x) (((g x) * f x ^ (g x - 1)) * f' + ((f x ^ g x) * complex.log (f x)) * g') x
theorem has_strict_deriv_at.const_cpow {f : } {f' x c : } (hf : has_strict_deriv_at f f' x) (h : c 0 f x 0) :
has_strict_deriv_at (λ (x : ), c ^ f x) (((c ^ f x) * complex.log c) * f') x
theorem complex.has_strict_deriv_at_cpow_const {x c : } (h : 0 < x.re x.im 0) :
has_strict_deriv_at (λ (z : ), z ^ c) (c * x ^ (c - 1)) x
theorem has_strict_deriv_at.cpow_const {f : } {f' x c : } (hf : has_strict_deriv_at f f' x) (h0 : 0 < (f x).re (f x).im 0) :
has_strict_deriv_at (λ (x : ), f x ^ c) ((c * f x ^ (c - 1)) * f') x
theorem has_deriv_at.cpow {f g : } {f' g' x : } (hf : has_deriv_at f f' x) (hg : has_deriv_at g g' x) (h0 : 0 < (f x).re (f x).im 0) :
has_deriv_at (λ (x : ), f x ^ g x) (((g x) * f x ^ (g x - 1)) * f' + ((f x ^ g x) * complex.log (f x)) * g') x
theorem has_deriv_at.const_cpow {f : } {f' x c : } (hf : has_deriv_at f f' x) (h0 : c 0 f x 0) :
has_deriv_at (λ (x : ), c ^ f x) (((c ^ f x) * complex.log c) * f') x
theorem has_deriv_at.cpow_const {f : } {f' x c : } (hf : has_deriv_at f f' x) (h0 : 0 < (f x).re (f x).im 0) :
has_deriv_at (λ (x : ), f x ^ c) ((c * f x ^ (c - 1)) * f') x
theorem has_deriv_within_at.cpow {f g : } {s : set } {f' g' x : } (hf : has_deriv_within_at f f' s x) (hg : has_deriv_within_at g g' s x) (h0 : 0 < (f x).re (f x).im 0) :
has_deriv_within_at (λ (x : ), f x ^ g x) (((g x) * f x ^ (g x - 1)) * f' + ((f x ^ g x) * complex.log (f x)) * g') s x
theorem has_deriv_within_at.const_cpow {f : } {s : set } {f' x c : } (hf : has_deriv_within_at f f' s x) (h0 : c 0 f x 0) :
has_deriv_within_at (λ (x : ), c ^ f x) (((c ^ f x) * complex.log c) * f') s x
theorem has_deriv_within_at.cpow_const {f : } {s : set } {f' x c : } (hf : has_deriv_within_at f f' s x) (h0 : 0 < (f x).re (f x).im 0) :
has_deriv_within_at (λ (x : ), f x ^ c) ((c * f x ^ (c - 1)) * f') s x
def real.rpow (x y : ) :

The real power function x^y, defined as the real part of the complex power function. For x > 0, it is equal to exp(y log x). For x = 0, one sets 0^0=1 and 0^y=0 for y ≠ 0. For x < 0, the definition is somewhat arbitary as it depends on the choice of a complex determination of the logarithm. With our conventions, it is equal to exp (y log x) cos (πy).

Equations
@[instance]
Equations
@[simp]
theorem real.rpow_eq_pow (x y : ) :
x.rpow y = x ^ y
theorem real.rpow_def (x y : ) :
x ^ y = (x ^ y).re
theorem real.rpow_def_of_nonneg {x : } (hx : 0 x) (y : ) :
x ^ y = ite (x = 0) (ite (y = 0) 1 0) (real.exp ((real.log x) * y))
theorem real.rpow_def_of_pos {x : } (hx : 0 < x) (y : ) :
x ^ y = real.exp ((real.log x) * y)
theorem real.exp_mul (x y : ) :
real.exp (x * y) = real.exp x ^ y
theorem real.rpow_eq_zero_iff_of_nonneg {x y : } (hx : 0 x) :
x ^ y = 0 x = 0 y 0
theorem real.rpow_def_of_neg {x : } (hx : x < 0) (y : ) :
x ^ y = (real.exp ((real.log x) * y)) * real.cos (y * π)
theorem real.rpow_def_of_nonpos {x : } (hx : x 0) (y : ) :
x ^ y = ite (x = 0) (ite (y = 0) 1 0) ((real.exp ((real.log x) * y)) * real.cos (y * π))
theorem real.rpow_pos_of_pos {x : } (hx : 0 < x) (y : ) :
0 < x ^ y
@[simp]
theorem real.rpow_zero (x : ) :
x ^ 0 = 1
@[simp]
theorem real.zero_rpow {x : } (h : x 0) :
0 ^ x = 0
@[simp]
theorem real.rpow_one (x : ) :
x ^ 1 = x
@[simp]
theorem real.one_rpow (x : ) :
1 ^ x = 1
theorem real.zero_rpow_le_one (x : ) :
0 ^ x 1
theorem real.zero_rpow_nonneg (x : ) :
0 0 ^ x
theorem real.rpow_nonneg_of_nonneg {x : } (hx : 0 x) (y : ) :
0 x ^ y
theorem real.abs_rpow_le_abs_rpow (x y : ) :
abs (x ^ y) abs x ^ y
theorem real.abs_rpow_of_nonneg {x y : } (hx_nonneg : 0 x) :
abs (x ^ y) = abs x ^ y
theorem real.norm_rpow_of_nonneg {x y : } (hx_nonneg : 0 x) :
x ^ y = x ^ y
theorem complex.of_real_cpow {x : } (hx : 0 x) (y : ) :
(x ^ y) = x ^ y
@[simp]
theorem complex.abs_cpow_real (x : ) (y : ) :
@[simp]
theorem real.rpow_add {x : } (hx : 0 < x) (y z : ) :
x ^ (y + z) = (x ^ y) * x ^ z
theorem real.rpow_add' {x : } (hx : 0 x) {y z : } (h : y + z 0) :
x ^ (y + z) = (x ^ y) * x ^ z
theorem real.le_rpow_add {x : } (hx : 0 x) (y z : ) :
(x ^ y) * x ^ z x ^ (y + z)

For 0 ≤ x, the only problematic case in the equality x ^ y * x ^ z = x ^ (y + z) is for x = 0 and y + z = 0, where the right hand side is 1 while the left hand side can vanish. The inequality is always true, though, and given in this lemma.

theorem real.rpow_mul {x : } (hx : 0 x) (y z : ) :
x ^ y * z = (x ^ y) ^ z
theorem real.rpow_neg {x : } (hx : 0 x) (y : ) :
x ^ -y = (x ^ y)⁻¹
theorem real.rpow_sub {x : } (hx : 0 < x) (y z : ) :
x ^ (y - z) = x ^ y / x ^ z
theorem real.rpow_sub' {x : } (hx : 0 x) {y z : } (h : y - z 0) :
x ^ (y - z) = x ^ y / x ^ z
@[simp]
theorem real.rpow_nat_cast (x : ) (n : ) :
x ^ n = x ^ n
@[simp]
theorem real.rpow_int_cast (x : ) (n : ) :
x ^ n = x ^ n
theorem real.rpow_neg_one (x : ) :
x ^ -1 = x⁻¹
theorem real.mul_rpow {x y z : } (h : 0 x) (h₁ : 0 y) :
(x * y) ^ z = (x ^ z) * y ^ z
theorem real.inv_rpow {x : } (hx : 0 x) (y : ) :
x⁻¹ ^ y = (x ^ y)⁻¹
theorem real.div_rpow {x y : } (hx : 0 x) (hy : 0 y) (z : ) :
(x / y) ^ z = x ^ z / y ^ z
theorem real.log_rpow {x : } (hx : 0 < x) (y : ) :
real.log (x ^ y) = y * real.log x
theorem real.rpow_lt_rpow {x y z : } (hx : 0 x) (hxy : x < y) (hz : 0 < z) :
x ^ z < y ^ z
theorem real.rpow_le_rpow {x y z : } (h : 0 x) (h₁ : x y) (h₂ : 0 z) :
x ^ z y ^ z
theorem real.rpow_lt_rpow_iff {x y z : } (hx : 0 x) (hy : 0 y) (hz : 0 < z) :
x ^ z < y ^ z x < y
theorem real.rpow_le_rpow_iff {x y z : } (hx : 0 x) (hy : 0 y) (hz : 0 < z) :
x ^ z y ^ z x y
theorem real.rpow_lt_rpow_of_exponent_lt {x y z : } (hx : 1 < x) (hyz : y < z) :
x ^ y < x ^ z
theorem real.rpow_le_rpow_of_exponent_le {x y z : } (hx : 1 x) (hyz : y z) :
x ^ y x ^ z
theorem real.rpow_lt_rpow_of_exponent_gt {x y z : } (hx0 : 0 < x) (hx1 : x < 1) (hyz : z < y) :
x ^ y < x ^ z
theorem real.rpow_le_rpow_of_exponent_ge {x y z : } (hx0 : 0 < x) (hx1 : x 1) (hyz : z y) :
x ^ y x ^ z
theorem real.rpow_lt_one {x z : } (hx1 : 0 x) (hx2 : x < 1) (hz : 0 < z) :
x ^ z < 1
theorem real.rpow_le_one {x z : } (hx1 : 0 x) (hx2 : x 1) (hz : 0 z) :
x ^ z 1
theorem real.rpow_lt_one_of_one_lt_of_neg {x z : } (hx : 1 < x) (hz : z < 0) :
x ^ z < 1
theorem real.rpow_le_one_of_one_le_of_nonpos {x z : } (hx : 1 x) (hz : z 0) :
x ^ z 1
theorem real.one_lt_rpow {x z : } (hx : 1 < x) (hz : 0 < z) :
1 < x ^ z
theorem real.one_le_rpow {x z : } (hx : 1 x) (hz : 0 z) :
1 x ^ z
theorem real.one_lt_rpow_of_pos_of_lt_one_of_neg {x z : } (hx1 : 0 < x) (hx2 : x < 1) (hz : z < 0) :
1 < x ^ z
theorem real.one_le_rpow_of_pos_of_le_one_of_nonpos {x z : } (hx1 : 0 < x) (hx2 : x 1) (hz : z 0) :
1 x ^ z
theorem real.rpow_lt_one_iff_of_pos {x y : } (hx : 0 < x) :
x ^ y < 1 1 < x y < 0 x < 1 0 < y
theorem real.rpow_lt_one_iff {x y : } (hx : 0 x) :
x ^ y < 1 x = 0 y 0 1 < x y < 0 x < 1 0 < y
theorem real.one_lt_rpow_iff_of_pos {x y : } (hx : 0 < x) :
1 < x ^ y 1 < x 0 < y x < 1 y < 0
theorem real.one_lt_rpow_iff {x y : } (hx : 0 x) :
1 < x ^ y 1 < x 0 < y 0 < x x < 1 y < 0
theorem real.le_rpow_iff_log_le {x y z : } (hx : 0 < x) (hy : 0 < y) :
x y ^ z real.log x z * real.log y
theorem real.le_rpow_of_log_le {x y z : } (hx : 0 x) (hy : 0 < y) (h : real.log x z * real.log y) :
x y ^ z
theorem real.lt_rpow_iff_log_lt {x y z : } (hx : 0 < x) (hy : 0 < y) :
x < y ^ z real.log x < z * real.log y
theorem real.lt_rpow_of_log_lt {x y z : } (hx : 0 x) (hy : 0 < y) (h : real.log x < z * real.log y) :
x < y ^ z
theorem real.rpow_le_one_iff_of_pos {x y : } (hx : 0 < x) :
x ^ y 1 1 x y 0 x 1 0 y
theorem real.pow_nat_rpow_nat_inv {x : } (hx : 0 x) {n : } (hn : 0 < n) :
(x ^ n) ^ (n)⁻¹ = x
theorem real.rpow_nat_inv_pow_nat {x : } (hx : 0 x) {n : } (hn : 0 < n) :
(x ^ (n)⁻¹) ^ n = x
theorem real.continuous_rpow_aux1  :
continuous (λ (p : {p // 0 < p.fst}), p.val.fst ^ p.val.snd)
theorem real.continuous_rpow_aux2  :
continuous (λ (p : {p // p.fst < 0}), p.val.fst ^ p.val.snd)
theorem real.continuous_at_rpow_of_ne_zero {x : } (hx : x 0) (y : ) :
continuous_at (λ (p : × ), p.fst ^ p.snd) (x, y)
theorem real.continuous_rpow_aux3  :
continuous (λ (p : {p // 0 < p.snd}), p.val.fst ^ p.val.snd)
theorem real.continuous_at_rpow_of_pos {y : } (hy : 0 < y) (x : ) :
continuous_at (λ (p : × ), p.fst ^ p.snd) (x, y)
theorem real.continuous_at_rpow {x y : } (h : x 0 0 < y) :
continuous_at (λ (p : × ), p.fst ^ p.snd) (x, y)
theorem real.continuous_rpow {α : Type u_1} [topological_space α] {f g : α → } (h : ∀ (a : α), f a 0 0 < g a) (hf : continuous f) (hg : continuous g) :
continuous (λ (a : α), f a ^ g a)

real.rpow is continuous at all points except for the lower half of the y-axis. In other words, the function λp:ℝ×ℝ, p.1^p.2 is continuous at (x, y) if x ≠ 0 or y > 0.

Multiple forms of the claim is provided in the current section.

theorem real.continuous_rpow_of_ne_zero {α : Type u_1} [topological_space α] {f g : α → } (h : ∀ (a : α), f a 0) (hf : continuous f) (hg : continuous g) :
continuous (λ (a : α), f a ^ g a)
theorem real.continuous_rpow_of_pos {α : Type u_1} [topological_space α] {f g : α → } (h : ∀ (a : α), 0 < g a) (hf : continuous f) (hg : continuous g) :
continuous (λ (a : α), f a ^ g a)
theorem real.has_deriv_at_rpow_of_pos {x : } (h : 0 < x) (p : ) :
has_deriv_at (λ (x : ), x ^ p) (p * x ^ (p - 1)) x
theorem real.has_deriv_at_rpow_of_neg {x : } (h : x < 0) (p : ) :
has_deriv_at (λ (x : ), x ^ p) (p * x ^ (p - 1)) x
theorem real.has_deriv_at_rpow {x : } (h : x 0) (p : ) :
has_deriv_at (λ (x : ), x ^ p) (p * x ^ (p - 1)) x
theorem real.has_deriv_at_rpow_zero_of_one_le {p : } (h : 1 p) :
has_deriv_at (λ (x : ), x ^ p) (p * 0 ^ (p - 1)) 0
theorem real.has_deriv_at_rpow_of_one_le (x : ) {p : } (h : 1 p) :
has_deriv_at (λ (x : ), x ^ p) (p * x ^ (p - 1)) x
theorem real.sqrt_eq_rpow  :
real.sqrt = λ (x : ), x ^ (1 / 2)
theorem has_deriv_within_at.rpow {f : } {x f' : } {s : set } (p : ) (hf : has_deriv_within_at f f' s x) (hx : f x 0) :
has_deriv_within_at (λ (y : ), f y ^ p) ((f' * p) * f x ^ (p - 1)) s x
theorem has_deriv_at.rpow {f : } {x f' : } (p : ) (hf : has_deriv_at f f' x) (hx : f x 0) :
has_deriv_at (λ (y : ), f y ^ p) ((f' * p) * f x ^ (p - 1)) x
theorem differentiable_within_at.rpow {f : } {x : } {s : set } (p : ) (hf : differentiable_within_at f s x) (hx : f x 0) :
differentiable_within_at (λ (x : ), f x ^ p) s x
@[simp]
theorem differentiable_at.rpow {f : } {x : } (p : ) (hf : differentiable_at f x) (hx : f x 0) :
differentiable_at (λ (x : ), f x ^ p) x
theorem differentiable_on.rpow {f : } {s : set } (p : ) (hf : differentiable_on f s) (hx : ∀ (x : ), x sf x 0) :
differentiable_on (λ (x : ), f x ^ p) s
@[simp]
theorem differentiable.rpow {f : } (p : ) (hf : differentiable f) (hx : ∀ (x : ), f x 0) :
differentiable (λ (x : ), f x ^ p)
theorem deriv_within_rpow {f : } {x : } {s : set } (p : ) (hf : differentiable_within_at f s x) (hx : f x 0) (hxs : unique_diff_within_at s x) :
deriv_within (λ (x : ), f x ^ p) s x = ((deriv_within f s x) * p) * f x ^ (p - 1)
@[simp]
theorem deriv_rpow {f : } {x : } (p : ) (hf : differentiable_at f x) (hx : f x 0) :
deriv (λ (x : ), f x ^ p) x = ((deriv f x) * p) * f x ^ (p - 1)
theorem has_deriv_within_at.rpow_of_one_le {f : } {x f' : } {s : set } {p : } (hf : has_deriv_within_at f f' s x) (hp : 1 p) :
has_deriv_within_at (λ (y : ), f y ^ p) ((f' * p) * f x ^ (p - 1)) s x
theorem has_deriv_at.rpow_of_one_le {f : } {x f' p : } (hf : has_deriv_at f f' x) (hp : 1 p) :
has_deriv_at (λ (y : ), f y ^ p) ((f' * p) * f x ^ (p - 1)) x
theorem differentiable_within_at.rpow_of_one_le {f : } {x : } {s : set } {p : } (hf : differentiable_within_at f s x) (hp : 1 p) :
differentiable_within_at (λ (x : ), f x ^ p) s x
@[simp]
theorem differentiable_at.rpow_of_one_le {f : } {x p : } (hf : differentiable_at f x) (hp : 1 p) :
differentiable_at (λ (x : ), f x ^ p) x
theorem differentiable_on.rpow_of_one_le {f : } {s : set } {p : } (hf : differentiable_on f s) (hp : 1 p) :
differentiable_on (λ (x : ), f x ^ p) s
@[simp]
theorem differentiable.rpow_of_one_le {f : } {p : } (hf : differentiable f) (hp : 1 p) :
differentiable (λ (x : ), f x ^ p)
theorem deriv_within_rpow_of_one_le {f : } {x : } {s : set } {p : } (hf : differentiable_within_at f s x) (hp : 1 p) (hxs : unique_diff_within_at s x) :
deriv_within (λ (x : ), f x ^ p) s x = ((deriv_within f s x) * p) * f x ^ (p - 1)
@[simp]
theorem deriv_rpow_of_one_le {f : } {x p : } (hf : differentiable_at f x) (hp : 1 p) :
deriv (λ (x : ), f x ^ p) x = ((deriv f x) * p) * f x ^ (p - 1)
theorem tendsto_rpow_at_top {y : } (hy : 0 < y) :

The function x ^ y tends to +∞ at +∞ for any positive real y.

theorem tendsto_rpow_neg_at_top {y : } (hy : 0 < y) :
filter.tendsto (λ (x : ), x ^ -y) filter.at_top (𝓝 0)

The function x ^ (-y) tends to 0 at +∞ for any positive real y.

theorem tendsto_rpow_div_mul_add (a b c : ) (hb : 0 b) :
filter.tendsto (λ (x : ), x ^ (a / (b * x + c))) filter.at_top (𝓝 1)

The function x ^ (a / (b * x + c)) tends to 1 at +∞, for any real numbers a, b, and c such that b is nonzero.

theorem tendsto_rpow_div  :
filter.tendsto (λ (x : ), x ^ (1 / x)) filter.at_top (𝓝 1)

The function x ^ (1 / x) tends to 1 at +∞.

theorem tendsto_rpow_neg_div  :
filter.tendsto (λ (x : ), x ^ ((-1) / x)) filter.at_top (𝓝 1)

The function x ^ (-1 / x) tends to 1 at +∞.

theorem tendsto_one_plus_div_rpow_exp (t : ) :
filter.tendsto (λ (x : ), (1 + t / x) ^ x) filter.at_top (𝓝 (real.exp t))

The function (1 + t/x) ^ x tends to exp t at +∞.

theorem tendsto_one_plus_div_pow_exp (t : ) :
filter.tendsto (λ (x : ), (1 + t / x) ^ x) filter.at_top (𝓝 (real.exp t))

The function (1 + t/x) ^ x tends to exp t at +∞ for naturals x.

def nnreal.rpow (x : ℝ≥0) (y : ) :

The nonnegative real power function x^y, defined for x : ℝ≥0 and y : ℝ as the restriction of the real power function. For x > 0, it is equal to exp (y log x). For x = 0, one sets 0 ^ 0 = 1 and 0 ^ y = 0 for y ≠ 0.

Equations
@[simp]
theorem nnreal.rpow_eq_pow (x : ℝ≥0) (y : ) :
x.rpow y = x ^ y
@[simp]
theorem nnreal.coe_rpow (x : ℝ≥0) (y : ) :
(x ^ y) = x ^ y
@[simp]
theorem nnreal.rpow_zero (x : ℝ≥0) :
x ^ 0 = 1
@[simp]
theorem nnreal.rpow_eq_zero_iff {x : ℝ≥0} {y : } :
x ^ y = 0 x = 0 y 0
@[simp]
theorem nnreal.zero_rpow {x : } (h : x 0) :
0 ^ x = 0
@[simp]
theorem nnreal.rpow_one (x : ℝ≥0) :
x ^ 1 = x
@[simp]
theorem nnreal.one_rpow (x : ) :
1 ^ x = 1
theorem nnreal.rpow_add {x : ℝ≥0} (hx : x 0) (y z : ) :
x ^ (y + z) = (x ^ y) * x ^ z
theorem nnreal.rpow_add' (x : ℝ≥0) {y z : } (h : y + z 0) :
x ^ (y + z) = (x ^ y) * x ^ z
theorem nnreal.rpow_mul (x : ℝ≥0) (y z : ) :
x ^ y * z = (x ^ y) ^ z
theorem nnreal.rpow_neg (x : ℝ≥0) (y : ) :
x ^ -y = (x ^ y)⁻¹
theorem nnreal.rpow_neg_one (x : ℝ≥0) :
x ^ -1 = x⁻¹
theorem nnreal.rpow_sub {x : ℝ≥0} (hx : x 0) (y z : ) :
x ^ (y - z) = x ^ y / x ^ z
theorem nnreal.rpow_sub' (x : ℝ≥0) {y z : } (h : y - z 0) :
x ^ (y - z) = x ^ y / x ^ z
theorem nnreal.inv_rpow (x : ℝ≥0) (y : ) :
x⁻¹ ^ y = (x ^ y)⁻¹
theorem nnreal.div_rpow (x y : ℝ≥0) (z : ) :
(x / y) ^ z = x ^ z / y ^ z
@[simp]
theorem nnreal.rpow_nat_cast (x : ℝ≥0) (n : ) :
x ^ n = x ^ n
theorem nnreal.mul_rpow {x y : ℝ≥0} {z : } :
(x * y) ^ z = (x ^ z) * y ^ z
theorem nnreal.rpow_le_rpow {x y : ℝ≥0} {z : } (h₁ : x y) (h₂ : 0 z) :
x ^ z y ^ z
theorem nnreal.rpow_lt_rpow {x y : ℝ≥0} {z : } (h₁ : x < y) (h₂ : 0 < z) :
x ^ z < y ^ z
theorem nnreal.rpow_lt_rpow_iff {x y : ℝ≥0} {z : } (hz : 0 < z) :
x ^ z < y ^ z x < y
theorem nnreal.rpow_le_rpow_iff {x y : ℝ≥0} {z : } (hz : 0 < z) :
x ^ z y ^ z x y
theorem nnreal.rpow_lt_rpow_of_exponent_lt {x : ℝ≥0} {y z : } (hx : 1 < x) (hyz : y < z) :
x ^ y < x ^ z
theorem nnreal.rpow_le_rpow_of_exponent_le {x : ℝ≥0} {y z : } (hx : 1 x) (hyz : y z) :
x ^ y x ^ z
theorem nnreal.rpow_lt_rpow_of_exponent_gt {x : ℝ≥0} {y z : } (hx0 : 0 < x) (hx1 : x < 1) (hyz : z < y) :
x ^ y < x ^ z
theorem nnreal.rpow_le_rpow_of_exponent_ge {x : ℝ≥0} {y z : } (hx0 : 0 < x) (hx1 : x 1) (hyz : z y) :
x ^ y x ^ z
theorem nnreal.rpow_lt_one {x : ℝ≥0} {z : } (hx : 0 x) (hx1 : x < 1) (hz : 0 < z) :
x ^ z < 1
theorem nnreal.rpow_le_one {x : ℝ≥0} {z : } (hx2 : x 1) (hz : 0 z) :
x ^ z 1
theorem nnreal.rpow_lt_one_of_one_lt_of_neg {x : ℝ≥0} {z : } (hx : 1 < x) (hz : z < 0) :
x ^ z < 1
theorem nnreal.rpow_le_one_of_one_le_of_nonpos {x : ℝ≥0} {z : } (hx : 1 x) (hz : z 0) :
x ^ z 1
theorem nnreal.one_lt_rpow {x : ℝ≥0} {z : } (hx : 1 < x) (hz : 0 < z) :
1 < x ^ z
theorem nnreal.one_le_rpow {x : ℝ≥0} {z : } (h : 1 x) (h₁ : 0 z) :
1 x ^ z
theorem nnreal.one_lt_rpow_of_pos_of_lt_one_of_neg {x : ℝ≥0} {z : } (hx1 : 0 < x) (hx2 : x < 1) (hz : z < 0) :
1 < x ^ z
theorem nnreal.one_le_rpow_of_pos_of_le_one_of_nonpos {x : ℝ≥0} {z : } (hx1 : 0 < x) (hx2 : x 1) (hz : z 0) :
1 x ^ z
theorem nnreal.pow_nat_rpow_nat_inv (x : ℝ≥0) {n : } (hn : 0 < n) :
(x ^ n) ^ (n)⁻¹ = x
theorem nnreal.rpow_nat_inv_pow_nat (x : ℝ≥0) {n : } (hn : 0 < n) :
(x ^ (n)⁻¹) ^ n = x
theorem nnreal.continuous_at_rpow {x : ℝ≥0} {y : } (h : x 0 0 < y) :
continuous_at (λ (p : ℝ≥0 × ), p.fst ^ p.snd) (x, y)
theorem real.to_nnreal_rpow_of_nonneg {x y : } (hx : 0 x) :
(x ^ y).to_nnreal = x.to_nnreal ^ y
theorem filter.tendsto.nnrpow {α : Type u_1} {f : filter α} {u : α → ℝ≥0} {v : α → } {x : ℝ≥0} {y : } (hx : filter.tendsto u f (𝓝 x)) (hy : filter.tendsto v f (𝓝 y)) (h : x 0 0 < y) :
filter.tendsto (λ (a : α), u a ^ v a) f (𝓝 (x ^ y))
theorem nnreal.continuous_at_rpow_const {x : ℝ≥0} {y : } (h : x 0 0 y) :
continuous_at (λ (z : ℝ≥0), z ^ y) x
theorem nnreal.continuous_rpow_const {y : } (h : 0 y) :
continuous (λ (x : ℝ≥0), x ^ y)

The real power function x^y on extended nonnegative reals, defined for x : ℝ≥0∞ and y : ℝ as the restriction of the real power function if 0 < x < ⊤, and with the natural values for 0 and (i.e., 0 ^ x = 0 for x > 0, 1 for x = 0 and for x < 0, and ⊤ ^ x = 1 / 0 ^ x).

Equations
@[simp]
theorem ennreal.rpow_eq_pow (x : ℝ≥0∞) (y : ) :
x.rpow y = x ^ y
@[simp]
theorem ennreal.rpow_zero {x : ℝ≥0∞} :
x ^ 0 = 1
theorem ennreal.top_rpow_def (y : ) :
^ y = ite (0 < y) (ite (y = 0) 1 0)
@[simp]
theorem ennreal.top_rpow_of_pos {y : } (h : 0 < y) :
@[simp]
theorem ennreal.top_rpow_of_neg {y : } (h : y < 0) :
^ y = 0
@[simp]
theorem ennreal.zero_rpow_of_pos {y : } (h : 0 < y) :
0 ^ y = 0
@[simp]
theorem ennreal.zero_rpow_of_neg {y : } (h : y < 0) :
0 ^ y =
theorem ennreal.zero_rpow_def (y : ) :
0 ^ y = ite (0 < y) 0 (ite (y = 0) 1 )
@[simp]
theorem ennreal.zero_rpow_mul_self (y : ) :
(0 ^ y) * 0 ^ y = 0 ^ y
theorem ennreal.coe_rpow_of_ne_zero {x : ℝ≥0} (h : x 0) (y : ) :
x ^ y = (x ^ y)
theorem ennreal.coe_rpow_of_nonneg (x : ℝ≥0) {y : } (h : 0 y) :
x ^ y = (x ^ y)
theorem ennreal.coe_rpow_def (x : ℝ≥0) (y : ) :
x ^ y = ite (x = 0 y < 0) (x ^ y)
@[simp]
theorem ennreal.rpow_one (x : ℝ≥0∞) :
x ^ 1 = x
@[simp]
theorem ennreal.one_rpow (x : ) :
1 ^ x = 1
@[simp]
theorem ennreal.rpow_eq_zero_iff {x : ℝ≥0∞} {y : } :
x ^ y = 0 x = 0 0 < y x = y < 0
@[simp]
theorem ennreal.rpow_eq_top_iff {x : ℝ≥0∞} {y : } :
x ^ y = x = 0 y < 0 x = 0 < y
theorem ennreal.rpow_eq_top_iff_of_pos {x : ℝ≥0∞} {y : } (hy : 0 < y) :
x ^ y = x =
theorem ennreal.rpow_eq_top_of_nonneg (x : ℝ≥0∞) {y : } (hy0 : 0 y) :
x ^ y = x =
theorem ennreal.rpow_ne_top_of_nonneg {x : ℝ≥0∞} {y : } (hy0 : 0 y) (h : x ) :
x ^ y
theorem ennreal.rpow_lt_top_of_nonneg {x : ℝ≥0∞} {y : } (hy0 : 0 y) (h : x ) :
x ^ y <
theorem ennreal.rpow_add {x : ℝ≥0∞} (y z : ) (hx : x 0) (h'x : x ) :
x ^ (y + z) = (x ^ y) * x ^ z
theorem ennreal.rpow_neg (x : ℝ≥0∞) (y : ) :
x ^ -y = (x ^ y)⁻¹
theorem ennreal.rpow_sub {x : ℝ≥0∞} (y z : ) (hx : x 0) (h'x : x ) :
x ^ (y - z) = x ^ y / x ^ z
theorem ennreal.rpow_neg_one (x : ℝ≥0∞) :
x ^ -1 = x⁻¹
theorem ennreal.rpow_mul (x : ℝ≥0∞) (y z : ) :
x ^ y * z = (x ^ y) ^ z
@[simp]
theorem ennreal.rpow_nat_cast (x : ℝ≥0∞) (n : ) :
x ^ n = x ^ n
theorem ennreal.mul_rpow_eq_ite (x y : ℝ≥0∞) (z : ) :
(x * y) ^ z = ite ((x = 0 y = x = y = 0) z < 0) ((x ^ z) * y ^ z)
theorem ennreal.mul_rpow_of_ne_top {x y : ℝ≥0∞} (hx : x ) (hy : y ) (z : ) :
(x * y) ^ z = (x ^ z) * y ^ z
theorem ennreal.coe_mul_rpow (x y : ℝ≥0) (z : ) :
((x) * y) ^ z = (x ^ z) * y ^ z
theorem ennreal.mul_rpow_of_ne_zero {x y : ℝ≥0∞} (hx : x 0) (hy : y 0) (z : ) :
(x * y) ^ z = (x ^ z) * y ^ z
theorem ennreal.mul_rpow_of_nonneg (x y : ℝ≥0∞) {z : } (hz : 0 z) :
(x * y) ^ z = (x ^ z) * y ^ z
theorem ennreal.inv_rpow (x : ℝ≥0∞) (y : ) :
x⁻¹ ^ y = (x ^ y)⁻¹
theorem ennreal.div_rpow_of_nonneg (x y : ℝ≥0∞) {z : } (hz : 0 z) :
(x / y) ^ z = x ^ z / y ^ z
theorem ennreal.strict_mono_rpow_of_pos {z : } (h : 0 < z) :
strict_mono (λ (x : ℝ≥0∞), x ^ z)
theorem ennreal.monotone_rpow_of_nonneg {z : } (h : 0 z) :
monotone (λ (x : ℝ≥0∞), x ^ z)
theorem ennreal.rpow_le_rpow {x y : ℝ≥0∞} {z : } (h₁ : x y) (h₂ : 0 z) :
x ^ z y ^ z
theorem ennreal.rpow_lt_rpow {x y : ℝ≥0∞} {z : } (h₁ : x < y) (h₂ : 0 < z) :
x ^ z < y ^ z
theorem ennreal.rpow_le_rpow_iff {x y : ℝ≥0∞} {z : } (hz : 0 < z) :
x ^ z y ^ z x y
theorem ennreal.rpow_lt_rpow_iff {x y : ℝ≥0∞} {z : } (hz : 0 < z) :
x ^ z < y ^ z x < y
theorem ennreal.le_rpow_one_div_iff {x y : ℝ≥0∞} {z : } (hz : 0 < z) :
x y ^ (1 / z) x ^ z y
theorem ennreal.lt_rpow_one_div_iff {x y : ℝ≥0∞} {z : } (hz : 0 < z) :
x < y ^ (1 / z) x ^ z < y
theorem ennreal.rpow_lt_rpow_of_exponent_lt {x : ℝ≥0∞} {y z : } (hx : 1 < x) (hx' : x ) (hyz : y < z) :
x ^ y < x ^ z
theorem ennreal.rpow_le_rpow_of_exponent_le {x : ℝ≥0∞} {y z : } (hx : 1 x) (hyz : y z) :
x ^ y x ^ z
theorem ennreal.rpow_lt_rpow_of_exponent_gt {x : ℝ≥0∞} {y z : } (hx0 : 0 < x) (hx1 : x < 1) (hyz : z < y) :
x ^ y < x ^ z
theorem ennreal.rpow_le_rpow_of_exponent_ge {x : ℝ≥0∞} {y z : } (hx1 : x 1) (hyz : z y) :
x ^ y x ^ z
theorem ennreal.rpow_le_self_of_le_one {x : ℝ≥0∞} {z : } (hx : x 1) (h_one_le : 1 z) :
x ^ z x
theorem ennreal.le_rpow_self_of_one_le {x : ℝ≥0∞} {z : } (hx : 1 x) (h_one_le : 1 z) :
x x ^ z
theorem ennreal.rpow_pos_of_nonneg {p : } {x : ℝ≥0∞} (hx_pos : 0 < x) (hp_nonneg : 0 p) :
0 < x ^ p
theorem ennreal.rpow_pos {p : } {x : ℝ≥0∞} (hx_pos : 0 < x) (hx_ne_top : x ) :
0 < x ^ p
theorem ennreal.rpow_lt_one {x : ℝ≥0∞} {z : } (hx : x < 1) (hz : 0 < z) :
x ^ z < 1
theorem ennreal.rpow_le_one {x : ℝ≥0∞} {z : } (hx : x 1) (hz : 0 z) :
x ^ z 1
theorem ennreal.rpow_lt_one_of_one_lt_of_neg {x : ℝ≥0∞} {z : } (hx : 1 < x) (hz : z < 0) :
x ^ z < 1
theorem ennreal.rpow_le_one_of_one_le_of_neg {x : ℝ≥0∞} {z : } (hx : 1 x) (hz : z < 0) :
x ^ z 1
theorem ennreal.one_lt_rpow {x : ℝ≥0∞} {z : } (hx : 1 < x) (hz : 0 < z) :
1 < x ^ z
theorem ennreal.one_le_rpow {x : ℝ≥0∞} {z : } (hx : 1 x) (hz : 0 < z) :
1 x ^ z
theorem ennreal.one_lt_rpow_of_pos_of_lt_one_of_neg {x : ℝ≥0∞} {z : } (hx1 : 0 < x) (hx2 : x < 1) (hz : z < 0) :
1 < x ^ z
theorem ennreal.one_le_rpow_of_pos_of_le_one_of_neg {x : ℝ≥0∞} {z : } (hx1 : 0 < x) (hx2 : x 1) (hz : z < 0) :
1 x ^ z
theorem ennreal.to_nnreal_rpow (x : ℝ≥0∞) (z : ) :
x.to_nnreal ^ z = (x ^ z).to_nnreal
theorem ennreal.to_real_rpow (x : ℝ≥0∞) (z : ) :
x.to_real ^ z = (x ^ z).to_real
theorem ennreal.of_real_rpow_of_pos {x p : } (hx_pos : 0 < x) :
theorem ennreal.of_real_rpow_of_nonneg {x p : } (hx_nonneg : 0 x) (hp_nonneg : 0 p) :
theorem ennreal.rpow_left_injective {x : } (hx : x 0) :
theorem ennreal.rpow_left_surjective {x : } (hx : x 0) :
theorem ennreal.rpow_left_bijective {x : } (hx : x 0) :
theorem ennreal.rpow_left_monotone_of_nonneg {x : } (hx : 0 x) :
monotone (λ (y : ℝ≥0∞), y ^ x)
theorem ennreal.rpow_left_strict_mono_of_pos {x : } (hx : 0 < x) :
strict_mono (λ (y : ℝ≥0∞), y ^ x)
theorem ennreal.tendsto_rpow_at_top {y : } (hy : 0 < y) :
filter.tendsto (λ (x : ℝ≥0∞), x ^ y) (𝓝 ) (𝓝 )
theorem ennreal.continuous_rpow_const {y : } :
continuous (λ (a : ℝ≥0∞), a ^ y)