diff --git a/Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean b/Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean index 43ba4e5458f0c8..e9d6760992c10a 100644 --- a/Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean +++ b/Mathlib/Analysis/Asymptotics/SpecificAsymptotics.lean @@ -44,18 +44,9 @@ open Bornology theorem Asymptotics.isLittleO_pow_pow_cobounded_of_lt (hpq : p < q) : (· ^ p) =o[cobounded R] (· ^ q) := by - nontriviality R - have noc : NormOneClass R := NormMulClass.toNormOneClass - refine IsLittleO.of_bound fun c cpos ↦ ?_ - rw [← Nat.sub_add_cancel hpq.le] - simp_rw [pow_add, norm_mul, norm_pow, eventually_iff_exists_mem] - refine ⟨{y | c⁻¹ ≤ ‖y‖ ^ (q - p)}, ?_, fun y my ↦ ?_⟩ - · have key : Tendsto (‖·‖ ^ (q - p)) (cobounded R) atTop := - (tendsto_pow_atTop (Nat.sub_ne_zero_iff_lt.mpr hpq)).comp tendsto_norm_cobounded_atTop - rw [tendsto_atTop] at key - exact mem_map.mp (key c⁻¹) - · rw [← inv_mul_le_iff₀ cpos] - gcongr; exact my + rw [← Nat.add_sub_of_le hpq.le] + simpa [pow_add] using (isBigO_refl (· ^ p) (cobounded R)).mul_isLittleO + ((isLittleO_const_id_cobounded 1).pow (Nat.sub_pos_of_lt hpq)) theorem Asymptotics.isBigO_pow_pow_cobounded_of_le (hpq : p ≤ q) : (· ^ p) =O[cobounded R] (· ^ q) := by diff --git a/Mathlib/Analysis/CStarAlgebra/Unitization.lean b/Mathlib/Analysis/CStarAlgebra/Unitization.lean index 6e789d584bd5a7..0830c1c2a863ea 100644 --- a/Mathlib/Analysis/CStarAlgebra/Unitization.lean +++ b/Mathlib/Analysis/CStarAlgebra/Unitization.lean @@ -169,6 +169,7 @@ instance Unitization.instCStarRing : CStarRing (Unitization 𝕜 E) where rw [h₂, h₃] /- use the definition of the norm, and split into cases based on whether the norm in the first coordinate is bigger or smaller than the norm in the second coordinate. -/ + -- `grind` works here but is much slower by_cases! h : ‖(Unitization.splitMul 𝕜 E x).fst‖ ≤ ‖(Unitization.splitMul 𝕜 E x).snd‖ · rw [sq, sq, sup_eq_right.mpr h, sup_eq_right.mpr (mul_self_le_mul_self (norm_nonneg _) h)] · replace h := h.le diff --git a/Mathlib/Analysis/Complex/Trigonometric.lean b/Mathlib/Analysis/Complex/Trigonometric.lean index 9d95e54fc24346..aed73f44f005ac 100644 --- a/Mathlib/Analysis/Complex/Trigonometric.lean +++ b/Mathlib/Analysis/Complex/Trigonometric.lean @@ -501,20 +501,11 @@ theorem tan_sq_div_one_add_tan_sq {x : ℂ} (hx : cos x ≠ 0) : simp only [← tan_mul_cos hx, mul_pow, ← inv_one_add_tan_sq hx, div_eq_mul_inv] theorem cos_three_mul : cos (3 * x) = 4 * cos x ^ 3 - 3 * cos x := by - have h1 : x + 2 * x = 3 * x := by ring - rw [← h1, cos_add x (2 * x)] - simp only [cos_two_mul, sin_two_mul, mul_sub, mul_one, sq] - have h2 : 4 * cos x ^ 3 = 2 * cos x * cos x * cos x + 2 * cos x * cos x ^ 2 := by ring - rw [h2, cos_sq'] - ring + rw [← cosh_mul_I, mul_assoc, cosh_three_mul, cosh_mul_I] theorem sin_three_mul : sin (3 * x) = 3 * sin x - 4 * sin x ^ 3 := by - have h1 : x + 2 * x = 3 * x := by ring - rw [← h1, sin_add x (2 * x)] - simp only [cos_two_mul, sin_two_mul, cos_sq'] - have h2 : cos x * (2 * sin x * cos x) = 2 * sin x * cos x ^ 2 := by ring - rw [h2, cos_sq'] - ring + rw [← two_add_one_eq_three, add_one_mul, sin_add (2 * x) x] + grind [cos_two_mul, sin_two_mul, cos_sq'] theorem exp_mul_I : exp (x * I) = cos x + sin x * I := (cos_add_sin_I _).symm