Skip to content

Commit

Permalink
feat(analysis/special_functions/trigonometric): add a lemma (#13975)
Browse files Browse the repository at this point in the history
Add a lemma needed for #13178
  • Loading branch information
urkud committed May 6, 2022
1 parent faf1690 commit ebac9f0
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 0 deletions.
13 changes: 13 additions & 0 deletions src/algebra/order/group.lean
Expand Up @@ -1141,6 +1141,19 @@ lemma neg_le_of_abs_le (h : |a| ≤ b) : -b ≤ a := (abs_le.mp h).1

lemma le_of_abs_le (h : |a| ≤ b) : a ≤ b := (abs_le.mp h).2

@[to_additive] lemma apply_abs_le_mul_of_one_le' {β : Type*} [mul_one_class β] [preorder β]
[covariant_class β β (*) (≤)] [covariant_class β β (swap (*)) (≤)] {f : α → β} {a : α}
(h₁ : 1 ≤ f a) (h₂ : 1 ≤ f (-a)) :
f (|a|) ≤ f a * f (-a) :=
(le_total a 0).by_cases (λ ha, (abs_of_nonpos ha).symm ▸ le_mul_of_one_le_left' h₁)
(λ ha, (abs_of_nonneg ha).symm ▸ le_mul_of_one_le_right' h₂)

@[to_additive] lemma apply_abs_le_mul_of_one_le {β : Type*} [mul_one_class β] [preorder β]
[covariant_class β β (*) (≤)] [covariant_class β β (swap (*)) (≤)] {f : α → β}
(h : ∀ x, 1 ≤ f x) (a : α) :
f (|a|) ≤ f a * f (-a) :=
apply_abs_le_mul_of_one_le' (h _) (h _)

/--
The **triangle inequality** in `linear_ordered_add_comm_group`s.
-/
Expand Down
19 changes: 19 additions & 0 deletions src/analysis/special_functions/trigonometric/basic.lean
Expand Up @@ -1044,4 +1044,23 @@ exp_antiperiodic z
@[simp] lemma exp_sub_pi_mul_I (z : ℂ) : exp (z - π * I) = -exp z :=
exp_antiperiodic.sub_eq z

/-- A supporting lemma for the **Phragmen-Lindelöf principle** in a horizontal strip. If `z : ℂ`
belongs to a horizontal strip `|complex.im z| ≤ b`, `b ≤ π / 2`, and `a ≤ 0`, then
$$\left|exp^{a\left(e^{z}+e^{-z}\right)}\right| \le e^{a\cos b \exp^{|re z|}}.$$
-/
lemma abs_exp_mul_exp_add_exp_neg_le_of_abs_im_le {a b : ℝ} (ha : a ≤ 0)
{z : ℂ} (hz : |z.im| ≤ b) (hb : b ≤ π / 2) :
abs (exp (a * (exp z + exp (-z)))) ≤ real.exp (a * real.cos b * real.exp (|z.re|)) :=
begin
simp only [abs_exp, real.exp_le_exp, of_real_mul_re, add_re, exp_re, neg_im, real.cos_neg,
← add_mul, mul_assoc, mul_comm (real.cos b), neg_re, ← real.cos_abs z.im],
have : real.exp (|z.re|) ≤ real.exp z.re + real.exp (-z.re),
from apply_abs_le_add_of_nonneg (λ x, (real.exp_pos x).le) z.re,
refine mul_le_mul_of_nonpos_left (mul_le_mul this _ _ ((real.exp_pos _).le.trans this)) ha,
{ exact real.cos_le_cos_of_nonneg_of_le_pi (_root_.abs_nonneg _)
(hb.trans $ half_le_self $ real.pi_pos.le) hz },
{ refine real.cos_nonneg_of_mem_Icc ⟨_, hb⟩,
exact (neg_nonpos.2 $ real.pi_div_two_pos.le).trans ((_root_.abs_nonneg _).trans hz) }
end

end complex

0 comments on commit ebac9f0

Please sign in to comment.