analysis.analytic.basic ⟷ Mathlib.Analysis.Analytic.Basic

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -532,7 +532,7 @@ theorem HasFPowerSeriesOnBall.hasSum_sub (hf : HasFPowerSeriesOnBall f p x r) {y
     (hy : y ∈ EMetric.ball x r) : HasSum (fun n : β„• => p n fun i => y - x) (f y) :=
   by
   have : y - x ∈ EMetric.ball (0 : E) r := by simpa [edist_eq_coe_nnnorm_sub] using hy
-  simpa only [add_sub_cancel'_right] using hf.has_sum this
+  simpa only [add_sub_cancel] using hf.has_sum this
 #align has_fpower_series_on_ball.has_sum_sub HasFPowerSeriesOnBall.hasSum_sub
 -/
 
@@ -736,7 +736,7 @@ theorem AnalyticOn.sub {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn 
 #align analytic_on.sub AnalyticOn.sub
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
 #print HasFPowerSeriesOnBall.coeff_zero /-
 theorem HasFPowerSeriesOnBall.coeff_zero (hf : HasFPowerSeriesOnBall f pf x r) (v : Fin 0 β†’ E) :
     pf 0 v = f x := by
@@ -912,12 +912,12 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
             Prod.fst_sub, Prod.snd_sub, sub_sub_sub_cancel_right] using
             (p <| n + 2).norm_image_sub_le (fun _ => y.1 - x) fun _ => y.2 - x
         _ = β€–p (n + 2)β€– * β€–y - (x, x)β€– ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) := by
-          rw [pow_succ β€–y - (x, x)β€–]; ring
+          rw [pow_succ' β€–y - (x, x)β€–]; ring
         _ ≀ C * a ^ (n + 2) / r' ^ (n + 2) * r' ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) := by
           apply_rules [mul_le_mul_of_nonneg_right, mul_le_mul, hp, pow_le_pow_left, hy'.le,
             norm_nonneg, pow_nonneg, div_nonneg, mul_nonneg, Nat.cast_nonneg, hC.le, r'.coe_nonneg,
             ha.1.le]
-        _ = B n := by field_simp [B, pow_succ, hr'0.ne'];
+        _ = B n := by field_simp [B, pow_succ', hr'0.ne'];
           simp only [mul_assoc, mul_comm, mul_left_comm]
     have hBL : HasSum B (L y) := by
       apply HasSum.mul_left
@@ -937,7 +937,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
 #align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
 #print HasFPowerSeriesOnBall.image_sub_sub_deriv_le /-
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
@@ -1150,7 +1150,7 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
         β€–p fun i => k β€’ yβ€– ≀ c * β€–k β€’ yβ€– ^ (n.succ + 1) := by
           simpa only [norm_pow, norm_norm] using ht (k β€’ y) (δΡ (mem_ball_zero_iff.mpr h₁))
         _ = β€–kβ€– ^ n.succ * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) := by simp only [norm_smul, mul_pow];
-          rw [pow_succ]; ring
+          rw [pow_succ']; ring
     have h₃ : β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1)) < Ξ΅ :=
       inv_mul_cancel_rightβ‚€ hβ‚€.ne.symm Ξ΅ β–Έ
         mul_lt_mul_of_pos_right (lt_of_lt_of_le k_norm (min_le_right _ _)) hβ‚€
@@ -1612,7 +1612,7 @@ theorem HasFPowerSeriesOnBall.analyticAt_of_mem (hf : HasFPowerSeriesOnBall f p
   by
   have : (β€–y - xβ€–β‚Š : ℝβ‰₯0∞) < r := by simpa [edist_eq_coe_nnnorm_sub] using h
   have := hf.change_origin this
-  rw [add_sub_cancel'_right] at this
+  rw [add_sub_cancel] at this
   exact this.analytic_at
 #align has_fpower_series_on_ball.analytic_at_of_mem HasFPowerSeriesOnBall.analyticAt_of_mem
 -/
@@ -1683,7 +1683,7 @@ theorem hasFPowerSeriesAt_iff' :
   rw [← map_add_left_nhds_zero, eventually_map, hasFPowerSeriesAt_iff]
   trace
     "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr Β«exprβˆ€αΆ  in , Β»((z), (nhds() 0 : filter π•œ), has_sum (Ξ» n, _) (f Β«expr + Β»(zβ‚€, z)))]]"
-  rw [add_sub_cancel']
+  rw [add_sub_cancel_left]
 #align has_fpower_series_at_iff' hasFPowerSeriesAt_iff'
 -/
 
Diff
@@ -175,7 +175,7 @@ theorem le_radius_of_summable_nnnorm (h : Summable fun n => β€–p nβ€–β‚Š * r ^ n
 
 #print FormalMultilinearSeries.le_radius_of_summable /-
 theorem le_radius_of_summable (h : Summable fun n => β€–p nβ€– * r ^ n) : ↑r ≀ p.radius :=
-  p.le_radius_of_summable_nnnorm <| by simp only [← coe_nnnorm] at h ; exact_mod_cast h
+  p.le_radius_of_summable_nnnorm <| by simp only [← coe_nnnorm] at h; exact_mod_cast h
 #align formal_multilinear_series.le_radius_of_summable FormalMultilinearSeries.le_radius_of_summable
 -/
 
@@ -217,11 +217,11 @@ theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, (fun n => β€–p nβ€– * r ^ n) =o[atTop] pow a :=
   by
   rw [(TFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 4]
-  simp only [radius, lt_iSup_iff] at h 
+  simp only [radius, lt_iSup_iff] at h
   rcases h with ⟨t, C, hC, rt⟩
-  rw [ENNReal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt 
+  rw [ENNReal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt
   have : 0 < (t : ℝ) := r.coe_nonneg.trans_lt rt
-  rw [← div_lt_one this] at rt 
+  rw [← div_lt_one this] at rt
   refine' ⟨_, rt, C, Or.inr zero_lt_one, fun n => _⟩
   calc
     |β€–p nβ€– * r ^ n| = β€–p nβ€– * t ^ n * (r / t) ^ n := by
@@ -259,12 +259,12 @@ theorem lt_radius_of_isBigO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ
   by
   rcases((TFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 2 5).mp ⟨a, ha, hp⟩ with
     ⟨a, ha, C, hC, hp⟩
-  rw [← pos_iff_ne_zero, ← NNReal.coe_pos] at hβ‚€ 
+  rw [← pos_iff_ne_zero, ← NNReal.coe_pos] at hβ‚€
   lift a to ℝβ‰₯0 using ha.1.le
   have : (r : ℝ) < r / a := by
     simpa only [div_one] using (div_lt_div_left hβ‚€ zero_lt_one ha.1).2 ha.2
-  norm_cast at this 
-  rw [← ENNReal.coe_lt_coe] at this 
+  norm_cast at this
+  rw [← ENNReal.coe_lt_coe] at this
   refine' this.trans_le (p.le_radius_of_bound C fun n => _)
   rw [NNReal.coe_div, div_pow, ← mul_div_assoc, div_le_iff (pow_pos ha.1 n)]
   exact (le_abs_self _).trans (hp n)
@@ -334,7 +334,7 @@ theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯
 theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => β€–p n fun _ => xβ€– :=
   by
-  rw [mem_emetric_ball_zero_iff] at hx 
+  rw [mem_emetric_ball_zero_iff] at hx
   refine'
     Summable.of_nonneg_of_le (fun _ => norm_nonneg _) (fun n => ((p n).le_opNorm _).trans_eq _)
       (p.summable_norm_mul_pow hx)
@@ -401,7 +401,7 @@ theorem min_radius_le_radius_add (p q : FormalMultilinearSeries π•œ E F) :
     min p.radius q.radius ≀ (p + q).radius :=
   by
   refine' ENNReal.le_of_forall_nnreal_lt fun r hr => _
-  rw [lt_min_iff] at hr 
+  rw [lt_min_iff] at hr
   have := ((p.is_o_one_of_lt_radius hr.1).add (q.is_o_one_of_lt_radius hr.2)).IsBigO
   refine' (p + q).le_radius_of_isBigO ((is_O_of_le _ fun n => _).trans this)
   rw [← add_mul, norm_mul, norm_mul, norm_norm]
@@ -802,7 +802,7 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
   obtain ⟨a, ha, C, hC, hp⟩ : βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n, β€–p nβ€– * r' ^ n ≀ C * a ^ n :=
     p.norm_mul_pow_le_mul_pow_of_lt_radius (h.trans_le hf.r_le)
   refine' ⟨a, ha, C / (1 - a), div_pos hC (sub_pos.2 ha.2), fun y hy n => _⟩
-  have yr' : β€–yβ€– < r' := by rw [ball_zero_eq] at hy ; exact hy
+  have yr' : β€–yβ€– < r' := by rw [ball_zero_eq] at hy; exact hy
   have hr'0 : 0 < (r' : ℝ) := (norm_nonneg _).trans_lt yr'
   have : y ∈ EMetric.ball (0 : E) r :=
     by
@@ -814,7 +814,7 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
   suffices β€–p.partial_sum n y - f (x + y)β€– ≀ C * (a * (β€–yβ€– / r')) ^ n / (1 - a * (β€–yβ€– / r'))
     by
     refine' this.trans _
-    apply_rules [div_le_div_of_le_left, sub_pos.2, div_nonneg, mul_nonneg, pow_nonneg, hC.lt.le,
+    apply_rules [div_le_div_of_nonneg_left, sub_pos.2, div_nonneg, mul_nonneg, pow_nonneg, hC.lt.le,
         ha.1.le, norm_nonneg, NNReal.coe_nonneg, ha.2, (sub_le_sub_iff_left _).2] <;>
       infer_instance
   apply norm_sub_le_of_geometric_bound_of_hasSum (ya.trans_lt ha.2) _ (hf.has_sum this)
@@ -843,7 +843,7 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
           βˆ€ n, β€–f (x + y) - p.partial_sum n yβ€– ≀ C * (a * (β€–yβ€– / r')) ^ n
   exact hf.uniform_geometric_approx' h
   refine' ⟨a, ha, C, hC, fun y hy n => (hp y hy n).trans _⟩
-  have yr' : β€–yβ€– < r' := by rwa [ball_zero_eq] at hy 
+  have yr' : β€–yβ€– < r' := by rwa [ball_zero_eq] at hy
   refine' mul_le_mul_of_nonneg_left (pow_le_pow_left _ _ _) hC.lt.le
   exacts [mul_nonneg ha.1.le (div_nonneg (norm_nonneg y) r'.coe_nonneg),
     mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)]
@@ -887,7 +887,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
   obtain ⟨a, ha, C, hC : 0 < C, hp⟩ :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n : β„•, β€–p nβ€– * ↑r' ^ n ≀ C * a ^ n
   exact p.norm_mul_pow_le_mul_pow_of_lt_radius (hr.trans_le hf.r_le)
-  simp only [← le_div_iff (pow_pos (NNReal.coe_pos.2 hr'0) _)] at hp 
+  simp only [← le_div_iff (pow_pos (NNReal.coe_pos.2 hr'0) _)] at hp
   set L : E Γ— E β†’ ℝ := fun y =>
     C * (a / r') ^ 2 * (β€–y - (x, x)β€– * β€–y.1 - y.2β€–) * (a / (1 - a) ^ 2 + 2 / (1 - a))
   have hL : βˆ€ y ∈ EMetric.ball (x, x) r', β€–f y.1 - f y.2 - p 1 fun _ => y.1 - y.2β€– ≀ L y :=
@@ -903,7 +903,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
         zero_add, ← Subsingleton.pi_single_eq (0 : Fin 1) (y.1 - x), Pi.single, ←
         Subsingleton.pi_single_eq (0 : Fin 1) (y.2 - x), Pi.single, ← (p 1).map_sub, ← Pi.single,
         Subsingleton.pi_single_eq, sub_sub_sub_cancel_right]
-    rw [EMetric.mem_ball, edist_eq_coe_nnnorm_sub, ENNReal.coe_lt_coe] at hy' 
+    rw [EMetric.mem_ball, edist_eq_coe_nnnorm_sub, ENNReal.coe_lt_coe] at hy'
     set B : β„• β†’ ℝ := fun n => C * (a / r') ^ 2 * (β€–y - (x, x)β€– * β€–y.1 - y.2β€–) * ((n + 2) * a ^ n)
     have hAB : βˆ€ n, β€–A (n + 2)β€– ≀ B n := fun n =>
       calc
@@ -985,7 +985,7 @@ theorem HasFPowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFPowerS
   refine' Metric.tendstoUniformlyOn_iff.2 fun Ξ΅ Ξ΅pos => _
   have L : tendsto (fun n => (C : ℝ) * a ^ n) at_top (𝓝 ((C : ℝ) * 0)) :=
     tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_zero_of_lt_one ha.1.le ha.2)
-  rw [MulZeroClass.mul_zero] at L 
+  rw [MulZeroClass.mul_zero] at L
   refine' (L.eventually (gt_mem_nhds Ξ΅pos)).mono fun n hn y hy => _
   rw [dist_eq_norm]
   exact (hp y hy n).trans_lt hn
@@ -1182,7 +1182,7 @@ theorem HasFPowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {
       simp only [hk b (this.lt_of_ne hnb), Pi.zero_apply, zero_apply]
     Β· exact False.elim (hn (finset.mem_range.mpr (lt_add_one k)))
   replace h := h.is_O_sub_partial_sum_pow k.succ
-  simp only [psum_eq, zero_sub, Pi.zero_apply, Asymptotics.isBigO_neg_left] at h 
+  simp only [psum_eq, zero_sub, Pi.zero_apply, Asymptotics.isBigO_neg_left] at h
   exact h.continuous_multilinear_map_apply_eq_zero
 #align has_fpower_series_at.apply_eq_zero HasFPowerSeriesAt.apply_eq_zero
 -/
@@ -1490,7 +1490,7 @@ convergence.-/
 theorem changeOrigin_radius : p.radius - β€–xβ€–β‚Š ≀ (p.changeOrigin x).radius :=
   by
   refine' ENNReal.le_of_forall_pos_nnreal_lt fun r h0 hr => _
-  rw [lt_tsub_iff_right, add_comm] at hr 
+  rw [lt_tsub_iff_right, add_comm] at hr
   have hr' : (β€–xβ€–β‚Š : ℝβ‰₯0∞) < p.radius := (le_add_right le_rfl).trans_lt hr
   apply le_radius_of_summable_nnnorm
   have :
@@ -1548,7 +1548,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     Β· dsimp only [f]
       refine' ContinuousMultilinearMap.hasSum_eval _ _
       have := (p.has_fpower_series_on_ball_change_origin k radius_pos).HasSum x_mem_ball
-      rw [zero_add] at this 
+      rw [zero_add] at this
       refine' HasSum.sigma_of_hasSum this (fun l => _) _
       Β· simp only [change_origin_series, ContinuousMultilinearMap.sum_apply]
         apply hasSum_fintype
@@ -1595,7 +1595,7 @@ theorem HasFPowerSeriesOnBall.changeOrigin (hf : HasFPowerSeriesOnBall f p x r)
     r_pos := by simp [h]
     HasSum := fun z hz => by
       convert (p.change_origin y).HasSum _
-      Β· rw [mem_emetric_ball_zero_iff, lt_tsub_iff_right, add_comm] at hz 
+      Β· rw [mem_emetric_ball_zero_iff, lt_tsub_iff_right, add_comm] at hz
         rw [p.change_origin_eval (hz.trans_le hf.r_le), add_assoc, hf.sum]
         refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ hz)
         exact_mod_cast nnnorm_add_le y z
@@ -1612,7 +1612,7 @@ theorem HasFPowerSeriesOnBall.analyticAt_of_mem (hf : HasFPowerSeriesOnBall f p
   by
   have : (β€–y - xβ€–β‚Š : ℝβ‰₯0∞) < r := by simpa [edist_eq_coe_nnnorm_sub] using h
   have := hf.change_origin this
-  rw [add_sub_cancel'_right] at this 
+  rw [add_sub_cancel'_right] at this
   exact this.analytic_at
 #align has_fpower_series_on_ball.analytic_at_of_mem HasFPowerSeriesOnBall.analyticAt_of_mem
 -/
@@ -1661,7 +1661,7 @@ theorem hasFPowerSeriesAt_iff :
     obtain ⟨z, z_pos, le_z⟩ := NormedField.exists_norm_lt π•œ r_pos.lt
     have : (β€–zβ€–β‚Š : ENNReal) ≀ p.radius :=
       by
-      simp only [dist_zero_right] at h 
+      simp only [dist_zero_right] at h
       apply FormalMultilinearSeries.le_radius_of_tendsto
       convert tendsto_norm.comp (h le_z).Summable.tendsto_atTop_zero
       funext <;> simp [norm_smul, mul_comm]
Diff
@@ -336,7 +336,7 @@ theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
   by
   rw [mem_emetric_ball_zero_iff] at hx 
   refine'
-    Summable.of_nonneg_of_le (fun _ => norm_nonneg _) (fun n => ((p n).le_op_norm _).trans_eq _)
+    Summable.of_nonneg_of_le (fun _ => norm_nonneg _) (fun n => ((p n).le_opNorm _).trans_eq _)
       (p.summable_norm_mul_pow hx)
   simp
 #align formal_multilinear_series.summable_norm_apply FormalMultilinearSeries.summable_norm_apply
@@ -820,7 +820,7 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
   apply norm_sub_le_of_geometric_bound_of_hasSum (ya.trans_lt ha.2) _ (hf.has_sum this)
   intro n
   calc
-    β€–(p n) fun i : Fin n => yβ€– ≀ β€–p nβ€– * ∏ i : Fin n, β€–yβ€– := ContinuousMultilinearMap.le_op_norm _ _
+    β€–(p n) fun i : Fin n => yβ€– ≀ β€–p nβ€– * ∏ i : Fin n, β€–yβ€– := ContinuousMultilinearMap.le_opNorm _ _
     _ = β€–p nβ€– * r' ^ n * (β€–yβ€– / r') ^ n := by field_simp [hr'0.ne', mul_right_comm]
     _ ≀ C * a ^ n * (β€–yβ€– / r') ^ n :=
       (mul_le_mul_of_nonneg_right (hp n) (pow_nonneg (div_nonneg (norm_nonneg _) r'.coe_nonneg) _))
@@ -1331,8 +1331,8 @@ theorem nnnorm_changeOriginSeriesTerm_apply_le (k l : β„•) (s : Finset (Fin (k +
       β€–p (k + l)β€–β‚Š * β€–xβ€–β‚Š ^ l * β€–yβ€–β‚Š ^ k :=
   by
   rw [← p.nnnorm_change_origin_series_term k l s hs, ← Fin.prod_const, ← Fin.prod_const]
-  apply ContinuousMultilinearMap.le_of_op_nnnorm_le
-  apply ContinuousMultilinearMap.le_op_nnnorm
+  apply ContinuousMultilinearMap.le_of_opNNNorm_le
+  apply ContinuousMultilinearMap.le_opNNNorm
 #align formal_multilinear_series.nnnorm_change_origin_series_term_apply_le FormalMultilinearSeries.nnnorm_changeOriginSeriesTerm_apply_le
 -/
 
@@ -1361,8 +1361,7 @@ theorem nnnorm_changeOriginSeries_apply_le_tsum (k l : β„•) (x : E) :
       βˆ‘' s : { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + l)β€–β‚Š * β€–xβ€–β‚Š ^ l :=
   by
   rw [NNReal.tsum_mul_right, ← Fin.prod_const]
-  exact
-    (p.change_origin_series k l).le_of_op_nnnorm_le _ (p.nnnorm_change_origin_series_le_tsum _ _)
+  exact (p.change_origin_series k l).le_of_opNNNorm_le _ (p.nnnorm_change_origin_series_le_tsum _ _)
 #align formal_multilinear_series.nnnorm_change_origin_series_apply_le_tsum FormalMultilinearSeries.nnnorm_changeOriginSeries_apply_le_tsum
 -/
 
@@ -1557,7 +1556,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
           Summable.of_nnnorm_bounded _
             (p.change_origin_series_summable_auxβ‚‚ (mem_emetric_ball_zero_iff.1 x_mem_ball) k)
             fun s => _
-        refine' (ContinuousMultilinearMap.le_op_nnnorm _ _).trans_eq _
+        refine' (ContinuousMultilinearMap.le_opNNNorm _ _).trans_eq _
         simp
   refine' hf.unique (change_origin_index_equiv.symm.has_sum_iff.1 _)
   refine'
Diff
@@ -326,7 +326,7 @@ theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯
   obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, hC : 0 < C, hp⟩ := p.norm_mul_pow_le_mul_pow_of_lt_radius h
   exact
     Summable.of_nonneg_of_le (fun n => mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg _)) hp
-      ((summable_geometric_of_lt_1 ha.1.le ha.2).hMul_left _)
+      ((summable_geometric_of_lt_one ha.1.le ha.2).hMul_left _)
 #align formal_multilinear_series.summable_norm_mul_pow FormalMultilinearSeries.summable_norm_mul_pow
 -/
 
@@ -374,7 +374,7 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
         (show (r : ℝβ‰₯0∞) < p.radius from h.symm β–Έ ENNReal.coe_lt_top)
     refine'
       Summable.of_norm_bounded (fun n => (C : ℝ) * a ^ n)
-        ((summable_geometric_of_lt_1 ha.1.le ha.2).hMul_left _) fun n => _
+        ((summable_geometric_of_lt_one ha.1.le ha.2).hMul_left _) fun n => _
     specialize hp n
     rwa [Real.norm_of_nonneg (mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg n))]
   Β· exact p.radius_eq_top_of_summable_norm
@@ -924,8 +924,8 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
       simp only [add_mul]
       have : β€–aβ€– < 1 := by simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
       convert
-        (hasSum_coe_mul_geometric_of_norm_lt_1 this).add
-          ((hasSum_geometric_of_norm_lt_1 this).hMul_left 2)
+        (hasSum_coe_mul_geometric_of_norm_lt_one this).add
+          ((hasSum_geometric_of_norm_lt_one this).hMul_left 2)
     exact hA.norm_le_of_bounded hBL hAB
   suffices L =O[π“Ÿ (EMetric.ball (x, x) r')] fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€–
     by
@@ -984,7 +984,7 @@ theorem HasFPowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFPowerS
   exact hf.uniform_geometric_approx h
   refine' Metric.tendstoUniformlyOn_iff.2 fun Ξ΅ Ξ΅pos => _
   have L : tendsto (fun n => (C : ℝ) * a ^ n) at_top (𝓝 ((C : ℝ) * 0)) :=
-    tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_0_of_lt_1 ha.1.le ha.2)
+    tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_zero_of_lt_one ha.1.le ha.2)
   rw [MulZeroClass.mul_zero] at L 
   refine' (L.eventually (gt_mem_nhds Ξ΅pos)).mono fun n hn y hy => _
   rw [dist_eq_norm]
@@ -1130,7 +1130,7 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
     exact
       norm_eq_zero.mp
         (by
-          simpa only [fin0_apply_norm, norm_eq_zero, norm_zero, zero_pow', Ne.def, Nat.one_ne_zero,
+          simpa only [fin0_apply_norm, norm_eq_zero, norm_zero, zero_pow, Ne.def, Nat.one_ne_zero,
             not_false_iff, MulZeroClass.mul_zero, norm_le_zero_iff] using
             ht 0 (δΡ (Metric.mem_ball_self δ_pos)))
   Β· refine' Or.elim (em (y = 0)) (fun hy => by simpa only [hy] using p.map_zero) fun hy => _
Diff
@@ -844,7 +844,7 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
   exact hf.uniform_geometric_approx' h
   refine' ⟨a, ha, C, hC, fun y hy n => (hp y hy n).trans _⟩
   have yr' : β€–yβ€– < r' := by rwa [ball_zero_eq] at hy 
-  refine' mul_le_mul_of_nonneg_left (pow_le_pow_of_le_left _ _ _) hC.lt.le
+  refine' mul_le_mul_of_nonneg_left (pow_le_pow_left _ _ _) hC.lt.le
   exacts [mul_nonneg ha.1.le (div_nonneg (norm_nonneg y) r'.coe_nonneg),
     mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)]
 #align has_fpower_series_on_ball.uniform_geometric_approx HasFPowerSeriesOnBall.uniform_geometric_approx
@@ -914,7 +914,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
         _ = β€–p (n + 2)β€– * β€–y - (x, x)β€– ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) := by
           rw [pow_succ β€–y - (x, x)β€–]; ring
         _ ≀ C * a ^ (n + 2) / r' ^ (n + 2) * r' ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) := by
-          apply_rules [mul_le_mul_of_nonneg_right, mul_le_mul, hp, pow_le_pow_of_le_left, hy'.le,
+          apply_rules [mul_le_mul_of_nonneg_right, mul_le_mul, hp, pow_le_pow_left, hy'.le,
             norm_nonneg, pow_nonneg, div_nonneg, mul_nonneg, Nat.cast_nonneg, hC.le, r'.coe_nonneg,
             ha.1.le]
         _ = B n := by field_simp [B, pow_succ, hr'0.ne'];
Diff
@@ -344,7 +344,7 @@ theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
 
 #print FormalMultilinearSeries.summable_nnnorm_mul_pow /-
 theorem summable_nnnorm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0} (h : ↑r < p.radius) :
-    Summable fun n : β„• => β€–p nβ€–β‚Š * r ^ n := by rw [← NNReal.summable_coe]; push_cast ;
+    Summable fun n : β„• => β€–p nβ€–β‚Š * r ^ n := by rw [← NNReal.summable_coe]; push_cast;
   exact p.summable_norm_mul_pow h
 #align formal_multilinear_series.summable_nnnorm_mul_pow FormalMultilinearSeries.summable_nnnorm_mul_pow
 -/
Diff
@@ -325,7 +325,7 @@ theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯
   by
   obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, hC : 0 < C, hp⟩ := p.norm_mul_pow_le_mul_pow_of_lt_radius h
   exact
-    summable_of_nonneg_of_le (fun n => mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg _)) hp
+    Summable.of_nonneg_of_le (fun n => mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg _)) hp
       ((summable_geometric_of_lt_1 ha.1.le ha.2).hMul_left _)
 #align formal_multilinear_series.summable_norm_mul_pow FormalMultilinearSeries.summable_norm_mul_pow
 -/
@@ -336,7 +336,7 @@ theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
   by
   rw [mem_emetric_ball_zero_iff] at hx 
   refine'
-    summable_of_nonneg_of_le (fun _ => norm_nonneg _) (fun n => ((p n).le_op_norm _).trans_eq _)
+    Summable.of_nonneg_of_le (fun _ => norm_nonneg _) (fun n => ((p n).le_op_norm _).trans_eq _)
       (p.summable_norm_mul_pow hx)
   simp
 #align formal_multilinear_series.summable_norm_apply FormalMultilinearSeries.summable_norm_apply
@@ -352,7 +352,7 @@ theorem summable_nnnorm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝ
 #print FormalMultilinearSeries.summable /-
 protected theorem summable [CompleteSpace F] (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => p n fun _ => x :=
-  summable_of_summable_norm (p.summable_norm_apply hx)
+  Summable.of_norm (p.summable_norm_apply hx)
 #align formal_multilinear_series.summable FormalMultilinearSeries.summable
 -/
 
@@ -373,7 +373,7 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
       p.norm_mul_pow_le_mul_pow_of_lt_radius
         (show (r : ℝβ‰₯0∞) < p.radius from h.symm β–Έ ENNReal.coe_lt_top)
     refine'
-      summable_of_norm_bounded (fun n => (C : ℝ) * a ^ n)
+      Summable.of_norm_bounded (fun n => (C : ℝ) * a ^ n)
         ((summable_geometric_of_lt_1 ha.1.le ha.2).hMul_left _) fun n => _
     specialize hp n
     rwa [Real.norm_of_nonneg (mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg n))]
@@ -1540,7 +1540,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     p.change_origin_series_term s.1 s.2.1 s.2.2 s.2.2.2 (fun _ => x) fun _ => y
   have hsf : Summable f :=
     by
-    refine' summable_of_nnnorm_bounded _ (p.change_origin_series_summable_aux₁ h) _
+    refine' Summable.of_nnnorm_bounded _ (p.change_origin_series_summable_aux₁ h) _
     rintro ⟨k, l, s, hs⟩; dsimp only [Subtype.coe_mk]
     exact p.nnnorm_change_origin_series_term_apply_le _ _ _ _ _ _
   have hf : HasSum f ((p.change_origin x).Sum y) :=
@@ -1554,7 +1554,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
       Β· simp only [change_origin_series, ContinuousMultilinearMap.sum_apply]
         apply hasSum_fintype
       Β· refine'
-          summable_of_nnnorm_bounded _
+          Summable.of_nnnorm_bounded _
             (p.change_origin_series_summable_auxβ‚‚ (mem_emetric_ball_zero_iff.1 x_mem_ball) k)
             fun s => _
         refine' (ContinuousMultilinearMap.le_op_nnnorm _ _).trans_eq _
Diff
@@ -3,10 +3,10 @@ Copyright (c) 2020 SΓ©bastien GouΓ«zel. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: SΓ©bastien GouΓ«zel, Yury Kudryashov
 -/
-import Mathbin.Analysis.Calculus.FormalMultilinearSeries
-import Mathbin.Analysis.SpecificLimits.Normed
-import Mathbin.Logic.Equiv.Fin
-import Mathbin.Topology.Algebra.InfiniteSum.Module
+import Analysis.Calculus.FormalMultilinearSeries
+import Analysis.SpecificLimits.Normed
+import Logic.Equiv.Fin
+import Topology.Algebra.InfiniteSum.Module
 
 #align_import analysis.analytic.basic from "leanprover-community/mathlib"@"2ebc1d6c2fed9f54c95bbc3998eaa5570527129a"
 
@@ -736,7 +736,7 @@ theorem AnalyticOn.sub {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn 
 #align analytic_on.sub AnalyticOn.sub
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
 #print HasFPowerSeriesOnBall.coeff_zero /-
 theorem HasFPowerSeriesOnBall.coeff_zero (hf : HasFPowerSeriesOnBall f pf x r) (v : Fin 0 β†’ E) :
     pf 0 v = f x := by
@@ -937,7 +937,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
 #align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
 #print HasFPowerSeriesOnBall.image_sub_sub_deriv_le /-
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
Diff
@@ -326,7 +326,7 @@ theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯
   obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, hC : 0 < C, hp⟩ := p.norm_mul_pow_le_mul_pow_of_lt_radius h
   exact
     summable_of_nonneg_of_le (fun n => mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg _)) hp
-      ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _)
+      ((summable_geometric_of_lt_1 ha.1.le ha.2).hMul_left _)
 #align formal_multilinear_series.summable_norm_mul_pow FormalMultilinearSeries.summable_norm_mul_pow
 -/
 
@@ -374,7 +374,7 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
         (show (r : ℝβ‰₯0∞) < p.radius from h.symm β–Έ ENNReal.coe_lt_top)
     refine'
       summable_of_norm_bounded (fun n => (C : ℝ) * a ^ n)
-        ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _) fun n => _
+        ((summable_geometric_of_lt_1 ha.1.le ha.2).hMul_left _) fun n => _
     specialize hp n
     rwa [Real.norm_of_nonneg (mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg n))]
   Β· exact p.radius_eq_top_of_summable_norm
@@ -925,7 +925,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
       have : β€–aβ€– < 1 := by simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
       convert
         (hasSum_coe_mul_geometric_of_norm_lt_1 this).add
-          ((hasSum_geometric_of_norm_lt_1 this).mul_left 2)
+          ((hasSum_geometric_of_norm_lt_1 this).hMul_left 2)
     exact hA.norm_le_of_bounded hBL hAB
   suffices L =O[π“Ÿ (EMetric.ball (x, x) r')] fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€–
     by
@@ -1435,7 +1435,7 @@ theorem changeOriginSeries_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : ℝ
     convert_to HasSum (fun s : Finset (Fin n) => β€–p nβ€–β‚Š * (r ^ s.card * r' ^ (n - s.card))) _
     Β· ext1 s; rw [tsub_add_cancel_of_le (card_finset_fin_le _), mul_assoc]
     rw [← Fin.sum_pow_mul_eq_add_pow]
-    exact (hasSum_fintype _).mul_left _
+    exact (hasSum_fintype _).hMul_left _
   refine' NNReal.summable_sigma.2 ⟨fun n => (this n).Summable, _⟩
   simp only [(this _).tsum_eq]
   exact p.summable_nnnorm_mul_pow hr
@@ -1449,7 +1449,7 @@ theorem changeOriginSeries_summable_auxβ‚‚ (hr : (r : ℝβ‰₯0∞) < p.radius) (k
   by
   rcases ENNReal.lt_iff_exists_add_pos_lt.1 hr with ⟨r', h0, hr'⟩
   simpa only [mul_inv_cancel_rightβ‚€ (pow_pos h0 _).ne'] using
-    ((NNReal.summable_sigma.1 (p.change_origin_series_summable_aux₁ hr')).1 k).mul_right (r' ^ k)⁻¹
+    ((NNReal.summable_sigma.1 (p.change_origin_series_summable_aux₁ hr')).1 k).hMul_right (r' ^ k)⁻¹
 #align formal_multilinear_series.change_origin_series_summable_auxβ‚‚ FormalMultilinearSeries.changeOriginSeries_summable_auxβ‚‚
 -/
 
Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2020 SΓ©bastien GouΓ«zel. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: SΓ©bastien GouΓ«zel, Yury Kudryashov
-
-! This file was ported from Lean 3 source module analysis.analytic.basic
-! leanprover-community/mathlib commit 2ebc1d6c2fed9f54c95bbc3998eaa5570527129a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.Calculus.FormalMultilinearSeries
 import Mathbin.Analysis.SpecificLimits.Normed
 import Mathbin.Logic.Equiv.Fin
 import Mathbin.Topology.Algebra.InfiniteSum.Module
 
+#align_import analysis.analytic.basic from "leanprover-community/mathlib"@"2ebc1d6c2fed9f54c95bbc3998eaa5570527129a"
+
 /-!
 # Analytic functions
 
@@ -739,7 +736,7 @@ theorem AnalyticOn.sub {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn 
 #align analytic_on.sub AnalyticOn.sub
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
 #print HasFPowerSeriesOnBall.coeff_zero /-
 theorem HasFPowerSeriesOnBall.coeff_zero (hf : HasFPowerSeriesOnBall f pf x r) (v : Fin 0 β†’ E) :
     pf 0 v = f x := by
@@ -940,7 +937,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
 #align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
 -/
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
 #print HasFPowerSeriesOnBall.image_sub_sub_deriv_le /-
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
Diff
@@ -1394,7 +1394,8 @@ def changeOriginIndexEquiv :
   invFun s :=
     ⟨s.1 - s.2.card, s.2.card,
       ⟨s.2.map
-          (Fin.cast <| (tsub_add_cancel_of_le <| card_finset_fin_le s.2).symm).toEquiv.toEmbedding,
+          (Fin.castIso <|
+                (tsub_add_cancel_of_le <| card_finset_fin_le s.2).symm).toEquiv.toEmbedding,
         Finset.card_map _⟩⟩
   left_inv := by
     rintro ⟨k, l, ⟨s : Finset (Fin <| k + l), hs : s.card = l⟩⟩
@@ -1406,16 +1407,16 @@ def changeOriginIndexEquiv :
         k' = k β†’
           l' = l β†’
             βˆ€ (hkl : k + l = k' + l') (hs'),
-              (⟨k', l', ⟨Finset.map (Fin.cast hkl).toEquiv.toEmbedding s, hs'⟩⟩ :
+              (⟨k', l', ⟨Finset.map (Fin.castIso hkl).toEquiv.toEmbedding s, hs'⟩⟩ :
                   Ξ£ k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) =
                 ⟨k, l, ⟨s, hs⟩⟩
       by apply this <;> simp only [hs, add_tsub_cancel_right]
     rintro _ _ rfl rfl hkl hs'
-    simp only [Equiv.refl_toEmbedding, Fin.cast_refl, Finset.map_refl, eq_self_iff_true,
+    simp only [Equiv.refl_toEmbedding, Fin.castIso_refl, Finset.map_refl, eq_self_iff_true,
       OrderIso.refl_toEquiv, and_self_iff, heq_iff_eq]
   right_inv := by
     rintro ⟨n, s⟩
-    simp [tsub_add_cancel_of_le (card_finset_fin_le s), Fin.cast_to_equiv]
+    simp [tsub_add_cancel_of_le (card_finset_fin_le s), Fin.castIso_to_equiv]
 #align formal_multilinear_series.change_origin_index_equiv FormalMultilinearSeries.changeOriginIndexEquiv
 -/
 
@@ -1574,7 +1575,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
   have :
     βˆ€ (m) (hm : n = m),
       p n (s.piecewise (fun _ => x) fun _ => y) =
-        p m ((s.map (Fin.cast hm).toEquiv.toEmbedding).piecewise (fun _ => x) fun _ => y) :=
+        p m ((s.map (Fin.castIso hm).toEquiv.toEmbedding).piecewise (fun _ => x) fun _ => y) :=
     by rintro m rfl; simp
   apply this
 #align formal_multilinear_series.change_origin_eval FormalMultilinearSeries.changeOrigin_eval
Diff
@@ -1193,8 +1193,8 @@ theorem HasFPowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {
 #print HasFPowerSeriesAt.eq_zero /-
 /-- A one-dimensional formal multilinear series representing the zero function is zero. -/
 theorem HasFPowerSeriesAt.eq_zero {p : FormalMultilinearSeries π•œ π•œ E} {x : π•œ}
-    (h : HasFPowerSeriesAt 0 p x) : p = 0 := by ext (n x);
-  rw [← mk_pi_field_apply_one_eq_self (p n)]; simp [h.apply_eq_zero n 1]
+    (h : HasFPowerSeriesAt 0 p x) : p = 0 := by ext n x; rw [← mk_pi_field_apply_one_eq_self (p n)];
+  simp [h.apply_eq_zero n 1]
 #align has_fpower_series_at.eq_zero HasFPowerSeriesAt.eq_zero
 -/
 
Diff
@@ -111,10 +111,12 @@ def partialSum (p : FormalMultilinearSeries π•œ E F) (n : β„•) (x : E) : F :=
 #align formal_multilinear_series.partial_sum FormalMultilinearSeries.partialSum
 -/
 
+#print FormalMultilinearSeries.partialSum_continuous /-
 /-- The partial sums of a formal multilinear series are continuous. -/
 theorem partialSum_continuous (p : FormalMultilinearSeries π•œ E F) (n : β„•) :
     Continuous (p.partialSum n) := by continuity
 #align formal_multilinear_series.partial_sum_continuous FormalMultilinearSeries.partialSum_continuous
+-/
 
 end FormalMultilinearSeries
 
@@ -137,60 +139,81 @@ def radius (p : FormalMultilinearSeries π•œ E F) : ℝβ‰₯0∞ :=
 #align formal_multilinear_series.radius FormalMultilinearSeries.radius
 -/
 
+#print FormalMultilinearSeries.le_radius_of_bound /-
 /-- If `β€–pβ‚™β€– rⁿ` is bounded in `n`, then the radius of `p` is at least `r`. -/
 theorem le_radius_of_bound (C : ℝ) {r : ℝβ‰₯0} (h : βˆ€ n : β„•, β€–p nβ€– * r ^ n ≀ C) :
     (r : ℝβ‰₯0∞) ≀ p.radius :=
   le_iSup_of_le r <| le_iSup_of_le C <| le_iSup (fun _ => (r : ℝβ‰₯0∞)) h
 #align formal_multilinear_series.le_radius_of_bound FormalMultilinearSeries.le_radius_of_bound
+-/
 
+#print FormalMultilinearSeries.le_radius_of_bound_nnreal /-
 /-- If `β€–pβ‚™β€– rⁿ` is bounded in `n`, then the radius of `p` is at least `r`. -/
 theorem le_radius_of_bound_nnreal (C : ℝβ‰₯0) {r : ℝβ‰₯0} (h : βˆ€ n : β„•, β€–p nβ€–β‚Š * r ^ n ≀ C) :
     (r : ℝβ‰₯0∞) ≀ p.radius :=
   p.le_radius_of_bound C fun n => by exact_mod_cast h n
 #align formal_multilinear_series.le_radius_of_bound_nnreal FormalMultilinearSeries.le_radius_of_bound_nnreal
+-/
 
+#print FormalMultilinearSeries.le_radius_of_isBigO /-
 /-- If `β€–pβ‚™β€– rⁿ = O(1)`, as `n β†’ ∞`, then the radius of `p` is at least `r`. -/
 theorem le_radius_of_isBigO (h : (fun n => β€–p nβ€– * r ^ n) =O[atTop] fun n => (1 : ℝ)) :
     ↑r ≀ p.radius :=
   Exists.elim (isBigO_one_nat_atTop_iff.1 h) fun C hC =>
     p.le_radius_of_bound C fun n => (le_abs_self _).trans (hC n)
 #align formal_multilinear_series.le_radius_of_is_O FormalMultilinearSeries.le_radius_of_isBigO
+-/
 
+#print FormalMultilinearSeries.le_radius_of_eventually_le /-
 theorem le_radius_of_eventually_le (C) (h : βˆ€αΆ  n in atTop, β€–p nβ€– * r ^ n ≀ C) : ↑r ≀ p.radius :=
   p.le_radius_of_isBigO <| IsBigO.of_bound C <| h.mono fun n hn => by simpa
 #align formal_multilinear_series.le_radius_of_eventually_le FormalMultilinearSeries.le_radius_of_eventually_le
+-/
 
+#print FormalMultilinearSeries.le_radius_of_summable_nnnorm /-
 theorem le_radius_of_summable_nnnorm (h : Summable fun n => β€–p nβ€–β‚Š * r ^ n) : ↑r ≀ p.radius :=
   p.le_radius_of_bound_nnreal (βˆ‘' n, β€–p nβ€–β‚Š * r ^ n) fun n => le_tsum' h _
 #align formal_multilinear_series.le_radius_of_summable_nnnorm FormalMultilinearSeries.le_radius_of_summable_nnnorm
+-/
 
+#print FormalMultilinearSeries.le_radius_of_summable /-
 theorem le_radius_of_summable (h : Summable fun n => β€–p nβ€– * r ^ n) : ↑r ≀ p.radius :=
   p.le_radius_of_summable_nnnorm <| by simp only [← coe_nnnorm] at h ; exact_mod_cast h
 #align formal_multilinear_series.le_radius_of_summable FormalMultilinearSeries.le_radius_of_summable
+-/
 
+#print FormalMultilinearSeries.radius_eq_top_of_forall_nnreal_isBigO /-
 theorem radius_eq_top_of_forall_nnreal_isBigO
     (h : βˆ€ r : ℝβ‰₯0, (fun n => β€–p nβ€– * r ^ n) =O[atTop] fun n => (1 : ℝ)) : p.radius = ∞ :=
   ENNReal.eq_top_of_forall_nnreal_le fun r => p.le_radius_of_isBigO (h r)
 #align formal_multilinear_series.radius_eq_top_of_forall_nnreal_is_O FormalMultilinearSeries.radius_eq_top_of_forall_nnreal_isBigO
+-/
 
+#print FormalMultilinearSeries.radius_eq_top_of_eventually_eq_zero /-
 theorem radius_eq_top_of_eventually_eq_zero (h : βˆ€αΆ  n in atTop, p n = 0) : p.radius = ∞ :=
   p.radius_eq_top_of_forall_nnreal_isBigO fun r =>
     (isBigO_zero _ _).congr' (h.mono fun n hn => by simp [hn]) EventuallyEq.rfl
 #align formal_multilinear_series.radius_eq_top_of_eventually_eq_zero FormalMultilinearSeries.radius_eq_top_of_eventually_eq_zero
+-/
 
+#print FormalMultilinearSeries.radius_eq_top_of_forall_image_add_eq_zero /-
 theorem radius_eq_top_of_forall_image_add_eq_zero (n : β„•) (hn : βˆ€ m, p (m + n) = 0) :
     p.radius = ∞ :=
   p.radius_eq_top_of_eventually_eq_zero <|
     mem_atTop_sets.2 ⟨n, fun k hk => tsub_add_cancel_of_le hk β–Έ hn _⟩
 #align formal_multilinear_series.radius_eq_top_of_forall_image_add_eq_zero FormalMultilinearSeries.radius_eq_top_of_forall_image_add_eq_zero
+-/
 
+#print FormalMultilinearSeries.constFormalMultilinearSeries_radius /-
 @[simp]
 theorem constFormalMultilinearSeries_radius {v : F} :
     (constFormalMultilinearSeries π•œ E v).radius = ⊀ :=
   (constFormalMultilinearSeries π•œ E v).radius_eq_top_of_forall_image_add_eq_zero 1
     (by simp [constFormalMultilinearSeries])
 #align formal_multilinear_series.const_formal_multilinear_series_radius FormalMultilinearSeries.constFormalMultilinearSeries_radius
+-/
 
+#print FormalMultilinearSeries.isLittleO_of_lt_radius /-
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ` tends to zero exponentially:
 for some `0 < a < 1`, `β€–p nβ€– rⁿ = o(aⁿ)`. -/
 theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
@@ -208,14 +231,18 @@ theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
       field_simp [mul_right_comm, abs_mul, this.ne']
     _ ≀ C * (r / t) ^ n := mul_le_mul_of_nonneg_right (hC n) (pow_nonneg (div_nonneg r.2 t.2) _)
 #align formal_multilinear_series.is_o_of_lt_radius FormalMultilinearSeries.isLittleO_of_lt_radius
+-/
 
+#print FormalMultilinearSeries.isLittleO_one_of_lt_radius /-
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ = o(1)`. -/
 theorem isLittleO_one_of_lt_radius (h : ↑r < p.radius) :
     (fun n => β€–p nβ€– * r ^ n) =o[atTop] (fun _ => 1 : β„• β†’ ℝ) :=
   let ⟨a, ha, hp⟩ := p.isLittleO_of_lt_radius h
   hp.trans <| (isLittleO_pow_pow_of_lt_left ha.1.le ha.2).congr (fun n => rfl) one_pow
 #align formal_multilinear_series.is_o_one_of_lt_radius FormalMultilinearSeries.isLittleO_one_of_lt_radius
+-/
 
+#print FormalMultilinearSeries.norm_mul_pow_le_mul_pow_of_lt_radius /-
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ` tends to zero exponentially:
 for some `0 < a < 1` and `C > 0`,  `β€–p nβ€– * r ^ n ≀ C * a ^ n`. -/
 theorem norm_mul_pow_le_mul_pow_of_lt_radius (h : ↑r < p.radius) :
@@ -226,7 +253,9 @@ theorem norm_mul_pow_le_mul_pow_of_lt_radius (h : ↑r < p.radius) :
     ⟨a, ha, C, hC, H⟩
   exact ⟨a, ha, C, hC, fun n => (le_abs_self _).trans (H n)⟩
 #align formal_multilinear_series.norm_mul_pow_le_mul_pow_of_lt_radius FormalMultilinearSeries.norm_mul_pow_le_mul_pow_of_lt_radius
+-/
 
+#print FormalMultilinearSeries.lt_radius_of_isBigO /-
 /-- If `r β‰  0` and `β€–pβ‚™β€– rⁿ = O(aⁿ)` for some `-1 < a < 1`, then `r < p.radius`. -/
 theorem lt_radius_of_isBigO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ) 1)
     (hp : (fun n => β€–p nβ€– * r ^ n) =O[atTop] pow a) : ↑r < p.radius :=
@@ -243,43 +272,57 @@ theorem lt_radius_of_isBigO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ
   rw [NNReal.coe_div, div_pow, ← mul_div_assoc, div_le_iff (pow_pos ha.1 n)]
   exact (le_abs_self _).trans (hp n)
 #align formal_multilinear_series.lt_radius_of_is_O FormalMultilinearSeries.lt_radius_of_isBigO
+-/
 
+#print FormalMultilinearSeries.norm_mul_pow_le_of_lt_radius /-
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ` is bounded. -/
 theorem norm_mul_pow_le_of_lt_radius (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0}
     (h : (r : ℝβ‰₯0∞) < p.radius) : βˆƒ C > 0, βˆ€ n, β€–p nβ€– * r ^ n ≀ C :=
   let ⟨a, ha, C, hC, h⟩ := p.norm_mul_pow_le_mul_pow_of_lt_radius h
   ⟨C, hC, fun n => (h n).trans <| mul_le_of_le_one_right hC.lt.le (pow_le_one _ ha.1.le ha.2.le)⟩
 #align formal_multilinear_series.norm_mul_pow_le_of_lt_radius FormalMultilinearSeries.norm_mul_pow_le_of_lt_radius
+-/
 
+#print FormalMultilinearSeries.norm_le_div_pow_of_pos_of_lt_radius /-
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ` is bounded. -/
 theorem norm_le_div_pow_of_pos_of_lt_radius (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0}
     (h0 : 0 < r) (h : (r : ℝβ‰₯0∞) < p.radius) : βˆƒ C > 0, βˆ€ n, β€–p nβ€– ≀ C / r ^ n :=
   let ⟨C, hC, hp⟩ := p.norm_mul_pow_le_of_lt_radius h
   ⟨C, hC, fun n => Iff.mpr (le_div_iff (pow_pos h0 _)) (hp n)⟩
 #align formal_multilinear_series.norm_le_div_pow_of_pos_of_lt_radius FormalMultilinearSeries.norm_le_div_pow_of_pos_of_lt_radius
+-/
 
+#print FormalMultilinearSeries.nnnorm_mul_pow_le_of_lt_radius /-
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ` is bounded. -/
 theorem nnnorm_mul_pow_le_of_lt_radius (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0}
     (h : (r : ℝβ‰₯0∞) < p.radius) : βˆƒ C > 0, βˆ€ n, β€–p nβ€–β‚Š * r ^ n ≀ C :=
   let ⟨C, hC, hp⟩ := p.norm_mul_pow_le_of_lt_radius h
   ⟨⟨C, hC.lt.le⟩, hC, by exact_mod_cast hp⟩
 #align formal_multilinear_series.nnnorm_mul_pow_le_of_lt_radius FormalMultilinearSeries.nnnorm_mul_pow_le_of_lt_radius
+-/
 
+#print FormalMultilinearSeries.le_radius_of_tendsto /-
 theorem le_radius_of_tendsto (p : FormalMultilinearSeries π•œ E F) {l : ℝ}
     (h : Tendsto (fun n => β€–p nβ€– * r ^ n) atTop (𝓝 l)) : ↑r ≀ p.radius :=
   p.le_radius_of_isBigO (h.isBigO_one _)
 #align formal_multilinear_series.le_radius_of_tendsto FormalMultilinearSeries.le_radius_of_tendsto
+-/
 
+#print FormalMultilinearSeries.le_radius_of_summable_norm /-
 theorem le_radius_of_summable_norm (p : FormalMultilinearSeries π•œ E F)
     (hs : Summable fun n => β€–p nβ€– * r ^ n) : ↑r ≀ p.radius :=
   p.le_radius_of_tendsto hs.tendsto_atTop_zero
 #align formal_multilinear_series.le_radius_of_summable_norm FormalMultilinearSeries.le_radius_of_summable_norm
+-/
 
+#print FormalMultilinearSeries.not_summable_norm_of_radius_lt_nnnorm /-
 theorem not_summable_norm_of_radius_lt_nnnorm (p : FormalMultilinearSeries π•œ E F) {x : E}
     (h : p.radius < β€–xβ€–β‚Š) : Β¬Summable fun n => β€–p nβ€– * β€–xβ€– ^ n := fun hs =>
   not_le_of_lt h (p.le_radius_of_summable_norm hs)
 #align formal_multilinear_series.not_summable_norm_of_radius_lt_nnnorm FormalMultilinearSeries.not_summable_norm_of_radius_lt_nnnorm
+-/
 
+#print FormalMultilinearSeries.summable_norm_mul_pow /-
 theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0} (h : ↑r < p.radius) :
     Summable fun n : β„• => β€–p nβ€– * r ^ n :=
   by
@@ -288,7 +331,9 @@ theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯
     summable_of_nonneg_of_le (fun n => mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg _)) hp
       ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _)
 #align formal_multilinear_series.summable_norm_mul_pow FormalMultilinearSeries.summable_norm_mul_pow
+-/
 
+#print FormalMultilinearSeries.summable_norm_apply /-
 theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => β€–p n fun _ => xβ€– :=
   by
@@ -298,22 +343,30 @@ theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
       (p.summable_norm_mul_pow hx)
   simp
 #align formal_multilinear_series.summable_norm_apply FormalMultilinearSeries.summable_norm_apply
+-/
 
+#print FormalMultilinearSeries.summable_nnnorm_mul_pow /-
 theorem summable_nnnorm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0} (h : ↑r < p.radius) :
     Summable fun n : β„• => β€–p nβ€–β‚Š * r ^ n := by rw [← NNReal.summable_coe]; push_cast ;
   exact p.summable_norm_mul_pow h
 #align formal_multilinear_series.summable_nnnorm_mul_pow FormalMultilinearSeries.summable_nnnorm_mul_pow
+-/
 
+#print FormalMultilinearSeries.summable /-
 protected theorem summable [CompleteSpace F] (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => p n fun _ => x :=
   summable_of_summable_norm (p.summable_norm_apply hx)
 #align formal_multilinear_series.summable FormalMultilinearSeries.summable
+-/
 
+#print FormalMultilinearSeries.radius_eq_top_of_summable_norm /-
 theorem radius_eq_top_of_summable_norm (p : FormalMultilinearSeries π•œ E F)
     (hs : βˆ€ r : ℝβ‰₯0, Summable fun n => β€–p nβ€– * r ^ n) : p.radius = ∞ :=
   ENNReal.eq_top_of_forall_nnreal_le fun r => p.le_radius_of_summable_norm (hs r)
 #align formal_multilinear_series.radius_eq_top_of_summable_norm FormalMultilinearSeries.radius_eq_top_of_summable_norm
+-/
 
+#print FormalMultilinearSeries.radius_eq_top_iff_summable_norm /-
 theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
     p.radius = ∞ ↔ βˆ€ r : ℝβ‰₯0, Summable fun n => β€–p nβ€– * r ^ n :=
   by
@@ -329,7 +382,9 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
     rwa [Real.norm_of_nonneg (mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg n))]
   Β· exact p.radius_eq_top_of_summable_norm
 #align formal_multilinear_series.radius_eq_top_iff_summable_norm FormalMultilinearSeries.radius_eq_top_iff_summable_norm
+-/
 
+#print FormalMultilinearSeries.le_mul_pow_of_radius_pos /-
 /-- If the radius of `p` is positive, then `β€–pβ‚™β€–` grows at most geometrically. -/
 theorem le_mul_pow_of_radius_pos (p : FormalMultilinearSeries π•œ E F) (h : 0 < p.radius) :
     βˆƒ (C r : _) (hC : 0 < C) (hr : 0 < r), βˆ€ n, β€–p nβ€– ≀ C * r ^ n :=
@@ -341,7 +396,9 @@ theorem le_mul_pow_of_radius_pos (p : FormalMultilinearSeries π•œ E F) (h : 0 <
   convert hCp n
   exact inv_pow _ _
 #align formal_multilinear_series.le_mul_pow_of_radius_pos FormalMultilinearSeries.le_mul_pow_of_radius_pos
+-/
 
+#print FormalMultilinearSeries.min_radius_le_radius_add /-
 /-- The radius of the sum of two formal series is at least the minimum of their two radii. -/
 theorem min_radius_le_radius_add (p q : FormalMultilinearSeries π•œ E F) :
     min p.radius q.radius ≀ (p + q).radius :=
@@ -353,16 +410,22 @@ theorem min_radius_le_radius_add (p q : FormalMultilinearSeries π•œ E F) :
   rw [← add_mul, norm_mul, norm_mul, norm_norm]
   exact mul_le_mul_of_nonneg_right ((norm_add_le _ _).trans (le_abs_self _)) (norm_nonneg _)
 #align formal_multilinear_series.min_radius_le_radius_add FormalMultilinearSeries.min_radius_le_radius_add
+-/
 
+#print FormalMultilinearSeries.radius_neg /-
 @[simp]
 theorem radius_neg (p : FormalMultilinearSeries π•œ E F) : (-p).radius = p.radius := by simp [radius]
 #align formal_multilinear_series.radius_neg FormalMultilinearSeries.radius_neg
+-/
 
+#print FormalMultilinearSeries.hasSum /-
 protected theorem hasSum [CompleteSpace F] (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : HasSum (fun n : β„• => p n fun _ => x) (p.Sum x) :=
   (p.Summable hx).HasSum
 #align formal_multilinear_series.has_sum FormalMultilinearSeries.hasSum
+-/
 
+#print FormalMultilinearSeries.radius_le_radius_continuousLinearMap_comp /-
 theorem radius_le_radius_continuousLinearMap_comp (p : FormalMultilinearSeries π•œ E F)
     (f : F β†’L[π•œ] G) : p.radius ≀ (f.compFormalMultilinearSeries p).radius :=
   by
@@ -373,6 +436,7 @@ theorem radius_le_radius_continuousLinearMap_comp (p : FormalMultilinearSeries 
   apply is_O_with.of_bound (eventually_of_forall fun n => _)
   simpa only [norm_norm] using f.norm_comp_continuous_multilinear_map_le (p n)
 #align formal_multilinear_series.radius_le_radius_continuous_linear_map_comp FormalMultilinearSeries.radius_le_radius_continuousLinearMap_comp
+-/
 
 end FormalMultilinearSeries
 
@@ -424,19 +488,26 @@ def AnalyticOn (f : E β†’ F) (s : Set E) :=
 
 variable {π•œ}
 
+#print HasFPowerSeriesOnBall.hasFPowerSeriesAt /-
 theorem HasFPowerSeriesOnBall.hasFPowerSeriesAt (hf : HasFPowerSeriesOnBall f p x r) :
     HasFPowerSeriesAt f p x :=
   ⟨r, hf⟩
 #align has_fpower_series_on_ball.has_fpower_series_at HasFPowerSeriesOnBall.hasFPowerSeriesAt
+-/
 
+#print HasFPowerSeriesAt.analyticAt /-
 theorem HasFPowerSeriesAt.analyticAt (hf : HasFPowerSeriesAt f p x) : AnalyticAt π•œ f x :=
   ⟨p, hf⟩
 #align has_fpower_series_at.analytic_at HasFPowerSeriesAt.analyticAt
+-/
 
+#print HasFPowerSeriesOnBall.analyticAt /-
 theorem HasFPowerSeriesOnBall.analyticAt (hf : HasFPowerSeriesOnBall f p x r) : AnalyticAt π•œ f x :=
   hf.HasFPowerSeriesAt.AnalyticAt
 #align has_fpower_series_on_ball.analytic_at HasFPowerSeriesOnBall.analyticAt
+-/
 
+#print HasFPowerSeriesOnBall.congr /-
 theorem HasFPowerSeriesOnBall.congr (hf : HasFPowerSeriesOnBall f p x r)
     (hg : EqOn f g (EMetric.ball x r)) : HasFPowerSeriesOnBall g p x r :=
   { r_le := hf.r_le
@@ -446,7 +517,9 @@ theorem HasFPowerSeriesOnBall.congr (hf : HasFPowerSeriesOnBall f p x r)
       apply hg.symm
       simpa [edist_eq_coe_nnnorm_sub] using hy }
 #align has_fpower_series_on_ball.congr HasFPowerSeriesOnBall.congr
+-/
 
+#print HasFPowerSeriesOnBall.comp_sub /-
 /-- If a function `f` has a power series `p` around `x`, then the function `z ↦ f (z - y)` has the
 same power series around `x + y`. -/
 theorem HasFPowerSeriesOnBall.comp_sub (hf : HasFPowerSeriesOnBall f p x r) (y : E) :
@@ -455,28 +528,38 @@ theorem HasFPowerSeriesOnBall.comp_sub (hf : HasFPowerSeriesOnBall f p x r) (y :
     r_pos := hf.r_pos
     HasSum := fun z hz => by convert hf.has_sum hz; abel }
 #align has_fpower_series_on_ball.comp_sub HasFPowerSeriesOnBall.comp_sub
+-/
 
+#print HasFPowerSeriesOnBall.hasSum_sub /-
 theorem HasFPowerSeriesOnBall.hasSum_sub (hf : HasFPowerSeriesOnBall f p x r) {y : E}
     (hy : y ∈ EMetric.ball x r) : HasSum (fun n : β„• => p n fun i => y - x) (f y) :=
   by
   have : y - x ∈ EMetric.ball (0 : E) r := by simpa [edist_eq_coe_nnnorm_sub] using hy
   simpa only [add_sub_cancel'_right] using hf.has_sum this
 #align has_fpower_series_on_ball.has_sum_sub HasFPowerSeriesOnBall.hasSum_sub
+-/
 
+#print HasFPowerSeriesOnBall.radius_pos /-
 theorem HasFPowerSeriesOnBall.radius_pos (hf : HasFPowerSeriesOnBall f p x r) : 0 < p.radius :=
   lt_of_lt_of_le hf.r_pos hf.r_le
 #align has_fpower_series_on_ball.radius_pos HasFPowerSeriesOnBall.radius_pos
+-/
 
+#print HasFPowerSeriesAt.radius_pos /-
 theorem HasFPowerSeriesAt.radius_pos (hf : HasFPowerSeriesAt f p x) : 0 < p.radius :=
   let ⟨r, hr⟩ := hf
   hr.radius_pos
 #align has_fpower_series_at.radius_pos HasFPowerSeriesAt.radius_pos
+-/
 
+#print HasFPowerSeriesOnBall.mono /-
 theorem HasFPowerSeriesOnBall.mono (hf : HasFPowerSeriesOnBall f p x r) (r'_pos : 0 < r')
     (hr : r' ≀ r) : HasFPowerSeriesOnBall f p x r' :=
   ⟨le_trans hr hf.1, r'_pos, fun y hy => hf.HasSum (EMetric.ball_subset_ball hr hy)⟩
 #align has_fpower_series_on_ball.mono HasFPowerSeriesOnBall.mono
+-/
 
+#print HasFPowerSeriesAt.congr /-
 theorem HasFPowerSeriesAt.congr (hf : HasFPowerSeriesAt f p x) (hg : f =αΆ [𝓝 x] g) :
     HasFPowerSeriesAt g p x := by
   rcases hf with ⟨r₁, hβ‚βŸ©
@@ -486,130 +569,178 @@ theorem HasFPowerSeriesAt.congr (hf : HasFPowerSeriesAt f p x) (hg : f =αΆ [𝓝
       (h₁.mono (lt_min h₁.r_pos hβ‚‚pos) inf_le_left).congr fun y hy =>
         hβ‚‚ (EMetric.ball_subset_ball inf_le_right hy)⟩
 #align has_fpower_series_at.congr HasFPowerSeriesAt.congr
+-/
 
+#print HasFPowerSeriesAt.eventually /-
 protected theorem HasFPowerSeriesAt.eventually (hf : HasFPowerSeriesAt f p x) :
     βˆ€αΆ  r : ℝβ‰₯0∞ in 𝓝[>] 0, HasFPowerSeriesOnBall f p x r :=
   let ⟨r, hr⟩ := hf
   mem_of_superset (Ioo_mem_nhdsWithin_Ioi (left_mem_Ico.2 hr.r_pos)) fun r' hr' =>
     hr.mono hr'.1 hr'.2.le
 #align has_fpower_series_at.eventually HasFPowerSeriesAt.eventually
+-/
 
+#print HasFPowerSeriesOnBall.eventually_hasSum /-
 theorem HasFPowerSeriesOnBall.eventually_hasSum (hf : HasFPowerSeriesOnBall f p x r) :
     βˆ€αΆ  y in 𝓝 0, HasSum (fun n : β„• => p n fun i : Fin n => y) (f (x + y)) := by
   filter_upwards [EMetric.ball_mem_nhds (0 : E) hf.r_pos] using fun _ => hf.has_sum
 #align has_fpower_series_on_ball.eventually_has_sum HasFPowerSeriesOnBall.eventually_hasSum
+-/
 
+#print HasFPowerSeriesAt.eventually_hasSum /-
 theorem HasFPowerSeriesAt.eventually_hasSum (hf : HasFPowerSeriesAt f p x) :
     βˆ€αΆ  y in 𝓝 0, HasSum (fun n : β„• => p n fun i : Fin n => y) (f (x + y)) :=
   let ⟨r, hr⟩ := hf
   hr.eventually_hasSum
 #align has_fpower_series_at.eventually_has_sum HasFPowerSeriesAt.eventually_hasSum
+-/
 
+#print HasFPowerSeriesOnBall.eventually_hasSum_sub /-
 theorem HasFPowerSeriesOnBall.eventually_hasSum_sub (hf : HasFPowerSeriesOnBall f p x r) :
     βˆ€αΆ  y in 𝓝 x, HasSum (fun n : β„• => p n fun i : Fin n => y - x) (f y) := by
   filter_upwards [EMetric.ball_mem_nhds x hf.r_pos] with y using hf.has_sum_sub
 #align has_fpower_series_on_ball.eventually_has_sum_sub HasFPowerSeriesOnBall.eventually_hasSum_sub
+-/
 
+#print HasFPowerSeriesAt.eventually_hasSum_sub /-
 theorem HasFPowerSeriesAt.eventually_hasSum_sub (hf : HasFPowerSeriesAt f p x) :
     βˆ€αΆ  y in 𝓝 x, HasSum (fun n : β„• => p n fun i : Fin n => y - x) (f y) :=
   let ⟨r, hr⟩ := hf
   hr.eventually_hasSum_sub
 #align has_fpower_series_at.eventually_has_sum_sub HasFPowerSeriesAt.eventually_hasSum_sub
+-/
 
+#print HasFPowerSeriesOnBall.eventually_eq_zero /-
 theorem HasFPowerSeriesOnBall.eventually_eq_zero
     (hf : HasFPowerSeriesOnBall f (0 : FormalMultilinearSeries π•œ E F) x r) : βˆ€αΆ  z in 𝓝 x, f z = 0 :=
   by filter_upwards [hf.eventually_has_sum_sub] with z hz using hz.unique hasSum_zero
 #align has_fpower_series_on_ball.eventually_eq_zero HasFPowerSeriesOnBall.eventually_eq_zero
+-/
 
+#print HasFPowerSeriesAt.eventually_eq_zero /-
 theorem HasFPowerSeriesAt.eventually_eq_zero
     (hf : HasFPowerSeriesAt f (0 : FormalMultilinearSeries π•œ E F) x) : βˆ€αΆ  z in 𝓝 x, f z = 0 :=
   let ⟨r, hr⟩ := hf
   hr.eventually_eq_zero
 #align has_fpower_series_at.eventually_eq_zero HasFPowerSeriesAt.eventually_eq_zero
+-/
 
+#print hasFPowerSeriesOnBall_const /-
 theorem hasFPowerSeriesOnBall_const {c : F} {e : E} :
     HasFPowerSeriesOnBall (fun _ => c) (constFormalMultilinearSeries π•œ E c) e ⊀ :=
   by
   refine' ⟨by simp, WithTop.zero_lt_top, fun y hy => hasSum_single 0 fun n hn => _⟩
   simp [constFormalMultilinearSeries_apply hn]
 #align has_fpower_series_on_ball_const hasFPowerSeriesOnBall_const
+-/
 
+#print hasFPowerSeriesAt_const /-
 theorem hasFPowerSeriesAt_const {c : F} {e : E} :
     HasFPowerSeriesAt (fun _ => c) (constFormalMultilinearSeries π•œ E c) e :=
   ⟨⊀, hasFPowerSeriesOnBall_const⟩
 #align has_fpower_series_at_const hasFPowerSeriesAt_const
+-/
 
+#print analyticAt_const /-
 theorem analyticAt_const {v : F} : AnalyticAt π•œ (fun _ => v) x :=
   ⟨constFormalMultilinearSeries π•œ E v, hasFPowerSeriesAt_const⟩
 #align analytic_at_const analyticAt_const
+-/
 
+#print analyticOn_const /-
 theorem analyticOn_const {v : F} {s : Set E} : AnalyticOn π•œ (fun _ => v) s := fun z _ =>
   analyticAt_const
 #align analytic_on_const analyticOn_const
+-/
 
+#print HasFPowerSeriesOnBall.add /-
 theorem HasFPowerSeriesOnBall.add (hf : HasFPowerSeriesOnBall f pf x r)
     (hg : HasFPowerSeriesOnBall g pg x r) : HasFPowerSeriesOnBall (f + g) (pf + pg) x r :=
   { r_le := le_trans (le_min_iff.2 ⟨hf.r_le, hg.r_le⟩) (pf.min_radius_le_radius_add pg)
     r_pos := hf.r_pos
     HasSum := fun y hy => (hf.HasSum hy).add (hg.HasSum hy) }
 #align has_fpower_series_on_ball.add HasFPowerSeriesOnBall.add
+-/
 
+#print HasFPowerSeriesAt.add /-
 theorem HasFPowerSeriesAt.add (hf : HasFPowerSeriesAt f pf x) (hg : HasFPowerSeriesAt g pg x) :
     HasFPowerSeriesAt (f + g) (pf + pg) x :=
   by
   rcases(hf.eventually.and hg.eventually).exists with ⟨r, hr⟩
   exact ⟨r, hr.1.add hr.2⟩
 #align has_fpower_series_at.add HasFPowerSeriesAt.add
+-/
 
+#print AnalyticAt.add /-
 theorem AnalyticAt.add (hf : AnalyticAt π•œ f x) (hg : AnalyticAt π•œ g x) : AnalyticAt π•œ (f + g) x :=
   let ⟨pf, hpf⟩ := hf
   let ⟨qf, hqf⟩ := hg
   (hpf.add hqf).AnalyticAt
 #align analytic_at.add AnalyticAt.add
+-/
 
+#print HasFPowerSeriesOnBall.neg /-
 theorem HasFPowerSeriesOnBall.neg (hf : HasFPowerSeriesOnBall f pf x r) :
     HasFPowerSeriesOnBall (-f) (-pf) x r :=
   { r_le := by rw [pf.radius_neg]; exact hf.r_le
     r_pos := hf.r_pos
     HasSum := fun y hy => (hf.HasSum hy).neg }
 #align has_fpower_series_on_ball.neg HasFPowerSeriesOnBall.neg
+-/
 
+#print HasFPowerSeriesAt.neg /-
 theorem HasFPowerSeriesAt.neg (hf : HasFPowerSeriesAt f pf x) : HasFPowerSeriesAt (-f) (-pf) x :=
   let ⟨rf, hrf⟩ := hf
   hrf.neg.HasFPowerSeriesAt
 #align has_fpower_series_at.neg HasFPowerSeriesAt.neg
+-/
 
+#print AnalyticAt.neg /-
 theorem AnalyticAt.neg (hf : AnalyticAt π•œ f x) : AnalyticAt π•œ (-f) x :=
   let ⟨pf, hpf⟩ := hf
   hpf.neg.AnalyticAt
 #align analytic_at.neg AnalyticAt.neg
+-/
 
+#print HasFPowerSeriesOnBall.sub /-
 theorem HasFPowerSeriesOnBall.sub (hf : HasFPowerSeriesOnBall f pf x r)
     (hg : HasFPowerSeriesOnBall g pg x r) : HasFPowerSeriesOnBall (f - g) (pf - pg) x r := by
   simpa only [sub_eq_add_neg] using hf.add hg.neg
 #align has_fpower_series_on_ball.sub HasFPowerSeriesOnBall.sub
+-/
 
+#print HasFPowerSeriesAt.sub /-
 theorem HasFPowerSeriesAt.sub (hf : HasFPowerSeriesAt f pf x) (hg : HasFPowerSeriesAt g pg x) :
     HasFPowerSeriesAt (f - g) (pf - pg) x := by simpa only [sub_eq_add_neg] using hf.add hg.neg
 #align has_fpower_series_at.sub HasFPowerSeriesAt.sub
+-/
 
+#print AnalyticAt.sub /-
 theorem AnalyticAt.sub (hf : AnalyticAt π•œ f x) (hg : AnalyticAt π•œ g x) : AnalyticAt π•œ (f - g) x :=
   by simpa only [sub_eq_add_neg] using hf.add hg.neg
 #align analytic_at.sub AnalyticAt.sub
+-/
 
+#print AnalyticOn.mono /-
 theorem AnalyticOn.mono {s t : Set E} (hf : AnalyticOn π•œ f t) (hst : s βŠ† t) : AnalyticOn π•œ f s :=
   fun z hz => hf z (hst hz)
 #align analytic_on.mono AnalyticOn.mono
+-/
 
+#print AnalyticOn.add /-
 theorem AnalyticOn.add {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn π•œ g s) :
     AnalyticOn π•œ (f + g) s := fun z hz => (hf z hz).add (hg z hz)
 #align analytic_on.add AnalyticOn.add
+-/
 
+#print AnalyticOn.sub /-
 theorem AnalyticOn.sub {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn π•œ g s) :
     AnalyticOn π•œ (f - g) s := fun z hz => (hf z hz).sub (hg z hz)
 #align analytic_on.sub AnalyticOn.sub
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
+#print HasFPowerSeriesOnBall.coeff_zero /-
 theorem HasFPowerSeriesOnBall.coeff_zero (hf : HasFPowerSeriesOnBall f pf x r) (v : Fin 0 β†’ E) :
     pf 0 v = f x := by
   have v_eq : v = fun i => 0 := Subsingleton.elim _ _
@@ -622,13 +753,17 @@ theorem HasFPowerSeriesOnBall.coeff_zero (hf : HasFPowerSeriesOnBall f pf x r) (
   have A := (hf.has_sum zero_mem).unique (hasSum_single _ this)
   simpa [v_eq] using A.symm
 #align has_fpower_series_on_ball.coeff_zero HasFPowerSeriesOnBall.coeff_zero
+-/
 
+#print HasFPowerSeriesAt.coeff_zero /-
 theorem HasFPowerSeriesAt.coeff_zero (hf : HasFPowerSeriesAt f pf x) (v : Fin 0 β†’ E) :
     pf 0 v = f x :=
   let ⟨rf, hrf⟩ := hf
   hrf.coeff_zero v
 #align has_fpower_series_at.coeff_zero HasFPowerSeriesAt.coeff_zero
+-/
 
+#print ContinuousLinearMap.comp_hasFPowerSeriesOnBall /-
 /-- If a function `f` has a power series `p` on a ball and `g` is linear, then `g ∘ f` has the
 power series `g ∘ p` on the same ball. -/
 theorem ContinuousLinearMap.comp_hasFPowerSeriesOnBall (g : F β†’L[π•œ] G)
@@ -641,7 +776,9 @@ theorem ContinuousLinearMap.comp_hasFPowerSeriesOnBall (g : F β†’L[π•œ] G)
         ContinuousLinearMap.compContinuousMultilinearMap_coe, Function.comp_apply] using
         g.has_sum (h.has_sum hy) }
 #align continuous_linear_map.comp_has_fpower_series_on_ball ContinuousLinearMap.comp_hasFPowerSeriesOnBall
+-/
 
+#print ContinuousLinearMap.comp_analyticOn /-
 /-- If a function `f` is analytic on a set `s` and `g` is linear, then `g ∘ f` is analytic
 on `s`. -/
 theorem ContinuousLinearMap.comp_analyticOn {s : Set E} (g : F β†’L[π•œ] G) (h : AnalyticOn π•œ f s) :
@@ -650,7 +787,9 @@ theorem ContinuousLinearMap.comp_analyticOn {s : Set E} (g : F β†’L[π•œ] G) (h
   rcases h x hx with ⟨p, r, hp⟩
   exact ⟨g.comp_formal_multilinear_series p, r, g.comp_has_fpower_series_on_ball hp⟩
 #align continuous_linear_map.comp_analytic_on ContinuousLinearMap.comp_analyticOn
+-/
 
+#print HasFPowerSeriesOnBall.uniform_geometric_approx' /-
 /-- If a function admits a power series expansion, then it is exponentially close to the partial
 sums of this power series on strict subdisks of the disk of convergence.
 
@@ -690,7 +829,9 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
       (mul_le_mul_of_nonneg_right (hp n) (pow_nonneg (div_nonneg (norm_nonneg _) r'.coe_nonneg) _))
     _ ≀ C * (a * (β€–yβ€– / r')) ^ n := by rw [mul_pow, mul_assoc]
 #align has_fpower_series_on_ball.uniform_geometric_approx' HasFPowerSeriesOnBall.uniform_geometric_approx'
+-/
 
+#print HasFPowerSeriesOnBall.uniform_geometric_approx /-
 /-- If a function admits a power series expansion, then it is exponentially close to the partial
 sums of this power series on strict subdisks of the disk of convergence. -/
 theorem HasFPowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
@@ -710,7 +851,9 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
   exacts [mul_nonneg ha.1.le (div_nonneg (norm_nonneg y) r'.coe_nonneg),
     mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)]
 #align has_fpower_series_on_ball.uniform_geometric_approx HasFPowerSeriesOnBall.uniform_geometric_approx
+-/
 
+#print HasFPowerSeriesAt.isBigO_sub_partialSum_pow /-
 /-- Taylor formula for an analytic function, `is_O` version. -/
 theorem HasFPowerSeriesAt.isBigO_sub_partialSum_pow (hf : HasFPowerSeriesAt f p x) (n : β„•) :
     (fun y : E => f (x + y) - p.partialSum n y) =O[𝓝 0] fun y => β€–yβ€– ^ n :=
@@ -728,8 +871,10 @@ theorem HasFPowerSeriesAt.isBigO_sub_partialSum_pow (hf : HasFPowerSeriesAt f p
   filter_upwards [Metric.ball_mem_nhds (0 : E) r'0] with y hy
   simpa [mul_pow, mul_div_assoc, mul_assoc, div_mul_eq_mul_div] using hp y hy n
 #align has_fpower_series_at.is_O_sub_partial_sum_pow HasFPowerSeriesAt.isBigO_sub_partialSum_pow
+-/
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal /-
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
 `C * (max β€–y - xβ€– β€–z - xβ€–) * β€–y - zβ€–`. This lemma formulates this property using `is_O` and
@@ -793,8 +938,10 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
   simp_rw [L, mul_right_comm _ (_ * _)]
   exact (is_O_refl _ _).const_mul_left _
 #align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
+-/
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
+#print HasFPowerSeriesOnBall.image_sub_sub_deriv_le /-
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
 `C * (max β€–y - xβ€– β€–z - xβ€–) * β€–y - zβ€–`. -/
@@ -808,7 +955,9 @@ theorem HasFPowerSeriesOnBall.image_sub_sub_deriv_le (hf : HasFPowerSeriesOnBall
     Prod.edist_eq, max_lt_iff, and_imp, @forall_swap (_ < _) E] using
     hf.is_O_image_sub_image_sub_deriv_principal hr
 #align has_fpower_series_on_ball.image_sub_sub_deriv_le HasFPowerSeriesOnBall.image_sub_sub_deriv_le
+-/
 
+#print HasFPowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub /-
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` at `x`, then
 `f y - f z - p 1 (Ξ» _, y - z) = O(β€–(y, z) - (x, x)β€– * β€–y - zβ€–)` as `(y, z) β†’ (x, x)`.
 In particular, `f` is strictly differentiable at `x`. -/
@@ -821,7 +970,9 @@ theorem HasFPowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub (hf : HasFPowerSeri
   refine' (hf.is_O_image_sub_image_sub_deriv_principal h).mono _
   exact le_principal_iff.2 (EMetric.ball_mem_nhds _ r'0)
 #align has_fpower_series_at.is_O_image_sub_norm_mul_norm_sub HasFPowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub
+-/
 
+#print HasFPowerSeriesOnBall.tendstoUniformlyOn /-
 /-- If a function admits a power series expansion at `x`, then it is the uniform limit of the
 partial sums of this power series on strict subdisks of the disk of convergence, i.e., `f (x + y)`
 is the uniform limit of `p.partial_sum n y` there. -/
@@ -842,7 +993,9 @@ theorem HasFPowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFPowerS
   rw [dist_eq_norm]
   exact (hp y hy n).trans_lt hn
 #align has_fpower_series_on_ball.tendsto_uniformly_on HasFPowerSeriesOnBall.tendstoUniformlyOn
+-/
 
+#print HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn /-
 /-- If a function admits a power series expansion at `x`, then it is the locally uniform limit of
 the partial sums of this power series on the disk of convergence, i.e., `f (x + y)`
 is the locally uniform limit of `p.partial_sum n y` there. -/
@@ -856,7 +1009,9 @@ theorem HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn (hf : HasFPowerSeriesOnB
   refine' ⟨EMetric.ball (0 : E) r', mem_nhdsWithin_of_mem_nhds this, _⟩
   simpa [Metric.emetric_ball_nnreal] using hf.tendsto_uniformly_on hr' u hu
 #align has_fpower_series_on_ball.tendsto_locally_uniformly_on HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn
+-/
 
+#print HasFPowerSeriesOnBall.tendstoUniformlyOn' /-
 /-- If a function admits a power series expansion at `x`, then it is the uniform limit of the
 partial sums of this power series on strict subdisks of the disk of convergence, i.e., `f y`
 is the uniform limit of `p.partial_sum n (y - x)` there. -/
@@ -868,7 +1023,9 @@ theorem HasFPowerSeriesOnBall.tendstoUniformlyOn' {r' : ℝβ‰₯0} (hf : HasFPower
   · simp [(· ∘ ·)]
   Β· ext z; simp [dist_eq_norm]
 #align has_fpower_series_on_ball.tendsto_uniformly_on' HasFPowerSeriesOnBall.tendstoUniformlyOn'
+-/
 
+#print HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn' /-
 /-- If a function admits a power series expansion at `x`, then it is the locally uniform limit of
 the  partial sums of this power series on the disk of convergence, i.e., `f y`
 is the locally uniform limit of `p.partial_sum n (y - x)` there. -/
@@ -882,7 +1039,9 @@ theorem HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn' (hf : HasFPowerSeriesOn
   Β· ext z; simp
   Β· intro z; simp [edist_eq_coe_nnnorm, edist_eq_coe_nnnorm_sub]
 #align has_fpower_series_on_ball.tendsto_locally_uniformly_on' HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn'
+-/
 
+#print HasFPowerSeriesOnBall.continuousOn /-
 /-- If a function admits a power series expansion on a disk, then it is continuous there. -/
 protected theorem HasFPowerSeriesOnBall.continuousOn (hf : HasFPowerSeriesOnBall f p x r) :
     ContinuousOn f (EMetric.ball x r) :=
@@ -890,22 +1049,30 @@ protected theorem HasFPowerSeriesOnBall.continuousOn (hf : HasFPowerSeriesOnBall
     eventually_of_forall fun n =>
       ((p.partialSum_continuous n).comp (continuous_id.sub continuous_const)).ContinuousOn
 #align has_fpower_series_on_ball.continuous_on HasFPowerSeriesOnBall.continuousOn
+-/
 
+#print HasFPowerSeriesAt.continuousAt /-
 protected theorem HasFPowerSeriesAt.continuousAt (hf : HasFPowerSeriesAt f p x) :
     ContinuousAt f x :=
   let ⟨r, hr⟩ := hf
   hr.ContinuousOn.ContinuousAt (EMetric.ball_mem_nhds x hr.r_pos)
 #align has_fpower_series_at.continuous_at HasFPowerSeriesAt.continuousAt
+-/
 
+#print AnalyticAt.continuousAt /-
 protected theorem AnalyticAt.continuousAt (hf : AnalyticAt π•œ f x) : ContinuousAt f x :=
   let ⟨p, hp⟩ := hf
   hp.ContinuousAt
 #align analytic_at.continuous_at AnalyticAt.continuousAt
+-/
 
+#print AnalyticOn.continuousOn /-
 protected theorem AnalyticOn.continuousOn {s : Set E} (hf : AnalyticOn π•œ f s) : ContinuousOn f s :=
   fun x hx => (hf x hx).ContinuousAt.ContinuousWithinAt
 #align analytic_on.continuous_on AnalyticOn.continuousOn
+-/
 
+#print FormalMultilinearSeries.hasFPowerSeriesOnBall /-
 /-- In a complete space, the sum of a converging power series `p` admits `p` as a power series.
 This is not totally obvious as we need to check the convergence of the series. -/
 protected theorem FormalMultilinearSeries.hasFPowerSeriesOnBall [CompleteSpace F]
@@ -915,12 +1082,16 @@ protected theorem FormalMultilinearSeries.hasFPowerSeriesOnBall [CompleteSpace F
     r_pos := h
     HasSum := fun y hy => by rw [zero_add]; exact p.has_sum hy }
 #align formal_multilinear_series.has_fpower_series_on_ball FormalMultilinearSeries.hasFPowerSeriesOnBall
+-/
 
+#print HasFPowerSeriesOnBall.sum /-
 theorem HasFPowerSeriesOnBall.sum (h : HasFPowerSeriesOnBall f p x r) {y : E}
     (hy : y ∈ EMetric.ball (0 : E) r) : f (x + y) = p.Sum y :=
   (h.HasSum hy).tsum_eq.symm
 #align has_fpower_series_on_ball.sum HasFPowerSeriesOnBall.sum
+-/
 
+#print FormalMultilinearSeries.continuousOn /-
 /-- The sum of a converging power series is continuous in its disk of convergence. -/
 protected theorem FormalMultilinearSeries.continuousOn [CompleteSpace F] :
     ContinuousOn p.Sum (EMetric.ball 0 p.radius) :=
@@ -929,6 +1100,7 @@ protected theorem FormalMultilinearSeries.continuousOn [CompleteSpace F] :
   Β· simp [← h, continuousOn_empty]
   Β· exact (p.has_fpower_series_on_ball h).ContinuousOn
 #align formal_multilinear_series.continuous_on FormalMultilinearSeries.continuousOn
+-/
 
 end
 
@@ -948,6 +1120,7 @@ section Uniqueness
 
 open ContinuousMultilinearMap
 
+#print Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero /-
 theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p : E[Γ—n]β†’L[π•œ] F}
     (h : (fun y => p fun i => y) =O[𝓝 0] fun y => β€–yβ€– ^ (n + 1)) (y : E) : (p fun i => y) = 0 :=
   by
@@ -995,7 +1168,9 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
         simp [norm_mul, mul_pow]
       _ ≀ 0 + Ξ΅ := by rw [inv_mul_cancel (norm_pos_iff.mp k_pos)]; simpa using h₃.le
 #align asymptotics.is_O.continuous_multilinear_map_apply_eq_zero Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero
+-/
 
+#print HasFPowerSeriesAt.apply_eq_zero /-
 /-- If a formal multilinear series `p` represents the zero function at `x : E`, then the
 terms `p n (Ξ» i, y)` appearing the in sum are zero for any `n : β„•`, `y : E`. -/
 theorem HasFPowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {x : E}
@@ -1013,31 +1188,41 @@ theorem HasFPowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {
   simp only [psum_eq, zero_sub, Pi.zero_apply, Asymptotics.isBigO_neg_left] at h 
   exact h.continuous_multilinear_map_apply_eq_zero
 #align has_fpower_series_at.apply_eq_zero HasFPowerSeriesAt.apply_eq_zero
+-/
 
+#print HasFPowerSeriesAt.eq_zero /-
 /-- A one-dimensional formal multilinear series representing the zero function is zero. -/
 theorem HasFPowerSeriesAt.eq_zero {p : FormalMultilinearSeries π•œ π•œ E} {x : π•œ}
     (h : HasFPowerSeriesAt 0 p x) : p = 0 := by ext (n x);
   rw [← mk_pi_field_apply_one_eq_self (p n)]; simp [h.apply_eq_zero n 1]
 #align has_fpower_series_at.eq_zero HasFPowerSeriesAt.eq_zero
+-/
 
+#print HasFPowerSeriesAt.eq_formalMultilinearSeries /-
 /-- One-dimensional formal multilinear series representing the same function are equal. -/
 theorem HasFPowerSeriesAt.eq_formalMultilinearSeries {p₁ pβ‚‚ : FormalMultilinearSeries π•œ π•œ E}
     {f : π•œ β†’ E} {x : π•œ} (h₁ : HasFPowerSeriesAt f p₁ x) (hβ‚‚ : HasFPowerSeriesAt f pβ‚‚ x) : p₁ = pβ‚‚ :=
   sub_eq_zero.mp (HasFPowerSeriesAt.eq_zero (by simpa only [sub_self] using h₁.sub hβ‚‚))
 #align has_fpower_series_at.eq_formal_multilinear_series HasFPowerSeriesAt.eq_formalMultilinearSeries
+-/
 
+#print HasFPowerSeriesAt.eq_formalMultilinearSeries_of_eventually /-
 theorem HasFPowerSeriesAt.eq_formalMultilinearSeries_of_eventually
     {p q : FormalMultilinearSeries π•œ π•œ E} {f g : π•œ β†’ E} {x : π•œ} (hp : HasFPowerSeriesAt f p x)
     (hq : HasFPowerSeriesAt g q x) (heq : βˆ€αΆ  z in 𝓝 x, f z = g z) : p = q :=
   (hp.congr HEq).eq_formalMultilinearSeries hq
 #align has_fpower_series_at.eq_formal_multilinear_series_of_eventually HasFPowerSeriesAt.eq_formalMultilinearSeries_of_eventually
+-/
 
+#print HasFPowerSeriesAt.eq_zero_of_eventually /-
 /-- A one-dimensional formal multilinear series representing a locally zero function is zero. -/
 theorem HasFPowerSeriesAt.eq_zero_of_eventually {p : FormalMultilinearSeries π•œ π•œ E} {f : π•œ β†’ E}
     {x : π•œ} (hp : HasFPowerSeriesAt f p x) (hf : f =αΆ [𝓝 x] 0) : p = 0 :=
   (hp.congr hf).eq_zero
 #align has_fpower_series_at.eq_zero_of_eventually HasFPowerSeriesAt.eq_zero_of_eventually
+-/
 
+#print HasFPowerSeriesOnBall.exchange_radius /-
 /-- If a function `f : π•œ β†’ E` has two power series representations at `x`, then the given radii in
 which convergence is guaranteed may be interchanged. This can be useful when the formal multilinear
 series in one representation has a particularly nice form, but the other has a larger radius. -/
@@ -1046,7 +1231,9 @@ theorem HasFPowerSeriesOnBall.exchange_radius {p₁ pβ‚‚ : FormalMultilinearSeri
     (hβ‚‚ : HasFPowerSeriesOnBall f pβ‚‚ x rβ‚‚) : HasFPowerSeriesOnBall f p₁ x rβ‚‚ :=
   hβ‚‚.HasFPowerSeriesAt.eq_formalMultilinearSeries h₁.HasFPowerSeriesAt β–Έ hβ‚‚
 #align has_fpower_series_on_ball.exchange_radius HasFPowerSeriesOnBall.exchange_radius
+-/
 
+#print HasFPowerSeriesOnBall.r_eq_top_of_exists /-
 /-- If a function `f : π•œ β†’ E` has power series representation `p` on a ball of some radius and for
 each positive radius it has some power series representation, then `p` converges to `f` on the whole
 `π•œ`. -/
@@ -1066,6 +1253,7 @@ theorem HasFPowerSeriesOnBall.r_eq_top_of_exists {f : π•œ β†’ E} {r : ℝβ‰₯0
       let ⟨p', hp'⟩ := h' r' hr'.ne_bot.bot_lt
       (h.exchange_radius hp').HasSum <| mem_emetric_ball_zero_iff.mpr (ENNReal.coe_lt_coe.2 hr') }
 #align has_fpower_series_on_ball.r_eq_top_of_exists HasFPowerSeriesOnBall.r_eq_top_of_exists
+-/
 
 end Uniqueness
 
@@ -1114,25 +1302,32 @@ def changeOriginSeriesTerm (k l : β„•) (s : Finset (Fin (k + l))) (hs : s.card =
 #align formal_multilinear_series.change_origin_series_term FormalMultilinearSeries.changeOriginSeriesTerm
 -/
 
+#print FormalMultilinearSeries.changeOriginSeriesTerm_apply /-
 theorem changeOriginSeriesTerm_apply (k l : β„•) (s : Finset (Fin (k + l))) (hs : s.card = l)
     (x y : E) :
     (p.changeOriginSeriesTerm k l s hs (fun _ => x) fun _ => y) =
       p (k + l) (s.piecewise (fun _ => x) fun _ => y) :=
   ContinuousMultilinearMap.curryFinFinset_apply_const _ _ _ _ _
 #align formal_multilinear_series.change_origin_series_term_apply FormalMultilinearSeries.changeOriginSeriesTerm_apply
+-/
 
+#print FormalMultilinearSeries.norm_changeOriginSeriesTerm /-
 @[simp]
 theorem norm_changeOriginSeriesTerm (k l : β„•) (s : Finset (Fin (k + l))) (hs : s.card = l) :
     β€–p.changeOriginSeriesTerm k l s hsβ€– = β€–p (k + l)β€– := by
   simp only [change_origin_series_term, LinearIsometryEquiv.norm_map]
 #align formal_multilinear_series.norm_change_origin_series_term FormalMultilinearSeries.norm_changeOriginSeriesTerm
+-/
 
+#print FormalMultilinearSeries.nnnorm_changeOriginSeriesTerm /-
 @[simp]
 theorem nnnorm_changeOriginSeriesTerm (k l : β„•) (s : Finset (Fin (k + l))) (hs : s.card = l) :
     β€–p.changeOriginSeriesTerm k l s hsβ€–β‚Š = β€–p (k + l)β€–β‚Š := by
   simp only [change_origin_series_term, LinearIsometryEquiv.nnnorm_map]
 #align formal_multilinear_series.nnnorm_change_origin_series_term FormalMultilinearSeries.nnnorm_changeOriginSeriesTerm
+-/
 
+#print FormalMultilinearSeries.nnnorm_changeOriginSeriesTerm_apply_le /-
 theorem nnnorm_changeOriginSeriesTerm_apply_le (k l : β„•) (s : Finset (Fin (k + l)))
     (hs : s.card = l) (x y : E) :
     β€–p.changeOriginSeriesTerm k l s hs (fun _ => x) fun _ => yβ€–β‚Š ≀
@@ -1142,6 +1337,7 @@ theorem nnnorm_changeOriginSeriesTerm_apply_le (k l : β„•) (s : Finset (Fin (k +
   apply ContinuousMultilinearMap.le_of_op_nnnorm_le
   apply ContinuousMultilinearMap.le_op_nnnorm
 #align formal_multilinear_series.nnnorm_change_origin_series_term_apply_le FormalMultilinearSeries.nnnorm_changeOriginSeriesTerm_apply_le
+-/
 
 #print FormalMultilinearSeries.changeOriginSeries /-
 /-- The power series for `f.change_origin k`.
@@ -1155,11 +1351,14 @@ def changeOriginSeries (k : β„•) : FormalMultilinearSeries π•œ E (E[Γ—k]β†’L[
 #align formal_multilinear_series.change_origin_series FormalMultilinearSeries.changeOriginSeries
 -/
 
+#print FormalMultilinearSeries.nnnorm_changeOriginSeries_le_tsum /-
 theorem nnnorm_changeOriginSeries_le_tsum (k l : β„•) :
     β€–p.changeOriginSeries k lβ€–β‚Š ≀ βˆ‘' x : { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + l)β€–β‚Š :=
   (nnnorm_sum_le _ _).trans_eq <| by simp only [tsum_fintype, nnnorm_change_origin_series_term]
 #align formal_multilinear_series.nnnorm_change_origin_series_le_tsum FormalMultilinearSeries.nnnorm_changeOriginSeries_le_tsum
+-/
 
+#print FormalMultilinearSeries.nnnorm_changeOriginSeries_apply_le_tsum /-
 theorem nnnorm_changeOriginSeries_apply_le_tsum (k l : β„•) (x : E) :
     β€–p.changeOriginSeries k l fun _ => xβ€–β‚Š ≀
       βˆ‘' s : { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + l)β€–β‚Š * β€–xβ€–β‚Š ^ l :=
@@ -1168,6 +1367,7 @@ theorem nnnorm_changeOriginSeries_apply_le_tsum (k l : β„•) (x : E) :
   exact
     (p.change_origin_series k l).le_of_op_nnnorm_le _ (p.nnnorm_change_origin_series_le_tsum _ _)
 #align formal_multilinear_series.nnnorm_change_origin_series_apply_le_tsum FormalMultilinearSeries.nnnorm_changeOriginSeries_apply_le_tsum
+-/
 
 #print FormalMultilinearSeries.changeOrigin /-
 /-- Changing the origin of a formal multilinear series `p`, so that
@@ -1219,6 +1419,7 @@ def changeOriginIndexEquiv :
 #align formal_multilinear_series.change_origin_index_equiv FormalMultilinearSeries.changeOriginIndexEquiv
 -/
 
+#print FormalMultilinearSeries.changeOriginSeries_summable_aux₁ /-
 theorem changeOriginSeries_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : ℝβ‰₯0∞) < p.radius) :
     Summable fun s : Ξ£ k l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
       β€–p (s.1 + s.2.1)β€–β‚Š * r ^ s.2.1 * r' ^ s.1 :=
@@ -1241,7 +1442,9 @@ theorem changeOriginSeries_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : ℝ
   simp only [(this _).tsum_eq]
   exact p.summable_nnnorm_mul_pow hr
 #align formal_multilinear_series.change_origin_series_summable_aux₁ FormalMultilinearSeries.changeOriginSeries_summable_aux₁
+-/
 
+#print FormalMultilinearSeries.changeOriginSeries_summable_auxβ‚‚ /-
 theorem changeOriginSeries_summable_auxβ‚‚ (hr : (r : ℝβ‰₯0∞) < p.radius) (k : β„•) :
     Summable fun s : Ξ£ l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
       β€–p (k + s.1)β€–β‚Š * r ^ s.1 :=
@@ -1250,7 +1453,9 @@ theorem changeOriginSeries_summable_auxβ‚‚ (hr : (r : ℝβ‰₯0∞) < p.radius) (k
   simpa only [mul_inv_cancel_rightβ‚€ (pow_pos h0 _).ne'] using
     ((NNReal.summable_sigma.1 (p.change_origin_series_summable_aux₁ hr')).1 k).mul_right (r' ^ k)⁻¹
 #align formal_multilinear_series.change_origin_series_summable_auxβ‚‚ FormalMultilinearSeries.changeOriginSeries_summable_auxβ‚‚
+-/
 
+#print FormalMultilinearSeries.changeOriginSeries_summable_aux₃ /-
 theorem changeOriginSeries_summable_aux₃ {r : ℝβ‰₯0} (hr : ↑r < p.radius) (k : β„•) :
     Summable fun l : β„• => β€–p.changeOriginSeries k lβ€–β‚Š * r ^ l :=
   by
@@ -1260,12 +1465,16 @@ theorem changeOriginSeries_summable_aux₃ {r : ℝβ‰₯0} (hr : ↑r < p.radius)
   simp only [NNReal.tsum_mul_right]
   exact mul_le_mul' (p.nnnorm_change_origin_series_le_tsum _ _) le_rfl
 #align formal_multilinear_series.change_origin_series_summable_aux₃ FormalMultilinearSeries.changeOriginSeries_summable_aux₃
+-/
 
+#print FormalMultilinearSeries.le_changeOriginSeries_radius /-
 theorem le_changeOriginSeries_radius (k : β„•) : p.radius ≀ (p.changeOriginSeries k).radius :=
   ENNReal.le_of_forall_nnreal_lt fun r hr =>
     le_radius_of_summable_nnnorm _ (p.changeOriginSeries_summable_aux₃ hr k)
 #align formal_multilinear_series.le_change_origin_series_radius FormalMultilinearSeries.le_changeOriginSeries_radius
+-/
 
+#print FormalMultilinearSeries.nnnorm_changeOrigin_le /-
 theorem nnnorm_changeOrigin_le (k : β„•) (h : (β€–xβ€–β‚Š : ℝβ‰₯0∞) < p.radius) :
     β€–p.changeOrigin x kβ€–β‚Š ≀
       βˆ‘' s : Ξ£ l : β„•, { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + s.1)β€–β‚Š * β€–xβ€–β‚Š ^ s.1 :=
@@ -1275,7 +1484,9 @@ theorem nnnorm_changeOrigin_le (k : β„•) (h : (β€–xβ€–β‚Š : ℝβ‰₯0∞) < p.radi
   refine' HasSum.sigma this.has_sum fun l => _
   exact ((NNReal.summable_sigma.1 this).1 l).HasSum
 #align formal_multilinear_series.nnnorm_change_origin_le FormalMultilinearSeries.nnnorm_changeOrigin_le
+-/
 
+#print FormalMultilinearSeries.changeOrigin_radius /-
 /-- The radius of convergence of `p.change_origin x` is at least `p.radius - β€–xβ€–`. In other words,
 `p.change_origin x` is well defined on the largest ball contained in the original ball of
 convergence.-/
@@ -1295,6 +1506,7 @@ theorem changeOrigin_radius : p.radius - β€–xβ€–β‚Š ≀ (p.changeOrigin x).radiu
   simpa only [← NNReal.tsum_mul_right] using
     (NNReal.summable_sigma.1 (p.change_origin_series_summable_aux₁ hr)).2
 #align formal_multilinear_series.change_origin_radius FormalMultilinearSeries.changeOrigin_radius
+-/
 
 end
 
@@ -1302,12 +1514,15 @@ end
 -- in norm also converge in `F`.
 variable [CompleteSpace F] (p : FormalMultilinearSeries π•œ E F) {x y : E} {r R : ℝβ‰₯0}
 
+#print FormalMultilinearSeries.hasFPowerSeriesOnBall_changeOrigin /-
 theorem hasFPowerSeriesOnBall_changeOrigin (k : β„•) (hr : 0 < p.radius) :
     HasFPowerSeriesOnBall (fun x => p.changeOrigin x k) (p.changeOriginSeries k) 0 p.radius :=
   have := p.le_changeOriginSeries_radius k
   ((p.changeOriginSeries k).HasFPowerSeriesOnBall (hr.trans_le this)).mono hr this
 #align formal_multilinear_series.has_fpower_series_on_ball_change_origin FormalMultilinearSeries.hasFPowerSeriesOnBall_changeOrigin
+-/
 
+#print FormalMultilinearSeries.changeOrigin_eval /-
 /-- Summing the series `p.change_origin x` at a point `y` gives back `p (x + y)`-/
 theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius) :
     (p.changeOrigin x).Sum y = p.Sum (x + y) :=
@@ -1363,6 +1578,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     by rintro m rfl; simp
   apply this
 #align formal_multilinear_series.change_origin_eval FormalMultilinearSeries.changeOrigin_eval
+-/
 
 end FormalMultilinearSeries
 
@@ -1370,6 +1586,7 @@ section
 
 variable [CompleteSpace F] {f : E β†’ F} {p : FormalMultilinearSeries π•œ E F} {x y : E} {r : ℝβ‰₯0∞}
 
+#print HasFPowerSeriesOnBall.changeOrigin /-
 /-- If a function admits a power series expansion `p` on a ball `B (x, r)`, then it also admits a
 power series on any subball of this ball (even with a different center), given by `p.change_origin`.
 -/
@@ -1388,7 +1605,9 @@ theorem HasFPowerSeriesOnBall.changeOrigin (hf : HasFPowerSeriesOnBall f p x r)
       Β· refine' EMetric.ball_subset_ball (le_trans _ p.change_origin_radius) hz
         exact tsub_le_tsub hf.r_le le_rfl }
 #align has_fpower_series_on_ball.change_origin HasFPowerSeriesOnBall.changeOrigin
+-/
 
+#print HasFPowerSeriesOnBall.analyticAt_of_mem /-
 /-- If a function admits a power series expansion `p` on an open ball `B (x, r)`, then
 it is analytic at every point of this ball. -/
 theorem HasFPowerSeriesOnBall.analyticAt_of_mem (hf : HasFPowerSeriesOnBall f p x r)
@@ -1399,13 +1618,17 @@ theorem HasFPowerSeriesOnBall.analyticAt_of_mem (hf : HasFPowerSeriesOnBall f p
   rw [add_sub_cancel'_right] at this 
   exact this.analytic_at
 #align has_fpower_series_on_ball.analytic_at_of_mem HasFPowerSeriesOnBall.analyticAt_of_mem
+-/
 
+#print HasFPowerSeriesOnBall.analyticOn /-
 theorem HasFPowerSeriesOnBall.analyticOn (hf : HasFPowerSeriesOnBall f p x r) :
     AnalyticOn π•œ f (EMetric.ball x r) := fun y hy => hf.analyticAt_of_mem hy
 #align has_fpower_series_on_ball.analytic_on HasFPowerSeriesOnBall.analyticOn
+-/
 
 variable (π•œ f)
 
+#print isOpen_analyticAt /-
 /-- For any function `f` from a normed vector space to a Banach space, the set of points `x` such
 that `f` is analytic at `x` is open. -/
 theorem isOpen_analyticAt : IsOpen {x | AnalyticAt π•œ f x} :=
@@ -1414,6 +1637,7 @@ theorem isOpen_analyticAt : IsOpen {x | AnalyticAt π•œ f x} :=
   rintro x ⟨p, r, hr⟩
   exact mem_of_superset (EMetric.ball_mem_nhds _ hr.r_pos) fun y hy => hr.analytic_at_of_mem hy
 #align is_open_analytic_at isOpen_analyticAt
+-/
 
 end
 
@@ -1423,6 +1647,7 @@ open FormalMultilinearSeries
 
 variable {p : FormalMultilinearSeries π•œ π•œ E} {f : π•œ β†’ E} {zβ‚€ : π•œ}
 
+#print hasFPowerSeriesAt_iff /-
 /-- A function `f : π•œ β†’ E` has `p` as power series expansion at a point `zβ‚€` iff it is the sum of
 `p` in a neighborhood of `zβ‚€`. This makes some proofs easier by hiding the fact that
 `has_fpower_series_at` depends on `p.radius`. -/
@@ -1451,8 +1676,10 @@ theorem hasFPowerSeriesAt_iff :
     refine' fun y hyp hyr => h _
     simpa [nndist_eq_nnnorm, Real.lt_toNNReal_iff_coe_lt] using hyr
 #align has_fpower_series_at_iff hasFPowerSeriesAt_iff
+-/
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr Β«exprβˆ€αΆ  in , Β»((z), (nhds() 0 : filter π•œ), has_sum (Ξ» n, _) (f Β«expr + Β»(zβ‚€, z)))]] -/
+#print hasFPowerSeriesAt_iff' /-
 theorem hasFPowerSeriesAt_iff' :
     HasFPowerSeriesAt f p zβ‚€ ↔ βˆ€αΆ  z in 𝓝 zβ‚€, HasSum (fun n => (z - zβ‚€) ^ n β€’ p.coeff n) (f z) :=
   by
@@ -1461,6 +1688,7 @@ theorem hasFPowerSeriesAt_iff' :
     "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr Β«exprβˆ€αΆ  in , Β»((z), (nhds() 0 : filter π•œ), has_sum (Ξ» n, _) (f Β«expr + Β»(zβ‚€, z)))]]"
   rw [add_sub_cancel']
 #align has_fpower_series_at_iff' hasFPowerSeriesAt_iff'
+-/
 
 end
 
Diff
@@ -207,7 +207,6 @@ theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
     |β€–p nβ€– * r ^ n| = β€–p nβ€– * t ^ n * (r / t) ^ n := by
       field_simp [mul_right_comm, abs_mul, this.ne']
     _ ≀ C * (r / t) ^ n := mul_le_mul_of_nonneg_right (hC n) (pow_nonneg (div_nonneg r.2 t.2) _)
-    
 #align formal_multilinear_series.is_o_of_lt_radius FormalMultilinearSeries.isLittleO_of_lt_radius
 
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ = o(1)`. -/
@@ -690,7 +689,6 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
     _ ≀ C * a ^ n * (β€–yβ€– / r') ^ n :=
       (mul_le_mul_of_nonneg_right (hp n) (pow_nonneg (div_nonneg (norm_nonneg _) r'.coe_nonneg) _))
     _ ≀ C * (a * (β€–yβ€– / r')) ^ n := by rw [mul_pow, mul_assoc]
-    
 #align has_fpower_series_on_ball.uniform_geometric_approx' HasFPowerSeriesOnBall.uniform_geometric_approx'
 
 /-- If a function admits a power series expansion, then it is exponentially close to the partial
@@ -779,7 +777,6 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
             ha.1.le]
         _ = B n := by field_simp [B, pow_succ, hr'0.ne'];
           simp only [mul_assoc, mul_comm, mul_left_comm]
-        
     have hBL : HasSum B (L y) := by
       apply HasSum.mul_left
       simp only [add_mul]
@@ -984,7 +981,6 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
           simpa only [norm_pow, norm_norm] using ht (k β€’ y) (δΡ (mem_ball_zero_iff.mpr h₁))
         _ = β€–kβ€– ^ n.succ * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) := by simp only [norm_smul, mul_pow];
           rw [pow_succ]; ring
-        
     have h₃ : β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1)) < Ξ΅ :=
       inv_mul_cancel_rightβ‚€ hβ‚€.ne.symm Ξ΅ β–Έ
         mul_lt_mul_of_pos_right (lt_of_lt_of_le k_norm (min_le_right _ _)) hβ‚€
@@ -998,7 +994,6 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
       _ = β€–(k⁻¹ * k) ^ n.succβ€– * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) := by rw [← mul_assoc];
         simp [norm_mul, mul_pow]
       _ ≀ 0 + Ξ΅ := by rw [inv_mul_cancel (norm_pos_iff.mp k_pos)]; simpa using h₃.le
-      
 #align asymptotics.is_O.continuous_multilinear_map_apply_eq_zero Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero
 
 /-- If a formal multilinear series `p` represents the zero function at `x : E`, then the
Diff
@@ -610,7 +610,7 @@ theorem AnalyticOn.sub {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn 
     AnalyticOn π•œ (f - g) s := fun z hz => (hf z hz).sub (hg z hz)
 #align analytic_on.sub AnalyticOn.sub
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
 theorem HasFPowerSeriesOnBall.coeff_zero (hf : HasFPowerSeriesOnBall f pf x r) (v : Fin 0 β†’ E) :
     pf 0 v = f x := by
   have v_eq : v = fun i => 0 := Subsingleton.elim _ _
@@ -797,7 +797,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
   exact (is_O_refl _ _).const_mul_left _
 #align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
 `C * (max β€–y - xβ€– β€–z - xβ€–) * β€–y - zβ€–`. -/
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: SΓ©bastien GouΓ«zel, Yury Kudryashov
 
 ! This file was ported from Lean 3 source module analysis.analytic.basic
-! leanprover-community/mathlib commit 32253a1a1071173b33dc7d6a218cf722c6feb514
+! leanprover-community/mathlib commit 2ebc1d6c2fed9f54c95bbc3998eaa5570527129a
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -16,6 +16,9 @@ import Mathbin.Topology.Algebra.InfiniteSum.Module
 /-!
 # Analytic functions
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 A function is analytic in one dimension around `0` if it can be written as a converging power series
 `Ξ£ pβ‚™ zⁿ`. This definition can be extended to any dimension (even in infinite dimension) by
 requiring that `pβ‚™` is a continuous `n`-multilinear map. In general, `pβ‚™` is not unique (in two
@@ -235,7 +238,7 @@ theorem lt_radius_of_isBigO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ
   lift a to ℝβ‰₯0 using ha.1.le
   have : (r : ℝ) < r / a := by
     simpa only [div_one] using (div_lt_div_left hβ‚€ zero_lt_one ha.1).2 ha.2
-  norm_cast  at this 
+  norm_cast at this 
   rw [← ENNReal.coe_lt_coe] at this 
   refine' this.trans_le (p.le_radius_of_bound C fun n => _)
   rw [NNReal.coe_div, div_pow, ← mul_div_assoc, div_le_iff (pow_pos ha.1 n)]
@@ -494,7 +497,7 @@ protected theorem HasFPowerSeriesAt.eventually (hf : HasFPowerSeriesAt f p x) :
 
 theorem HasFPowerSeriesOnBall.eventually_hasSum (hf : HasFPowerSeriesOnBall f p x r) :
     βˆ€αΆ  y in 𝓝 0, HasSum (fun n : β„• => p n fun i : Fin n => y) (f (x + y)) := by
-  filter_upwards [EMetric.ball_mem_nhds (0 : E) hf.r_pos]using fun _ => hf.has_sum
+  filter_upwards [EMetric.ball_mem_nhds (0 : E) hf.r_pos] using fun _ => hf.has_sum
 #align has_fpower_series_on_ball.eventually_has_sum HasFPowerSeriesOnBall.eventually_hasSum
 
 theorem HasFPowerSeriesAt.eventually_hasSum (hf : HasFPowerSeriesAt f p x) :
@@ -505,7 +508,7 @@ theorem HasFPowerSeriesAt.eventually_hasSum (hf : HasFPowerSeriesAt f p x) :
 
 theorem HasFPowerSeriesOnBall.eventually_hasSum_sub (hf : HasFPowerSeriesOnBall f p x r) :
     βˆ€αΆ  y in 𝓝 x, HasSum (fun n : β„• => p n fun i : Fin n => y - x) (f y) := by
-  filter_upwards [EMetric.ball_mem_nhds x hf.r_pos]with y using hf.has_sum_sub
+  filter_upwards [EMetric.ball_mem_nhds x hf.r_pos] with y using hf.has_sum_sub
 #align has_fpower_series_on_ball.eventually_has_sum_sub HasFPowerSeriesOnBall.eventually_hasSum_sub
 
 theorem HasFPowerSeriesAt.eventually_hasSum_sub (hf : HasFPowerSeriesAt f p x) :
@@ -516,7 +519,7 @@ theorem HasFPowerSeriesAt.eventually_hasSum_sub (hf : HasFPowerSeriesAt f p x) :
 
 theorem HasFPowerSeriesOnBall.eventually_eq_zero
     (hf : HasFPowerSeriesOnBall f (0 : FormalMultilinearSeries π•œ E F) x r) : βˆ€αΆ  z in 𝓝 x, f z = 0 :=
-  by filter_upwards [hf.eventually_has_sum_sub]with z hz using hz.unique hasSum_zero
+  by filter_upwards [hf.eventually_has_sum_sub] with z hz using hz.unique hasSum_zero
 #align has_fpower_series_on_ball.eventually_eq_zero HasFPowerSeriesOnBall.eventually_eq_zero
 
 theorem HasFPowerSeriesAt.eventually_eq_zero
@@ -724,7 +727,7 @@ theorem HasFPowerSeriesAt.isBigO_sub_partialSum_pow (hf : HasFPowerSeriesAt f p
   exact hf.uniform_geometric_approx' h
   refine' is_O_iff.2 ⟨C * (a / r') ^ n, _⟩
   replace r'0 : 0 < (r' : ℝ); Β· exact_mod_cast r'0
-  filter_upwards [Metric.ball_mem_nhds (0 : E) r'0]with y hy
+  filter_upwards [Metric.ball_mem_nhds (0 : E) r'0] with y hy
   simpa [mul_pow, mul_div_assoc, mul_assoc, div_mul_eq_mul_div] using hp y hy n
 #align has_fpower_series_at.is_O_sub_partial_sum_pow HasFPowerSeriesAt.isBigO_sub_partialSum_pow
 
@@ -755,7 +758,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
     set A : β„• β†’ F := fun n => (p n fun _ => y.1 - x) - p n fun _ => y.2 - x
     have hA : HasSum (fun n => A (n + 2)) (f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) :=
       by
-      convert(hasSum_nat_add_iff' 2).2 ((hf.has_sum_sub hy.1).sub (hf.has_sum_sub hy.2)) using 1
+      convert (hasSum_nat_add_iff' 2).2 ((hf.has_sum_sub hy.1).sub (hf.has_sum_sub hy.2)) using 1
       rw [Finset.sum_range_succ, Finset.sum_range_one, hf.coeff_zero, hf.coeff_zero, sub_self,
         zero_add, ← Subsingleton.pi_single_eq (0 : Fin 1) (y.1 - x), Pi.single, ←
         Subsingleton.pi_single_eq (0 : Fin 1) (y.2 - x), Pi.single, ← (p 1).map_sub, ← Pi.single,
@@ -781,7 +784,8 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
       apply HasSum.mul_left
       simp only [add_mul]
       have : β€–aβ€– < 1 := by simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
-      convert(hasSum_coe_mul_geometric_of_norm_lt_1 this).add
+      convert
+        (hasSum_coe_mul_geometric_of_norm_lt_1 this).add
           ((hasSum_geometric_of_norm_lt_1 this).mul_left 2)
     exact hA.norm_le_of_bounded hBL hAB
   suffices L =O[π“Ÿ (EMetric.ball (x, x) r')] fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€–
@@ -863,7 +867,7 @@ theorem HasFPowerSeriesOnBall.tendstoUniformlyOn' {r' : ℝβ‰₯0} (hf : HasFPower
     (h : (r' : ℝβ‰₯0∞) < r) :
     TendstoUniformlyOn (fun n y => p.partialSum n (y - x)) f atTop (Metric.ball (x : E) r') :=
   by
-  convert(hf.tendsto_uniformly_on h).comp fun y => y - x
+  convert (hf.tendsto_uniformly_on h).comp fun y => y - x
   · simp [(· ∘ ·)]
   Β· ext z; simp [dist_eq_norm]
 #align has_fpower_series_on_ball.tendsto_uniformly_on' HasFPowerSeriesOnBall.tendstoUniformlyOn'
@@ -1381,7 +1385,7 @@ theorem HasFPowerSeriesOnBall.changeOrigin (hf : HasFPowerSeriesOnBall f p x r)
       exact tsub_le_tsub hf.r_le le_rfl
     r_pos := by simp [h]
     HasSum := fun z hz => by
-      convert(p.change_origin y).HasSum _
+      convert (p.change_origin y).HasSum _
       Β· rw [mem_emetric_ball_zero_iff, lt_tsub_iff_right, add_comm] at hz 
         rw [p.change_origin_eval (hz.trans_le hf.r_le), add_assoc, hf.sum]
         refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ hz)
@@ -1409,7 +1413,7 @@ variable (π•œ f)
 
 /-- For any function `f` from a normed vector space to a Banach space, the set of points `x` such
 that `f` is analytic at `x` is open. -/
-theorem isOpen_analyticAt : IsOpen { x | AnalyticAt π•œ f x } :=
+theorem isOpen_analyticAt : IsOpen {x | AnalyticAt π•œ f x} :=
   by
   rw [isOpen_iff_mem_nhds]
   rintro x ⟨p, r, hr⟩
Diff
@@ -92,17 +92,21 @@ variable [TopologicalAddGroup E] [TopologicalAddGroup F]
 
 variable [ContinuousConstSMul π•œ E] [ContinuousConstSMul π•œ F]
 
+#print FormalMultilinearSeries.sum /-
 /-- Given a formal multilinear series `p` and a vector `x`, then `p.sum x` is the sum `Ξ£ pβ‚™ xⁿ`. A
 priori, it only behaves well when `β€–xβ€– < p.radius`. -/
 protected def sum (p : FormalMultilinearSeries π•œ E F) (x : E) : F :=
   βˆ‘' n : β„•, p n fun i => x
 #align formal_multilinear_series.sum FormalMultilinearSeries.sum
+-/
 
+#print FormalMultilinearSeries.partialSum /-
 /-- Given a formal multilinear series `p` and a vector `x`, then `p.partial_sum n x` is the sum
 `Ξ£ pβ‚– xᡏ` for `k ∈ {0,..., n-1}`. -/
 def partialSum (p : FormalMultilinearSeries π•œ E F) (n : β„•) (x : E) : F :=
   βˆ‘ k in Finset.range n, p k fun i : Fin k => x
 #align formal_multilinear_series.partial_sum FormalMultilinearSeries.partialSum
+-/
 
 /-- The partial sums of a formal multilinear series are continuous. -/
 theorem partialSum_continuous (p : FormalMultilinearSeries π•œ E F) (n : β„•) :
@@ -121,12 +125,14 @@ namespace FormalMultilinearSeries
 
 variable (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0}
 
+#print FormalMultilinearSeries.radius /-
 /-- The radius of a formal multilinear series is the largest `r` such that the sum `Ξ£ β€–pβ‚™β€– β€–y‖ⁿ`
 converges for all `β€–yβ€– < r`. This implies that `Ξ£ pβ‚™ yⁿ` converges for all `β€–yβ€– < r`, but these
 definitions are *not* equivalent in general. -/
 def radius (p : FormalMultilinearSeries π•œ E F) : ℝβ‰₯0∞ :=
   ⨆ (r : ℝβ‰₯0) (C : ℝ) (hr : βˆ€ n, β€–p nβ€– * r ^ n ≀ C), (r : ℝβ‰₯0∞)
 #align formal_multilinear_series.radius FormalMultilinearSeries.radius
+-/
 
 /-- If `β€–pβ‚™β€– rⁿ` is bounded in `n`, then the radius of `p` is at least `r`. -/
 theorem le_radius_of_bound (C : ℝ) {r : ℝβ‰₯0} (h : βˆ€ n : β„•, β€–p nβ€– * r ^ n ≀ C) :
@@ -135,10 +141,10 @@ theorem le_radius_of_bound (C : ℝ) {r : ℝβ‰₯0} (h : βˆ€ n : β„•, β€–p nβ€– *
 #align formal_multilinear_series.le_radius_of_bound FormalMultilinearSeries.le_radius_of_bound
 
 /-- If `β€–pβ‚™β€– rⁿ` is bounded in `n`, then the radius of `p` is at least `r`. -/
-theorem le_radius_of_bound_nNReal (C : ℝβ‰₯0) {r : ℝβ‰₯0} (h : βˆ€ n : β„•, β€–p nβ€–β‚Š * r ^ n ≀ C) :
+theorem le_radius_of_bound_nnreal (C : ℝβ‰₯0) {r : ℝβ‰₯0} (h : βˆ€ n : β„•, β€–p nβ€–β‚Š * r ^ n ≀ C) :
     (r : ℝβ‰₯0∞) ≀ p.radius :=
   p.le_radius_of_bound C fun n => by exact_mod_cast h n
-#align formal_multilinear_series.le_radius_of_bound_nnreal FormalMultilinearSeries.le_radius_of_bound_nNReal
+#align formal_multilinear_series.le_radius_of_bound_nnreal FormalMultilinearSeries.le_radius_of_bound_nnreal
 
 /-- If `β€–pβ‚™β€– rⁿ = O(1)`, as `n β†’ ∞`, then the radius of `p` is at least `r`. -/
 theorem le_radius_of_isBigO (h : (fun n => β€–p nβ€– * r ^ n) =O[atTop] fun n => (1 : ℝ)) :
@@ -152,20 +158,20 @@ theorem le_radius_of_eventually_le (C) (h : βˆ€αΆ  n in atTop, β€–p nβ€– * r ^ n
 #align formal_multilinear_series.le_radius_of_eventually_le FormalMultilinearSeries.le_radius_of_eventually_le
 
 theorem le_radius_of_summable_nnnorm (h : Summable fun n => β€–p nβ€–β‚Š * r ^ n) : ↑r ≀ p.radius :=
-  p.le_radius_of_bound_nNReal (βˆ‘' n, β€–p nβ€–β‚Š * r ^ n) fun n => le_tsum' h _
+  p.le_radius_of_bound_nnreal (βˆ‘' n, β€–p nβ€–β‚Š * r ^ n) fun n => le_tsum' h _
 #align formal_multilinear_series.le_radius_of_summable_nnnorm FormalMultilinearSeries.le_radius_of_summable_nnnorm
 
 theorem le_radius_of_summable (h : Summable fun n => β€–p nβ€– * r ^ n) : ↑r ≀ p.radius :=
   p.le_radius_of_summable_nnnorm <| by simp only [← coe_nnnorm] at h ; exact_mod_cast h
 #align formal_multilinear_series.le_radius_of_summable FormalMultilinearSeries.le_radius_of_summable
 
-theorem radius_eq_top_of_forall_nNReal_isBigO
+theorem radius_eq_top_of_forall_nnreal_isBigO
     (h : βˆ€ r : ℝβ‰₯0, (fun n => β€–p nβ€– * r ^ n) =O[atTop] fun n => (1 : ℝ)) : p.radius = ∞ :=
   ENNReal.eq_top_of_forall_nnreal_le fun r => p.le_radius_of_isBigO (h r)
-#align formal_multilinear_series.radius_eq_top_of_forall_nnreal_is_O FormalMultilinearSeries.radius_eq_top_of_forall_nNReal_isBigO
+#align formal_multilinear_series.radius_eq_top_of_forall_nnreal_is_O FormalMultilinearSeries.radius_eq_top_of_forall_nnreal_isBigO
 
 theorem radius_eq_top_of_eventually_eq_zero (h : βˆ€αΆ  n in atTop, p n = 0) : p.radius = ∞ :=
-  p.radius_eq_top_of_forall_nNReal_isBigO fun r =>
+  p.radius_eq_top_of_forall_nnreal_isBigO fun r =>
     (isBigO_zero _ _).congr' (h.mono fun n hn => by simp [hn]) EventuallyEq.rfl
 #align formal_multilinear_series.radius_eq_top_of_eventually_eq_zero FormalMultilinearSeries.radius_eq_top_of_eventually_eq_zero
 
@@ -375,175 +381,183 @@ section
 
 variable {f g : E β†’ F} {p pf pg : FormalMultilinearSeries π•œ E F} {x : E} {r r' : ℝβ‰₯0∞}
 
+#print HasFPowerSeriesOnBall /-
 /-- Given a function `f : E β†’ F` and a formal multilinear series `p`, we say that `f` has `p` as
 a power series on the ball of radius `r > 0` around `x` if `f (x + y) = βˆ‘' pβ‚™ yⁿ` for all `β€–yβ€– < r`.
 -/
-structure HasFpowerSeriesOnBall (f : E β†’ F) (p : FormalMultilinearSeries π•œ E F) (x : E) (r : ℝβ‰₯0∞) :
+structure HasFPowerSeriesOnBall (f : E β†’ F) (p : FormalMultilinearSeries π•œ E F) (x : E) (r : ℝβ‰₯0∞) :
     Prop where
   r_le : r ≀ p.radius
   r_pos : 0 < r
   HasSum :
     βˆ€ {y}, y ∈ EMetric.ball (0 : E) r β†’ HasSum (fun n : β„• => p n fun i : Fin n => y) (f (x + y))
-#align has_fpower_series_on_ball HasFpowerSeriesOnBall
+#align has_fpower_series_on_ball HasFPowerSeriesOnBall
+-/
 
+#print HasFPowerSeriesAt /-
 /-- Given a function `f : E β†’ F` and a formal multilinear series `p`, we say that `f` has `p` as
 a power series around `x` if `f (x + y) = βˆ‘' pβ‚™ yⁿ` for all `y` in a neighborhood of `0`. -/
-def HasFpowerSeriesAt (f : E β†’ F) (p : FormalMultilinearSeries π•œ E F) (x : E) :=
-  βˆƒ r, HasFpowerSeriesOnBall f p x r
-#align has_fpower_series_at HasFpowerSeriesAt
+def HasFPowerSeriesAt (f : E β†’ F) (p : FormalMultilinearSeries π•œ E F) (x : E) :=
+  βˆƒ r, HasFPowerSeriesOnBall f p x r
+#align has_fpower_series_at HasFPowerSeriesAt
+-/
 
 variable (π•œ)
 
+#print AnalyticAt /-
 /-- Given a function `f : E β†’ F`, we say that `f` is analytic at `x` if it admits a convergent power
 series expansion around `x`. -/
 def AnalyticAt (f : E β†’ F) (x : E) :=
-  βˆƒ p : FormalMultilinearSeries π•œ E F, HasFpowerSeriesAt f p x
+  βˆƒ p : FormalMultilinearSeries π•œ E F, HasFPowerSeriesAt f p x
 #align analytic_at AnalyticAt
+-/
 
+#print AnalyticOn /-
 /-- Given a function `f : E β†’ F`, we say that `f` is analytic on a set `s` if it is analytic around
 every point of `s`. -/
 def AnalyticOn (f : E β†’ F) (s : Set E) :=
   βˆ€ x, x ∈ s β†’ AnalyticAt π•œ f x
 #align analytic_on AnalyticOn
+-/
 
 variable {π•œ}
 
-theorem HasFpowerSeriesOnBall.hasFpowerSeriesAt (hf : HasFpowerSeriesOnBall f p x r) :
-    HasFpowerSeriesAt f p x :=
+theorem HasFPowerSeriesOnBall.hasFPowerSeriesAt (hf : HasFPowerSeriesOnBall f p x r) :
+    HasFPowerSeriesAt f p x :=
   ⟨r, hf⟩
-#align has_fpower_series_on_ball.has_fpower_series_at HasFpowerSeriesOnBall.hasFpowerSeriesAt
+#align has_fpower_series_on_ball.has_fpower_series_at HasFPowerSeriesOnBall.hasFPowerSeriesAt
 
-theorem HasFpowerSeriesAt.analyticAt (hf : HasFpowerSeriesAt f p x) : AnalyticAt π•œ f x :=
+theorem HasFPowerSeriesAt.analyticAt (hf : HasFPowerSeriesAt f p x) : AnalyticAt π•œ f x :=
   ⟨p, hf⟩
-#align has_fpower_series_at.analytic_at HasFpowerSeriesAt.analyticAt
+#align has_fpower_series_at.analytic_at HasFPowerSeriesAt.analyticAt
 
-theorem HasFpowerSeriesOnBall.analyticAt (hf : HasFpowerSeriesOnBall f p x r) : AnalyticAt π•œ f x :=
-  hf.HasFpowerSeriesAt.AnalyticAt
-#align has_fpower_series_on_ball.analytic_at HasFpowerSeriesOnBall.analyticAt
+theorem HasFPowerSeriesOnBall.analyticAt (hf : HasFPowerSeriesOnBall f p x r) : AnalyticAt π•œ f x :=
+  hf.HasFPowerSeriesAt.AnalyticAt
+#align has_fpower_series_on_ball.analytic_at HasFPowerSeriesOnBall.analyticAt
 
-theorem HasFpowerSeriesOnBall.congr (hf : HasFpowerSeriesOnBall f p x r)
-    (hg : EqOn f g (EMetric.ball x r)) : HasFpowerSeriesOnBall g p x r :=
+theorem HasFPowerSeriesOnBall.congr (hf : HasFPowerSeriesOnBall f p x r)
+    (hg : EqOn f g (EMetric.ball x r)) : HasFPowerSeriesOnBall g p x r :=
   { r_le := hf.r_le
     r_pos := hf.r_pos
     HasSum := fun y hy => by
       convert hf.has_sum hy
       apply hg.symm
       simpa [edist_eq_coe_nnnorm_sub] using hy }
-#align has_fpower_series_on_ball.congr HasFpowerSeriesOnBall.congr
+#align has_fpower_series_on_ball.congr HasFPowerSeriesOnBall.congr
 
 /-- If a function `f` has a power series `p` around `x`, then the function `z ↦ f (z - y)` has the
 same power series around `x + y`. -/
-theorem HasFpowerSeriesOnBall.compSub (hf : HasFpowerSeriesOnBall f p x r) (y : E) :
-    HasFpowerSeriesOnBall (fun z => f (z - y)) p (x + y) r :=
+theorem HasFPowerSeriesOnBall.comp_sub (hf : HasFPowerSeriesOnBall f p x r) (y : E) :
+    HasFPowerSeriesOnBall (fun z => f (z - y)) p (x + y) r :=
   { r_le := hf.r_le
     r_pos := hf.r_pos
     HasSum := fun z hz => by convert hf.has_sum hz; abel }
-#align has_fpower_series_on_ball.comp_sub HasFpowerSeriesOnBall.compSub
+#align has_fpower_series_on_ball.comp_sub HasFPowerSeriesOnBall.comp_sub
 
-theorem HasFpowerSeriesOnBall.hasSum_sub (hf : HasFpowerSeriesOnBall f p x r) {y : E}
+theorem HasFPowerSeriesOnBall.hasSum_sub (hf : HasFPowerSeriesOnBall f p x r) {y : E}
     (hy : y ∈ EMetric.ball x r) : HasSum (fun n : β„• => p n fun i => y - x) (f y) :=
   by
   have : y - x ∈ EMetric.ball (0 : E) r := by simpa [edist_eq_coe_nnnorm_sub] using hy
   simpa only [add_sub_cancel'_right] using hf.has_sum this
-#align has_fpower_series_on_ball.has_sum_sub HasFpowerSeriesOnBall.hasSum_sub
+#align has_fpower_series_on_ball.has_sum_sub HasFPowerSeriesOnBall.hasSum_sub
 
-theorem HasFpowerSeriesOnBall.radius_pos (hf : HasFpowerSeriesOnBall f p x r) : 0 < p.radius :=
+theorem HasFPowerSeriesOnBall.radius_pos (hf : HasFPowerSeriesOnBall f p x r) : 0 < p.radius :=
   lt_of_lt_of_le hf.r_pos hf.r_le
-#align has_fpower_series_on_ball.radius_pos HasFpowerSeriesOnBall.radius_pos
+#align has_fpower_series_on_ball.radius_pos HasFPowerSeriesOnBall.radius_pos
 
-theorem HasFpowerSeriesAt.radius_pos (hf : HasFpowerSeriesAt f p x) : 0 < p.radius :=
+theorem HasFPowerSeriesAt.radius_pos (hf : HasFPowerSeriesAt f p x) : 0 < p.radius :=
   let ⟨r, hr⟩ := hf
   hr.radius_pos
-#align has_fpower_series_at.radius_pos HasFpowerSeriesAt.radius_pos
+#align has_fpower_series_at.radius_pos HasFPowerSeriesAt.radius_pos
 
-theorem HasFpowerSeriesOnBall.mono (hf : HasFpowerSeriesOnBall f p x r) (r'_pos : 0 < r')
-    (hr : r' ≀ r) : HasFpowerSeriesOnBall f p x r' :=
+theorem HasFPowerSeriesOnBall.mono (hf : HasFPowerSeriesOnBall f p x r) (r'_pos : 0 < r')
+    (hr : r' ≀ r) : HasFPowerSeriesOnBall f p x r' :=
   ⟨le_trans hr hf.1, r'_pos, fun y hy => hf.HasSum (EMetric.ball_subset_ball hr hy)⟩
-#align has_fpower_series_on_ball.mono HasFpowerSeriesOnBall.mono
+#align has_fpower_series_on_ball.mono HasFPowerSeriesOnBall.mono
 
-theorem HasFpowerSeriesAt.congr (hf : HasFpowerSeriesAt f p x) (hg : f =αΆ [𝓝 x] g) :
-    HasFpowerSeriesAt g p x := by
+theorem HasFPowerSeriesAt.congr (hf : HasFPowerSeriesAt f p x) (hg : f =αΆ [𝓝 x] g) :
+    HasFPowerSeriesAt g p x := by
   rcases hf with ⟨r₁, hβ‚βŸ©
   rcases emetric.mem_nhds_iff.mp hg with ⟨rβ‚‚, hβ‚‚pos, hβ‚‚βŸ©
   exact
     ⟨min r₁ rβ‚‚,
       (h₁.mono (lt_min h₁.r_pos hβ‚‚pos) inf_le_left).congr fun y hy =>
         hβ‚‚ (EMetric.ball_subset_ball inf_le_right hy)⟩
-#align has_fpower_series_at.congr HasFpowerSeriesAt.congr
+#align has_fpower_series_at.congr HasFPowerSeriesAt.congr
 
-protected theorem HasFpowerSeriesAt.eventually (hf : HasFpowerSeriesAt f p x) :
-    βˆ€αΆ  r : ℝβ‰₯0∞ in 𝓝[>] 0, HasFpowerSeriesOnBall f p x r :=
+protected theorem HasFPowerSeriesAt.eventually (hf : HasFPowerSeriesAt f p x) :
+    βˆ€αΆ  r : ℝβ‰₯0∞ in 𝓝[>] 0, HasFPowerSeriesOnBall f p x r :=
   let ⟨r, hr⟩ := hf
   mem_of_superset (Ioo_mem_nhdsWithin_Ioi (left_mem_Ico.2 hr.r_pos)) fun r' hr' =>
     hr.mono hr'.1 hr'.2.le
-#align has_fpower_series_at.eventually HasFpowerSeriesAt.eventually
+#align has_fpower_series_at.eventually HasFPowerSeriesAt.eventually
 
-theorem HasFpowerSeriesOnBall.eventually_hasSum (hf : HasFpowerSeriesOnBall f p x r) :
+theorem HasFPowerSeriesOnBall.eventually_hasSum (hf : HasFPowerSeriesOnBall f p x r) :
     βˆ€αΆ  y in 𝓝 0, HasSum (fun n : β„• => p n fun i : Fin n => y) (f (x + y)) := by
   filter_upwards [EMetric.ball_mem_nhds (0 : E) hf.r_pos]using fun _ => hf.has_sum
-#align has_fpower_series_on_ball.eventually_has_sum HasFpowerSeriesOnBall.eventually_hasSum
+#align has_fpower_series_on_ball.eventually_has_sum HasFPowerSeriesOnBall.eventually_hasSum
 
-theorem HasFpowerSeriesAt.eventually_hasSum (hf : HasFpowerSeriesAt f p x) :
+theorem HasFPowerSeriesAt.eventually_hasSum (hf : HasFPowerSeriesAt f p x) :
     βˆ€αΆ  y in 𝓝 0, HasSum (fun n : β„• => p n fun i : Fin n => y) (f (x + y)) :=
   let ⟨r, hr⟩ := hf
   hr.eventually_hasSum
-#align has_fpower_series_at.eventually_has_sum HasFpowerSeriesAt.eventually_hasSum
+#align has_fpower_series_at.eventually_has_sum HasFPowerSeriesAt.eventually_hasSum
 
-theorem HasFpowerSeriesOnBall.eventually_hasSum_sub (hf : HasFpowerSeriesOnBall f p x r) :
+theorem HasFPowerSeriesOnBall.eventually_hasSum_sub (hf : HasFPowerSeriesOnBall f p x r) :
     βˆ€αΆ  y in 𝓝 x, HasSum (fun n : β„• => p n fun i : Fin n => y - x) (f y) := by
   filter_upwards [EMetric.ball_mem_nhds x hf.r_pos]with y using hf.has_sum_sub
-#align has_fpower_series_on_ball.eventually_has_sum_sub HasFpowerSeriesOnBall.eventually_hasSum_sub
+#align has_fpower_series_on_ball.eventually_has_sum_sub HasFPowerSeriesOnBall.eventually_hasSum_sub
 
-theorem HasFpowerSeriesAt.eventually_hasSum_sub (hf : HasFpowerSeriesAt f p x) :
+theorem HasFPowerSeriesAt.eventually_hasSum_sub (hf : HasFPowerSeriesAt f p x) :
     βˆ€αΆ  y in 𝓝 x, HasSum (fun n : β„• => p n fun i : Fin n => y - x) (f y) :=
   let ⟨r, hr⟩ := hf
   hr.eventually_hasSum_sub
-#align has_fpower_series_at.eventually_has_sum_sub HasFpowerSeriesAt.eventually_hasSum_sub
+#align has_fpower_series_at.eventually_has_sum_sub HasFPowerSeriesAt.eventually_hasSum_sub
 
-theorem HasFpowerSeriesOnBall.eventually_eq_zero
-    (hf : HasFpowerSeriesOnBall f (0 : FormalMultilinearSeries π•œ E F) x r) : βˆ€αΆ  z in 𝓝 x, f z = 0 :=
+theorem HasFPowerSeriesOnBall.eventually_eq_zero
+    (hf : HasFPowerSeriesOnBall f (0 : FormalMultilinearSeries π•œ E F) x r) : βˆ€αΆ  z in 𝓝 x, f z = 0 :=
   by filter_upwards [hf.eventually_has_sum_sub]with z hz using hz.unique hasSum_zero
-#align has_fpower_series_on_ball.eventually_eq_zero HasFpowerSeriesOnBall.eventually_eq_zero
+#align has_fpower_series_on_ball.eventually_eq_zero HasFPowerSeriesOnBall.eventually_eq_zero
 
-theorem HasFpowerSeriesAt.eventually_eq_zero
-    (hf : HasFpowerSeriesAt f (0 : FormalMultilinearSeries π•œ E F) x) : βˆ€αΆ  z in 𝓝 x, f z = 0 :=
+theorem HasFPowerSeriesAt.eventually_eq_zero
+    (hf : HasFPowerSeriesAt f (0 : FormalMultilinearSeries π•œ E F) x) : βˆ€αΆ  z in 𝓝 x, f z = 0 :=
   let ⟨r, hr⟩ := hf
   hr.eventually_eq_zero
-#align has_fpower_series_at.eventually_eq_zero HasFpowerSeriesAt.eventually_eq_zero
+#align has_fpower_series_at.eventually_eq_zero HasFPowerSeriesAt.eventually_eq_zero
 
-theorem hasFpowerSeriesOnBallConst {c : F} {e : E} :
-    HasFpowerSeriesOnBall (fun _ => c) (constFormalMultilinearSeries π•œ E c) e ⊀ :=
+theorem hasFPowerSeriesOnBall_const {c : F} {e : E} :
+    HasFPowerSeriesOnBall (fun _ => c) (constFormalMultilinearSeries π•œ E c) e ⊀ :=
   by
   refine' ⟨by simp, WithTop.zero_lt_top, fun y hy => hasSum_single 0 fun n hn => _⟩
   simp [constFormalMultilinearSeries_apply hn]
-#align has_fpower_series_on_ball_const hasFpowerSeriesOnBallConst
+#align has_fpower_series_on_ball_const hasFPowerSeriesOnBall_const
 
-theorem hasFpowerSeriesAtConst {c : F} {e : E} :
-    HasFpowerSeriesAt (fun _ => c) (constFormalMultilinearSeries π•œ E c) e :=
-  ⟨⊀, hasFpowerSeriesOnBallConst⟩
-#align has_fpower_series_at_const hasFpowerSeriesAtConst
+theorem hasFPowerSeriesAt_const {c : F} {e : E} :
+    HasFPowerSeriesAt (fun _ => c) (constFormalMultilinearSeries π•œ E c) e :=
+  ⟨⊀, hasFPowerSeriesOnBall_const⟩
+#align has_fpower_series_at_const hasFPowerSeriesAt_const
 
 theorem analyticAt_const {v : F} : AnalyticAt π•œ (fun _ => v) x :=
-  ⟨constFormalMultilinearSeries π•œ E v, hasFpowerSeriesAtConst⟩
+  ⟨constFormalMultilinearSeries π•œ E v, hasFPowerSeriesAt_const⟩
 #align analytic_at_const analyticAt_const
 
 theorem analyticOn_const {v : F} {s : Set E} : AnalyticOn π•œ (fun _ => v) s := fun z _ =>
   analyticAt_const
 #align analytic_on_const analyticOn_const
 
-theorem HasFpowerSeriesOnBall.add (hf : HasFpowerSeriesOnBall f pf x r)
-    (hg : HasFpowerSeriesOnBall g pg x r) : HasFpowerSeriesOnBall (f + g) (pf + pg) x r :=
+theorem HasFPowerSeriesOnBall.add (hf : HasFPowerSeriesOnBall f pf x r)
+    (hg : HasFPowerSeriesOnBall g pg x r) : HasFPowerSeriesOnBall (f + g) (pf + pg) x r :=
   { r_le := le_trans (le_min_iff.2 ⟨hf.r_le, hg.r_le⟩) (pf.min_radius_le_radius_add pg)
     r_pos := hf.r_pos
     HasSum := fun y hy => (hf.HasSum hy).add (hg.HasSum hy) }
-#align has_fpower_series_on_ball.add HasFpowerSeriesOnBall.add
+#align has_fpower_series_on_ball.add HasFPowerSeriesOnBall.add
 
-theorem HasFpowerSeriesAt.add (hf : HasFpowerSeriesAt f pf x) (hg : HasFpowerSeriesAt g pg x) :
-    HasFpowerSeriesAt (f + g) (pf + pg) x :=
+theorem HasFPowerSeriesAt.add (hf : HasFPowerSeriesAt f pf x) (hg : HasFPowerSeriesAt g pg x) :
+    HasFPowerSeriesAt (f + g) (pf + pg) x :=
   by
   rcases(hf.eventually.and hg.eventually).exists with ⟨r, hr⟩
   exact ⟨r, hr.1.add hr.2⟩
-#align has_fpower_series_at.add HasFpowerSeriesAt.add
+#align has_fpower_series_at.add HasFPowerSeriesAt.add
 
 theorem AnalyticAt.add (hf : AnalyticAt π•œ f x) (hg : AnalyticAt π•œ g x) : AnalyticAt π•œ (f + g) x :=
   let ⟨pf, hpf⟩ := hf
@@ -551,31 +565,31 @@ theorem AnalyticAt.add (hf : AnalyticAt π•œ f x) (hg : AnalyticAt π•œ g x) : A
   (hpf.add hqf).AnalyticAt
 #align analytic_at.add AnalyticAt.add
 
-theorem HasFpowerSeriesOnBall.neg (hf : HasFpowerSeriesOnBall f pf x r) :
-    HasFpowerSeriesOnBall (-f) (-pf) x r :=
+theorem HasFPowerSeriesOnBall.neg (hf : HasFPowerSeriesOnBall f pf x r) :
+    HasFPowerSeriesOnBall (-f) (-pf) x r :=
   { r_le := by rw [pf.radius_neg]; exact hf.r_le
     r_pos := hf.r_pos
     HasSum := fun y hy => (hf.HasSum hy).neg }
-#align has_fpower_series_on_ball.neg HasFpowerSeriesOnBall.neg
+#align has_fpower_series_on_ball.neg HasFPowerSeriesOnBall.neg
 
-theorem HasFpowerSeriesAt.neg (hf : HasFpowerSeriesAt f pf x) : HasFpowerSeriesAt (-f) (-pf) x :=
+theorem HasFPowerSeriesAt.neg (hf : HasFPowerSeriesAt f pf x) : HasFPowerSeriesAt (-f) (-pf) x :=
   let ⟨rf, hrf⟩ := hf
-  hrf.neg.HasFpowerSeriesAt
-#align has_fpower_series_at.neg HasFpowerSeriesAt.neg
+  hrf.neg.HasFPowerSeriesAt
+#align has_fpower_series_at.neg HasFPowerSeriesAt.neg
 
 theorem AnalyticAt.neg (hf : AnalyticAt π•œ f x) : AnalyticAt π•œ (-f) x :=
   let ⟨pf, hpf⟩ := hf
   hpf.neg.AnalyticAt
 #align analytic_at.neg AnalyticAt.neg
 
-theorem HasFpowerSeriesOnBall.sub (hf : HasFpowerSeriesOnBall f pf x r)
-    (hg : HasFpowerSeriesOnBall g pg x r) : HasFpowerSeriesOnBall (f - g) (pf - pg) x r := by
+theorem HasFPowerSeriesOnBall.sub (hf : HasFPowerSeriesOnBall f pf x r)
+    (hg : HasFPowerSeriesOnBall g pg x r) : HasFPowerSeriesOnBall (f - g) (pf - pg) x r := by
   simpa only [sub_eq_add_neg] using hf.add hg.neg
-#align has_fpower_series_on_ball.sub HasFpowerSeriesOnBall.sub
+#align has_fpower_series_on_ball.sub HasFPowerSeriesOnBall.sub
 
-theorem HasFpowerSeriesAt.sub (hf : HasFpowerSeriesAt f pf x) (hg : HasFpowerSeriesAt g pg x) :
-    HasFpowerSeriesAt (f - g) (pf - pg) x := by simpa only [sub_eq_add_neg] using hf.add hg.neg
-#align has_fpower_series_at.sub HasFpowerSeriesAt.sub
+theorem HasFPowerSeriesAt.sub (hf : HasFPowerSeriesAt f pf x) (hg : HasFPowerSeriesAt g pg x) :
+    HasFPowerSeriesAt (f - g) (pf - pg) x := by simpa only [sub_eq_add_neg] using hf.add hg.neg
+#align has_fpower_series_at.sub HasFPowerSeriesAt.sub
 
 theorem AnalyticAt.sub (hf : AnalyticAt π•œ f x) (hg : AnalyticAt π•œ g x) : AnalyticAt π•œ (f - g) x :=
   by simpa only [sub_eq_add_neg] using hf.add hg.neg
@@ -594,7 +608,7 @@ theorem AnalyticOn.sub {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn 
 #align analytic_on.sub AnalyticOn.sub
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
-theorem HasFpowerSeriesOnBall.coeff_zero (hf : HasFpowerSeriesOnBall f pf x r) (v : Fin 0 β†’ E) :
+theorem HasFPowerSeriesOnBall.coeff_zero (hf : HasFPowerSeriesOnBall f pf x r) (v : Fin 0 β†’ E) :
     pf 0 v = f x := by
   have v_eq : v = fun i => 0 := Subsingleton.elim _ _
   have zero_mem : (0 : E) ∈ EMetric.ball (0 : E) r := by simp [hf.r_pos]
@@ -605,26 +619,26 @@ theorem HasFpowerSeriesOnBall.coeff_zero (hf : HasFpowerSeriesOnBall f pf x r) (
     exact ContinuousMultilinearMap.map_coord_zero _ (⟨0, this⟩ : Fin i) rfl
   have A := (hf.has_sum zero_mem).unique (hasSum_single _ this)
   simpa [v_eq] using A.symm
-#align has_fpower_series_on_ball.coeff_zero HasFpowerSeriesOnBall.coeff_zero
+#align has_fpower_series_on_ball.coeff_zero HasFPowerSeriesOnBall.coeff_zero
 
-theorem HasFpowerSeriesAt.coeff_zero (hf : HasFpowerSeriesAt f pf x) (v : Fin 0 β†’ E) :
+theorem HasFPowerSeriesAt.coeff_zero (hf : HasFPowerSeriesAt f pf x) (v : Fin 0 β†’ E) :
     pf 0 v = f x :=
   let ⟨rf, hrf⟩ := hf
   hrf.coeff_zero v
-#align has_fpower_series_at.coeff_zero HasFpowerSeriesAt.coeff_zero
+#align has_fpower_series_at.coeff_zero HasFPowerSeriesAt.coeff_zero
 
 /-- If a function `f` has a power series `p` on a ball and `g` is linear, then `g ∘ f` has the
 power series `g ∘ p` on the same ball. -/
-theorem ContinuousLinearMap.compHasFpowerSeriesOnBall (g : F β†’L[π•œ] G)
-    (h : HasFpowerSeriesOnBall f p x r) :
-    HasFpowerSeriesOnBall (g ∘ f) (g.compFormalMultilinearSeries p) x r :=
+theorem ContinuousLinearMap.comp_hasFPowerSeriesOnBall (g : F β†’L[π•œ] G)
+    (h : HasFPowerSeriesOnBall f p x r) :
+    HasFPowerSeriesOnBall (g ∘ f) (g.compFormalMultilinearSeries p) x r :=
   { r_le := h.r_le.trans (p.radius_le_radius_continuousLinearMap_comp _)
     r_pos := h.r_pos
     HasSum := fun y hy => by
       simpa only [ContinuousLinearMap.compFormalMultilinearSeries_apply,
         ContinuousLinearMap.compContinuousMultilinearMap_coe, Function.comp_apply] using
         g.has_sum (h.has_sum hy) }
-#align continuous_linear_map.comp_has_fpower_series_on_ball ContinuousLinearMap.compHasFpowerSeriesOnBall
+#align continuous_linear_map.comp_has_fpower_series_on_ball ContinuousLinearMap.comp_hasFPowerSeriesOnBall
 
 /-- If a function `f` is analytic on a set `s` and `g` is linear, then `g ∘ f` is analytic
 on `s`. -/
@@ -640,8 +654,8 @@ sums of this power series on strict subdisks of the disk of convergence.
 
 This version provides an upper estimate that decreases both in `β€–yβ€–` and `n`. See also
 `has_fpower_series_on_ball.uniform_geometric_approx` for a weaker version. -/
-theorem HasFpowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
-    (hf : HasFpowerSeriesOnBall f p x r) (h : (r' : ℝβ‰₯0∞) < r) :
+theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
+    (hf : HasFPowerSeriesOnBall f p x r) (h : (r' : ℝβ‰₯0∞) < r) :
     βˆƒ a ∈ Ioo (0 : ℝ) 1,
       βˆƒ C > 0,
         βˆ€ y ∈ Metric.ball (0 : E) r',
@@ -674,12 +688,12 @@ theorem HasFpowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
       (mul_le_mul_of_nonneg_right (hp n) (pow_nonneg (div_nonneg (norm_nonneg _) r'.coe_nonneg) _))
     _ ≀ C * (a * (β€–yβ€– / r')) ^ n := by rw [mul_pow, mul_assoc]
     
-#align has_fpower_series_on_ball.uniform_geometric_approx' HasFpowerSeriesOnBall.uniform_geometric_approx'
+#align has_fpower_series_on_ball.uniform_geometric_approx' HasFPowerSeriesOnBall.uniform_geometric_approx'
 
 /-- If a function admits a power series expansion, then it is exponentially close to the partial
 sums of this power series on strict subdisks of the disk of convergence. -/
-theorem HasFpowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
-    (hf : HasFpowerSeriesOnBall f p x r) (h : (r' : ℝβ‰₯0∞) < r) :
+theorem HasFPowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
+    (hf : HasFPowerSeriesOnBall f p x r) (h : (r' : ℝβ‰₯0∞) < r) :
     βˆƒ a ∈ Ioo (0 : ℝ) 1,
       βˆƒ C > 0, βˆ€ y ∈ Metric.ball (0 : E) r', βˆ€ n, β€–f (x + y) - p.partialSum n yβ€– ≀ C * a ^ n :=
   by
@@ -694,10 +708,10 @@ theorem HasFpowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
   refine' mul_le_mul_of_nonneg_left (pow_le_pow_of_le_left _ _ _) hC.lt.le
   exacts [mul_nonneg ha.1.le (div_nonneg (norm_nonneg y) r'.coe_nonneg),
     mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)]
-#align has_fpower_series_on_ball.uniform_geometric_approx HasFpowerSeriesOnBall.uniform_geometric_approx
+#align has_fpower_series_on_ball.uniform_geometric_approx HasFPowerSeriesOnBall.uniform_geometric_approx
 
 /-- Taylor formula for an analytic function, `is_O` version. -/
-theorem HasFpowerSeriesAt.isBigO_sub_partialSum_pow (hf : HasFpowerSeriesAt f p x) (n : β„•) :
+theorem HasFPowerSeriesAt.isBigO_sub_partialSum_pow (hf : HasFPowerSeriesAt f p x) (n : β„•) :
     (fun y : E => f (x + y) - p.partialSum n y) =O[𝓝 0] fun y => β€–yβ€– ^ n :=
   by
   rcases hf with ⟨r, hf⟩
@@ -712,15 +726,15 @@ theorem HasFpowerSeriesAt.isBigO_sub_partialSum_pow (hf : HasFpowerSeriesAt f p
   replace r'0 : 0 < (r' : ℝ); Β· exact_mod_cast r'0
   filter_upwards [Metric.ball_mem_nhds (0 : E) r'0]with y hy
   simpa [mul_pow, mul_div_assoc, mul_assoc, div_mul_eq_mul_div] using hp y hy n
-#align has_fpower_series_at.is_O_sub_partial_sum_pow HasFpowerSeriesAt.isBigO_sub_partialSum_pow
+#align has_fpower_series_at.is_O_sub_partial_sum_pow HasFPowerSeriesAt.isBigO_sub_partialSum_pow
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
 `C * (max β€–y - xβ€– β€–z - xβ€–) * β€–y - zβ€–`. This lemma formulates this property using `is_O` and
 `filter.principal` on `E Γ— E`. -/
-theorem HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
-    (hf : HasFpowerSeriesOnBall f p x r) (hr : r' < r) :
+theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
+    (hf : HasFPowerSeriesOnBall f p x r) (hr : r' < r) :
     (fun y : E Γ— E => f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) =O[π“Ÿ (EMetric.ball (x, x) r')]
       fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€– :=
   by
@@ -777,13 +791,13 @@ theorem HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
     exact (hL y hy).trans (le_abs_self _)
   simp_rw [L, mul_right_comm _ (_ * _)]
   exact (is_O_refl _ _).const_mul_left _
-#align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
+#align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
 `C * (max β€–y - xβ€– β€–z - xβ€–) * β€–y - zβ€–`. -/
-theorem HasFpowerSeriesOnBall.image_sub_sub_deriv_le (hf : HasFpowerSeriesOnBall f p x r)
+theorem HasFPowerSeriesOnBall.image_sub_sub_deriv_le (hf : HasFPowerSeriesOnBall f p x r)
     (hr : r' < r) :
     βˆƒ C,
       βˆ€ (y) (_ : y ∈ EMetric.ball x r') (z) (_ : z ∈ EMetric.ball x r'),
@@ -792,12 +806,12 @@ theorem HasFpowerSeriesOnBall.image_sub_sub_deriv_le (hf : HasFpowerSeriesOnBall
   simpa only [is_O_principal, mul_assoc, norm_mul, norm_norm, Prod.forall, EMetric.mem_ball,
     Prod.edist_eq, max_lt_iff, and_imp, @forall_swap (_ < _) E] using
     hf.is_O_image_sub_image_sub_deriv_principal hr
-#align has_fpower_series_on_ball.image_sub_sub_deriv_le HasFpowerSeriesOnBall.image_sub_sub_deriv_le
+#align has_fpower_series_on_ball.image_sub_sub_deriv_le HasFPowerSeriesOnBall.image_sub_sub_deriv_le
 
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` at `x`, then
 `f y - f z - p 1 (Ξ» _, y - z) = O(β€–(y, z) - (x, x)β€– * β€–y - zβ€–)` as `(y, z) β†’ (x, x)`.
 In particular, `f` is strictly differentiable at `x`. -/
-theorem HasFpowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub (hf : HasFpowerSeriesAt f p x) :
+theorem HasFPowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub (hf : HasFPowerSeriesAt f p x) :
     (fun y : E Γ— E => f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) =O[𝓝 (x, x)] fun y =>
       β€–y - (x, x)β€– * β€–y.1 - y.2β€– :=
   by
@@ -805,12 +819,12 @@ theorem HasFpowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub (hf : HasFpowerSeri
   rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hf.r_pos with ⟨r', r'0, h⟩
   refine' (hf.is_O_image_sub_image_sub_deriv_principal h).mono _
   exact le_principal_iff.2 (EMetric.ball_mem_nhds _ r'0)
-#align has_fpower_series_at.is_O_image_sub_norm_mul_norm_sub HasFpowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub
+#align has_fpower_series_at.is_O_image_sub_norm_mul_norm_sub HasFPowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub
 
 /-- If a function admits a power series expansion at `x`, then it is the uniform limit of the
 partial sums of this power series on strict subdisks of the disk of convergence, i.e., `f (x + y)`
 is the uniform limit of `p.partial_sum n y` there. -/
-theorem HasFpowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFpowerSeriesOnBall f p x r)
+theorem HasFPowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFPowerSeriesOnBall f p x r)
     (h : (r' : ℝβ‰₯0∞) < r) :
     TendstoUniformlyOn (fun n y => p.partialSum n y) (fun y => f (x + y)) atTop
       (Metric.ball (0 : E) r') :=
@@ -826,12 +840,12 @@ theorem HasFpowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFpowerS
   refine' (L.eventually (gt_mem_nhds Ξ΅pos)).mono fun n hn y hy => _
   rw [dist_eq_norm]
   exact (hp y hy n).trans_lt hn
-#align has_fpower_series_on_ball.tendsto_uniformly_on HasFpowerSeriesOnBall.tendstoUniformlyOn
+#align has_fpower_series_on_ball.tendsto_uniformly_on HasFPowerSeriesOnBall.tendstoUniformlyOn
 
 /-- If a function admits a power series expansion at `x`, then it is the locally uniform limit of
 the partial sums of this power series on the disk of convergence, i.e., `f (x + y)`
 is the locally uniform limit of `p.partial_sum n y` there. -/
-theorem HasFpowerSeriesOnBall.tendstoLocallyUniformlyOn (hf : HasFpowerSeriesOnBall f p x r) :
+theorem HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn (hf : HasFPowerSeriesOnBall f p x r) :
     TendstoLocallyUniformlyOn (fun n y => p.partialSum n y) (fun y => f (x + y)) atTop
       (EMetric.ball (0 : E) r) :=
   by
@@ -840,24 +854,24 @@ theorem HasFpowerSeriesOnBall.tendstoLocallyUniformlyOn (hf : HasFpowerSeriesOnB
   have : EMetric.ball (0 : E) r' ∈ 𝓝 x := IsOpen.mem_nhds EMetric.isOpen_ball xr'
   refine' ⟨EMetric.ball (0 : E) r', mem_nhdsWithin_of_mem_nhds this, _⟩
   simpa [Metric.emetric_ball_nnreal] using hf.tendsto_uniformly_on hr' u hu
-#align has_fpower_series_on_ball.tendsto_locally_uniformly_on HasFpowerSeriesOnBall.tendstoLocallyUniformlyOn
+#align has_fpower_series_on_ball.tendsto_locally_uniformly_on HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn
 
 /-- If a function admits a power series expansion at `x`, then it is the uniform limit of the
 partial sums of this power series on strict subdisks of the disk of convergence, i.e., `f y`
 is the uniform limit of `p.partial_sum n (y - x)` there. -/
-theorem HasFpowerSeriesOnBall.tendsto_uniformly_on' {r' : ℝβ‰₯0} (hf : HasFpowerSeriesOnBall f p x r)
+theorem HasFPowerSeriesOnBall.tendstoUniformlyOn' {r' : ℝβ‰₯0} (hf : HasFPowerSeriesOnBall f p x r)
     (h : (r' : ℝβ‰₯0∞) < r) :
     TendstoUniformlyOn (fun n y => p.partialSum n (y - x)) f atTop (Metric.ball (x : E) r') :=
   by
   convert(hf.tendsto_uniformly_on h).comp fun y => y - x
   · simp [(· ∘ ·)]
   Β· ext z; simp [dist_eq_norm]
-#align has_fpower_series_on_ball.tendsto_uniformly_on' HasFpowerSeriesOnBall.tendsto_uniformly_on'
+#align has_fpower_series_on_ball.tendsto_uniformly_on' HasFPowerSeriesOnBall.tendstoUniformlyOn'
 
 /-- If a function admits a power series expansion at `x`, then it is the locally uniform limit of
 the  partial sums of this power series on the disk of convergence, i.e., `f y`
 is the locally uniform limit of `p.partial_sum n (y - x)` there. -/
-theorem HasFpowerSeriesOnBall.tendsto_locally_uniformly_on' (hf : HasFpowerSeriesOnBall f p x r) :
+theorem HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn' (hf : HasFPowerSeriesOnBall f p x r) :
     TendstoLocallyUniformlyOn (fun n y => p.partialSum n (y - x)) f atTop
       (EMetric.ball (x : E) r) :=
   by
@@ -866,21 +880,21 @@ theorem HasFpowerSeriesOnBall.tendsto_locally_uniformly_on' (hf : HasFpowerSerie
   convert hf.tendsto_locally_uniformly_on.comp (fun y : E => y - x) _ A
   Β· ext z; simp
   Β· intro z; simp [edist_eq_coe_nnnorm, edist_eq_coe_nnnorm_sub]
-#align has_fpower_series_on_ball.tendsto_locally_uniformly_on' HasFpowerSeriesOnBall.tendsto_locally_uniformly_on'
+#align has_fpower_series_on_ball.tendsto_locally_uniformly_on' HasFPowerSeriesOnBall.tendstoLocallyUniformlyOn'
 
 /-- If a function admits a power series expansion on a disk, then it is continuous there. -/
-protected theorem HasFpowerSeriesOnBall.continuousOn (hf : HasFpowerSeriesOnBall f p x r) :
+protected theorem HasFPowerSeriesOnBall.continuousOn (hf : HasFPowerSeriesOnBall f p x r) :
     ContinuousOn f (EMetric.ball x r) :=
-  hf.tendsto_locally_uniformly_on'.ContinuousOn <|
+  hf.tendstoLocallyUniformlyOn'.ContinuousOn <|
     eventually_of_forall fun n =>
       ((p.partialSum_continuous n).comp (continuous_id.sub continuous_const)).ContinuousOn
-#align has_fpower_series_on_ball.continuous_on HasFpowerSeriesOnBall.continuousOn
+#align has_fpower_series_on_ball.continuous_on HasFPowerSeriesOnBall.continuousOn
 
-protected theorem HasFpowerSeriesAt.continuousAt (hf : HasFpowerSeriesAt f p x) :
+protected theorem HasFPowerSeriesAt.continuousAt (hf : HasFPowerSeriesAt f p x) :
     ContinuousAt f x :=
   let ⟨r, hr⟩ := hf
   hr.ContinuousOn.ContinuousAt (EMetric.ball_mem_nhds x hr.r_pos)
-#align has_fpower_series_at.continuous_at HasFpowerSeriesAt.continuousAt
+#align has_fpower_series_at.continuous_at HasFPowerSeriesAt.continuousAt
 
 protected theorem AnalyticAt.continuousAt (hf : AnalyticAt π•œ f x) : ContinuousAt f x :=
   let ⟨p, hp⟩ := hf
@@ -893,18 +907,18 @@ protected theorem AnalyticOn.continuousOn {s : Set E} (hf : AnalyticOn π•œ f s)
 
 /-- In a complete space, the sum of a converging power series `p` admits `p` as a power series.
 This is not totally obvious as we need to check the convergence of the series. -/
-protected theorem FormalMultilinearSeries.hasFpowerSeriesOnBall [CompleteSpace F]
+protected theorem FormalMultilinearSeries.hasFPowerSeriesOnBall [CompleteSpace F]
     (p : FormalMultilinearSeries π•œ E F) (h : 0 < p.radius) :
-    HasFpowerSeriesOnBall p.Sum p 0 p.radius :=
+    HasFPowerSeriesOnBall p.Sum p 0 p.radius :=
   { r_le := le_rfl
     r_pos := h
     HasSum := fun y hy => by rw [zero_add]; exact p.has_sum hy }
-#align formal_multilinear_series.has_fpower_series_on_ball FormalMultilinearSeries.hasFpowerSeriesOnBall
+#align formal_multilinear_series.has_fpower_series_on_ball FormalMultilinearSeries.hasFPowerSeriesOnBall
 
-theorem HasFpowerSeriesOnBall.sum (h : HasFpowerSeriesOnBall f p x r) {y : E}
+theorem HasFPowerSeriesOnBall.sum (h : HasFPowerSeriesOnBall f p x r) {y : E}
     (hy : y ∈ EMetric.ball (0 : E) r) : f (x + y) = p.Sum y :=
   (h.HasSum hy).tsum_eq.symm
-#align has_fpower_series_on_ball.sum HasFpowerSeriesOnBall.sum
+#align has_fpower_series_on_ball.sum HasFPowerSeriesOnBall.sum
 
 /-- The sum of a converging power series is continuous in its disk of convergence. -/
 protected theorem FormalMultilinearSeries.continuousOn [CompleteSpace F] :
@@ -985,8 +999,8 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
 
 /-- If a formal multilinear series `p` represents the zero function at `x : E`, then the
 terms `p n (Ξ» i, y)` appearing the in sum are zero for any `n : β„•`, `y : E`. -/
-theorem HasFpowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {x : E}
-    (h : HasFpowerSeriesAt 0 p x) (n : β„•) : βˆ€ y : E, (p n fun i => y) = 0 :=
+theorem HasFPowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {x : E}
+    (h : HasFPowerSeriesAt 0 p x) (n : β„•) : βˆ€ y : E, (p n fun i => y) = 0 :=
   by
   refine' Nat.strongRecOn n fun k hk => _
   have psum_eq : p.partial_sum (k + 1) = fun y => p k fun i => y :=
@@ -999,60 +1013,60 @@ theorem HasFpowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {
   replace h := h.is_O_sub_partial_sum_pow k.succ
   simp only [psum_eq, zero_sub, Pi.zero_apply, Asymptotics.isBigO_neg_left] at h 
   exact h.continuous_multilinear_map_apply_eq_zero
-#align has_fpower_series_at.apply_eq_zero HasFpowerSeriesAt.apply_eq_zero
+#align has_fpower_series_at.apply_eq_zero HasFPowerSeriesAt.apply_eq_zero
 
 /-- A one-dimensional formal multilinear series representing the zero function is zero. -/
-theorem HasFpowerSeriesAt.eq_zero {p : FormalMultilinearSeries π•œ π•œ E} {x : π•œ}
-    (h : HasFpowerSeriesAt 0 p x) : p = 0 := by ext (n x);
+theorem HasFPowerSeriesAt.eq_zero {p : FormalMultilinearSeries π•œ π•œ E} {x : π•œ}
+    (h : HasFPowerSeriesAt 0 p x) : p = 0 := by ext (n x);
   rw [← mk_pi_field_apply_one_eq_self (p n)]; simp [h.apply_eq_zero n 1]
-#align has_fpower_series_at.eq_zero HasFpowerSeriesAt.eq_zero
+#align has_fpower_series_at.eq_zero HasFPowerSeriesAt.eq_zero
 
 /-- One-dimensional formal multilinear series representing the same function are equal. -/
-theorem HasFpowerSeriesAt.eq_formalMultilinearSeries {p₁ pβ‚‚ : FormalMultilinearSeries π•œ π•œ E}
-    {f : π•œ β†’ E} {x : π•œ} (h₁ : HasFpowerSeriesAt f p₁ x) (hβ‚‚ : HasFpowerSeriesAt f pβ‚‚ x) : p₁ = pβ‚‚ :=
-  sub_eq_zero.mp (HasFpowerSeriesAt.eq_zero (by simpa only [sub_self] using h₁.sub hβ‚‚))
-#align has_fpower_series_at.eq_formal_multilinear_series HasFpowerSeriesAt.eq_formalMultilinearSeries
-
-theorem HasFpowerSeriesAt.eq_formalMultilinearSeries_of_eventually
-    {p q : FormalMultilinearSeries π•œ π•œ E} {f g : π•œ β†’ E} {x : π•œ} (hp : HasFpowerSeriesAt f p x)
-    (hq : HasFpowerSeriesAt g q x) (heq : βˆ€αΆ  z in 𝓝 x, f z = g z) : p = q :=
+theorem HasFPowerSeriesAt.eq_formalMultilinearSeries {p₁ pβ‚‚ : FormalMultilinearSeries π•œ π•œ E}
+    {f : π•œ β†’ E} {x : π•œ} (h₁ : HasFPowerSeriesAt f p₁ x) (hβ‚‚ : HasFPowerSeriesAt f pβ‚‚ x) : p₁ = pβ‚‚ :=
+  sub_eq_zero.mp (HasFPowerSeriesAt.eq_zero (by simpa only [sub_self] using h₁.sub hβ‚‚))
+#align has_fpower_series_at.eq_formal_multilinear_series HasFPowerSeriesAt.eq_formalMultilinearSeries
+
+theorem HasFPowerSeriesAt.eq_formalMultilinearSeries_of_eventually
+    {p q : FormalMultilinearSeries π•œ π•œ E} {f g : π•œ β†’ E} {x : π•œ} (hp : HasFPowerSeriesAt f p x)
+    (hq : HasFPowerSeriesAt g q x) (heq : βˆ€αΆ  z in 𝓝 x, f z = g z) : p = q :=
   (hp.congr HEq).eq_formalMultilinearSeries hq
-#align has_fpower_series_at.eq_formal_multilinear_series_of_eventually HasFpowerSeriesAt.eq_formalMultilinearSeries_of_eventually
+#align has_fpower_series_at.eq_formal_multilinear_series_of_eventually HasFPowerSeriesAt.eq_formalMultilinearSeries_of_eventually
 
 /-- A one-dimensional formal multilinear series representing a locally zero function is zero. -/
-theorem HasFpowerSeriesAt.eq_zero_of_eventually {p : FormalMultilinearSeries π•œ π•œ E} {f : π•œ β†’ E}
-    {x : π•œ} (hp : HasFpowerSeriesAt f p x) (hf : f =αΆ [𝓝 x] 0) : p = 0 :=
+theorem HasFPowerSeriesAt.eq_zero_of_eventually {p : FormalMultilinearSeries π•œ π•œ E} {f : π•œ β†’ E}
+    {x : π•œ} (hp : HasFPowerSeriesAt f p x) (hf : f =αΆ [𝓝 x] 0) : p = 0 :=
   (hp.congr hf).eq_zero
-#align has_fpower_series_at.eq_zero_of_eventually HasFpowerSeriesAt.eq_zero_of_eventually
+#align has_fpower_series_at.eq_zero_of_eventually HasFPowerSeriesAt.eq_zero_of_eventually
 
 /-- If a function `f : π•œ β†’ E` has two power series representations at `x`, then the given radii in
 which convergence is guaranteed may be interchanged. This can be useful when the formal multilinear
 series in one representation has a particularly nice form, but the other has a larger radius. -/
-theorem HasFpowerSeriesOnBall.exchangeRadius {p₁ pβ‚‚ : FormalMultilinearSeries π•œ π•œ E} {f : π•œ β†’ E}
-    {r₁ rβ‚‚ : ℝβ‰₯0∞} {x : π•œ} (h₁ : HasFpowerSeriesOnBall f p₁ x r₁)
-    (hβ‚‚ : HasFpowerSeriesOnBall f pβ‚‚ x rβ‚‚) : HasFpowerSeriesOnBall f p₁ x rβ‚‚ :=
-  hβ‚‚.HasFpowerSeriesAt.eq_formalMultilinearSeries h₁.HasFpowerSeriesAt β–Έ hβ‚‚
-#align has_fpower_series_on_ball.exchange_radius HasFpowerSeriesOnBall.exchangeRadius
+theorem HasFPowerSeriesOnBall.exchange_radius {p₁ pβ‚‚ : FormalMultilinearSeries π•œ π•œ E} {f : π•œ β†’ E}
+    {r₁ rβ‚‚ : ℝβ‰₯0∞} {x : π•œ} (h₁ : HasFPowerSeriesOnBall f p₁ x r₁)
+    (hβ‚‚ : HasFPowerSeriesOnBall f pβ‚‚ x rβ‚‚) : HasFPowerSeriesOnBall f p₁ x rβ‚‚ :=
+  hβ‚‚.HasFPowerSeriesAt.eq_formalMultilinearSeries h₁.HasFPowerSeriesAt β–Έ hβ‚‚
+#align has_fpower_series_on_ball.exchange_radius HasFPowerSeriesOnBall.exchange_radius
 
 /-- If a function `f : π•œ β†’ E` has power series representation `p` on a ball of some radius and for
 each positive radius it has some power series representation, then `p` converges to `f` on the whole
 `π•œ`. -/
-theorem HasFpowerSeriesOnBall.rEqTopOfExists {f : π•œ β†’ E} {r : ℝβ‰₯0∞} {x : π•œ}
-    {p : FormalMultilinearSeries π•œ π•œ E} (h : HasFpowerSeriesOnBall f p x r)
+theorem HasFPowerSeriesOnBall.r_eq_top_of_exists {f : π•œ β†’ E} {r : ℝβ‰₯0∞} {x : π•œ}
+    {p : FormalMultilinearSeries π•œ π•œ E} (h : HasFPowerSeriesOnBall f p x r)
     (h' :
       βˆ€ (r' : ℝβ‰₯0) (hr : 0 < r'),
-        βˆƒ p' : FormalMultilinearSeries π•œ π•œ E, HasFpowerSeriesOnBall f p' x r') :
-    HasFpowerSeriesOnBall f p x ∞ :=
+        βˆƒ p' : FormalMultilinearSeries π•œ π•œ E, HasFPowerSeriesOnBall f p' x r') :
+    HasFPowerSeriesOnBall f p x ∞ :=
   { r_le :=
       ENNReal.le_of_forall_pos_nnreal_lt fun r hr hr' =>
         let ⟨p', hp'⟩ := h' r hr
-        (h.exchangeRadius hp').r_le
+        (h.exchange_radius hp').r_le
     r_pos := ENNReal.coe_lt_top
     HasSum := fun y hy =>
       let ⟨r', hr'⟩ := exists_gt β€–yβ€–β‚Š
       let ⟨p', hp'⟩ := h' r' hr'.ne_bot.bot_lt
-      (h.exchangeRadius hp').HasSum <| mem_emetric_ball_zero_iff.mpr (ENNReal.coe_lt_coe.2 hr') }
-#align has_fpower_series_on_ball.r_eq_top_of_exists HasFpowerSeriesOnBall.rEqTopOfExists
+      (h.exchange_radius hp').HasSum <| mem_emetric_ball_zero_iff.mpr (ENNReal.coe_lt_coe.2 hr') }
+#align has_fpower_series_on_ball.r_eq_top_of_exists HasFPowerSeriesOnBall.r_eq_top_of_exists
 
 end Uniqueness
 
@@ -1083,6 +1097,7 @@ section
 
 variable (p : FormalMultilinearSeries π•œ E F) {x y : E} {r R : ℝβ‰₯0}
 
+#print FormalMultilinearSeries.changeOriginSeriesTerm /-
 /-- A term of `formal_multilinear_series.change_origin_series`.
 
 Given a formal multilinear series `p` and a point `x` in its ball of convergence,
@@ -1098,6 +1113,7 @@ def changeOriginSeriesTerm (k l : β„•) (s : Finset (Fin (k + l))) (hs : s.card =
   ContinuousMultilinearMap.curryFinFinset π•œ E F hs
     (by erw [Finset.card_compl, Fintype.card_fin, hs, add_tsub_cancel_right]) (p <| k + l)
 #align formal_multilinear_series.change_origin_series_term FormalMultilinearSeries.changeOriginSeriesTerm
+-/
 
 theorem changeOriginSeriesTerm_apply (k l : β„•) (s : Finset (Fin (k + l))) (hs : s.card = l)
     (x y : E) :
@@ -1128,6 +1144,7 @@ theorem nnnorm_changeOriginSeriesTerm_apply_le (k l : β„•) (s : Finset (Fin (k +
   apply ContinuousMultilinearMap.le_op_nnnorm
 #align formal_multilinear_series.nnnorm_change_origin_series_term_apply_le FormalMultilinearSeries.nnnorm_changeOriginSeriesTerm_apply_le
 
+#print FormalMultilinearSeries.changeOriginSeries /-
 /-- The power series for `f.change_origin k`.
 
 Given a formal multilinear series `p` and a point `x` in its ball of convergence,
@@ -1137,6 +1154,7 @@ the series `p.change_origin_series k`. -/
 def changeOriginSeries (k : β„•) : FormalMultilinearSeries π•œ E (E[Γ—k]β†’L[π•œ] F) := fun l =>
   βˆ‘ s : { s : Finset (Fin (k + l)) // Finset.card s = l }, p.changeOriginSeriesTerm k l s s.2
 #align formal_multilinear_series.change_origin_series FormalMultilinearSeries.changeOriginSeries
+-/
 
 theorem nnnorm_changeOriginSeries_le_tsum (k l : β„•) :
     β€–p.changeOriginSeries k lβ€–β‚Š ≀ βˆ‘' x : { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + l)β€–β‚Š :=
@@ -1152,12 +1170,15 @@ theorem nnnorm_changeOriginSeries_apply_le_tsum (k l : β„•) (x : E) :
     (p.change_origin_series k l).le_of_op_nnnorm_le _ (p.nnnorm_change_origin_series_le_tsum _ _)
 #align formal_multilinear_series.nnnorm_change_origin_series_apply_le_tsum FormalMultilinearSeries.nnnorm_changeOriginSeries_apply_le_tsum
 
+#print FormalMultilinearSeries.changeOrigin /-
 /-- Changing the origin of a formal multilinear series `p`, so that
 `p.sum (x+y) = (p.change_origin x).sum y` when this makes sense.
 -/
 def changeOrigin (x : E) : FormalMultilinearSeries π•œ E F := fun k => (p.changeOriginSeries k).Sum x
 #align formal_multilinear_series.change_origin FormalMultilinearSeries.changeOrigin
+-/
 
+#print FormalMultilinearSeries.changeOriginIndexEquiv /-
 /-- An auxiliary equivalence useful in the proofs about
 `formal_multilinear_series.change_origin_series`: the set of triples `(k, l, s)`, where `s` is a
 `finset (fin (k + l))` of cardinality `l` is equivalent to the set of pairs `(n, s)`, where `s` is a
@@ -1197,8 +1218,9 @@ def changeOriginIndexEquiv :
     rintro ⟨n, s⟩
     simp [tsub_add_cancel_of_le (card_finset_fin_le s), Fin.cast_to_equiv]
 #align formal_multilinear_series.change_origin_index_equiv FormalMultilinearSeries.changeOriginIndexEquiv
+-/
 
-theorem change_origin_series_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : ℝβ‰₯0∞) < p.radius) :
+theorem changeOriginSeries_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : ℝβ‰₯0∞) < p.radius) :
     Summable fun s : Ξ£ k l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
       β€–p (s.1 + s.2.1)β€–β‚Š * r ^ s.2.1 * r' ^ s.1 :=
   by
@@ -1219,16 +1241,16 @@ theorem change_origin_series_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : 
   refine' NNReal.summable_sigma.2 ⟨fun n => (this n).Summable, _⟩
   simp only [(this _).tsum_eq]
   exact p.summable_nnnorm_mul_pow hr
-#align formal_multilinear_series.change_origin_series_summable_aux₁ FormalMultilinearSeries.change_origin_series_summable_aux₁
+#align formal_multilinear_series.change_origin_series_summable_aux₁ FormalMultilinearSeries.changeOriginSeries_summable_aux₁
 
-theorem change_origin_series_summable_auxβ‚‚ (hr : (r : ℝβ‰₯0∞) < p.radius) (k : β„•) :
+theorem changeOriginSeries_summable_auxβ‚‚ (hr : (r : ℝβ‰₯0∞) < p.radius) (k : β„•) :
     Summable fun s : Ξ£ l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
       β€–p (k + s.1)β€–β‚Š * r ^ s.1 :=
   by
   rcases ENNReal.lt_iff_exists_add_pos_lt.1 hr with ⟨r', h0, hr'⟩
   simpa only [mul_inv_cancel_rightβ‚€ (pow_pos h0 _).ne'] using
     ((NNReal.summable_sigma.1 (p.change_origin_series_summable_aux₁ hr')).1 k).mul_right (r' ^ k)⁻¹
-#align formal_multilinear_series.change_origin_series_summable_auxβ‚‚ FormalMultilinearSeries.change_origin_series_summable_auxβ‚‚
+#align formal_multilinear_series.change_origin_series_summable_auxβ‚‚ FormalMultilinearSeries.changeOriginSeries_summable_auxβ‚‚
 
 theorem changeOriginSeries_summable_aux₃ {r : ℝβ‰₯0} (hr : ↑r < p.radius) (k : β„•) :
     Summable fun l : β„• => β€–p.changeOriginSeries k lβ€–β‚Š * r ^ l :=
@@ -1281,11 +1303,11 @@ end
 -- in norm also converge in `F`.
 variable [CompleteSpace F] (p : FormalMultilinearSeries π•œ E F) {x y : E} {r R : ℝβ‰₯0}
 
-theorem hasFpowerSeriesOnBallChangeOrigin (k : β„•) (hr : 0 < p.radius) :
-    HasFpowerSeriesOnBall (fun x => p.changeOrigin x k) (p.changeOriginSeries k) 0 p.radius :=
+theorem hasFPowerSeriesOnBall_changeOrigin (k : β„•) (hr : 0 < p.radius) :
+    HasFPowerSeriesOnBall (fun x => p.changeOrigin x k) (p.changeOriginSeries k) 0 p.radius :=
   have := p.le_changeOriginSeries_radius k
-  ((p.changeOriginSeries k).HasFpowerSeriesOnBall (hr.trans_le this)).mono hr this
-#align formal_multilinear_series.has_fpower_series_on_ball_change_origin FormalMultilinearSeries.hasFpowerSeriesOnBallChangeOrigin
+  ((p.changeOriginSeries k).HasFPowerSeriesOnBall (hr.trans_le this)).mono hr this
+#align formal_multilinear_series.has_fpower_series_on_ball_change_origin FormalMultilinearSeries.hasFPowerSeriesOnBall_changeOrigin
 
 /-- Summing the series `p.change_origin x` at a point `y` gives back `p (x + y)`-/
 theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius) :
@@ -1352,8 +1374,8 @@ variable [CompleteSpace F] {f : E β†’ F} {p : FormalMultilinearSeries π•œ E F}
 /-- If a function admits a power series expansion `p` on a ball `B (x, r)`, then it also admits a
 power series on any subball of this ball (even with a different center), given by `p.change_origin`.
 -/
-theorem HasFpowerSeriesOnBall.changeOrigin (hf : HasFpowerSeriesOnBall f p x r)
-    (h : (β€–yβ€–β‚Š : ℝβ‰₯0∞) < r) : HasFpowerSeriesOnBall f (p.changeOrigin y) (x + y) (r - β€–yβ€–β‚Š) :=
+theorem HasFPowerSeriesOnBall.changeOrigin (hf : HasFPowerSeriesOnBall f p x r)
+    (h : (β€–yβ€–β‚Š : ℝβ‰₯0∞) < r) : HasFPowerSeriesOnBall f (p.changeOrigin y) (x + y) (r - β€–yβ€–β‚Š) :=
   { r_le := by
       apply le_trans _ p.change_origin_radius
       exact tsub_le_tsub hf.r_le le_rfl
@@ -1366,22 +1388,22 @@ theorem HasFpowerSeriesOnBall.changeOrigin (hf : HasFpowerSeriesOnBall f p x r)
         exact_mod_cast nnnorm_add_le y z
       Β· refine' EMetric.ball_subset_ball (le_trans _ p.change_origin_radius) hz
         exact tsub_le_tsub hf.r_le le_rfl }
-#align has_fpower_series_on_ball.change_origin HasFpowerSeriesOnBall.changeOrigin
+#align has_fpower_series_on_ball.change_origin HasFPowerSeriesOnBall.changeOrigin
 
 /-- If a function admits a power series expansion `p` on an open ball `B (x, r)`, then
 it is analytic at every point of this ball. -/
-theorem HasFpowerSeriesOnBall.analyticAt_of_mem (hf : HasFpowerSeriesOnBall f p x r)
+theorem HasFPowerSeriesOnBall.analyticAt_of_mem (hf : HasFPowerSeriesOnBall f p x r)
     (h : y ∈ EMetric.ball x r) : AnalyticAt π•œ f y :=
   by
   have : (β€–y - xβ€–β‚Š : ℝβ‰₯0∞) < r := by simpa [edist_eq_coe_nnnorm_sub] using h
   have := hf.change_origin this
   rw [add_sub_cancel'_right] at this 
   exact this.analytic_at
-#align has_fpower_series_on_ball.analytic_at_of_mem HasFpowerSeriesOnBall.analyticAt_of_mem
+#align has_fpower_series_on_ball.analytic_at_of_mem HasFPowerSeriesOnBall.analyticAt_of_mem
 
-theorem HasFpowerSeriesOnBall.analyticOn (hf : HasFpowerSeriesOnBall f p x r) :
+theorem HasFPowerSeriesOnBall.analyticOn (hf : HasFPowerSeriesOnBall f p x r) :
     AnalyticOn π•œ f (EMetric.ball x r) := fun y hy => hf.analyticAt_of_mem hy
-#align has_fpower_series_on_ball.analytic_on HasFpowerSeriesOnBall.analyticOn
+#align has_fpower_series_on_ball.analytic_on HasFPowerSeriesOnBall.analyticOn
 
 variable (π•œ f)
 
@@ -1405,8 +1427,8 @@ variable {p : FormalMultilinearSeries π•œ π•œ E} {f : π•œ β†’ E} {zβ‚€ : π•œ
 /-- A function `f : π•œ β†’ E` has `p` as power series expansion at a point `zβ‚€` iff it is the sum of
 `p` in a neighborhood of `zβ‚€`. This makes some proofs easier by hiding the fact that
 `has_fpower_series_at` depends on `p.radius`. -/
-theorem hasFpowerSeriesAt_iff :
-    HasFpowerSeriesAt f p zβ‚€ ↔ βˆ€αΆ  z in 𝓝 0, HasSum (fun n => z ^ n β€’ p.coeff n) (f (zβ‚€ + z)) :=
+theorem hasFPowerSeriesAt_iff :
+    HasFPowerSeriesAt f p zβ‚€ ↔ βˆ€αΆ  z in 𝓝 0, HasSum (fun n => z ^ n β€’ p.coeff n) (f (zβ‚€ + z)) :=
   by
   refine'
     ⟨fun ⟨r, r_le, r_pos, h⟩ =>
@@ -1429,17 +1451,17 @@ theorem hasFpowerSeriesAt_iff :
       dist_zero_right] at h ⊒
     refine' fun y hyp hyr => h _
     simpa [nndist_eq_nnnorm, Real.lt_toNNReal_iff_coe_lt] using hyr
-#align has_fpower_series_at_iff hasFpowerSeriesAt_iff
+#align has_fpower_series_at_iff hasFPowerSeriesAt_iff
 
 /- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr Β«exprβˆ€αΆ  in , Β»((z), (nhds() 0 : filter π•œ), has_sum (Ξ» n, _) (f Β«expr + Β»(zβ‚€, z)))]] -/
-theorem hasFpowerSeriesAt_iff' :
-    HasFpowerSeriesAt f p zβ‚€ ↔ βˆ€αΆ  z in 𝓝 zβ‚€, HasSum (fun n => (z - zβ‚€) ^ n β€’ p.coeff n) (f z) :=
+theorem hasFPowerSeriesAt_iff' :
+    HasFPowerSeriesAt f p zβ‚€ ↔ βˆ€αΆ  z in 𝓝 zβ‚€, HasSum (fun n => (z - zβ‚€) ^ n β€’ p.coeff n) (f z) :=
   by
-  rw [← map_add_left_nhds_zero, eventually_map, hasFpowerSeriesAt_iff]
+  rw [← map_add_left_nhds_zero, eventually_map, hasFPowerSeriesAt_iff]
   trace
     "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr Β«exprβˆ€αΆ  in , Β»((z), (nhds() 0 : filter π•œ), has_sum (Ξ» n, _) (f Β«expr + Β»(zβ‚€, z)))]]"
   rw [add_sub_cancel']
-#align has_fpower_series_at_iff' hasFpowerSeriesAt_iff'
+#align has_fpower_series_at_iff' hasFPowerSeriesAt_iff'
 
 end
 
Diff
@@ -156,7 +156,7 @@ theorem le_radius_of_summable_nnnorm (h : Summable fun n => β€–p nβ€–β‚Š * r ^ n
 #align formal_multilinear_series.le_radius_of_summable_nnnorm FormalMultilinearSeries.le_radius_of_summable_nnnorm
 
 theorem le_radius_of_summable (h : Summable fun n => β€–p nβ€– * r ^ n) : ↑r ≀ p.radius :=
-  p.le_radius_of_summable_nnnorm <| by simp only [← coe_nnnorm] at h; exact_mod_cast h
+  p.le_radius_of_summable_nnnorm <| by simp only [← coe_nnnorm] at h ; exact_mod_cast h
 #align formal_multilinear_series.le_radius_of_summable FormalMultilinearSeries.le_radius_of_summable
 
 theorem radius_eq_top_of_forall_nNReal_isBigO
@@ -188,11 +188,11 @@ theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, (fun n => β€–p nβ€– * r ^ n) =o[atTop] pow a :=
   by
   rw [(TFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 4]
-  simp only [radius, lt_iSup_iff] at h
+  simp only [radius, lt_iSup_iff] at h 
   rcases h with ⟨t, C, hC, rt⟩
-  rw [ENNReal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt
+  rw [ENNReal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt 
   have : 0 < (t : ℝ) := r.coe_nonneg.trans_lt rt
-  rw [← div_lt_one this] at rt
+  rw [← div_lt_one this] at rt 
   refine' ⟨_, rt, C, Or.inr zero_lt_one, fun n => _⟩
   calc
     |β€–p nβ€– * r ^ n| = β€–p nβ€– * t ^ n * (r / t) ^ n := by
@@ -225,12 +225,12 @@ theorem lt_radius_of_isBigO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ
   by
   rcases((TFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 2 5).mp ⟨a, ha, hp⟩ with
     ⟨a, ha, C, hC, hp⟩
-  rw [← pos_iff_ne_zero, ← NNReal.coe_pos] at hβ‚€
+  rw [← pos_iff_ne_zero, ← NNReal.coe_pos] at hβ‚€ 
   lift a to ℝβ‰₯0 using ha.1.le
   have : (r : ℝ) < r / a := by
     simpa only [div_one] using (div_lt_div_left hβ‚€ zero_lt_one ha.1).2 ha.2
-  norm_cast  at this
-  rw [← ENNReal.coe_lt_coe] at this
+  norm_cast  at this 
+  rw [← ENNReal.coe_lt_coe] at this 
   refine' this.trans_le (p.le_radius_of_bound C fun n => _)
   rw [NNReal.coe_div, div_pow, ← mul_div_assoc, div_le_iff (pow_pos ha.1 n)]
   exact (le_abs_self _).trans (hp n)
@@ -284,7 +284,7 @@ theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯
 theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => β€–p n fun _ => xβ€– :=
   by
-  rw [mem_emetric_ball_zero_iff] at hx
+  rw [mem_emetric_ball_zero_iff] at hx 
   refine'
     summable_of_nonneg_of_le (fun _ => norm_nonneg _) (fun n => ((p n).le_op_norm _).trans_eq _)
       (p.summable_norm_mul_pow hx)
@@ -324,7 +324,7 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
 
 /-- If the radius of `p` is positive, then `β€–pβ‚™β€–` grows at most geometrically. -/
 theorem le_mul_pow_of_radius_pos (p : FormalMultilinearSeries π•œ E F) (h : 0 < p.radius) :
-    βˆƒ (C r : _)(hC : 0 < C)(hr : 0 < r), βˆ€ n, β€–p nβ€– ≀ C * r ^ n :=
+    βˆƒ (C r : _) (hC : 0 < C) (hr : 0 < r), βˆ€ n, β€–p nβ€– ≀ C * r ^ n :=
   by
   rcases ENNReal.lt_iff_exists_nnreal_btwn.1 h with ⟨r, r0, rlt⟩
   have rpos : 0 < (r : ℝ) := by simp [ENNReal.coe_pos.1 r0]
@@ -339,7 +339,7 @@ theorem min_radius_le_radius_add (p q : FormalMultilinearSeries π•œ E F) :
     min p.radius q.radius ≀ (p + q).radius :=
   by
   refine' ENNReal.le_of_forall_nnreal_lt fun r hr => _
-  rw [lt_min_iff] at hr
+  rw [lt_min_iff] at hr 
   have := ((p.is_o_one_of_lt_radius hr.1).add (q.is_o_one_of_lt_radius hr.2)).IsBigO
   refine' (p + q).le_radius_of_isBigO ((is_O_of_le _ fun n => _).trans this)
   rw [← add_mul, norm_mul, norm_mul, norm_norm]
@@ -379,7 +379,7 @@ variable {f g : E β†’ F} {p pf pg : FormalMultilinearSeries π•œ E F} {x : E} {r
 a power series on the ball of radius `r > 0` around `x` if `f (x + y) = βˆ‘' pβ‚™ yⁿ` for all `β€–yβ€– < r`.
 -/
 structure HasFpowerSeriesOnBall (f : E β†’ F) (p : FormalMultilinearSeries π•œ E F) (x : E) (r : ℝβ‰₯0∞) :
-  Prop where
+    Prop where
   r_le : r ≀ p.radius
   r_pos : 0 < r
   HasSum :
@@ -650,7 +650,7 @@ theorem HasFpowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
   obtain ⟨a, ha, C, hC, hp⟩ : βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n, β€–p nβ€– * r' ^ n ≀ C * a ^ n :=
     p.norm_mul_pow_le_mul_pow_of_lt_radius (h.trans_le hf.r_le)
   refine' ⟨a, ha, C / (1 - a), div_pos hC (sub_pos.2 ha.2), fun y hy n => _⟩
-  have yr' : β€–yβ€– < r' := by rw [ball_zero_eq] at hy; exact hy
+  have yr' : β€–yβ€– < r' := by rw [ball_zero_eq] at hy ; exact hy
   have hr'0 : 0 < (r' : ℝ) := (norm_nonneg _).trans_lt yr'
   have : y ∈ EMetric.ball (0 : E) r :=
     by
@@ -690,9 +690,9 @@ theorem HasFpowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
           βˆ€ n, β€–f (x + y) - p.partial_sum n yβ€– ≀ C * (a * (β€–yβ€– / r')) ^ n
   exact hf.uniform_geometric_approx' h
   refine' ⟨a, ha, C, hC, fun y hy n => (hp y hy n).trans _⟩
-  have yr' : β€–yβ€– < r' := by rwa [ball_zero_eq] at hy
+  have yr' : β€–yβ€– < r' := by rwa [ball_zero_eq] at hy 
   refine' mul_le_mul_of_nonneg_left (pow_le_pow_of_le_left _ _ _) hC.lt.le
-  exacts[mul_nonneg ha.1.le (div_nonneg (norm_nonneg y) r'.coe_nonneg),
+  exacts [mul_nonneg ha.1.le (div_nonneg (norm_nonneg y) r'.coe_nonneg),
     mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)]
 #align has_fpower_series_on_ball.uniform_geometric_approx HasFpowerSeriesOnBall.uniform_geometric_approx
 
@@ -730,7 +730,7 @@ theorem HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
   obtain ⟨a, ha, C, hC : 0 < C, hp⟩ :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n : β„•, β€–p nβ€– * ↑r' ^ n ≀ C * a ^ n
   exact p.norm_mul_pow_le_mul_pow_of_lt_radius (hr.trans_le hf.r_le)
-  simp only [← le_div_iff (pow_pos (NNReal.coe_pos.2 hr'0) _)] at hp
+  simp only [← le_div_iff (pow_pos (NNReal.coe_pos.2 hr'0) _)] at hp 
   set L : E Γ— E β†’ ℝ := fun y =>
     C * (a / r') ^ 2 * (β€–y - (x, x)β€– * β€–y.1 - y.2β€–) * (a / (1 - a) ^ 2 + 2 / (1 - a))
   have hL : βˆ€ y ∈ EMetric.ball (x, x) r', β€–f y.1 - f y.2 - p 1 fun _ => y.1 - y.2β€– ≀ L y :=
@@ -746,7 +746,7 @@ theorem HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
         zero_add, ← Subsingleton.pi_single_eq (0 : Fin 1) (y.1 - x), Pi.single, ←
         Subsingleton.pi_single_eq (0 : Fin 1) (y.2 - x), Pi.single, ← (p 1).map_sub, ← Pi.single,
         Subsingleton.pi_single_eq, sub_sub_sub_cancel_right]
-    rw [EMetric.mem_ball, edist_eq_coe_nnnorm_sub, ENNReal.coe_lt_coe] at hy'
+    rw [EMetric.mem_ball, edist_eq_coe_nnnorm_sub, ENNReal.coe_lt_coe] at hy' 
     set B : β„• β†’ ℝ := fun n => C * (a / r') ^ 2 * (β€–y - (x, x)β€– * β€–y.1 - y.2β€–) * ((n + 2) * a ^ n)
     have hAB : βˆ€ n, β€–A (n + 2)β€– ≀ B n := fun n =>
       calc
@@ -760,7 +760,7 @@ theorem HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
           apply_rules [mul_le_mul_of_nonneg_right, mul_le_mul, hp, pow_le_pow_of_le_left, hy'.le,
             norm_nonneg, pow_nonneg, div_nonneg, mul_nonneg, Nat.cast_nonneg, hC.le, r'.coe_nonneg,
             ha.1.le]
-        _ = B n := by field_simp [B, pow_succ, hr'0.ne'] ;
+        _ = B n := by field_simp [B, pow_succ, hr'0.ne'];
           simp only [mul_assoc, mul_comm, mul_left_comm]
         
     have hBL : HasSum B (L y) := by
@@ -822,7 +822,7 @@ theorem HasFpowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFpowerS
   refine' Metric.tendstoUniformlyOn_iff.2 fun Ξ΅ Ξ΅pos => _
   have L : tendsto (fun n => (C : ℝ) * a ^ n) at_top (𝓝 ((C : ℝ) * 0)) :=
     tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_0_of_lt_1 ha.1.le ha.2)
-  rw [MulZeroClass.mul_zero] at L
+  rw [MulZeroClass.mul_zero] at L 
   refine' (L.eventually (gt_mem_nhds Ξ΅pos)).mono fun n hn y hy => _
   rw [dist_eq_norm]
   exact (hp y hy n).trans_lt hn
@@ -997,7 +997,7 @@ theorem HasFpowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {
       simp only [hk b (this.lt_of_ne hnb), Pi.zero_apply, zero_apply]
     Β· exact False.elim (hn (finset.mem_range.mpr (lt_add_one k)))
   replace h := h.is_O_sub_partial_sum_pow k.succ
-  simp only [psum_eq, zero_sub, Pi.zero_apply, Asymptotics.isBigO_neg_left] at h
+  simp only [psum_eq, zero_sub, Pi.zero_apply, Asymptotics.isBigO_neg_left] at h 
   exact h.continuous_multilinear_map_apply_eq_zero
 #align has_fpower_series_at.apply_eq_zero HasFpowerSeriesAt.apply_eq_zero
 
@@ -1168,7 +1168,7 @@ The forward map sends `(k, l, s)` to `(k + l, s)` and the inverse map sends `(n,
 with non-definitional equalities. -/
 @[simps]
 def changeOriginIndexEquiv :
-    (Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) ≃ Ξ£n : β„•, Finset (Fin n)
+    (Ξ£ k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) ≃ Ξ£ n : β„•, Finset (Fin n)
     where
   toFun s := ⟨s.1 + s.2.1, s.2.2⟩
   invFun s :=
@@ -1187,7 +1187,7 @@ def changeOriginIndexEquiv :
           l' = l β†’
             βˆ€ (hkl : k + l = k' + l') (hs'),
               (⟨k', l', ⟨Finset.map (Fin.cast hkl).toEquiv.toEmbedding s, hs'⟩⟩ :
-                  Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) =
+                  Ξ£ k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) =
                 ⟨k, l, ⟨s, hs⟩⟩
       by apply this <;> simp only [hs, add_tsub_cancel_right]
     rintro _ _ rfl rfl hkl hs'
@@ -1199,7 +1199,7 @@ def changeOriginIndexEquiv :
 #align formal_multilinear_series.change_origin_index_equiv FormalMultilinearSeries.changeOriginIndexEquiv
 
 theorem change_origin_series_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : ℝβ‰₯0∞) < p.radius) :
-    Summable fun s : Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
+    Summable fun s : Ξ£ k l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
       β€–p (s.1 + s.2.1)β€–β‚Š * r ^ s.2.1 * r' ^ s.1 :=
   by
   rw [← change_origin_index_equiv.symm.summable_iff]
@@ -1222,7 +1222,7 @@ theorem change_origin_series_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : 
 #align formal_multilinear_series.change_origin_series_summable_aux₁ FormalMultilinearSeries.change_origin_series_summable_aux₁
 
 theorem change_origin_series_summable_auxβ‚‚ (hr : (r : ℝβ‰₯0∞) < p.radius) (k : β„•) :
-    Summable fun s : Ξ£l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
+    Summable fun s : Ξ£ l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
       β€–p (k + s.1)β€–β‚Š * r ^ s.1 :=
   by
   rcases ENNReal.lt_iff_exists_add_pos_lt.1 hr with ⟨r', h0, hr'⟩
@@ -1247,7 +1247,7 @@ theorem le_changeOriginSeries_radius (k : β„•) : p.radius ≀ (p.changeOriginSer
 
 theorem nnnorm_changeOrigin_le (k : β„•) (h : (β€–xβ€–β‚Š : ℝβ‰₯0∞) < p.radius) :
     β€–p.changeOrigin x kβ€–β‚Š ≀
-      βˆ‘' s : Ξ£l : β„•, { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + s.1)β€–β‚Š * β€–xβ€–β‚Š ^ s.1 :=
+      βˆ‘' s : Ξ£ l : β„•, { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + s.1)β€–β‚Š * β€–xβ€–β‚Š ^ s.1 :=
   by
   refine' tsum_of_nnnorm_bounded _ fun l => p.nnnorm_change_origin_series_apply_le_tsum k l x
   have := p.change_origin_series_summable_auxβ‚‚ h k
@@ -1261,13 +1261,13 @@ convergence.-/
 theorem changeOrigin_radius : p.radius - β€–xβ€–β‚Š ≀ (p.changeOrigin x).radius :=
   by
   refine' ENNReal.le_of_forall_pos_nnreal_lt fun r h0 hr => _
-  rw [lt_tsub_iff_right, add_comm] at hr
+  rw [lt_tsub_iff_right, add_comm] at hr 
   have hr' : (β€–xβ€–β‚Š : ℝβ‰₯0∞) < p.radius := (le_add_right le_rfl).trans_lt hr
   apply le_radius_of_summable_nnnorm
   have :
     βˆ€ k : β„•,
       β€–p.change_origin x kβ€–β‚Š * r ^ k ≀
-        (βˆ‘' s : Ξ£l : β„•, { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + s.1)β€–β‚Š * β€–xβ€–β‚Š ^ s.1) *
+        (βˆ‘' s : Ξ£ l : β„•, { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + s.1)β€–β‚Š * β€–xβ€–β‚Š ^ s.1) *
           r ^ k :=
     fun k => mul_le_mul_right' (p.nnnorm_change_origin_le k hr') (r ^ k)
   refine' NNReal.summable_of_le this _
@@ -1302,7 +1302,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     by
     refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ h)
     exact_mod_cast nnnorm_add_le x y
-  set f : (Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) β†’ F := fun s =>
+  set f : (Ξ£ k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) β†’ F := fun s =>
     p.change_origin_series_term s.1 s.2.1 s.2.2 s.2.2.2 (fun _ => x) fun _ => y
   have hsf : Summable f :=
     by
@@ -1315,7 +1315,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     Β· dsimp only [f]
       refine' ContinuousMultilinearMap.hasSum_eval _ _
       have := (p.has_fpower_series_on_ball_change_origin k radius_pos).HasSum x_mem_ball
-      rw [zero_add] at this
+      rw [zero_add] at this 
       refine' HasSum.sigma_of_hasSum this (fun l => _) _
       Β· simp only [change_origin_series, ContinuousMultilinearMap.sum_apply]
         apply hasSum_fintype
@@ -1360,7 +1360,7 @@ theorem HasFpowerSeriesOnBall.changeOrigin (hf : HasFpowerSeriesOnBall f p x r)
     r_pos := by simp [h]
     HasSum := fun z hz => by
       convert(p.change_origin y).HasSum _
-      Β· rw [mem_emetric_ball_zero_iff, lt_tsub_iff_right, add_comm] at hz
+      Β· rw [mem_emetric_ball_zero_iff, lt_tsub_iff_right, add_comm] at hz 
         rw [p.change_origin_eval (hz.trans_le hf.r_le), add_assoc, hf.sum]
         refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ hz)
         exact_mod_cast nnnorm_add_le y z
@@ -1375,7 +1375,7 @@ theorem HasFpowerSeriesOnBall.analyticAt_of_mem (hf : HasFpowerSeriesOnBall f p
   by
   have : (β€–y - xβ€–β‚Š : ℝβ‰₯0∞) < r := by simpa [edist_eq_coe_nnnorm_sub] using h
   have := hf.change_origin this
-  rw [add_sub_cancel'_right] at this
+  rw [add_sub_cancel'_right] at this 
   exact this.analytic_at
 #align has_fpower_series_on_ball.analytic_at_of_mem HasFpowerSeriesOnBall.analyticAt_of_mem
 
@@ -1418,7 +1418,7 @@ theorem hasFpowerSeriesAt_iff :
     obtain ⟨z, z_pos, le_z⟩ := NormedField.exists_norm_lt π•œ r_pos.lt
     have : (β€–zβ€–β‚Š : ENNReal) ≀ p.radius :=
       by
-      simp only [dist_zero_right] at h
+      simp only [dist_zero_right] at h 
       apply FormalMultilinearSeries.le_radius_of_tendsto
       convert tendsto_norm.comp (h le_z).Summable.tendsto_atTop_zero
       funext <;> simp [norm_smul, mul_comm]
@@ -1426,7 +1426,7 @@ theorem hasFpowerSeriesAt_iff :
     simp only [ENNReal.coe_pos]
     exact zero_lt_iff.mpr (nnnorm_ne_zero_iff.mpr (norm_pos_iff.mp z_pos))
   Β· simp only [EMetric.mem_ball, lt_inf_iff, edist_lt_coe, apply_eq_pow_smul_coeff, and_imp,
-      dist_zero_right] at h⊒
+      dist_zero_right] at h ⊒
     refine' fun y hyp hyr => h _
     simpa [nndist_eq_nnnorm, Real.lt_toNNReal_iff_coe_lt] using hyr
 #align has_fpower_series_at_iff hasFpowerSeriesAt_iff
Diff
@@ -78,7 +78,7 @@ noncomputable section
 
 variable {π•œ E F G : Type _}
 
-open Topology Classical BigOperators NNReal Filter ENNReal
+open scoped Topology Classical BigOperators NNReal Filter ENNReal
 
 open Set Filter Asymptotics
 
Diff
@@ -156,9 +156,7 @@ theorem le_radius_of_summable_nnnorm (h : Summable fun n => β€–p nβ€–β‚Š * r ^ n
 #align formal_multilinear_series.le_radius_of_summable_nnnorm FormalMultilinearSeries.le_radius_of_summable_nnnorm
 
 theorem le_radius_of_summable (h : Summable fun n => β€–p nβ€– * r ^ n) : ↑r ≀ p.radius :=
-  p.le_radius_of_summable_nnnorm <| by
-    simp only [← coe_nnnorm] at h
-    exact_mod_cast h
+  p.le_radius_of_summable_nnnorm <| by simp only [← coe_nnnorm] at h; exact_mod_cast h
 #align formal_multilinear_series.le_radius_of_summable FormalMultilinearSeries.le_radius_of_summable
 
 theorem radius_eq_top_of_forall_nNReal_isBigO
@@ -294,10 +292,7 @@ theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
 #align formal_multilinear_series.summable_norm_apply FormalMultilinearSeries.summable_norm_apply
 
 theorem summable_nnnorm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0} (h : ↑r < p.radius) :
-    Summable fun n : β„• => β€–p nβ€–β‚Š * r ^ n :=
-  by
-  rw [← NNReal.summable_coe]
-  push_cast
+    Summable fun n : β„• => β€–p nβ€–β‚Š * r ^ n := by rw [← NNReal.summable_coe]; push_cast ;
   exact p.summable_norm_mul_pow h
 #align formal_multilinear_series.summable_nnnorm_mul_pow FormalMultilinearSeries.summable_nnnorm_mul_pow
 
@@ -442,9 +437,7 @@ theorem HasFpowerSeriesOnBall.compSub (hf : HasFpowerSeriesOnBall f p x r) (y :
     HasFpowerSeriesOnBall (fun z => f (z - y)) p (x + y) r :=
   { r_le := hf.r_le
     r_pos := hf.r_pos
-    HasSum := fun z hz => by
-      convert hf.has_sum hz
-      abel }
+    HasSum := fun z hz => by convert hf.has_sum hz; abel }
 #align has_fpower_series_on_ball.comp_sub HasFpowerSeriesOnBall.compSub
 
 theorem HasFpowerSeriesOnBall.hasSum_sub (hf : HasFpowerSeriesOnBall f p x r) {y : E}
@@ -560,9 +553,7 @@ theorem AnalyticAt.add (hf : AnalyticAt π•œ f x) (hg : AnalyticAt π•œ g x) : A
 
 theorem HasFpowerSeriesOnBall.neg (hf : HasFpowerSeriesOnBall f pf x r) :
     HasFpowerSeriesOnBall (-f) (-pf) x r :=
-  { r_le := by
-      rw [pf.radius_neg]
-      exact hf.r_le
+  { r_le := by rw [pf.radius_neg]; exact hf.r_le
     r_pos := hf.r_pos
     HasSum := fun y hy => (hf.HasSum hy).neg }
 #align has_fpower_series_on_ball.neg HasFpowerSeriesOnBall.neg
@@ -659,9 +650,7 @@ theorem HasFpowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
   obtain ⟨a, ha, C, hC, hp⟩ : βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n, β€–p nβ€– * r' ^ n ≀ C * a ^ n :=
     p.norm_mul_pow_le_mul_pow_of_lt_radius (h.trans_le hf.r_le)
   refine' ⟨a, ha, C / (1 - a), div_pos hC (sub_pos.2 ha.2), fun y hy n => _⟩
-  have yr' : β€–yβ€– < r' := by
-    rw [ball_zero_eq] at hy
-    exact hy
+  have yr' : β€–yβ€– < r' := by rw [ball_zero_eq] at hy; exact hy
   have hr'0 : 0 < (r' : ℝ) := (norm_nonneg _).trans_lt yr'
   have : y ∈ EMetric.ball (0 : E) r :=
     by
@@ -747,9 +736,7 @@ theorem HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
   have hL : βˆ€ y ∈ EMetric.ball (x, x) r', β€–f y.1 - f y.2 - p 1 fun _ => y.1 - y.2β€– ≀ L y :=
     by
     intro y hy'
-    have hy : y ∈ EMetric.ball x r Γ—Λ’ EMetric.ball x r :=
-      by
-      rw [EMetric.ball_prod_same]
+    have hy : y ∈ EMetric.ball x r Γ—Λ’ EMetric.ball x r := by rw [EMetric.ball_prod_same];
       exact EMetric.ball_subset_ball hr.le hy'
     set A : β„• β†’ F := fun n => (p n fun _ => y.1 - x) - p n fun _ => y.2 - x
     have hA : HasSum (fun n => A (n + 2)) (f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) :=
@@ -767,16 +754,13 @@ theorem HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
           simpa only [Fintype.card_fin, pi_norm_const (_ : E), Prod.norm_def, Pi.sub_def,
             Prod.fst_sub, Prod.snd_sub, sub_sub_sub_cancel_right] using
             (p <| n + 2).norm_image_sub_le (fun _ => y.1 - x) fun _ => y.2 - x
-        _ = β€–p (n + 2)β€– * β€–y - (x, x)β€– ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) :=
-          by
-          rw [pow_succ β€–y - (x, x)β€–]
-          ring
+        _ = β€–p (n + 2)β€– * β€–y - (x, x)β€– ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) := by
+          rw [pow_succ β€–y - (x, x)β€–]; ring
         _ ≀ C * a ^ (n + 2) / r' ^ (n + 2) * r' ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) := by
           apply_rules [mul_le_mul_of_nonneg_right, mul_le_mul, hp, pow_le_pow_of_le_left, hy'.le,
             norm_nonneg, pow_nonneg, div_nonneg, mul_nonneg, Nat.cast_nonneg, hC.le, r'.coe_nonneg,
             ha.1.le]
-        _ = B n := by
-          field_simp [B, pow_succ, hr'0.ne']
+        _ = B n := by field_simp [B, pow_succ, hr'0.ne'] ;
           simp only [mul_assoc, mul_comm, mul_left_comm]
         
     have hBL : HasSum B (L y) := by
@@ -867,8 +851,7 @@ theorem HasFpowerSeriesOnBall.tendsto_uniformly_on' {r' : ℝβ‰₯0} (hf : HasFpow
   by
   convert(hf.tendsto_uniformly_on h).comp fun y => y - x
   · simp [(· ∘ ·)]
-  Β· ext z
-    simp [dist_eq_norm]
+  Β· ext z; simp [dist_eq_norm]
 #align has_fpower_series_on_ball.tendsto_uniformly_on' HasFpowerSeriesOnBall.tendsto_uniformly_on'
 
 /-- If a function admits a power series expansion at `x`, then it is the locally uniform limit of
@@ -881,10 +864,8 @@ theorem HasFpowerSeriesOnBall.tendsto_locally_uniformly_on' (hf : HasFpowerSerie
   have A : ContinuousOn (fun y : E => y - x) (EMetric.ball (x : E) r) :=
     (continuous_id.sub continuous_const).ContinuousOn
   convert hf.tendsto_locally_uniformly_on.comp (fun y : E => y - x) _ A
-  Β· ext z
-    simp
-  Β· intro z
-    simp [edist_eq_coe_nnnorm, edist_eq_coe_nnnorm_sub]
+  Β· ext z; simp
+  Β· intro z; simp [edist_eq_coe_nnnorm, edist_eq_coe_nnnorm_sub]
 #align has_fpower_series_on_ball.tendsto_locally_uniformly_on' HasFpowerSeriesOnBall.tendsto_locally_uniformly_on'
 
 /-- If a function admits a power series expansion on a disk, then it is continuous there. -/
@@ -917,9 +898,7 @@ protected theorem FormalMultilinearSeries.hasFpowerSeriesOnBall [CompleteSpace F
     HasFpowerSeriesOnBall p.Sum p 0 p.radius :=
   { r_le := le_rfl
     r_pos := h
-    HasSum := fun y hy => by
-      rw [zero_add]
-      exact p.has_sum hy }
+    HasSum := fun y hy => by rw [zero_add]; exact p.has_sum hy }
 #align formal_multilinear_series.has_fpower_series_on_ball FormalMultilinearSeries.hasFpowerSeriesOnBall
 
 theorem HasFpowerSeriesOnBall.sum (h : HasFpowerSeriesOnBall f p x r) {y : E}
@@ -985,11 +964,8 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
       calc
         β€–p fun i => k β€’ yβ€– ≀ c * β€–k β€’ yβ€– ^ (n.succ + 1) := by
           simpa only [norm_pow, norm_norm] using ht (k β€’ y) (δΡ (mem_ball_zero_iff.mpr h₁))
-        _ = β€–kβ€– ^ n.succ * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) :=
-          by
-          simp only [norm_smul, mul_pow]
-          rw [pow_succ]
-          ring
+        _ = β€–kβ€– ^ n.succ * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) := by simp only [norm_smul, mul_pow];
+          rw [pow_succ]; ring
         
     have h₃ : β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1)) < Ξ΅ :=
       inv_mul_cancel_rightβ‚€ hβ‚€.ne.symm Ξ΅ β–Έ
@@ -1001,13 +977,9 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
           congr_arg norm (p.map_smul_univ (fun i : Fin n.succ => k⁻¹) fun i : Fin n.succ => k β€’ y)
       _ ≀ β€–k⁻¹ ^ n.succβ€– * (β€–kβ€– ^ n.succ * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1)))) :=
         (mul_le_mul_of_nonneg_left hβ‚‚ (norm_nonneg _))
-      _ = β€–(k⁻¹ * k) ^ n.succβ€– * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) :=
-        by
-        rw [← mul_assoc]
+      _ = β€–(k⁻¹ * k) ^ n.succβ€– * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) := by rw [← mul_assoc];
         simp [norm_mul, mul_pow]
-      _ ≀ 0 + Ξ΅ := by
-        rw [inv_mul_cancel (norm_pos_iff.mp k_pos)]
-        simpa using h₃.le
+      _ ≀ 0 + Ξ΅ := by rw [inv_mul_cancel (norm_pos_iff.mp k_pos)]; simpa using h₃.le
       
 #align asymptotics.is_O.continuous_multilinear_map_apply_eq_zero Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero
 
@@ -1031,10 +1003,8 @@ theorem HasFpowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {
 
 /-- A one-dimensional formal multilinear series representing the zero function is zero. -/
 theorem HasFpowerSeriesAt.eq_zero {p : FormalMultilinearSeries π•œ π•œ E} {x : π•œ}
-    (h : HasFpowerSeriesAt 0 p x) : p = 0 := by
-  ext (n x)
-  rw [← mk_pi_field_apply_one_eq_self (p n)]
-  simp [h.apply_eq_zero n 1]
+    (h : HasFpowerSeriesAt 0 p x) : p = 0 := by ext (n x);
+  rw [← mk_pi_field_apply_one_eq_self (p n)]; simp [h.apply_eq_zero n 1]
 #align has_fpower_series_at.eq_zero HasFpowerSeriesAt.eq_zero
 
 /-- One-dimensional formal multilinear series representing the same function are equal. -/
@@ -1243,8 +1213,7 @@ theorem change_origin_series_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : 
     intro n
     -- TODO: why `simp only [tsub_add_cancel_of_le (card_finset_fin_le _)]` fails?
     convert_to HasSum (fun s : Finset (Fin n) => β€–p nβ€–β‚Š * (r ^ s.card * r' ^ (n - s.card))) _
-    Β· ext1 s
-      rw [tsub_add_cancel_of_le (card_finset_fin_le _), mul_assoc]
+    Β· ext1 s; rw [tsub_add_cancel_of_le (card_finset_fin_le _), mul_assoc]
     rw [← Fin.sum_pow_mul_eq_add_pow]
     exact (hasSum_fintype _).mul_left _
   refine' NNReal.summable_sigma.2 ⟨fun n => (this n).Summable, _⟩
@@ -1338,8 +1307,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
   have hsf : Summable f :=
     by
     refine' summable_of_nnnorm_bounded _ (p.change_origin_series_summable_aux₁ h) _
-    rintro ⟨k, l, s, hs⟩
-    dsimp only [Subtype.coe_mk]
+    rintro ⟨k, l, s, hs⟩; dsimp only [Subtype.coe_mk]
     exact p.nnnorm_change_origin_series_term_apply_le _ _ _ _ _ _
   have hf : HasSum f ((p.change_origin x).Sum y) :=
     by
@@ -1371,9 +1339,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     βˆ€ (m) (hm : n = m),
       p n (s.piecewise (fun _ => x) fun _ => y) =
         p m ((s.map (Fin.cast hm).toEquiv.toEmbedding).piecewise (fun _ => x) fun _ => y) :=
-    by
-    rintro m rfl
-    simp
+    by rintro m rfl; simp
   apply this
 #align formal_multilinear_series.change_origin_eval FormalMultilinearSeries.changeOrigin_eval
 
Diff
@@ -131,7 +131,7 @@ def radius (p : FormalMultilinearSeries π•œ E F) : ℝβ‰₯0∞ :=
 /-- If `β€–pβ‚™β€– rⁿ` is bounded in `n`, then the radius of `p` is at least `r`. -/
 theorem le_radius_of_bound (C : ℝ) {r : ℝβ‰₯0} (h : βˆ€ n : β„•, β€–p nβ€– * r ^ n ≀ C) :
     (r : ℝβ‰₯0∞) ≀ p.radius :=
-  le_supα΅’_of_le r <| le_supα΅’_of_le C <| le_supα΅’ (fun _ => (r : ℝβ‰₯0∞)) h
+  le_iSup_of_le r <| le_iSup_of_le C <| le_iSup (fun _ => (r : ℝβ‰₯0∞)) h
 #align formal_multilinear_series.le_radius_of_bound FormalMultilinearSeries.le_radius_of_bound
 
 /-- If `β€–pβ‚™β€– rⁿ` is bounded in `n`, then the radius of `p` is at least `r`. -/
@@ -190,7 +190,7 @@ theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, (fun n => β€–p nβ€– * r ^ n) =o[atTop] pow a :=
   by
   rw [(TFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 4]
-  simp only [radius, lt_supα΅’_iff] at h
+  simp only [radius, lt_iSup_iff] at h
   rcases h with ⟨t, C, hC, rt⟩
   rw [ENNReal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt
   have : 0 < (t : ℝ) := r.coe_nonneg.trans_lt rt
Diff
@@ -189,7 +189,7 @@ for some `0 < a < 1`, `β€–p nβ€– rⁿ = o(aⁿ)`. -/
 theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, (fun n => β€–p nβ€– * r ^ n) =o[atTop] pow a :=
   by
-  rw [(tFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 4]
+  rw [(TFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 4]
   simp only [radius, lt_supα΅’_iff] at h
   rcases h with ⟨t, C, hC, rt⟩
   rw [ENNReal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt
@@ -215,7 +215,7 @@ for some `0 < a < 1` and `C > 0`,  `β€–p nβ€– * r ^ n ≀ C * a ^ n`. -/
 theorem norm_mul_pow_le_mul_pow_of_lt_radius (h : ↑r < p.radius) :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n, β€–p nβ€– * r ^ n ≀ C * a ^ n :=
   by
-  rcases((tFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 5).mp
+  rcases((TFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 5).mp
       (p.is_o_of_lt_radius h) with
     ⟨a, ha, C, hC, H⟩
   exact ⟨a, ha, C, hC, fun n => (le_abs_self _).trans (H n)⟩
@@ -225,7 +225,7 @@ theorem norm_mul_pow_le_mul_pow_of_lt_radius (h : ↑r < p.radius) :
 theorem lt_radius_of_isBigO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ) 1)
     (hp : (fun n => β€–p nβ€– * r ^ n) =O[atTop] pow a) : ↑r < p.radius :=
   by
-  rcases((tFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 2 5).mp ⟨a, ha, hp⟩ with
+  rcases((TFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 2 5).mp ⟨a, ha, hp⟩ with
     ⟨a, ha, C, hC, hp⟩
   rw [← pos_iff_ne_zero, ← NNReal.coe_pos] at hβ‚€
   lift a to ℝβ‰₯0 using ha.1.le
Diff
@@ -141,14 +141,14 @@ theorem le_radius_of_bound_nNReal (C : ℝβ‰₯0) {r : ℝβ‰₯0} (h : βˆ€ n : β„•,
 #align formal_multilinear_series.le_radius_of_bound_nnreal FormalMultilinearSeries.le_radius_of_bound_nNReal
 
 /-- If `β€–pβ‚™β€– rⁿ = O(1)`, as `n β†’ ∞`, then the radius of `p` is at least `r`. -/
-theorem le_radius_of_isO (h : (fun n => β€–p nβ€– * r ^ n) =O[atTop] fun n => (1 : ℝ)) :
+theorem le_radius_of_isBigO (h : (fun n => β€–p nβ€– * r ^ n) =O[atTop] fun n => (1 : ℝ)) :
     ↑r ≀ p.radius :=
-  Exists.elim (isO_one_nat_atTop_iff.1 h) fun C hC =>
+  Exists.elim (isBigO_one_nat_atTop_iff.1 h) fun C hC =>
     p.le_radius_of_bound C fun n => (le_abs_self _).trans (hC n)
-#align formal_multilinear_series.le_radius_of_is_O FormalMultilinearSeries.le_radius_of_isO
+#align formal_multilinear_series.le_radius_of_is_O FormalMultilinearSeries.le_radius_of_isBigO
 
 theorem le_radius_of_eventually_le (C) (h : βˆ€αΆ  n in atTop, β€–p nβ€– * r ^ n ≀ C) : ↑r ≀ p.radius :=
-  p.le_radius_of_isO <| IsO.of_bound C <| h.mono fun n hn => by simpa
+  p.le_radius_of_isBigO <| IsBigO.of_bound C <| h.mono fun n hn => by simpa
 #align formal_multilinear_series.le_radius_of_eventually_le FormalMultilinearSeries.le_radius_of_eventually_le
 
 theorem le_radius_of_summable_nnnorm (h : Summable fun n => β€–p nβ€–β‚Š * r ^ n) : ↑r ≀ p.radius :=
@@ -161,14 +161,14 @@ theorem le_radius_of_summable (h : Summable fun n => β€–p nβ€– * r ^ n) : ↑r 
     exact_mod_cast h
 #align formal_multilinear_series.le_radius_of_summable FormalMultilinearSeries.le_radius_of_summable
 
-theorem radius_eq_top_of_forall_nNReal_isO
+theorem radius_eq_top_of_forall_nNReal_isBigO
     (h : βˆ€ r : ℝβ‰₯0, (fun n => β€–p nβ€– * r ^ n) =O[atTop] fun n => (1 : ℝ)) : p.radius = ∞ :=
-  ENNReal.eq_top_of_forall_nnreal_le fun r => p.le_radius_of_isO (h r)
-#align formal_multilinear_series.radius_eq_top_of_forall_nnreal_is_O FormalMultilinearSeries.radius_eq_top_of_forall_nNReal_isO
+  ENNReal.eq_top_of_forall_nnreal_le fun r => p.le_radius_of_isBigO (h r)
+#align formal_multilinear_series.radius_eq_top_of_forall_nnreal_is_O FormalMultilinearSeries.radius_eq_top_of_forall_nNReal_isBigO
 
 theorem radius_eq_top_of_eventually_eq_zero (h : βˆ€αΆ  n in atTop, p n = 0) : p.radius = ∞ :=
-  p.radius_eq_top_of_forall_nNReal_isO fun r =>
-    (isO_zero _ _).congr' (h.mono fun n hn => by simp [hn]) EventuallyEq.rfl
+  p.radius_eq_top_of_forall_nNReal_isBigO fun r =>
+    (isBigO_zero _ _).congr' (h.mono fun n hn => by simp [hn]) EventuallyEq.rfl
 #align formal_multilinear_series.radius_eq_top_of_eventually_eq_zero FormalMultilinearSeries.radius_eq_top_of_eventually_eq_zero
 
 theorem radius_eq_top_of_forall_image_add_eq_zero (n : β„•) (hn : βˆ€ m, p (m + n) = 0) :
@@ -186,10 +186,10 @@ theorem constFormalMultilinearSeries_radius {v : F} :
 
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ` tends to zero exponentially:
 for some `0 < a < 1`, `β€–p nβ€– rⁿ = o(aⁿ)`. -/
-theorem isOCat_of_lt_radius (h : ↑r < p.radius) :
+theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, (fun n => β€–p nβ€– * r ^ n) =o[atTop] pow a :=
   by
-  rw [(tFAE_exists_lt_isOCat_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 4]
+  rw [(tFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 4]
   simp only [radius, lt_supα΅’_iff] at h
   rcases h with ⟨t, C, hC, rt⟩
   rw [ENNReal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt
@@ -201,31 +201,31 @@ theorem isOCat_of_lt_radius (h : ↑r < p.radius) :
       field_simp [mul_right_comm, abs_mul, this.ne']
     _ ≀ C * (r / t) ^ n := mul_le_mul_of_nonneg_right (hC n) (pow_nonneg (div_nonneg r.2 t.2) _)
     
-#align formal_multilinear_series.is_o_of_lt_radius FormalMultilinearSeries.isOCat_of_lt_radius
+#align formal_multilinear_series.is_o_of_lt_radius FormalMultilinearSeries.isLittleO_of_lt_radius
 
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ = o(1)`. -/
-theorem isOCat_one_of_lt_radius (h : ↑r < p.radius) :
+theorem isLittleO_one_of_lt_radius (h : ↑r < p.radius) :
     (fun n => β€–p nβ€– * r ^ n) =o[atTop] (fun _ => 1 : β„• β†’ ℝ) :=
-  let ⟨a, ha, hp⟩ := p.isOCat_of_lt_radius h
-  hp.trans <| (isOCat_pow_pow_of_lt_left ha.1.le ha.2).congr (fun n => rfl) one_pow
-#align formal_multilinear_series.is_o_one_of_lt_radius FormalMultilinearSeries.isOCat_one_of_lt_radius
+  let ⟨a, ha, hp⟩ := p.isLittleO_of_lt_radius h
+  hp.trans <| (isLittleO_pow_pow_of_lt_left ha.1.le ha.2).congr (fun n => rfl) one_pow
+#align formal_multilinear_series.is_o_one_of_lt_radius FormalMultilinearSeries.isLittleO_one_of_lt_radius
 
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ` tends to zero exponentially:
 for some `0 < a < 1` and `C > 0`,  `β€–p nβ€– * r ^ n ≀ C * a ^ n`. -/
 theorem norm_mul_pow_le_mul_pow_of_lt_radius (h : ↑r < p.radius) :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n, β€–p nβ€– * r ^ n ≀ C * a ^ n :=
   by
-  rcases((tFAE_exists_lt_isOCat_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 5).mp
+  rcases((tFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 5).mp
       (p.is_o_of_lt_radius h) with
     ⟨a, ha, C, hC, H⟩
   exact ⟨a, ha, C, hC, fun n => (le_abs_self _).trans (H n)⟩
 #align formal_multilinear_series.norm_mul_pow_le_mul_pow_of_lt_radius FormalMultilinearSeries.norm_mul_pow_le_mul_pow_of_lt_radius
 
 /-- If `r β‰  0` and `β€–pβ‚™β€– rⁿ = O(aⁿ)` for some `-1 < a < 1`, then `r < p.radius`. -/
-theorem lt_radius_of_isO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ) 1)
+theorem lt_radius_of_isBigO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ) 1)
     (hp : (fun n => β€–p nβ€– * r ^ n) =O[atTop] pow a) : ↑r < p.radius :=
   by
-  rcases((tFAE_exists_lt_isOCat_pow (fun n => β€–p nβ€– * r ^ n) 1).out 2 5).mp ⟨a, ha, hp⟩ with
+  rcases((tFAE_exists_lt_isLittleO_pow (fun n => β€–p nβ€– * r ^ n) 1).out 2 5).mp ⟨a, ha, hp⟩ with
     ⟨a, ha, C, hC, hp⟩
   rw [← pos_iff_ne_zero, ← NNReal.coe_pos] at hβ‚€
   lift a to ℝβ‰₯0 using ha.1.le
@@ -236,7 +236,7 @@ theorem lt_radius_of_isO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ) 1
   refine' this.trans_le (p.le_radius_of_bound C fun n => _)
   rw [NNReal.coe_div, div_pow, ← mul_div_assoc, div_le_iff (pow_pos ha.1 n)]
   exact (le_abs_self _).trans (hp n)
-#align formal_multilinear_series.lt_radius_of_is_O FormalMultilinearSeries.lt_radius_of_isO
+#align formal_multilinear_series.lt_radius_of_is_O FormalMultilinearSeries.lt_radius_of_isBigO
 
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ` is bounded. -/
 theorem norm_mul_pow_le_of_lt_radius (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0}
@@ -261,7 +261,7 @@ theorem nnnorm_mul_pow_le_of_lt_radius (p : FormalMultilinearSeries π•œ E F) {r
 
 theorem le_radius_of_tendsto (p : FormalMultilinearSeries π•œ E F) {l : ℝ}
     (h : Tendsto (fun n => β€–p nβ€– * r ^ n) atTop (𝓝 l)) : ↑r ≀ p.radius :=
-  p.le_radius_of_isO (h.isO_one _)
+  p.le_radius_of_isBigO (h.isBigO_one _)
 #align formal_multilinear_series.le_radius_of_tendsto FormalMultilinearSeries.le_radius_of_tendsto
 
 theorem le_radius_of_summable_norm (p : FormalMultilinearSeries π•œ E F)
@@ -345,8 +345,8 @@ theorem min_radius_le_radius_add (p q : FormalMultilinearSeries π•œ E F) :
   by
   refine' ENNReal.le_of_forall_nnreal_lt fun r hr => _
   rw [lt_min_iff] at hr
-  have := ((p.is_o_one_of_lt_radius hr.1).add (q.is_o_one_of_lt_radius hr.2)).IsO
-  refine' (p + q).le_radius_of_isO ((is_O_of_le _ fun n => _).trans this)
+  have := ((p.is_o_one_of_lt_radius hr.1).add (q.is_o_one_of_lt_radius hr.2)).IsBigO
+  refine' (p + q).le_radius_of_isBigO ((is_O_of_le _ fun n => _).trans this)
   rw [← add_mul, norm_mul, norm_mul, norm_norm]
   exact mul_le_mul_of_nonneg_right ((norm_add_le _ _).trans (le_abs_self _)) (norm_nonneg _)
 #align formal_multilinear_series.min_radius_le_radius_add FormalMultilinearSeries.min_radius_le_radius_add
@@ -365,7 +365,7 @@ theorem radius_le_radius_continuousLinearMap_comp (p : FormalMultilinearSeries 
   by
   refine' ENNReal.le_of_forall_nnreal_lt fun r hr => _
   apply le_radius_of_is_O
-  apply (is_O.trans_is_o _ (p.is_o_one_of_lt_radius hr)).IsO
+  apply (is_O.trans_is_o _ (p.is_o_one_of_lt_radius hr)).IsBigO
   refine' is_O.mul (@is_O_with.is_O _ _ _ _ _ β€–fβ€– _ _ _ _) (is_O_refl _ _)
   apply is_O_with.of_bound (eventually_of_forall fun n => _)
   simpa only [norm_norm] using f.norm_comp_continuous_multilinear_map_le (p n)
@@ -708,7 +708,7 @@ theorem HasFpowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
 #align has_fpower_series_on_ball.uniform_geometric_approx HasFpowerSeriesOnBall.uniform_geometric_approx
 
 /-- Taylor formula for an analytic function, `is_O` version. -/
-theorem HasFpowerSeriesAt.isO_sub_partialSum_pow (hf : HasFpowerSeriesAt f p x) (n : β„•) :
+theorem HasFpowerSeriesAt.isBigO_sub_partialSum_pow (hf : HasFpowerSeriesAt f p x) (n : β„•) :
     (fun y : E => f (x + y) - p.partialSum n y) =O[𝓝 0] fun y => β€–yβ€– ^ n :=
   by
   rcases hf with ⟨r, hf⟩
@@ -723,14 +723,14 @@ theorem HasFpowerSeriesAt.isO_sub_partialSum_pow (hf : HasFpowerSeriesAt f p x)
   replace r'0 : 0 < (r' : ℝ); Β· exact_mod_cast r'0
   filter_upwards [Metric.ball_mem_nhds (0 : E) r'0]with y hy
   simpa [mul_pow, mul_div_assoc, mul_assoc, div_mul_eq_mul_div] using hp y hy n
-#align has_fpower_series_at.is_O_sub_partial_sum_pow HasFpowerSeriesAt.isO_sub_partialSum_pow
+#align has_fpower_series_at.is_O_sub_partial_sum_pow HasFpowerSeriesAt.isBigO_sub_partialSum_pow
 
 /- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
 `C * (max β€–y - xβ€– β€–z - xβ€–) * β€–y - zβ€–`. This lemma formulates this property using `is_O` and
 `filter.principal` on `E Γ— E`. -/
-theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
+theorem HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
     (hf : HasFpowerSeriesOnBall f p x r) (hr : r' < r) :
     (fun y : E Γ— E => f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) =O[π“Ÿ (EMetric.ball (x, x) r')]
       fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€– :=
@@ -793,7 +793,7 @@ theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
     exact (hL y hy).trans (le_abs_self _)
   simp_rw [L, mul_right_comm _ (_ * _)]
   exact (is_O_refl _ _).const_mul_left _
-#align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
+#align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFpowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
 
 /- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
@@ -813,7 +813,7 @@ theorem HasFpowerSeriesOnBall.image_sub_sub_deriv_le (hf : HasFpowerSeriesOnBall
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` at `x`, then
 `f y - f z - p 1 (Ξ» _, y - z) = O(β€–(y, z) - (x, x)β€– * β€–y - zβ€–)` as `(y, z) β†’ (x, x)`.
 In particular, `f` is strictly differentiable at `x`. -/
-theorem HasFpowerSeriesAt.isO_image_sub_norm_mul_norm_sub (hf : HasFpowerSeriesAt f p x) :
+theorem HasFpowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub (hf : HasFpowerSeriesAt f p x) :
     (fun y : E Γ— E => f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) =O[𝓝 (x, x)] fun y =>
       β€–y - (x, x)β€– * β€–y.1 - y.2β€– :=
   by
@@ -821,7 +821,7 @@ theorem HasFpowerSeriesAt.isO_image_sub_norm_mul_norm_sub (hf : HasFpowerSeriesA
   rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hf.r_pos with ⟨r', r'0, h⟩
   refine' (hf.is_O_image_sub_image_sub_deriv_principal h).mono _
   exact le_principal_iff.2 (EMetric.ball_mem_nhds _ r'0)
-#align has_fpower_series_at.is_O_image_sub_norm_mul_norm_sub HasFpowerSeriesAt.isO_image_sub_norm_mul_norm_sub
+#align has_fpower_series_at.is_O_image_sub_norm_mul_norm_sub HasFpowerSeriesAt.isBigO_image_sub_norm_mul_norm_sub
 
 /-- If a function admits a power series expansion at `x`, then it is the uniform limit of the
 partial sums of this power series on strict subdisks of the disk of convergence, i.e., `f (x + y)`
@@ -954,7 +954,7 @@ section Uniqueness
 
 open ContinuousMultilinearMap
 
-theorem Asymptotics.IsO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p : E[Γ—n]β†’L[π•œ] F}
+theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p : E[Γ—n]β†’L[π•œ] F}
     (h : (fun y => p fun i => y) =O[𝓝 0] fun y => β€–yβ€– ^ (n + 1)) (y : E) : (p fun i => y) = 0 :=
   by
   obtain ⟨c, c_pos, hc⟩ := h.exists_pos
@@ -1009,7 +1009,7 @@ theorem Asymptotics.IsO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p : E[
         rw [inv_mul_cancel (norm_pos_iff.mp k_pos)]
         simpa using h₃.le
       
-#align asymptotics.is_O.continuous_multilinear_map_apply_eq_zero Asymptotics.IsO.continuousMultilinearMap_apply_eq_zero
+#align asymptotics.is_O.continuous_multilinear_map_apply_eq_zero Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero
 
 /-- If a formal multilinear series `p` represents the zero function at `x : E`, then the
 terms `p n (Ξ» i, y)` appearing the in sum are zero for any `n : β„•`, `y : E`. -/
@@ -1025,7 +1025,7 @@ theorem HasFpowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {
       simp only [hk b (this.lt_of_ne hnb), Pi.zero_apply, zero_apply]
     Β· exact False.elim (hn (finset.mem_range.mpr (lt_add_one k)))
   replace h := h.is_O_sub_partial_sum_pow k.succ
-  simp only [psum_eq, zero_sub, Pi.zero_apply, Asymptotics.isO_neg_left] at h
+  simp only [psum_eq, zero_sub, Pi.zero_apply, Asymptotics.isBigO_neg_left] at h
   exact h.continuous_multilinear_map_apply_eq_zero
 #align has_fpower_series_at.apply_eq_zero HasFpowerSeriesAt.apply_eq_zero
 
Diff
@@ -754,7 +754,7 @@ theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
     set A : β„• β†’ F := fun n => (p n fun _ => y.1 - x) - p n fun _ => y.2 - x
     have hA : HasSum (fun n => A (n + 2)) (f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) :=
       by
-      convert (hasSum_nat_add_iff' 2).2 ((hf.has_sum_sub hy.1).sub (hf.has_sum_sub hy.2)) using 1
+      convert(hasSum_nat_add_iff' 2).2 ((hf.has_sum_sub hy.1).sub (hf.has_sum_sub hy.2)) using 1
       rw [Finset.sum_range_succ, Finset.sum_range_one, hf.coeff_zero, hf.coeff_zero, sub_self,
         zero_add, ← Subsingleton.pi_single_eq (0 : Fin 1) (y.1 - x), Pi.single, ←
         Subsingleton.pi_single_eq (0 : Fin 1) (y.2 - x), Pi.single, ← (p 1).map_sub, ← Pi.single,
@@ -783,8 +783,7 @@ theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
       apply HasSum.mul_left
       simp only [add_mul]
       have : β€–aβ€– < 1 := by simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
-      convert
-        (hasSum_coe_mul_geometric_of_norm_lt_1 this).add
+      convert(hasSum_coe_mul_geometric_of_norm_lt_1 this).add
           ((hasSum_geometric_of_norm_lt_1 this).mul_left 2)
     exact hA.norm_le_of_bounded hBL hAB
   suffices L =O[π“Ÿ (EMetric.ball (x, x) r')] fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€–
@@ -866,7 +865,7 @@ theorem HasFpowerSeriesOnBall.tendsto_uniformly_on' {r' : ℝβ‰₯0} (hf : HasFpow
     (h : (r' : ℝβ‰₯0∞) < r) :
     TendstoUniformlyOn (fun n y => p.partialSum n (y - x)) f atTop (Metric.ball (x : E) r') :=
   by
-  convert (hf.tendsto_uniformly_on h).comp fun y => y - x
+  convert(hf.tendsto_uniformly_on h).comp fun y => y - x
   · simp [(· ∘ ·)]
   Β· ext z
     simp [dist_eq_norm]
@@ -1394,7 +1393,7 @@ theorem HasFpowerSeriesOnBall.changeOrigin (hf : HasFpowerSeriesOnBall f p x r)
       exact tsub_le_tsub hf.r_le le_rfl
     r_pos := by simp [h]
     HasSum := fun z hz => by
-      convert (p.change_origin y).HasSum _
+      convert(p.change_origin y).HasSum _
       Β· rw [mem_emetric_ball_zero_iff, lt_tsub_iff_right, add_comm] at hz
         rw [p.change_origin_eval (hz.trans_le hf.r_le), add_assoc, hf.sum]
         refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ hz)
Diff
@@ -839,7 +839,7 @@ theorem HasFpowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFpowerS
   refine' Metric.tendstoUniformlyOn_iff.2 fun Ξ΅ Ξ΅pos => _
   have L : tendsto (fun n => (C : ℝ) * a ^ n) at_top (𝓝 ((C : ℝ) * 0)) :=
     tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_0_of_lt_1 ha.1.le ha.2)
-  rw [mul_zero] at L
+  rw [MulZeroClass.mul_zero] at L
   refine' (L.eventually (gt_mem_nhds Ξ΅pos)).mono fun n hn y hy => _
   rw [dist_eq_norm]
   exact (hp y hy n).trans_lt hn
@@ -968,7 +968,8 @@ theorem Asymptotics.IsO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p : E[
       norm_eq_zero.mp
         (by
           simpa only [fin0_apply_norm, norm_eq_zero, norm_zero, zero_pow', Ne.def, Nat.one_ne_zero,
-            not_false_iff, mul_zero, norm_le_zero_iff] using ht 0 (δΡ (Metric.mem_ball_self δ_pos)))
+            not_false_iff, MulZeroClass.mul_zero, norm_le_zero_iff] using
+            ht 0 (δΡ (Metric.mem_ball_self δ_pos)))
   Β· refine' Or.elim (em (y = 0)) (fun hy => by simpa only [hy] using p.map_zero) fun hy => _
     replace hy := norm_pos_iff.mpr hy
     refine' norm_eq_zero.mp (le_antisymm (le_of_forall_pos_le_add fun Ξ΅ Ξ΅_pos => _) (norm_nonneg _))
Diff
@@ -856,7 +856,7 @@ theorem HasFpowerSeriesOnBall.tendstoLocallyUniformlyOn (hf : HasFpowerSeriesOnB
   rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hx with ⟨r', xr', hr'⟩
   have : EMetric.ball (0 : E) r' ∈ 𝓝 x := IsOpen.mem_nhds EMetric.isOpen_ball xr'
   refine' ⟨EMetric.ball (0 : E) r', mem_nhdsWithin_of_mem_nhds this, _⟩
-  simpa [Metric.emetric_ball_nNReal] using hf.tendsto_uniformly_on hr' u hu
+  simpa [Metric.emetric_ball_nnreal] using hf.tendsto_uniformly_on hr' u hu
 #align has_fpower_series_on_ball.tendsto_locally_uniformly_on HasFpowerSeriesOnBall.tendstoLocallyUniformlyOn
 
 /-- If a function admits a power series expansion at `x`, then it is the uniform limit of the
Diff
@@ -284,7 +284,7 @@ theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯
 #align formal_multilinear_series.summable_norm_mul_pow FormalMultilinearSeries.summable_norm_mul_pow
 
 theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
-    (hx : x ∈ Emetric.ball (0 : E) p.radius) : Summable fun n : β„• => β€–p n fun _ => xβ€– :=
+    (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => β€–p n fun _ => xβ€– :=
   by
   rw [mem_emetric_ball_zero_iff] at hx
   refine'
@@ -302,7 +302,7 @@ theorem summable_nnnorm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝ
 #align formal_multilinear_series.summable_nnnorm_mul_pow FormalMultilinearSeries.summable_nnnorm_mul_pow
 
 protected theorem summable [CompleteSpace F] (p : FormalMultilinearSeries π•œ E F) {x : E}
-    (hx : x ∈ Emetric.ball (0 : E) p.radius) : Summable fun n : β„• => p n fun _ => x :=
+    (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => p n fun _ => x :=
   summable_of_summable_norm (p.summable_norm_apply hx)
 #align formal_multilinear_series.summable FormalMultilinearSeries.summable
 
@@ -356,7 +356,7 @@ theorem radius_neg (p : FormalMultilinearSeries π•œ E F) : (-p).radius = p.radi
 #align formal_multilinear_series.radius_neg FormalMultilinearSeries.radius_neg
 
 protected theorem hasSum [CompleteSpace F] (p : FormalMultilinearSeries π•œ E F) {x : E}
-    (hx : x ∈ Emetric.ball (0 : E) p.radius) : HasSum (fun n : β„• => p n fun _ => x) (p.Sum x) :=
+    (hx : x ∈ EMetric.ball (0 : E) p.radius) : HasSum (fun n : β„• => p n fun _ => x) (p.Sum x) :=
   (p.Summable hx).HasSum
 #align formal_multilinear_series.has_sum FormalMultilinearSeries.hasSum
 
@@ -388,7 +388,7 @@ structure HasFpowerSeriesOnBall (f : E β†’ F) (p : FormalMultilinearSeries π•œ
   r_le : r ≀ p.radius
   r_pos : 0 < r
   HasSum :
-    βˆ€ {y}, y ∈ Emetric.ball (0 : E) r β†’ HasSum (fun n : β„• => p n fun i : Fin n => y) (f (x + y))
+    βˆ€ {y}, y ∈ EMetric.ball (0 : E) r β†’ HasSum (fun n : β„• => p n fun i : Fin n => y) (f (x + y))
 #align has_fpower_series_on_ball HasFpowerSeriesOnBall
 
 /-- Given a function `f : E β†’ F` and a formal multilinear series `p`, we say that `f` has `p` as
@@ -427,7 +427,7 @@ theorem HasFpowerSeriesOnBall.analyticAt (hf : HasFpowerSeriesOnBall f p x r) :
 #align has_fpower_series_on_ball.analytic_at HasFpowerSeriesOnBall.analyticAt
 
 theorem HasFpowerSeriesOnBall.congr (hf : HasFpowerSeriesOnBall f p x r)
-    (hg : EqOn f g (Emetric.ball x r)) : HasFpowerSeriesOnBall g p x r :=
+    (hg : EqOn f g (EMetric.ball x r)) : HasFpowerSeriesOnBall g p x r :=
   { r_le := hf.r_le
     r_pos := hf.r_pos
     HasSum := fun y hy => by
@@ -448,9 +448,9 @@ theorem HasFpowerSeriesOnBall.compSub (hf : HasFpowerSeriesOnBall f p x r) (y :
 #align has_fpower_series_on_ball.comp_sub HasFpowerSeriesOnBall.compSub
 
 theorem HasFpowerSeriesOnBall.hasSum_sub (hf : HasFpowerSeriesOnBall f p x r) {y : E}
-    (hy : y ∈ Emetric.ball x r) : HasSum (fun n : β„• => p n fun i => y - x) (f y) :=
+    (hy : y ∈ EMetric.ball x r) : HasSum (fun n : β„• => p n fun i => y - x) (f y) :=
   by
-  have : y - x ∈ Emetric.ball (0 : E) r := by simpa [edist_eq_coe_nnnorm_sub] using hy
+  have : y - x ∈ EMetric.ball (0 : E) r := by simpa [edist_eq_coe_nnnorm_sub] using hy
   simpa only [add_sub_cancel'_right] using hf.has_sum this
 #align has_fpower_series_on_ball.has_sum_sub HasFpowerSeriesOnBall.hasSum_sub
 
@@ -465,7 +465,7 @@ theorem HasFpowerSeriesAt.radius_pos (hf : HasFpowerSeriesAt f p x) : 0 < p.radi
 
 theorem HasFpowerSeriesOnBall.mono (hf : HasFpowerSeriesOnBall f p x r) (r'_pos : 0 < r')
     (hr : r' ≀ r) : HasFpowerSeriesOnBall f p x r' :=
-  ⟨le_trans hr hf.1, r'_pos, fun y hy => hf.HasSum (Emetric.ball_subset_ball hr hy)⟩
+  ⟨le_trans hr hf.1, r'_pos, fun y hy => hf.HasSum (EMetric.ball_subset_ball hr hy)⟩
 #align has_fpower_series_on_ball.mono HasFpowerSeriesOnBall.mono
 
 theorem HasFpowerSeriesAt.congr (hf : HasFpowerSeriesAt f p x) (hg : f =αΆ [𝓝 x] g) :
@@ -475,7 +475,7 @@ theorem HasFpowerSeriesAt.congr (hf : HasFpowerSeriesAt f p x) (hg : f =αΆ [𝓝
   exact
     ⟨min r₁ rβ‚‚,
       (h₁.mono (lt_min h₁.r_pos hβ‚‚pos) inf_le_left).congr fun y hy =>
-        hβ‚‚ (Emetric.ball_subset_ball inf_le_right hy)⟩
+        hβ‚‚ (EMetric.ball_subset_ball inf_le_right hy)⟩
 #align has_fpower_series_at.congr HasFpowerSeriesAt.congr
 
 protected theorem HasFpowerSeriesAt.eventually (hf : HasFpowerSeriesAt f p x) :
@@ -487,7 +487,7 @@ protected theorem HasFpowerSeriesAt.eventually (hf : HasFpowerSeriesAt f p x) :
 
 theorem HasFpowerSeriesOnBall.eventually_hasSum (hf : HasFpowerSeriesOnBall f p x r) :
     βˆ€αΆ  y in 𝓝 0, HasSum (fun n : β„• => p n fun i : Fin n => y) (f (x + y)) := by
-  filter_upwards [Emetric.ball_mem_nhds (0 : E) hf.r_pos]using fun _ => hf.has_sum
+  filter_upwards [EMetric.ball_mem_nhds (0 : E) hf.r_pos]using fun _ => hf.has_sum
 #align has_fpower_series_on_ball.eventually_has_sum HasFpowerSeriesOnBall.eventually_hasSum
 
 theorem HasFpowerSeriesAt.eventually_hasSum (hf : HasFpowerSeriesAt f p x) :
@@ -498,7 +498,7 @@ theorem HasFpowerSeriesAt.eventually_hasSum (hf : HasFpowerSeriesAt f p x) :
 
 theorem HasFpowerSeriesOnBall.eventually_hasSum_sub (hf : HasFpowerSeriesOnBall f p x r) :
     βˆ€αΆ  y in 𝓝 x, HasSum (fun n : β„• => p n fun i : Fin n => y - x) (f y) := by
-  filter_upwards [Emetric.ball_mem_nhds x hf.r_pos]with y using hf.has_sum_sub
+  filter_upwards [EMetric.ball_mem_nhds x hf.r_pos]with y using hf.has_sum_sub
 #align has_fpower_series_on_ball.eventually_has_sum_sub HasFpowerSeriesOnBall.eventually_hasSum_sub
 
 theorem HasFpowerSeriesAt.eventually_hasSum_sub (hf : HasFpowerSeriesAt f p x) :
@@ -606,7 +606,7 @@ theorem AnalyticOn.sub {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn 
 theorem HasFpowerSeriesOnBall.coeff_zero (hf : HasFpowerSeriesOnBall f pf x r) (v : Fin 0 β†’ E) :
     pf 0 v = f x := by
   have v_eq : v = fun i => 0 := Subsingleton.elim _ _
-  have zero_mem : (0 : E) ∈ Emetric.ball (0 : E) r := by simp [hf.r_pos]
+  have zero_mem : (0 : E) ∈ EMetric.ball (0 : E) r := by simp [hf.r_pos]
   have : βˆ€ (i) (_ : i β‰  0), (pf i fun j => 0) = 0 :=
     by
     intro i hi
@@ -663,7 +663,7 @@ theorem HasFpowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
     rw [ball_zero_eq] at hy
     exact hy
   have hr'0 : 0 < (r' : ℝ) := (norm_nonneg _).trans_lt yr'
-  have : y ∈ Emetric.ball (0 : E) r :=
+  have : y ∈ EMetric.ball (0 : E) r :=
     by
     refine' mem_emetric_ball_zero_iff.2 (lt_trans _ h)
     exact_mod_cast yr'
@@ -732,25 +732,25 @@ ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded abov
 `filter.principal` on `E Γ— E`. -/
 theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
     (hf : HasFpowerSeriesOnBall f p x r) (hr : r' < r) :
-    (fun y : E Γ— E => f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) =O[π“Ÿ (Emetric.ball (x, x) r')]
+    (fun y : E Γ— E => f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) =O[π“Ÿ (EMetric.ball (x, x) r')]
       fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€– :=
   by
   lift r' to ℝβ‰₯0 using ne_top_of_lt hr
   rcases(zero_le r').eq_or_lt with (rfl | hr'0)
-  Β· simp only [is_O_bot, Emetric.ball_zero, principal_empty, ENNReal.coe_zero]
+  Β· simp only [is_O_bot, EMetric.ball_zero, principal_empty, ENNReal.coe_zero]
   obtain ⟨a, ha, C, hC : 0 < C, hp⟩ :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n : β„•, β€–p nβ€– * ↑r' ^ n ≀ C * a ^ n
   exact p.norm_mul_pow_le_mul_pow_of_lt_radius (hr.trans_le hf.r_le)
   simp only [← le_div_iff (pow_pos (NNReal.coe_pos.2 hr'0) _)] at hp
   set L : E Γ— E β†’ ℝ := fun y =>
     C * (a / r') ^ 2 * (β€–y - (x, x)β€– * β€–y.1 - y.2β€–) * (a / (1 - a) ^ 2 + 2 / (1 - a))
-  have hL : βˆ€ y ∈ Emetric.ball (x, x) r', β€–f y.1 - f y.2 - p 1 fun _ => y.1 - y.2β€– ≀ L y :=
+  have hL : βˆ€ y ∈ EMetric.ball (x, x) r', β€–f y.1 - f y.2 - p 1 fun _ => y.1 - y.2β€– ≀ L y :=
     by
     intro y hy'
-    have hy : y ∈ Emetric.ball x r Γ—Λ’ Emetric.ball x r :=
+    have hy : y ∈ EMetric.ball x r Γ—Λ’ EMetric.ball x r :=
       by
-      rw [Emetric.ball_prod_same]
-      exact Emetric.ball_subset_ball hr.le hy'
+      rw [EMetric.ball_prod_same]
+      exact EMetric.ball_subset_ball hr.le hy'
     set A : β„• β†’ F := fun n => (p n fun _ => y.1 - x) - p n fun _ => y.2 - x
     have hA : HasSum (fun n => A (n + 2)) (f y.1 - f y.2 - p 1 fun _ => y.1 - y.2) :=
       by
@@ -759,7 +759,7 @@ theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
         zero_add, ← Subsingleton.pi_single_eq (0 : Fin 1) (y.1 - x), Pi.single, ←
         Subsingleton.pi_single_eq (0 : Fin 1) (y.2 - x), Pi.single, ← (p 1).map_sub, ← Pi.single,
         Subsingleton.pi_single_eq, sub_sub_sub_cancel_right]
-    rw [Emetric.mem_ball, edist_eq_coe_nnnorm_sub, ENNReal.coe_lt_coe] at hy'
+    rw [EMetric.mem_ball, edist_eq_coe_nnnorm_sub, ENNReal.coe_lt_coe] at hy'
     set B : β„• β†’ ℝ := fun n => C * (a / r') ^ 2 * (β€–y - (x, x)β€– * β€–y.1 - y.2β€–) * ((n + 2) * a ^ n)
     have hAB : βˆ€ n, β€–A (n + 2)β€– ≀ B n := fun n =>
       calc
@@ -787,7 +787,7 @@ theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
         (hasSum_coe_mul_geometric_of_norm_lt_1 this).add
           ((hasSum_geometric_of_norm_lt_1 this).mul_left 2)
     exact hA.norm_le_of_bounded hBL hAB
-  suffices L =O[π“Ÿ (Emetric.ball (x, x) r')] fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€–
+  suffices L =O[π“Ÿ (EMetric.ball (x, x) r')] fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€–
     by
     refine' (is_O.of_bound 1 (eventually_principal.2 fun y hy => _)).trans this
     rw [one_mul]
@@ -803,10 +803,10 @@ ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded abov
 theorem HasFpowerSeriesOnBall.image_sub_sub_deriv_le (hf : HasFpowerSeriesOnBall f p x r)
     (hr : r' < r) :
     βˆƒ C,
-      βˆ€ (y) (_ : y ∈ Emetric.ball x r') (z) (_ : z ∈ Emetric.ball x r'),
+      βˆ€ (y) (_ : y ∈ EMetric.ball x r') (z) (_ : z ∈ EMetric.ball x r'),
         β€–f y - f z - p 1 fun _ => y - zβ€– ≀ C * max β€–y - xβ€– β€–z - xβ€– * β€–y - zβ€– :=
   by
-  simpa only [is_O_principal, mul_assoc, norm_mul, norm_norm, Prod.forall, Emetric.mem_ball,
+  simpa only [is_O_principal, mul_assoc, norm_mul, norm_norm, Prod.forall, EMetric.mem_ball,
     Prod.edist_eq, max_lt_iff, and_imp, @forall_swap (_ < _) E] using
     hf.is_O_image_sub_image_sub_deriv_principal hr
 #align has_fpower_series_on_ball.image_sub_sub_deriv_le HasFpowerSeriesOnBall.image_sub_sub_deriv_le
@@ -821,7 +821,7 @@ theorem HasFpowerSeriesAt.isO_image_sub_norm_mul_norm_sub (hf : HasFpowerSeriesA
   rcases hf with ⟨r, hf⟩
   rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hf.r_pos with ⟨r', r'0, h⟩
   refine' (hf.is_O_image_sub_image_sub_deriv_principal h).mono _
-  exact le_principal_iff.2 (Emetric.ball_mem_nhds _ r'0)
+  exact le_principal_iff.2 (EMetric.ball_mem_nhds _ r'0)
 #align has_fpower_series_at.is_O_image_sub_norm_mul_norm_sub HasFpowerSeriesAt.isO_image_sub_norm_mul_norm_sub
 
 /-- If a function admits a power series expansion at `x`, then it is the uniform limit of the
@@ -850,12 +850,12 @@ the partial sums of this power series on the disk of convergence, i.e., `f (x +
 is the locally uniform limit of `p.partial_sum n y` there. -/
 theorem HasFpowerSeriesOnBall.tendstoLocallyUniformlyOn (hf : HasFpowerSeriesOnBall f p x r) :
     TendstoLocallyUniformlyOn (fun n y => p.partialSum n y) (fun y => f (x + y)) atTop
-      (Emetric.ball (0 : E) r) :=
+      (EMetric.ball (0 : E) r) :=
   by
   intro u hu x hx
   rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hx with ⟨r', xr', hr'⟩
-  have : Emetric.ball (0 : E) r' ∈ 𝓝 x := IsOpen.mem_nhds Emetric.isOpen_ball xr'
-  refine' ⟨Emetric.ball (0 : E) r', mem_nhdsWithin_of_mem_nhds this, _⟩
+  have : EMetric.ball (0 : E) r' ∈ 𝓝 x := IsOpen.mem_nhds EMetric.isOpen_ball xr'
+  refine' ⟨EMetric.ball (0 : E) r', mem_nhdsWithin_of_mem_nhds this, _⟩
   simpa [Metric.emetric_ball_nNReal] using hf.tendsto_uniformly_on hr' u hu
 #align has_fpower_series_on_ball.tendsto_locally_uniformly_on HasFpowerSeriesOnBall.tendstoLocallyUniformlyOn
 
@@ -877,9 +877,9 @@ the  partial sums of this power series on the disk of convergence, i.e., `f y`
 is the locally uniform limit of `p.partial_sum n (y - x)` there. -/
 theorem HasFpowerSeriesOnBall.tendsto_locally_uniformly_on' (hf : HasFpowerSeriesOnBall f p x r) :
     TendstoLocallyUniformlyOn (fun n y => p.partialSum n (y - x)) f atTop
-      (Emetric.ball (x : E) r) :=
+      (EMetric.ball (x : E) r) :=
   by
-  have A : ContinuousOn (fun y : E => y - x) (Emetric.ball (x : E) r) :=
+  have A : ContinuousOn (fun y : E => y - x) (EMetric.ball (x : E) r) :=
     (continuous_id.sub continuous_const).ContinuousOn
   convert hf.tendsto_locally_uniformly_on.comp (fun y : E => y - x) _ A
   Β· ext z
@@ -890,7 +890,7 @@ theorem HasFpowerSeriesOnBall.tendsto_locally_uniformly_on' (hf : HasFpowerSerie
 
 /-- If a function admits a power series expansion on a disk, then it is continuous there. -/
 protected theorem HasFpowerSeriesOnBall.continuousOn (hf : HasFpowerSeriesOnBall f p x r) :
-    ContinuousOn f (Emetric.ball x r) :=
+    ContinuousOn f (EMetric.ball x r) :=
   hf.tendsto_locally_uniformly_on'.ContinuousOn <|
     eventually_of_forall fun n =>
       ((p.partialSum_continuous n).comp (continuous_id.sub continuous_const)).ContinuousOn
@@ -899,7 +899,7 @@ protected theorem HasFpowerSeriesOnBall.continuousOn (hf : HasFpowerSeriesOnBall
 protected theorem HasFpowerSeriesAt.continuousAt (hf : HasFpowerSeriesAt f p x) :
     ContinuousAt f x :=
   let ⟨r, hr⟩ := hf
-  hr.ContinuousOn.ContinuousAt (Emetric.ball_mem_nhds x hr.r_pos)
+  hr.ContinuousOn.ContinuousAt (EMetric.ball_mem_nhds x hr.r_pos)
 #align has_fpower_series_at.continuous_at HasFpowerSeriesAt.continuousAt
 
 protected theorem AnalyticAt.continuousAt (hf : AnalyticAt π•œ f x) : ContinuousAt f x :=
@@ -924,13 +924,13 @@ protected theorem FormalMultilinearSeries.hasFpowerSeriesOnBall [CompleteSpace F
 #align formal_multilinear_series.has_fpower_series_on_ball FormalMultilinearSeries.hasFpowerSeriesOnBall
 
 theorem HasFpowerSeriesOnBall.sum (h : HasFpowerSeriesOnBall f p x r) {y : E}
-    (hy : y ∈ Emetric.ball (0 : E) r) : f (x + y) = p.Sum y :=
+    (hy : y ∈ EMetric.ball (0 : E) r) : f (x + y) = p.Sum y :=
   (h.HasSum hy).tsum_eq.symm
 #align has_fpower_series_on_ball.sum HasFpowerSeriesOnBall.sum
 
 /-- The sum of a converging power series is continuous in its disk of convergence. -/
 protected theorem FormalMultilinearSeries.continuousOn [CompleteSpace F] :
-    ContinuousOn p.Sum (Emetric.ball 0 p.radius) :=
+    ContinuousOn p.Sum (EMetric.ball 0 p.radius) :=
   by
   cases' (zero_le p.radius).eq_or_lt with h h
   Β· simp [← h, continuousOn_empty]
@@ -1323,13 +1323,13 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     (p.changeOrigin x).Sum y = p.Sum (x + y) :=
   by
   have radius_pos : 0 < p.radius := lt_of_le_of_lt (zero_le _) h
-  have x_mem_ball : x ∈ Emetric.ball (0 : E) p.radius :=
+  have x_mem_ball : x ∈ EMetric.ball (0 : E) p.radius :=
     mem_emetric_ball_zero_iff.2 ((le_add_right le_rfl).trans_lt h)
-  have y_mem_ball : y ∈ Emetric.ball (0 : E) (p.change_origin x).radius :=
+  have y_mem_ball : y ∈ EMetric.ball (0 : E) (p.change_origin x).radius :=
     by
     refine' mem_emetric_ball_zero_iff.2 (lt_of_lt_of_le _ p.change_origin_radius)
     rwa [lt_tsub_iff_right, add_comm]
-  have x_add_y_mem_ball : x + y ∈ Emetric.ball (0 : E) p.radius :=
+  have x_add_y_mem_ball : x + y ∈ EMetric.ball (0 : E) p.radius :=
     by
     refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ h)
     exact_mod_cast nnnorm_add_le x y
@@ -1398,14 +1398,14 @@ theorem HasFpowerSeriesOnBall.changeOrigin (hf : HasFpowerSeriesOnBall f p x r)
         rw [p.change_origin_eval (hz.trans_le hf.r_le), add_assoc, hf.sum]
         refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ hz)
         exact_mod_cast nnnorm_add_le y z
-      Β· refine' Emetric.ball_subset_ball (le_trans _ p.change_origin_radius) hz
+      Β· refine' EMetric.ball_subset_ball (le_trans _ p.change_origin_radius) hz
         exact tsub_le_tsub hf.r_le le_rfl }
 #align has_fpower_series_on_ball.change_origin HasFpowerSeriesOnBall.changeOrigin
 
 /-- If a function admits a power series expansion `p` on an open ball `B (x, r)`, then
 it is analytic at every point of this ball. -/
 theorem HasFpowerSeriesOnBall.analyticAt_of_mem (hf : HasFpowerSeriesOnBall f p x r)
-    (h : y ∈ Emetric.ball x r) : AnalyticAt π•œ f y :=
+    (h : y ∈ EMetric.ball x r) : AnalyticAt π•œ f y :=
   by
   have : (β€–y - xβ€–β‚Š : ℝβ‰₯0∞) < r := by simpa [edist_eq_coe_nnnorm_sub] using h
   have := hf.change_origin this
@@ -1414,7 +1414,7 @@ theorem HasFpowerSeriesOnBall.analyticAt_of_mem (hf : HasFpowerSeriesOnBall f p
 #align has_fpower_series_on_ball.analytic_at_of_mem HasFpowerSeriesOnBall.analyticAt_of_mem
 
 theorem HasFpowerSeriesOnBall.analyticOn (hf : HasFpowerSeriesOnBall f p x r) :
-    AnalyticOn π•œ f (Emetric.ball x r) := fun y hy => hf.analyticAt_of_mem hy
+    AnalyticOn π•œ f (EMetric.ball x r) := fun y hy => hf.analyticAt_of_mem hy
 #align has_fpower_series_on_ball.analytic_on HasFpowerSeriesOnBall.analyticOn
 
 variable (π•œ f)
@@ -1425,7 +1425,7 @@ theorem isOpen_analyticAt : IsOpen { x | AnalyticAt π•œ f x } :=
   by
   rw [isOpen_iff_mem_nhds]
   rintro x ⟨p, r, hr⟩
-  exact mem_of_superset (Emetric.ball_mem_nhds _ hr.r_pos) fun y hy => hr.analytic_at_of_mem hy
+  exact mem_of_superset (EMetric.ball_mem_nhds _ hr.r_pos) fun y hy => hr.analytic_at_of_mem hy
 #align is_open_analytic_at isOpen_analyticAt
 
 end
@@ -1444,7 +1444,7 @@ theorem hasFpowerSeriesAt_iff :
   by
   refine'
     ⟨fun ⟨r, r_le, r_pos, h⟩ =>
-      eventually_of_mem (Emetric.ball_mem_nhds 0 r_pos) fun _ => by simpa using h, _⟩
+      eventually_of_mem (EMetric.ball_mem_nhds 0 r_pos) fun _ => by simpa using h, _⟩
   simp only [Metric.eventually_nhds_iff]
   rintro ⟨r, r_pos, h⟩
   refine' ⟨p.radius βŠ“ r.to_nnreal, by simp, _, _⟩
@@ -1459,7 +1459,7 @@ theorem hasFpowerSeriesAt_iff :
     refine' lt_of_lt_of_le _ this
     simp only [ENNReal.coe_pos]
     exact zero_lt_iff.mpr (nnnorm_ne_zero_iff.mpr (norm_pos_iff.mp z_pos))
-  Β· simp only [Emetric.mem_ball, lt_inf_iff, edist_lt_coe, apply_eq_pow_smul_coeff, and_imp,
+  Β· simp only [EMetric.mem_ball, lt_inf_iff, edist_lt_coe, apply_eq_pow_smul_coeff, and_imp,
       dist_zero_right] at h⊒
     refine' fun y hyp hyr => h _
     simpa [nndist_eq_nnnorm, Real.lt_toNNReal_iff_coe_lt] using hyr
Diff
@@ -602,7 +602,7 @@ theorem AnalyticOn.sub {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn 
     AnalyticOn π•œ (f - g) s := fun z hz => (hf z hz).sub (hg z hz)
 #align analytic_on.sub AnalyticOn.sub
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (i Β«expr β‰  Β» 0) -/
 theorem HasFpowerSeriesOnBall.coeff_zero (hf : HasFpowerSeriesOnBall f pf x r) (v : Fin 0 β†’ E) :
     pf 0 v = f x := by
   have v_eq : v = fun i => 0 := Subsingleton.elim _ _
@@ -682,7 +682,7 @@ theorem HasFpowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
     β€–(p n) fun i : Fin n => yβ€– ≀ β€–p nβ€– * ∏ i : Fin n, β€–yβ€– := ContinuousMultilinearMap.le_op_norm _ _
     _ = β€–p nβ€– * r' ^ n * (β€–yβ€– / r') ^ n := by field_simp [hr'0.ne', mul_right_comm]
     _ ≀ C * a ^ n * (β€–yβ€– / r') ^ n :=
-      mul_le_mul_of_nonneg_right (hp n) (pow_nonneg (div_nonneg (norm_nonneg _) r'.coe_nonneg) _)
+      (mul_le_mul_of_nonneg_right (hp n) (pow_nonneg (div_nonneg (norm_nonneg _) r'.coe_nonneg) _))
     _ ≀ C * (a * (β€–yβ€– / r')) ^ n := by rw [mul_pow, mul_assoc]
     
 #align has_fpower_series_on_ball.uniform_geometric_approx' HasFpowerSeriesOnBall.uniform_geometric_approx'
@@ -796,7 +796,7 @@ theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
   exact (is_O_refl _ _).const_mul_left _
 #align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
 
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (y z «expr ∈ » emetric.ball[emetric.ball] x r') -/
 /-- If `f` has formal power series `βˆ‘ n, pβ‚™` on a ball of radius `r`, then for `y, z` in any smaller
 ball, the norm of the difference `f y - f z - p 1 (Ξ» _, y - z)` is bounded above by
 `C * (max β€–y - xβ€– β€–z - xβ€–) * β€–y - zβ€–`. -/
@@ -1000,7 +1000,7 @@ theorem Asymptotics.IsO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p : E[
           Finset.card_fin] using
           congr_arg norm (p.map_smul_univ (fun i : Fin n.succ => k⁻¹) fun i : Fin n.succ => k β€’ y)
       _ ≀ β€–k⁻¹ ^ n.succβ€– * (β€–kβ€– ^ n.succ * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1)))) :=
-        mul_le_mul_of_nonneg_left hβ‚‚ (norm_nonneg _)
+        (mul_le_mul_of_nonneg_left hβ‚‚ (norm_nonneg _))
       _ = β€–(k⁻¹ * k) ^ n.succβ€– * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) :=
         by
         rw [← mul_assoc]
@@ -1465,13 +1465,13 @@ theorem hasFpowerSeriesAt_iff :
     simpa [nndist_eq_nnnorm, Real.lt_toNNReal_iff_coe_lt] using hyr
 #align has_fpower_series_at_iff hasFpowerSeriesAt_iff
 
-/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:76:14: unsupported tactic `congrm #[[expr Β«exprβˆ€αΆ  in , Β»((z), (nhds() 0 : filter π•œ), has_sum (Ξ» n, _) (f Β«expr + Β»(zβ‚€, z)))]] -/
+/- ./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr Β«exprβˆ€αΆ  in , Β»((z), (nhds() 0 : filter π•œ), has_sum (Ξ» n, _) (f Β«expr + Β»(zβ‚€, z)))]] -/
 theorem hasFpowerSeriesAt_iff' :
     HasFpowerSeriesAt f p zβ‚€ ↔ βˆ€αΆ  z in 𝓝 zβ‚€, HasSum (fun n => (z - zβ‚€) ^ n β€’ p.coeff n) (f z) :=
   by
   rw [← map_add_left_nhds_zero, eventually_map, hasFpowerSeriesAt_iff]
   trace
-    "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:76:14: unsupported tactic `congrm #[[expr Β«exprβˆ€αΆ  in , Β»((z), (nhds() 0 : filter π•œ), has_sum (Ξ» n, _) (f Β«expr + Β»(zβ‚€, z)))]]"
+    "./././Mathport/Syntax/Translate/Tactic/Builtin.lean:73:14: unsupported tactic `congrm #[[expr Β«exprβˆ€αΆ  in , Β»((z), (nhds() 0 : filter π•œ), has_sum (Ξ» n, _) (f Β«expr + Β»(zβ‚€, z)))]]"
   rw [add_sub_cancel']
 #align has_fpower_series_at_iff' hasFpowerSeriesAt_iff'
 
Diff
@@ -78,7 +78,7 @@ noncomputable section
 
 variable {π•œ E F G : Type _}
 
-open Topology Classical BigOperators NNReal Filter Ennreal
+open Topology Classical BigOperators NNReal Filter ENNReal
 
 open Set Filter Asymptotics
 
@@ -163,7 +163,7 @@ theorem le_radius_of_summable (h : Summable fun n => β€–p nβ€– * r ^ n) : ↑r 
 
 theorem radius_eq_top_of_forall_nNReal_isO
     (h : βˆ€ r : ℝβ‰₯0, (fun n => β€–p nβ€– * r ^ n) =O[atTop] fun n => (1 : ℝ)) : p.radius = ∞ :=
-  Ennreal.eq_top_of_forall_nNReal_le fun r => p.le_radius_of_isO (h r)
+  ENNReal.eq_top_of_forall_nnreal_le fun r => p.le_radius_of_isO (h r)
 #align formal_multilinear_series.radius_eq_top_of_forall_nnreal_is_O FormalMultilinearSeries.radius_eq_top_of_forall_nNReal_isO
 
 theorem radius_eq_top_of_eventually_eq_zero (h : βˆ€αΆ  n in atTop, p n = 0) : p.radius = ∞ :=
@@ -192,7 +192,7 @@ theorem isOCat_of_lt_radius (h : ↑r < p.radius) :
   rw [(tFAE_exists_lt_isOCat_pow (fun n => β€–p nβ€– * r ^ n) 1).out 1 4]
   simp only [radius, lt_supα΅’_iff] at h
   rcases h with ⟨t, C, hC, rt⟩
-  rw [Ennreal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt
+  rw [ENNReal.coe_lt_coe, ← NNReal.coe_lt_coe] at rt
   have : 0 < (t : ℝ) := r.coe_nonneg.trans_lt rt
   rw [← div_lt_one this] at rt
   refine' ⟨_, rt, C, Or.inr zero_lt_one, fun n => _⟩
@@ -232,7 +232,7 @@ theorem lt_radius_of_isO (hβ‚€ : r β‰  0) {a : ℝ} (ha : a ∈ Ioo (-1 : ℝ) 1
   have : (r : ℝ) < r / a := by
     simpa only [div_one] using (div_lt_div_left hβ‚€ zero_lt_one ha.1).2 ha.2
   norm_cast  at this
-  rw [← Ennreal.coe_lt_coe] at this
+  rw [← ENNReal.coe_lt_coe] at this
   refine' this.trans_le (p.le_radius_of_bound C fun n => _)
   rw [NNReal.coe_div, div_pow, ← mul_div_assoc, div_le_iff (pow_pos ha.1 n)]
   exact (le_abs_self _).trans (hp n)
@@ -308,7 +308,7 @@ protected theorem summable [CompleteSpace F] (p : FormalMultilinearSeries π•œ E
 
 theorem radius_eq_top_of_summable_norm (p : FormalMultilinearSeries π•œ E F)
     (hs : βˆ€ r : ℝβ‰₯0, Summable fun n => β€–p nβ€– * r ^ n) : p.radius = ∞ :=
-  Ennreal.eq_top_of_forall_nNReal_le fun r => p.le_radius_of_summable_norm (hs r)
+  ENNReal.eq_top_of_forall_nnreal_le fun r => p.le_radius_of_summable_norm (hs r)
 #align formal_multilinear_series.radius_eq_top_of_summable_norm FormalMultilinearSeries.radius_eq_top_of_summable_norm
 
 theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
@@ -318,7 +318,7 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
   Β· intro h r
     obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, hC : 0 < C, hp⟩ :=
       p.norm_mul_pow_le_mul_pow_of_lt_radius
-        (show (r : ℝβ‰₯0∞) < p.radius from h.symm β–Έ Ennreal.coe_lt_top)
+        (show (r : ℝβ‰₯0∞) < p.radius from h.symm β–Έ ENNReal.coe_lt_top)
     refine'
       summable_of_norm_bounded (fun n => (C : ℝ) * a ^ n)
         ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _) fun n => _
@@ -331,8 +331,8 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
 theorem le_mul_pow_of_radius_pos (p : FormalMultilinearSeries π•œ E F) (h : 0 < p.radius) :
     βˆƒ (C r : _)(hC : 0 < C)(hr : 0 < r), βˆ€ n, β€–p nβ€– ≀ C * r ^ n :=
   by
-  rcases Ennreal.lt_iff_exists_nNReal_btwn.1 h with ⟨r, r0, rlt⟩
-  have rpos : 0 < (r : ℝ) := by simp [Ennreal.coe_pos.1 r0]
+  rcases ENNReal.lt_iff_exists_nnreal_btwn.1 h with ⟨r, r0, rlt⟩
+  have rpos : 0 < (r : ℝ) := by simp [ENNReal.coe_pos.1 r0]
   rcases norm_le_div_pow_of_pos_of_lt_radius p rpos rlt with ⟨C, Cpos, hCp⟩
   refine' ⟨C, r⁻¹, Cpos, by simp [rpos], fun n => _⟩
   convert hCp n
@@ -343,7 +343,7 @@ theorem le_mul_pow_of_radius_pos (p : FormalMultilinearSeries π•œ E F) (h : 0 <
 theorem min_radius_le_radius_add (p q : FormalMultilinearSeries π•œ E F) :
     min p.radius q.radius ≀ (p + q).radius :=
   by
-  refine' Ennreal.le_of_forall_nNReal_lt fun r hr => _
+  refine' ENNReal.le_of_forall_nnreal_lt fun r hr => _
   rw [lt_min_iff] at hr
   have := ((p.is_o_one_of_lt_radius hr.1).add (q.is_o_one_of_lt_radius hr.2)).IsO
   refine' (p + q).le_radius_of_isO ((is_O_of_le _ fun n => _).trans this)
@@ -363,7 +363,7 @@ protected theorem hasSum [CompleteSpace F] (p : FormalMultilinearSeries π•œ E F
 theorem radius_le_radius_continuousLinearMap_comp (p : FormalMultilinearSeries π•œ E F)
     (f : F β†’L[π•œ] G) : p.radius ≀ (f.compFormalMultilinearSeries p).radius :=
   by
-  refine' Ennreal.le_of_forall_nNReal_lt fun r hr => _
+  refine' ENNReal.le_of_forall_nnreal_lt fun r hr => _
   apply le_radius_of_is_O
   apply (is_O.trans_is_o _ (p.is_o_one_of_lt_radius hr)).IsO
   refine' is_O.mul (@is_O_with.is_O _ _ _ _ _ β€–fβ€– _ _ _ _) (is_O_refl _ _)
@@ -712,7 +712,7 @@ theorem HasFpowerSeriesAt.isO_sub_partialSum_pow (hf : HasFpowerSeriesAt f p x)
     (fun y : E => f (x + y) - p.partialSum n y) =O[𝓝 0] fun y => β€–yβ€– ^ n :=
   by
   rcases hf with ⟨r, hf⟩
-  rcases Ennreal.lt_iff_exists_nNReal_btwn.1 hf.r_pos with ⟨r', r'0, h⟩
+  rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hf.r_pos with ⟨r', r'0, h⟩
   obtain ⟨a, ha, C, hC, hp⟩ :
     βˆƒ a ∈ Ioo (0 : ℝ) 1,
       βˆƒ C > 0,
@@ -737,7 +737,7 @@ theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
   by
   lift r' to ℝβ‰₯0 using ne_top_of_lt hr
   rcases(zero_le r').eq_or_lt with (rfl | hr'0)
-  Β· simp only [is_O_bot, Emetric.ball_zero, principal_empty, Ennreal.coe_zero]
+  Β· simp only [is_O_bot, Emetric.ball_zero, principal_empty, ENNReal.coe_zero]
   obtain ⟨a, ha, C, hC : 0 < C, hp⟩ :
     βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n : β„•, β€–p nβ€– * ↑r' ^ n ≀ C * a ^ n
   exact p.norm_mul_pow_le_mul_pow_of_lt_radius (hr.trans_le hf.r_le)
@@ -759,7 +759,7 @@ theorem HasFpowerSeriesOnBall.isO_image_sub_image_sub_deriv_principal
         zero_add, ← Subsingleton.pi_single_eq (0 : Fin 1) (y.1 - x), Pi.single, ←
         Subsingleton.pi_single_eq (0 : Fin 1) (y.2 - x), Pi.single, ← (p 1).map_sub, ← Pi.single,
         Subsingleton.pi_single_eq, sub_sub_sub_cancel_right]
-    rw [Emetric.mem_ball, edist_eq_coe_nnnorm_sub, Ennreal.coe_lt_coe] at hy'
+    rw [Emetric.mem_ball, edist_eq_coe_nnnorm_sub, ENNReal.coe_lt_coe] at hy'
     set B : β„• β†’ ℝ := fun n => C * (a / r') ^ 2 * (β€–y - (x, x)β€– * β€–y.1 - y.2β€–) * ((n + 2) * a ^ n)
     have hAB : βˆ€ n, β€–A (n + 2)β€– ≀ B n := fun n =>
       calc
@@ -819,7 +819,7 @@ theorem HasFpowerSeriesAt.isO_image_sub_norm_mul_norm_sub (hf : HasFpowerSeriesA
       β€–y - (x, x)β€– * β€–y.1 - y.2β€– :=
   by
   rcases hf with ⟨r, hf⟩
-  rcases Ennreal.lt_iff_exists_nNReal_btwn.1 hf.r_pos with ⟨r', r'0, h⟩
+  rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hf.r_pos with ⟨r', r'0, h⟩
   refine' (hf.is_O_image_sub_image_sub_deriv_principal h).mono _
   exact le_principal_iff.2 (Emetric.ball_mem_nhds _ r'0)
 #align has_fpower_series_at.is_O_image_sub_norm_mul_norm_sub HasFpowerSeriesAt.isO_image_sub_norm_mul_norm_sub
@@ -853,7 +853,7 @@ theorem HasFpowerSeriesOnBall.tendstoLocallyUniformlyOn (hf : HasFpowerSeriesOnB
       (Emetric.ball (0 : E) r) :=
   by
   intro u hu x hx
-  rcases Ennreal.lt_iff_exists_nNReal_btwn.1 hx with ⟨r', xr', hr'⟩
+  rcases ENNReal.lt_iff_exists_nnreal_btwn.1 hx with ⟨r', xr', hr'⟩
   have : Emetric.ball (0 : E) r' ∈ 𝓝 x := IsOpen.mem_nhds Emetric.isOpen_ball xr'
   refine' ⟨Emetric.ball (0 : E) r', mem_nhdsWithin_of_mem_nhds this, _⟩
   simpa [Metric.emetric_ball_nNReal] using hf.tendsto_uniformly_on hr' u hu
@@ -1074,14 +1074,14 @@ theorem HasFpowerSeriesOnBall.rEqTopOfExists {f : π•œ β†’ E} {r : ℝβ‰₯0∞} {
         βˆƒ p' : FormalMultilinearSeries π•œ π•œ E, HasFpowerSeriesOnBall f p' x r') :
     HasFpowerSeriesOnBall f p x ∞ :=
   { r_le :=
-      Ennreal.le_of_forall_pos_nNReal_lt fun r hr hr' =>
+      ENNReal.le_of_forall_pos_nnreal_lt fun r hr hr' =>
         let ⟨p', hp'⟩ := h' r hr
         (h.exchangeRadius hp').r_le
-    r_pos := Ennreal.coe_lt_top
+    r_pos := ENNReal.coe_lt_top
     HasSum := fun y hy =>
       let ⟨r', hr'⟩ := exists_gt β€–yβ€–β‚Š
       let ⟨p', hp'⟩ := h' r' hr'.ne_bot.bot_lt
-      (h.exchangeRadius hp').HasSum <| mem_emetric_ball_zero_iff.mpr (Ennreal.coe_lt_coe.2 hr') }
+      (h.exchangeRadius hp').HasSum <| mem_emetric_ball_zero_iff.mpr (ENNReal.coe_lt_coe.2 hr') }
 #align has_fpower_series_on_ball.r_eq_top_of_exists HasFpowerSeriesOnBall.rEqTopOfExists
 
 end Uniqueness
@@ -1256,7 +1256,7 @@ theorem change_origin_series_summable_auxβ‚‚ (hr : (r : ℝβ‰₯0∞) < p.radius)
     Summable fun s : Ξ£l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
       β€–p (k + s.1)β€–β‚Š * r ^ s.1 :=
   by
-  rcases Ennreal.lt_iff_exists_add_pos_lt.1 hr with ⟨r', h0, hr'⟩
+  rcases ENNReal.lt_iff_exists_add_pos_lt.1 hr with ⟨r', h0, hr'⟩
   simpa only [mul_inv_cancel_rightβ‚€ (pow_pos h0 _).ne'] using
     ((NNReal.summable_sigma.1 (p.change_origin_series_summable_aux₁ hr')).1 k).mul_right (r' ^ k)⁻¹
 #align formal_multilinear_series.change_origin_series_summable_auxβ‚‚ FormalMultilinearSeries.change_origin_series_summable_auxβ‚‚
@@ -1272,7 +1272,7 @@ theorem changeOriginSeries_summable_aux₃ {r : ℝβ‰₯0} (hr : ↑r < p.radius)
 #align formal_multilinear_series.change_origin_series_summable_aux₃ FormalMultilinearSeries.changeOriginSeries_summable_aux₃
 
 theorem le_changeOriginSeries_radius (k : β„•) : p.radius ≀ (p.changeOriginSeries k).radius :=
-  Ennreal.le_of_forall_nNReal_lt fun r hr =>
+  ENNReal.le_of_forall_nnreal_lt fun r hr =>
     le_radius_of_summable_nnnorm _ (p.changeOriginSeries_summable_aux₃ hr k)
 #align formal_multilinear_series.le_change_origin_series_radius FormalMultilinearSeries.le_changeOriginSeries_radius
 
@@ -1291,7 +1291,7 @@ theorem nnnorm_changeOrigin_le (k : β„•) (h : (β€–xβ€–β‚Š : ℝβ‰₯0∞) < p.radi
 convergence.-/
 theorem changeOrigin_radius : p.radius - β€–xβ€–β‚Š ≀ (p.changeOrigin x).radius :=
   by
-  refine' Ennreal.le_of_forall_pos_nNReal_lt fun r h0 hr => _
+  refine' ENNReal.le_of_forall_pos_nnreal_lt fun r h0 hr => _
   rw [lt_tsub_iff_right, add_comm] at hr
   have hr' : (β€–xβ€–β‚Š : ℝβ‰₯0∞) < p.radius := (le_add_right le_rfl).trans_lt hr
   apply le_radius_of_summable_nnnorm
@@ -1448,16 +1448,16 @@ theorem hasFpowerSeriesAt_iff :
   simp only [Metric.eventually_nhds_iff]
   rintro ⟨r, r_pos, h⟩
   refine' ⟨p.radius βŠ“ r.to_nnreal, by simp, _, _⟩
-  Β· simp only [r_pos.lt, lt_inf_iff, Ennreal.coe_pos, Real.toNNReal_pos, and_true_iff]
+  Β· simp only [r_pos.lt, lt_inf_iff, ENNReal.coe_pos, Real.toNNReal_pos, and_true_iff]
     obtain ⟨z, z_pos, le_z⟩ := NormedField.exists_norm_lt π•œ r_pos.lt
-    have : (β€–zβ€–β‚Š : Ennreal) ≀ p.radius :=
+    have : (β€–zβ€–β‚Š : ENNReal) ≀ p.radius :=
       by
       simp only [dist_zero_right] at h
       apply FormalMultilinearSeries.le_radius_of_tendsto
       convert tendsto_norm.comp (h le_z).Summable.tendsto_atTop_zero
       funext <;> simp [norm_smul, mul_comm]
     refine' lt_of_lt_of_le _ this
-    simp only [Ennreal.coe_pos]
+    simp only [ENNReal.coe_pos]
     exact zero_lt_iff.mpr (nnnorm_ne_zero_iff.mpr (norm_pos_iff.mp z_pos))
   Β· simp only [Emetric.mem_ball, lt_inf_iff, edist_lt_coe, apply_eq_pow_smul_coeff, and_imp,
       dist_zero_right] at h⊒

Changes in mathlib4

mathlib3
mathlib4
chore: restore simps that used to work (#12126)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -1022,9 +1022,7 @@ theorem HasFPowerSeriesAt.eq_zero {p : FormalMultilinearSeries π•œ π•œ E} {x :
   funext n
   ext x
   rw [← mkPiRing_apply_one_eq_self (p n)]
-  -- Porting note: nasty hack, was `simp [h.apply_eq_zero n 1]`
-  have := Or.intro_right ?_ (h.apply_eq_zero n 1)
-  simpa using this
+  simp [h.apply_eq_zero n 1]
 #align has_fpower_series_at.eq_zero HasFPowerSeriesAt.eq_zero
 
 /-- One-dimensional formal multilinear series representing the same function are equal. -/
chore: Rename mul-div cancellation lemmas (#11530)

Lemma names around cancellation of multiplication and division are a mess.

This PR renames a handful of them according to the following table (each big row contains the multiplicative statement, then the three rows contain the GroupWithZero lemma name, the Group lemma, the AddGroup lemma name).

| Statement | New name | Old name | |

Diff
@@ -441,7 +441,7 @@ theorem HasFPowerSeriesOnBall.comp_sub (hf : HasFPowerSeriesOnBall f p x r) (y :
 theorem HasFPowerSeriesOnBall.hasSum_sub (hf : HasFPowerSeriesOnBall f p x r) {y : E}
     (hy : y ∈ EMetric.ball x r) : HasSum (fun n : β„• => p n fun _ => y - x) (f y) := by
   have : y - x ∈ EMetric.ball (0 : E) r := by simpa [edist_eq_coe_nnnorm_sub] using hy
-  simpa only [add_sub_cancel'_right] using hf.hasSum this
+  simpa only [add_sub_cancel] using hf.hasSum this
 #align has_fpower_series_on_ball.has_sum_sub HasFPowerSeriesOnBall.hasSum_sub
 
 theorem HasFPowerSeriesOnBall.radius_pos (hf : HasFPowerSeriesOnBall f p x r) : 0 < p.radius :=
@@ -1387,7 +1387,7 @@ theorem HasFPowerSeriesOnBall.analyticAt_of_mem (hf : HasFPowerSeriesOnBall f p
     (h : y ∈ EMetric.ball x r) : AnalyticAt π•œ f y := by
   have : (β€–y - xβ€–β‚Š : ℝβ‰₯0∞) < r := by simpa [edist_eq_coe_nnnorm_sub] using h
   have := hf.changeOrigin this
-  rw [add_sub_cancel'_right] at this
+  rw [add_sub_cancel] at this
   exact this.analyticAt
 #align has_fpower_series_on_ball.analytic_at_of_mem HasFPowerSeriesOnBall.analyticAt_of_mem
 
@@ -1458,7 +1458,7 @@ theorem hasFPowerSeriesAt_iff :
 theorem hasFPowerSeriesAt_iff' :
     HasFPowerSeriesAt f p zβ‚€ ↔ βˆ€αΆ  z in 𝓝 zβ‚€, HasSum (fun n => (z - zβ‚€) ^ n β€’ p.coeff n) (f z) := by
   rw [← map_add_left_nhds_zero, eventually_map, hasFPowerSeriesAt_iff]
-  simp_rw [add_sub_cancel']
+  simp_rw [add_sub_cancel_left]
 #align has_fpower_series_at_iff' hasFPowerSeriesAt_iff'
 
 end
chore(*): remove empty lines between variable statements (#11418)

Empty lines were removed by executing the following Python script twice

import os
import re


# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
  for filename in files:
    if filename.endswith('.lean'):
      file_path = os.path.join(dir_path, filename)

      # Open the file and read its contents
      with open(file_path, 'r') as file:
        content = file.read()

      # Use a regular expression to replace sequences of "variable" lines separated by empty lines
      # with sequences without empty lines
      modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)

      # Write the modified content back to the file
      with open(file_path, 'w') as file:
        file.write(modified_content)
Diff
@@ -82,11 +82,8 @@ open Set Filter Asymptotics
 namespace FormalMultilinearSeries
 
 variable [Ring π•œ] [AddCommGroup E] [AddCommGroup F] [Module π•œ E] [Module π•œ F]
-
 variable [TopologicalSpace E] [TopologicalSpace F]
-
 variable [TopologicalAddGroup E] [TopologicalAddGroup F]
-
 variable [ContinuousConstSMul π•œ E] [ContinuousConstSMul π•œ F]
 
 /-- Given a formal multilinear series `p` and a vector `x`, then `p.sum x` is the sum `Ξ£ pβ‚™ xⁿ`. A
chore: remove unused tactics (#11351)

I removed some of the tactics that were not used and are hopefully uncontroversial arising from the linter at #11308.

As the commit messages should convey, the removed tactics are, essentially,

push_cast
norm_cast
congr
norm_num
dsimp
funext
intro
infer_instance
Diff
@@ -1448,7 +1448,6 @@ theorem hasFPowerSeriesAt_iff :
       simp only [dist_zero_right] at h
       apply FormalMultilinearSeries.le_radius_of_tendsto
       convert tendsto_norm.comp (h le_z).summable.tendsto_atTop_zero
-      funext
       simp [norm_smul, mul_comm]
     refine' lt_of_lt_of_le _ this
     simp only [ENNReal.coe_pos]
chore: scope open Classical (#11199)

We remove all but one open Classicals, instead preferring to use open scoped Classical. The only real side-effect this led to is moving a couple declarations to use Exists.choose instead of Classical.choose.

The first few commits are explicitly labelled regex replaces for ease of review.

Diff
@@ -74,7 +74,8 @@ noncomputable section
 
 variable {π•œ E F G : Type*}
 
-open Topology Classical BigOperators NNReal Filter ENNReal
+open scoped Classical
+open Topology BigOperators NNReal Filter ENNReal
 
 open Set Filter Asymptotics
 
chore: move Mathlib to v4.7.0-rc1 (#11162)

This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0 branch as we update to intermediate nightlies.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>

Diff
@@ -776,9 +776,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
           Β· apply hp
           Β· apply hy'.le
         _ = B n := by
-          -- Porting note: in the original, `B` was in the `field_simp`, but now Lean does not
-          -- accept it. The current proof works in Lean 4, but does not in Lean 3.
-          field_simp [pow_succ]
+          field_simp [B, pow_succ]
           simp only [mul_assoc, mul_comm, mul_left_comm]
     have hBL : HasSum B (L y) := by
       apply HasSum.mul_left
@@ -792,7 +790,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
     refine' (IsBigO.of_bound 1 (eventually_principal.2 fun y hy => _)).trans this
     rw [one_mul]
     exact (hL y hy).trans (le_abs_self _)
-  simp_rw [mul_right_comm _ (_ * _)]  -- Porting note: there was an `L` inside the `simp_rw`.
+  simp_rw [L, mul_right_comm _ (_ * _)]
   exact (isBigO_refl _ _).const_mul_left _
 set_option linter.uppercaseLean3 false in
 #align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
@@ -1333,7 +1331,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     exact p.nnnorm_changeOriginSeriesTerm_apply_le _ _ _ _ _ _
   have hf : HasSum f ((p.changeOrigin x).sum y) := by
     refine' HasSum.sigma_of_hasSum ((p.changeOrigin x).summable y_mem_ball).hasSum (fun k => _) hsf
-    Β· dsimp only
+    Β· dsimp only [f]
       refine' ContinuousMultilinearMap.hasSum_eval _ _
       have := (p.hasFPowerSeriesOnBall_changeOrigin k radius_pos).hasSum x_mem_ball
       rw [zero_add] at this
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -760,14 +760,14 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
     have hAB : βˆ€ n, β€–A (n + 2)β€– ≀ B n := fun n =>
       calc
         β€–A (n + 2)β€– ≀ β€–p (n + 2)β€– * ↑(n + 2) * β€–y - (x, x)β€– ^ (n + 1) * β€–y.1 - y.2β€– := by
-          -- porting note: `pi_norm_const` was `pi_norm_const (_ : E)`
+          -- Porting note: `pi_norm_const` was `pi_norm_const (_ : E)`
           simpa only [Fintype.card_fin, pi_norm_const, Prod.norm_def, Pi.sub_def,
             Prod.fst_sub, Prod.snd_sub, sub_sub_sub_cancel_right] using
             (p <| n + 2).norm_image_sub_le (fun _ => y.1 - x) fun _ => y.2 - x
         _ = β€–p (n + 2)β€– * β€–y - (x, x)β€– ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) := by
           rw [pow_succ β€–y - (x, x)β€–]
           ring
-        -- porting note: the two `↑` in `↑r'` are new, without them, Lean fails to synthesize
+        -- Porting note: the two `↑` in `↑r'` are new, without them, Lean fails to synthesize
         -- instances `HDiv ℝ ℝβ‰₯0 ?m` or `HMul ℝ ℝβ‰₯0 ?m`
         _ ≀ C * a ^ (n + 2) / ↑r' ^ (n + 2)
             * ↑r' ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) := by
@@ -776,7 +776,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
           Β· apply hp
           Β· apply hy'.le
         _ = B n := by
-          -- porting note: in the original, `B` was in the `field_simp`, but now Lean does not
+          -- Porting note: in the original, `B` was in the `field_simp`, but now Lean does not
           -- accept it. The current proof works in Lean 4, but does not in Lean 3.
           field_simp [pow_succ]
           simp only [mul_assoc, mul_comm, mul_left_comm]
@@ -785,14 +785,14 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
       simp only [add_mul]
       have : β€–aβ€– < 1 := by simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
       rw [div_eq_mul_inv, div_eq_mul_inv]
-      exact (hasSum_coe_mul_geometric_of_norm_lt_one this).add  -- porting note: was `convert`!
+      exact (hasSum_coe_mul_geometric_of_norm_lt_one this).add  -- Porting note: was `convert`!
           ((hasSum_geometric_of_norm_lt_one this).mul_left 2)
     exact hA.norm_le_of_bounded hBL hAB
   suffices L =O[π“Ÿ (EMetric.ball (x, x) r')] fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€– by
     refine' (IsBigO.of_bound 1 (eventually_principal.2 fun y hy => _)).trans this
     rw [one_mul]
     exact (hL y hy).trans (le_abs_self _)
-  simp_rw [mul_right_comm _ (_ * _)]  -- porting note: there was an `L` inside the `simp_rw`.
+  simp_rw [mul_right_comm _ (_ * _)]  -- Porting note: there was an `L` inside the `simp_rw`.
   exact (isBigO_refl _ _).const_mul_left _
 set_option linter.uppercaseLean3 false in
 #align has_fpower_series_on_ball.is_O_image_sub_image_sub_deriv_principal HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
@@ -958,7 +958,7 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
   clear h hc z_mem
   cases' n with n
   Β· exact norm_eq_zero.mp (by
-      -- porting note: the symmetric difference of the `simpa only` sets:
+      -- Porting note: the symmetric difference of the `simpa only` sets:
       -- added `Nat.zero_eq, zero_add, pow_one`
       -- removed `zero_pow, Ne.def, Nat.one_ne_zero, not_false_iff`
       simpa only [Nat.zero_eq, fin0_apply_norm, norm_eq_zero, norm_zero, zero_add, pow_one,
@@ -977,13 +977,13 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
     have hβ‚‚ :=
       calc
         β€–p fun _ => k β€’ yβ€– ≀ c * β€–k β€’ yβ€– ^ (n.succ + 1) := by
-          -- porting note: now Lean wants `_root_.`
+          -- Porting note: now Lean wants `_root_.`
           simpa only [norm_pow, _root_.norm_norm] using ht (k β€’ y) (δΡ (mem_ball_zero_iff.mpr h₁))
           --simpa only [norm_pow, norm_norm] using ht (k β€’ y) (δΡ (mem_ball_zero_iff.mpr h₁))
         _ = β€–kβ€– ^ n.succ * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) := by
-          -- porting note: added `Nat.succ_eq_add_one` since otherwise `ring` does not conclude.
+          -- Porting note: added `Nat.succ_eq_add_one` since otherwise `ring` does not conclude.
           simp only [norm_smul, mul_pow, Nat.succ_eq_add_one]
-          -- porting note: removed `rw [pow_succ]`, since it now becomes superfluous.
+          -- Porting note: removed `rw [pow_succ]`, since it now becomes superfluous.
           ring
     have h₃ : β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1)) < Ξ΅ :=
       inv_mul_cancel_rightβ‚€ hβ‚€.ne.symm Ξ΅ β–Έ
@@ -1022,11 +1022,11 @@ theorem HasFPowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {
 /-- A one-dimensional formal multilinear series representing the zero function is zero. -/
 theorem HasFPowerSeriesAt.eq_zero {p : FormalMultilinearSeries π•œ π•œ E} {x : π•œ}
     (h : HasFPowerSeriesAt 0 p x) : p = 0 := by
-  -- porting note: `funext; ext` was `ext (n x)`
+  -- Porting note: `funext; ext` was `ext (n x)`
   funext n
   ext x
   rw [← mkPiRing_apply_one_eq_self (p n)]
-  -- porting note: nasty hack, was `simp [h.apply_eq_zero n 1]`
+  -- Porting note: nasty hack, was `simp [h.apply_eq_zero n 1]`
   have := Or.intro_right ?_ (h.apply_eq_zero n 1)
   simpa using this
 #align has_fpower_series_at.eq_zero HasFPowerSeriesAt.eq_zero
chore: remove stream-of-conciousness syntax for obtain (#11045)

This covers many instances, but is not exhaustive.

Independently of whether that syntax should be avoided (similar to #10534), I think all these changes are small improvements.

Diff
@@ -738,8 +738,8 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
   rcases (zero_le r').eq_or_lt with (rfl | hr'0)
   Β· simp only [isBigO_bot, EMetric.ball_zero, principal_empty, ENNReal.coe_zero]
   obtain ⟨a, ha, C, hC : 0 < C, hp⟩ :
-    βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n : β„•, β€–p nβ€– * (r' : ℝ) ^ n ≀ C * a ^ n
-  exact p.norm_mul_pow_le_mul_pow_of_lt_radius (hr.trans_le hf.r_le)
+      βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ n : β„•, β€–p nβ€– * (r' : ℝ) ^ n ≀ C * a ^ n :=
+    p.norm_mul_pow_le_mul_pow_of_lt_radius (hr.trans_le hf.r_le)
   simp only [← le_div_iff (pow_pos (NNReal.coe_pos.2 hr'0) _)] at hp
   set L : E Γ— E β†’ ℝ := fun y =>
     C * (a / r') ^ 2 * (β€–y - (x, x)β€– * β€–y.1 - y.2β€–) * (a / (1 - a) ^ 2 + 2 / (1 - a))
@@ -830,8 +830,7 @@ theorem HasFPowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFPowerS
     TendstoUniformlyOn (fun n y => p.partialSum n y) (fun y => f (x + y)) atTop
       (Metric.ball (0 : E) r') := by
   obtain ⟨a, ha, C, -, hp⟩ : βˆƒ a ∈ Ioo (0 : ℝ) 1, βˆƒ C > 0, βˆ€ y ∈ Metric.ball (0 : E) r', βˆ€ n,
-    β€–f (x + y) - p.partialSum n yβ€– ≀ C * a ^ n
-  exact hf.uniform_geometric_approx h
+    β€–f (x + y) - p.partialSum n yβ€– ≀ C * a ^ n := hf.uniform_geometric_approx h
   refine' Metric.tendstoUniformlyOn_iff.2 fun Ξ΅ Ξ΅pos => _
   have L : Tendsto (fun n => (C : ℝ) * a ^ n) atTop (𝓝 ((C : ℝ) * 0)) :=
     tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_zero_of_lt_one ha.1.le ha.2)
chore: remove stream-of-consciousness uses of have, replace and suffices (#10640)

No changes to tactic file, it's just boring fixes throughout the library.

This follows on from #6964.

Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -720,7 +720,7 @@ theorem HasFPowerSeriesAt.isBigO_sub_partialSum_pow (hf : HasFPowerSeriesAt f p
       β€–f (x + y) - p.partialSum n yβ€– ≀ C * (a * (β€–yβ€– / r')) ^ n :=
     hf.uniform_geometric_approx' h
   refine' isBigO_iff.2 ⟨C * (a / r') ^ n, _⟩
-  replace r'0 : 0 < (r' : ℝ); Β· exact mod_cast r'0
+  replace r'0 : 0 < (r' : ℝ) := mod_cast r'0
   filter_upwards [Metric.ball_mem_nhds (0 : E) r'0] with y hy
   simpa [mul_pow, mul_div_assoc, mul_assoc, div_mul_eq_mul_div] using hp y hy n
 set_option linter.uppercaseLean3 false in
feat: generalize ContinuousMultilinearLinearMap.mkPiField to mkPiRing (#9910)

This matches the generality of the non-continuous versions.

The norm_smulRight lemma is the only new result.

Diff
@@ -941,7 +941,7 @@ If a function `f : E β†’ F` has two representations as power series at a point `
 to formal multilinear series `p₁` and `pβ‚‚`, then these representations agree term-by-term. That is,
 for any `n : β„•` and `y : E`, `p₁ n (fun i ↦ y) = pβ‚‚ n (fun i ↦ y)`. In the one-dimensional case,
 when `f : π•œ β†’ E`, the continuous multilinear maps `p₁ n` and `pβ‚‚ n` are given by
-`ContinuousMultilinearMap.mkPiField`, and hence are determined completely by the value of
+`ContinuousMultilinearMap.mkPiRing`, and hence are determined completely by the value of
 `p₁ n (fun i ↦ 1)`, so `p₁ = pβ‚‚`. Consequently, the radius of convergence for one series can be
 transferred to the other.
 -/
@@ -1026,7 +1026,7 @@ theorem HasFPowerSeriesAt.eq_zero {p : FormalMultilinearSeries π•œ π•œ E} {x :
   -- porting note: `funext; ext` was `ext (n x)`
   funext n
   ext x
-  rw [← mkPiField_apply_one_eq_self (p n)]
+  rw [← mkPiRing_apply_one_eq_self (p n)]
   -- porting note: nasty hack, was `simp [h.apply_eq_zero n 1]`
   have := Or.intro_right ?_ (h.apply_eq_zero n 1)
   simpa using this
feat: define ContinuousMultilinearMap.linearDeriv and show it's the fderiv (#9846)

Co-authored-by: Sophie Morel

Co-authored-by: Junyan Xu <junyanxu.math@gmail.com> Co-authored-by: morel <smorel@math.princeton.edu>

Diff
@@ -1297,7 +1297,6 @@ theorem changeOrigin_radius : p.radius - β€–xβ€–β‚Š ≀ (p.changeOrigin x).radiu
 
 /-- `derivSeries p` is a power series for `fderiv π•œ f` if `p` is a power series for `f`,
 see `HasFPowerSeriesOnBall.fderiv`. -/
-noncomputable
 def derivSeries : FormalMultilinearSeries π•œ E (E β†’L[π•œ] F) :=
   (continuousMultilinearCurryFin1 π•œ E F : (E[Γ—1]β†’L[π•œ] F) β†’L[π•œ] E β†’L[π•œ] F)
     |>.compFormalMultilinearSeries (p.changeOriginSeries 1)
chore: rename op_norm to opNorm (#10185)

Co-authored-by: adomani <adomani@gmail.com>

Diff
@@ -287,7 +287,7 @@ theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => β€–p n fun _ => xβ€– := by
   rw [mem_emetric_ball_zero_iff] at hx
   refine' .of_nonneg_of_le
-    (fun _ ↦ norm_nonneg _) (fun n ↦ ((p n).le_op_norm _).trans_eq _) (p.summable_norm_mul_pow hx)
+    (fun _ ↦ norm_nonneg _) (fun n ↦ ((p n).le_opNorm _).trans_eq _) (p.summable_norm_mul_pow hx)
   simp
 #align formal_multilinear_series.summable_norm_apply FormalMultilinearSeries.summable_norm_apply
 
@@ -689,7 +689,7 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
   intro n
   calc
     β€–(p n) fun _ : Fin n => yβ€–
-    _ ≀ β€–p nβ€– * ∏ _i : Fin n, β€–yβ€– := ContinuousMultilinearMap.le_op_norm _ _
+    _ ≀ β€–p nβ€– * ∏ _i : Fin n, β€–yβ€– := ContinuousMultilinearMap.le_opNorm _ _
     _ = β€–p nβ€– * (r' : ℝ) ^ n * (β€–yβ€– / r') ^ n := by field_simp [mul_right_comm]
     _ ≀ C * a ^ n * (β€–yβ€– / r') ^ n := by gcongr ?_ * _; apply hp
     _ ≀ C * (a * (β€–yβ€– / r')) ^ n := by rw [mul_pow, mul_assoc]
@@ -1147,8 +1147,8 @@ theorem nnnorm_changeOriginSeriesTerm_apply_le (k l : β„•) (s : Finset (Fin (k +
     β€–p.changeOriginSeriesTerm k l s hs (fun _ => x) fun _ => yβ€–β‚Š ≀
       β€–p (k + l)β€–β‚Š * β€–xβ€–β‚Š ^ l * β€–yβ€–β‚Š ^ k := by
   rw [← p.nnnorm_changeOriginSeriesTerm k l s hs, ← Fin.prod_const, ← Fin.prod_const]
-  apply ContinuousMultilinearMap.le_of_op_nnnorm_le
-  apply ContinuousMultilinearMap.le_op_nnnorm
+  apply ContinuousMultilinearMap.le_of_opNNNorm_le
+  apply ContinuousMultilinearMap.le_opNNNorm
 #align formal_multilinear_series.nnnorm_change_origin_series_term_apply_le FormalMultilinearSeries.nnnorm_changeOriginSeriesTerm_apply_le
 
 /-- The power series for `f.changeOrigin k`.
@@ -1172,7 +1172,7 @@ theorem nnnorm_changeOriginSeries_apply_le_tsum (k l : β„•) (x : E) :
     β€–p.changeOriginSeries k l fun _ => xβ€–β‚Š ≀
       βˆ‘' _ : { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + l)β€–β‚Š * β€–xβ€–β‚Š ^ l := by
   rw [NNReal.tsum_mul_right, ← Fin.prod_const]
-  exact (p.changeOriginSeries k l).le_of_op_nnnorm_le _ (p.nnnorm_changeOriginSeries_le_tsum _ _)
+  exact (p.changeOriginSeries k l).le_of_opNNNorm_le _ (p.nnnorm_changeOriginSeries_le_tsum _ _)
 #align formal_multilinear_series.nnnorm_change_origin_series_apply_le_tsum FormalMultilinearSeries.nnnorm_changeOriginSeries_apply_le_tsum
 
 /-- Changing the origin of a formal multilinear series `p`, so that
@@ -1344,7 +1344,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
         apply hasSum_fintype
       Β· refine' .of_nnnorm_bounded _
           (p.changeOriginSeries_summable_auxβ‚‚ (mem_emetric_ball_zero_iff.1 x_mem_ball) k) fun s => _
-        refine' (ContinuousMultilinearMap.le_op_nnnorm _ _).trans_eq _
+        refine' (ContinuousMultilinearMap.le_opNNNorm _ _).trans_eq _
         simp
   refine' hf.unique (changeOriginIndexEquiv.symm.hasSum_iff.1 _)
   refine' HasSum.sigma_of_hasSum
feat(Analysis.Calculus.FDeriv.Analytic + Analysis.Complex.TaylorSeries): Taylor series of holomorphic functions (#10087)

See here on Zulip.

This adds some general lemmas due to Junyan Xu, culminating in

theorem HasFPowerSeriesOnBall.hasSum_iteratedFDeriv {π•œ : Type*} [NontriviallyNormedField π•œ] {E : Type*}
    [ NormedAddCommGroup E] [NormedSpace π•œ E] {F : Type*} [NormedAddCommGroup F]
    [NormedSpace π•œ F] {p : FormalMultilinearSeries π•œ E F} {f : E β†’ F} {x : E} {r : ℝβ‰₯0∞}
    (h : HasFPowerSeriesOnBall f p x r) [CompleteSpace F] [CharZero π•œ] {y : E} (hy : y ∈ EMetric.ball 0 r) :+1:
    HasSum (fun n ↦ (n ! : π•œ)⁻¹‒ (iteratedFDeriv π•œ n f x) fun x ↦ y) (f (x + y))

and uses this to show that the Taylor series of a function that is complex differentiable on an open ball in β„‚ converges there to the function; similarly for functions that are holomorphic on all of β„‚:

lemma Complex.hasSum_taylorSeries_on_ball {E : Type*} [NormedAddCommGroup E] [NormedSpace β„‚ E]
    [CompleteSpace E] ⦃f : β„‚ β†’ E⦄ ⦃c : ℂ⦄ ⦃r : NNReal⦄ (hf : DifferentiableOn β„‚ f (Metric.ball c ↑r)) ⦃z : ℂ⦄
    (hz : z ∈ Metric.ball c ↑r) :
    HasSum (fun n ↦ (n ! : β„‚)⁻¹ β€’ (z - c) ^ n β€’ iteratedDeriv n f c) (f z)

lemma Complex.taylorSeries_eq_on_ball {E : Type*} [NormedAddCommGroup E] [NormedSpace β„‚ E]
    [CompleteSpace E] ⦃f : β„‚ β†’ E⦄ ⦃c : ℂ⦄ ⦃r : NNReal⦄ (hf : DifferentiableOn β„‚ f (Metric.ball c ↑r)) ⦃z : ℂ⦄
    (hz : z ∈ Metric.ball c ↑r) : 
    βˆ‘' (n : β„•), (n ! : β„‚)⁻¹ β€’ (z - c) ^ n β€’ iteratedDeriv n f c = f z

lemma Complex.taylorSeries_eq_on_ball' ⦃c : ℂ⦄ ⦃r : NNReal⦄ ⦃z : ℂ⦄ (hz : z ∈ Metric.ball c ↑r) {f : β„‚ β†’ β„‚}
    (hf : DifferentiableOn β„‚ f (Metric.ball c ↑r)) : 
    βˆ‘' (n : β„•), (n ! : β„‚)⁻¹ * iteratedDeriv n f c * (z - c) ^ n = f z

and similar lemmas for EMetric.balls and entire functions.

Diff
@@ -1295,6 +1295,13 @@ theorem changeOrigin_radius : p.radius - β€–xβ€–β‚Š ≀ (p.changeOrigin x).radiu
     (NNReal.summable_sigma.1 (p.changeOriginSeries_summable_aux₁ hr)).2
 #align formal_multilinear_series.change_origin_radius FormalMultilinearSeries.changeOrigin_radius
 
+/-- `derivSeries p` is a power series for `fderiv π•œ f` if `p` is a power series for `f`,
+see `HasFPowerSeriesOnBall.fderiv`. -/
+noncomputable
+def derivSeries : FormalMultilinearSeries π•œ E (E β†’L[π•œ] F) :=
+  (continuousMultilinearCurryFin1 π•œ E F : (E[Γ—1]β†’L[π•œ] F) β†’L[π•œ] E β†’L[π•œ] F)
+    |>.compFormalMultilinearSeries (p.changeOriginSeries 1)
+
 end
 
 -- From this point on, assume that the space is complete, to make sure that series that converge
chore(Analysis/SpecificLimits/* and others): rename _0 -> _zero, _1 -> _one (#10077)

See here on Zulip.

This PR changes a bunch of names containing nhds_0 or/and lt_1 to nhds_zero or/and lt_one.

Diff
@@ -280,14 +280,14 @@ theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯
     Summable fun n : β„• => β€–p nβ€– * (r : ℝ) ^ n := by
   obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, - : 0 < C, hp⟩ := p.norm_mul_pow_le_mul_pow_of_lt_radius h
   exact .of_nonneg_of_le (fun n => mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg _))
-    hp ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _)
+    hp ((summable_geometric_of_lt_one ha.1.le ha.2).mul_left _)
 #align formal_multilinear_series.summable_norm_mul_pow FormalMultilinearSeries.summable_norm_mul_pow
 
 theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => β€–p n fun _ => xβ€– := by
   rw [mem_emetric_ball_zero_iff] at hx
   refine' .of_nonneg_of_le
-    (fun _ => norm_nonneg _) (fun n => ((p n).le_op_norm _).trans_eq _) (p.summable_norm_mul_pow hx)
+    (fun _ ↦ norm_nonneg _) (fun n ↦ ((p n).le_op_norm _).trans_eq _) (p.summable_norm_mul_pow hx)
   simp
 #align formal_multilinear_series.summable_norm_apply FormalMultilinearSeries.summable_norm_apply
 
@@ -315,7 +315,7 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
     obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, - : 0 < C, hp⟩ := p.norm_mul_pow_le_mul_pow_of_lt_radius
       (show (r : ℝβ‰₯0∞) < p.radius from h.symm β–Έ ENNReal.coe_lt_top)
     refine' .of_norm_bounded
-      (fun n => (C : ℝ) * a ^ n) ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _) fun n => _
+      (fun n ↦ (C : ℝ) * a ^ n) ((summable_geometric_of_lt_one ha.1.le ha.2).mul_left _) fun n ↦ _
     specialize hp n
     rwa [Real.norm_of_nonneg (mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg n))]
   Β· exact p.radius_eq_top_of_summable_norm
@@ -785,8 +785,8 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
       simp only [add_mul]
       have : β€–aβ€– < 1 := by simp only [Real.norm_eq_abs, abs_of_pos ha.1, ha.2]
       rw [div_eq_mul_inv, div_eq_mul_inv]
-      exact (hasSum_coe_mul_geometric_of_norm_lt_1 this).add  -- porting note: was `convert`!
-          ((hasSum_geometric_of_norm_lt_1 this).mul_left 2)
+      exact (hasSum_coe_mul_geometric_of_norm_lt_one this).add  -- porting note: was `convert`!
+          ((hasSum_geometric_of_norm_lt_one this).mul_left 2)
     exact hA.norm_le_of_bounded hBL hAB
   suffices L =O[π“Ÿ (EMetric.ball (x, x) r')] fun y => β€–y - (x, x)β€– * β€–y.1 - y.2β€– by
     refine' (IsBigO.of_bound 1 (eventually_principal.2 fun y hy => _)).trans this
@@ -834,7 +834,7 @@ theorem HasFPowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFPowerS
   exact hf.uniform_geometric_approx h
   refine' Metric.tendstoUniformlyOn_iff.2 fun Ξ΅ Ξ΅pos => _
   have L : Tendsto (fun n => (C : ℝ) * a ^ n) atTop (𝓝 ((C : ℝ) * 0)) :=
-    tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_0_of_lt_1 ha.1.le ha.2)
+    tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_zero_of_lt_one ha.1.le ha.2)
   rw [mul_zero] at L
   refine' (L.eventually (gt_mem_nhds Ξ΅pos)).mono fun n hn y hy => _
   rw [dist_eq_norm]
feat: The support of f ^ n (#9617)

This involves moving lemmas from Algebra.GroupPower.Ring to Algebra.GroupWithZero.Basic and changing some 0 < n assumptions to n β‰  0.

From LeanAPAP

Diff
@@ -961,7 +961,7 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
   Β· exact norm_eq_zero.mp (by
       -- porting note: the symmetric difference of the `simpa only` sets:
       -- added `Nat.zero_eq, zero_add, pow_one`
-      -- removed `zero_pow', Ne.def, Nat.one_ne_zero, not_false_iff`
+      -- removed `zero_pow, Ne.def, Nat.one_ne_zero, not_false_iff`
       simpa only [Nat.zero_eq, fin0_apply_norm, norm_eq_zero, norm_zero, zero_add, pow_one,
         mul_zero, norm_le_zero_iff] using ht 0 (δΡ (Metric.mem_ball_self δ_pos)))
   Β· refine' Or.elim (Classical.em (y = 0))
feat(Mathlib/Analysis/Analytic): continuously polynomial functions (#9269)

This defines "continuously polynomial" (shortened to "cpolynomial") functions as a special cases of analytic functions: they are the functions that admit a development as a finite formal multilinear series. Then we prove their basic properties. The point of doing is this is that finite series are always summable, so we can remove the completeness assumptions in some results about analytic functions (differentiability for example). Examples of continuously polynomial functions include continuous multilinear maps, and functions defined by polynomials.

Co-authored-by: smorel394 <67864981+smorel394@users.noreply.github.com> Co-authored-by: morel <smorel@math.princeton.edu>

Diff
@@ -1192,7 +1192,7 @@ The forward map sends `(k, l, s)` to `(k + l, s)` and the inverse map sends `(n,
 with non-definitional equalities. -/
 @[simps]
 def changeOriginIndexEquiv :
-    (Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) ≃ Ξ£n : β„•, Finset (Fin n) where
+    (Ξ£ k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) ≃ Ξ£ n : β„•, Finset (Fin n) where
   toFun s := ⟨s.1 + s.2.1, s.2.2⟩
   invFun s :=
     ⟨s.1 - s.2.card, s.2.card,
@@ -1216,6 +1216,16 @@ def changeOriginIndexEquiv :
     simp [tsub_add_cancel_of_le (card_finset_fin_le s), Fin.castIso_to_equiv]
 #align formal_multilinear_series.change_origin_index_equiv FormalMultilinearSeries.changeOriginIndexEquiv
 
+lemma changeOriginSeriesTerm_changeOriginIndexEquiv_symm (n t) :
+    let s := changeOriginIndexEquiv.symm ⟨n, t⟩
+    p.changeOriginSeriesTerm s.1 s.2.1 s.2.2 s.2.2.2 (fun _ ↦ x) (fun _ ↦ y) =
+    p n (t.piecewise (fun _ ↦ x) fun _ ↦ y) := by
+  have : βˆ€ (m) (hm : n = m), p n (t.piecewise (fun _ ↦ x) fun _ ↦ y) =
+      p m ((t.map (Fin.castIso hm).toEmbedding).piecewise (fun _ ↦ x) fun _ ↦ y) := by
+    rintro m rfl
+    simp (config := { unfoldPartialApp := true }) [Finset.piecewise]
+  simp_rw [changeOriginSeriesTerm_apply, eq_comm]; apply this
+
 theorem changeOriginSeries_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : ℝβ‰₯0∞) < p.radius) :
     Summable fun s : Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
       β€–p (s.1 + s.2.1)β€–β‚Š * r ^ s.2.1 * r' ^ s.1 := by
@@ -1309,7 +1319,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
   have x_add_y_mem_ball : x + y ∈ EMetric.ball (0 : E) p.radius := by
     refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ h)
     exact mod_cast nnnorm_add_le x y
-  set f : (Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) β†’ F := fun s =>
+  set f : (Ξ£ k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) β†’ F := fun s =>
     p.changeOriginSeriesTerm s.1 s.2.1 s.2.2 s.2.2.2 (fun _ => x) fun _ => y
   have hsf : Summable f := by
     refine' .of_nnnorm_bounded _ (p.changeOriginSeries_summable_aux₁ h) _
@@ -1333,17 +1343,8 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
   refine' HasSum.sigma_of_hasSum
     (p.hasSum x_add_y_mem_ball) (fun n => _) (changeOriginIndexEquiv.symm.summable_iff.2 hsf)
   erw [(p n).map_add_univ (fun _ => x) fun _ => y]
-  -- porting note: added explicit function
-  convert hasSum_fintype (fun c : Finset (Fin n) => f (changeOriginIndexEquiv.symm ⟨n, c⟩))
-  rename_i s _
-  dsimp only [changeOriginSeriesTerm, (· ∘ ·), changeOriginIndexEquiv_symm_apply_fst,
-    changeOriginIndexEquiv_symm_apply_snd_fst, changeOriginIndexEquiv_symm_apply_snd_snd_coe]
-  rw [ContinuousMultilinearMap.curryFinFinset_apply_const]
-  have : βˆ€ (m) (hm : n = m), p n (s.piecewise (fun _ => x) fun _ => y) =
-      p m ((s.map (Fin.castIso hm).toEquiv.toEmbedding).piecewise (fun _ => x) fun _ => y) := by
-    rintro m rfl
-    simp (config := { unfoldPartialApp := true }) [Finset.piecewise]
-  apply this
+  simp_rw [← changeOriginSeriesTerm_changeOriginIndexEquiv_symm]
+  exact hasSum_fintype (fun c => f (changeOriginIndexEquiv.symm ⟨n, c⟩))
 #align formal_multilinear_series.change_origin_eval FormalMultilinearSeries.changeOrigin_eval
 
 /-- Power series terms are analytic as we vary the origin -/
chore(*): golf, mostly using gcongr/positivity (#9546)
Diff
@@ -706,9 +706,9 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
     hf.uniform_geometric_approx' h
   refine' ⟨a, ha, C, hC, fun y hy n => (hp y hy n).trans _⟩
   have yr' : β€–yβ€– < r' := by rwa [ball_zero_eq] at hy
+  have := ha.1.le -- needed to discharge a side goal on the next line
   gcongr
-  exacts [mul_nonneg ha.1.le (div_nonneg (norm_nonneg y) r'.coe_nonneg),
-    mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)]
+  exact mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)
 #align has_fpower_series_on_ball.uniform_geometric_approx HasFPowerSeriesOnBall.uniform_geometric_approx
 
 /-- Taylor formula for an analytic function, `IsBigO` version. -/
chore(*): replace $ with <| (#9319)

See Zulip thread for the discussion.

Diff
@@ -602,7 +602,7 @@ theorem analyticOn_congr' {s : Set E} (h : f =αΆ [𝓝˒ s] g) : AnalyticOn π•œ
 
 theorem AnalyticOn.congr {s : Set E} (hs : IsOpen s) (hf : AnalyticOn π•œ f s) (hg : s.EqOn f g) :
     AnalyticOn π•œ g s :=
-  hf.congr' $ mem_nhdsSet_iff_forall.mpr
+  hf.congr' <| mem_nhdsSet_iff_forall.mpr
     (fun _ hz => eventuallyEq_iff_exists_mem.mpr ⟨s, hs.mem_nhds hz, hg⟩)
 
 theorem analyticOn_congr {s : Set E} (hs : IsOpen s) (h : s.EqOn f g) : AnalyticOn π•œ f s ↔
chore(*): use βˆƒ x ∈ s, _ instead of βˆƒ (x) (_ : x ∈ s), _ (#9184)

Search for [βˆ€βˆƒ].*(_ and manually replace some occurrences with more readable versions. In case of βˆ€, the new expressions are defeq to the old ones. In case of βˆƒ, they differ by exists_prop.

In some rare cases, golf proofs that needed fixing.

Diff
@@ -802,7 +802,7 @@ ball, the norm of the difference `f y - f z - p 1 (fun _ ↦ y - z)` is bounded
 `C * (max β€–y - xβ€– β€–z - xβ€–) * β€–y - zβ€–`. -/
 theorem HasFPowerSeriesOnBall.image_sub_sub_deriv_le (hf : HasFPowerSeriesOnBall f p x r)
     (hr : r' < r) :
-    βˆƒ C, βˆ€ (y) (_ : y ∈ EMetric.ball x r') (z) (_ : z ∈ EMetric.ball x r'),
+    βˆƒ C, βˆ€α΅‰ (y ∈ EMetric.ball x r') (z ∈ EMetric.ball x r'),
       β€–f y - f z - p 1 fun _ => y - zβ€– ≀ C * max β€–y - xβ€– β€–z - xβ€– * β€–y - zβ€– := by
   simpa only [isBigO_principal, mul_assoc, norm_mul, norm_norm, Prod.forall, EMetric.mem_ball,
     Prod.edist_eq, max_lt_iff, and_imp, @forall_swap (_ < _) E] using
chore: remove uses of cases' (#9171)

I literally went through and regex'd some uses of cases', replacing them with rcases; this is meant to be a low effort PR as I hope that tools can do this in the future.

rcases is an easier replacement than cases, though with better tools we could in future do a second pass converting simple rcases added here (and existing ones) to cases.

Diff
@@ -928,7 +928,7 @@ theorem HasFPowerSeriesOnBall.sum (h : HasFPowerSeriesOnBall f p x r) {y : E}
 /-- The sum of a converging power series is continuous in its disk of convergence. -/
 protected theorem FormalMultilinearSeries.continuousOn [CompleteSpace F] :
     ContinuousOn p.sum (EMetric.ball 0 p.radius) := by
-  cases' (zero_le p.radius).eq_or_lt with h h
+  rcases (zero_le p.radius).eq_or_lt with h | h
   Β· simp [← h, continuousOn_empty]
   Β· exact (p.hasFPowerSeriesOnBall h).continuousOn
 #align formal_multilinear_series.continuous_on FormalMultilinearSeries.continuousOn
chore: replace exact_mod_cast tactic with mod_cast elaborator where possible (#8404)

We still have the exact_mod_cast tactic, used in a few places, which somehow (?) works a little bit harder to prevent the expected type influencing the elaboration of the term. I would like to get to the bottom of this, and it will be easier once the only usages of exact_mod_cast are the ones that don't work using the term elaborator by itself.

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -134,7 +134,7 @@ theorem le_radius_of_bound (C : ℝ) {r : ℝβ‰₯0} (h : βˆ€ n : β„•, β€–p nβ€– *
 /-- If `β€–pβ‚™β€– rⁿ` is bounded in `n`, then the radius of `p` is at least `r`. -/
 theorem le_radius_of_bound_nnreal (C : ℝβ‰₯0) {r : ℝβ‰₯0} (h : βˆ€ n : β„•, β€–p nβ€–β‚Š * r ^ n ≀ C) :
     (r : ℝβ‰₯0∞) ≀ p.radius :=
-  p.le_radius_of_bound C fun n => by exact_mod_cast h n
+  p.le_radius_of_bound C fun n => mod_cast h n
 #align formal_multilinear_series.le_radius_of_bound_nnreal FormalMultilinearSeries.le_radius_of_bound_nnreal
 
 /-- If `β€–pβ‚™β€– rⁿ = O(1)`, as `n β†’ ∞`, then the radius of `p` is at least `r`. -/
@@ -157,7 +157,7 @@ theorem le_radius_of_summable_nnnorm (h : Summable fun n => β€–p nβ€–β‚Š * r ^ n
 theorem le_radius_of_summable (h : Summable fun n => β€–p nβ€– * (r : ℝ) ^ n) : ↑r ≀ p.radius :=
   p.le_radius_of_summable_nnnorm <| by
     simp only [← coe_nnnorm] at h
-    exact_mod_cast h
+    exact mod_cast h
 #align formal_multilinear_series.le_radius_of_summable FormalMultilinearSeries.le_radius_of_summable
 
 theorem radius_eq_top_of_forall_nnreal_isBigO
@@ -258,7 +258,7 @@ theorem norm_le_div_pow_of_pos_of_lt_radius (p : FormalMultilinearSeries π•œ E
 theorem nnnorm_mul_pow_le_of_lt_radius (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0}
     (h : (r : ℝβ‰₯0∞) < p.radius) : βˆƒ C > 0, βˆ€ n, β€–p nβ€–β‚Š * r ^ n ≀ C :=
   let ⟨C, hC, hp⟩ := p.norm_mul_pow_le_of_lt_radius h
-  ⟨⟨C, hC.lt.le⟩, hC, by exact_mod_cast hp⟩
+  ⟨⟨C, hC.lt.le⟩, hC, mod_cast hp⟩
 #align formal_multilinear_series.nnnorm_mul_pow_le_of_lt_radius FormalMultilinearSeries.nnnorm_mul_pow_le_of_lt_radius
 
 theorem le_radius_of_tendsto (p : FormalMultilinearSeries π•œ E F) {l : ℝ}
@@ -676,7 +676,7 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
   have hr'0 : 0 < (r' : ℝ) := (norm_nonneg _).trans_lt yr'
   have : y ∈ EMetric.ball (0 : E) r := by
     refine' mem_emetric_ball_zero_iff.2 (lt_trans _ h)
-    exact_mod_cast yr'
+    exact mod_cast yr'
   rw [norm_sub_rev, ← mul_div_right_comm]
   have ya : a * (β€–yβ€– / ↑r') ≀ a :=
     mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)
@@ -720,7 +720,7 @@ theorem HasFPowerSeriesAt.isBigO_sub_partialSum_pow (hf : HasFPowerSeriesAt f p
       β€–f (x + y) - p.partialSum n yβ€– ≀ C * (a * (β€–yβ€– / r')) ^ n :=
     hf.uniform_geometric_approx' h
   refine' isBigO_iff.2 ⟨C * (a / r') ^ n, _⟩
-  replace r'0 : 0 < (r' : ℝ); Β· exact_mod_cast r'0
+  replace r'0 : 0 < (r' : ℝ); Β· exact mod_cast r'0
   filter_upwards [Metric.ball_mem_nhds (0 : E) r'0] with y hy
   simpa [mul_pow, mul_div_assoc, mul_assoc, div_mul_eq_mul_div] using hp y hy n
 set_option linter.uppercaseLean3 false in
@@ -1308,7 +1308,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     rwa [lt_tsub_iff_right, add_comm]
   have x_add_y_mem_ball : x + y ∈ EMetric.ball (0 : E) p.radius := by
     refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ h)
-    exact_mod_cast nnnorm_add_le x y
+    exact mod_cast nnnorm_add_le x y
   set f : (Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) β†’ F := fun s =>
     p.changeOriginSeriesTerm s.1 s.2.1 s.2.2 s.2.2.2 (fun _ => x) fun _ => y
   have hsf : Summable f := by
@@ -1372,7 +1372,7 @@ theorem HasFPowerSeriesOnBall.changeOrigin (hf : HasFPowerSeriesOnBall f p x r)
         rw [mem_emetric_ball_zero_iff, lt_tsub_iff_right, add_comm] at hz
         rw [p.changeOrigin_eval (hz.trans_le hf.r_le), add_assoc, hf.sum]
         refine' mem_emetric_ball_zero_iff.2 (lt_of_le_of_lt _ hz)
-        exact_mod_cast nnnorm_add_le y z
+        exact mod_cast nnnorm_add_le y z
       rw [this]
       apply (p.changeOrigin y).hasSum
       refine' EMetric.ball_subset_ball (le_trans _ p.changeOrigin_radius) hz
chore: bump to v4.3.0-rc2 (#8366)

PR contents

This is the supremum of

along with some minor fixes from failures on nightly-testing as Mathlib master is merged into it.

Note that some PRs for changes that are already compatible with the current toolchain and will be necessary have already been split out: #8380.

I am hopeful that in future we will be able to progressively merge adaptation PRs into a bump/v4.X.0 branch, so we never end up with a "big merge" like this. However one of these adaptation PRs (#8056) predates my new scheme for combined CI, and it wasn't possible to keep that PR viable in the meantime.

Lean PRs involved in this bump

In particular this includes adjustments for the Lean PRs

leanprover/lean4#2778

We can get rid of all the

local macro_rules | `($x ^ $y) => `(HPow.hPow $x $y) -- Porting note: See issue [lean4#2220](https://github.com/leanprover/lean4/pull/2220)

macros across Mathlib (and in any projects that want to write natural number powers of reals).

leanprover/lean4#2722

Changes the default behaviour of simp to (config := {decide := false}). This makes simp (and consequentially norm_num) less powerful, but also more consistent, and less likely to blow up in long failures. This requires a variety of changes: changing some previously by simp or norm_num to decide or rfl, or adding (config := {decide := true}).

leanprover/lean4#2783

This changed the behaviour of simp so that simp [f] will only unfold "fully applied" occurrences of f. The old behaviour can be recovered with simp (config := { unfoldPartialApp := true }). We may in future add a syntax for this, e.g. simp [!f]; please provide feedback! In the meantime, we have made the following changes:

  • switching to using explicit lemmas that have the intended level of application
  • (config := { unfoldPartialApp := true }) in some places, to recover the old behaviour
  • Using @[eqns] to manually adjust the equation lemmas for a particular definition, recovering the old behaviour just for that definition. See #8371, where we do this for Function.comp and Function.flip.

This change in Lean may require further changes down the line (e.g. adding the !f syntax, and/or upstreaming the special treatment for Function.comp and Function.flip, and/or removing this special treatment). Please keep an open and skeptical mind about these changes!

Co-authored-by: leanprover-community-mathlib4-bot <leanprover-community-mathlib4-bot@users.noreply.github.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Mauricio Collares <mauricio@collares.org>

Diff
@@ -323,7 +323,7 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
 
 /-- If the radius of `p` is positive, then `β€–pβ‚™β€–` grows at most geometrically. -/
 theorem le_mul_pow_of_radius_pos (p : FormalMultilinearSeries π•œ E F) (h : 0 < p.radius) :
-    βˆƒ (C r : _) (hC : 0 < C) (hr : 0 < r), βˆ€ n, β€–p nβ€– ≀ C * r ^ n := by
+    βˆƒ (C r : _) (hC : 0 < C) (_ : 0 < r), βˆ€ n, β€–p nβ€– ≀ C * r ^ n := by
   rcases ENNReal.lt_iff_exists_nnreal_btwn.1 h with ⟨r, r0, rlt⟩
   have rpos : 0 < (r : ℝ) := by simp [ENNReal.coe_pos.1 r0]
   rcases norm_le_div_pow_of_pos_of_lt_radius p rpos rlt with ⟨C, Cpos, hCp⟩
@@ -1220,7 +1220,7 @@ theorem changeOriginSeries_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : ℝ
     Summable fun s : Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l } =>
       β€–p (s.1 + s.2.1)β€–β‚Š * r ^ s.2.1 * r' ^ s.1 := by
   rw [← changeOriginIndexEquiv.symm.summable_iff]
-  dsimp only [(· ∘ ·), changeOriginIndexEquiv_symm_apply_fst,
+  dsimp only [Function.comp_def, changeOriginIndexEquiv_symm_apply_fst,
     changeOriginIndexEquiv_symm_apply_snd_fst]
   have : βˆ€ n : β„•,
       HasSum (fun s : Finset (Fin n) => β€–p (n - s.card + s.card)β€–β‚Š * r ^ s.card * r' ^ (n - s.card))
@@ -1342,7 +1342,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
   have : βˆ€ (m) (hm : n = m), p n (s.piecewise (fun _ => x) fun _ => y) =
       p m ((s.map (Fin.castIso hm).toEquiv.toEmbedding).piecewise (fun _ => x) fun _ => y) := by
     rintro m rfl
-    simp [Finset.piecewise]
+    simp (config := { unfoldPartialApp := true }) [Finset.piecewise]
   apply this
 #align formal_multilinear_series.change_origin_eval FormalMultilinearSeries.changeOrigin_eval
 
chore(InfiniteSum): use dot notation (#8358)

Rename

  • summable_of_norm_bounded -> Summable.of_norm_bounded;
  • summable_of_norm_bounded_eventually -> Summable.of_norm_bounded_eventually;
  • summable_of_nnnorm_bounded -> Summable.of_nnnorm_bounded;
  • summable_of_summable_norm -> Summable.of_norm;
  • summable_of_summable_nnnorm -> Summable.of_nnnorm;

New lemmas

  • Summable.of_norm_bounded_eventually_nat
  • Summable.norm

Misc changes

  • Golf a few proofs.
Diff
@@ -279,14 +279,14 @@ theorem not_summable_norm_of_radius_lt_nnnorm (p : FormalMultilinearSeries π•œ
 theorem summable_norm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0} (h : ↑r < p.radius) :
     Summable fun n : β„• => β€–p nβ€– * (r : ℝ) ^ n := by
   obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, - : 0 < C, hp⟩ := p.norm_mul_pow_le_mul_pow_of_lt_radius h
-  exact summable_of_nonneg_of_le (fun n => mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg _))
+  exact .of_nonneg_of_le (fun n => mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg _))
     hp ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _)
 #align formal_multilinear_series.summable_norm_mul_pow FormalMultilinearSeries.summable_norm_mul_pow
 
 theorem summable_norm_apply (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => β€–p n fun _ => xβ€– := by
   rw [mem_emetric_ball_zero_iff] at hx
-  refine' summable_of_nonneg_of_le
+  refine' .of_nonneg_of_le
     (fun _ => norm_nonneg _) (fun n => ((p n).le_op_norm _).trans_eq _) (p.summable_norm_mul_pow hx)
   simp
 #align formal_multilinear_series.summable_norm_apply FormalMultilinearSeries.summable_norm_apply
@@ -300,7 +300,7 @@ theorem summable_nnnorm_mul_pow (p : FormalMultilinearSeries π•œ E F) {r : ℝ
 
 protected theorem summable [CompleteSpace F] (p : FormalMultilinearSeries π•œ E F) {x : E}
     (hx : x ∈ EMetric.ball (0 : E) p.radius) : Summable fun n : β„• => p n fun _ => x :=
-  summable_of_summable_norm (p.summable_norm_apply hx)
+  (p.summable_norm_apply hx).of_norm
 #align formal_multilinear_series.summable FormalMultilinearSeries.summable
 
 theorem radius_eq_top_of_summable_norm (p : FormalMultilinearSeries π•œ E F)
@@ -314,7 +314,7 @@ theorem radius_eq_top_iff_summable_norm (p : FormalMultilinearSeries π•œ E F) :
   Β· intro h r
     obtain ⟨a, ha : a ∈ Ioo (0 : ℝ) 1, C, - : 0 < C, hp⟩ := p.norm_mul_pow_le_mul_pow_of_lt_radius
       (show (r : ℝβ‰₯0∞) < p.radius from h.symm β–Έ ENNReal.coe_lt_top)
-    refine' summable_of_norm_bounded
+    refine' .of_norm_bounded
       (fun n => (C : ℝ) * a ^ n) ((summable_geometric_of_lt_1 ha.1.le ha.2).mul_left _) fun n => _
     specialize hp n
     rwa [Real.norm_of_nonneg (mul_nonneg (norm_nonneg _) (pow_nonneg r.coe_nonneg n))]
@@ -1312,7 +1312,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
   set f : (Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) β†’ F := fun s =>
     p.changeOriginSeriesTerm s.1 s.2.1 s.2.2 s.2.2.2 (fun _ => x) fun _ => y
   have hsf : Summable f := by
-    refine' summable_of_nnnorm_bounded _ (p.changeOriginSeries_summable_aux₁ h) _
+    refine' .of_nnnorm_bounded _ (p.changeOriginSeries_summable_aux₁ h) _
     rintro ⟨k, l, s, hs⟩
     dsimp only [Subtype.coe_mk]
     exact p.nnnorm_changeOriginSeriesTerm_apply_le _ _ _ _ _ _
@@ -1325,7 +1325,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
       refine' HasSum.sigma_of_hasSum this (fun l => _) _
       Β· simp only [changeOriginSeries, ContinuousMultilinearMap.sum_apply]
         apply hasSum_fintype
-      Β· refine' summable_of_nnnorm_bounded _
+      Β· refine' .of_nnnorm_bounded _
           (p.changeOriginSeries_summable_auxβ‚‚ (mem_emetric_ball_zero_iff.1 x_mem_ball) k) fun s => _
         refine' (ContinuousMultilinearMap.le_op_nnnorm _ _).trans_eq _
         simp
feat(Analysis/Analytic): A few more analyticity lemmas (#7967)
  1. Analytic at a point means analytic in a ball
  2. In addition to AnalyticAt.{smul,mul,pow}, do AnalyticOn.{smul,mul,pow}

Also change AnalyticAt.smul and AnalyticAt.pow to use pointwise smul and pow rather than function smul and pow, as I think this is more ergonomic when used in practice (from experience with https://github.com/girving/ray).

Diff
@@ -1414,6 +1414,11 @@ theorem AnalyticAt.exists_mem_nhds_analyticOn {f : E β†’ F} {x : E} (h : Analyti
     βˆƒ s ∈ 𝓝 x, AnalyticOn π•œ f s :=
 h.eventually_analyticAt.exists_mem
 
+/-- If we're analytic at a point, we're analytic in a nonempty ball -/
+theorem AnalyticAt.exists_ball_analyticOn {f : E β†’ F} {x : E} (h : AnalyticAt π•œ f x) :
+    βˆƒ r : ℝ, 0 < r ∧ AnalyticOn π•œ f (Metric.ball x r) :=
+  Metric.isOpen_iff.mp (isOpen_analyticAt _ _) _ h
+
 end
 
 section
feat(Analysis/Analytic): A few lemmas that simple things are analytic (#7677)

We record various simple lemmas that things are analyticAt or analyticOn. There's no hard work here, just corollaries of other results:

  1. id, fst, snd
  2. Power series terms, in the origin (we already know they have power series, this is just the .analyticAt_changeOrigin corollary
  3. Finite sums
  4. Pairs of analytic functions: x ↦ (f x, g x)

We also add a few lemmas for dealing with curried analytic functions. Starting with AnalyticOn π•œ (uncurry h) s,

  1. AnalyticOn.curry_comp composes it with two input analytic functions
  2. AnalyticOn.along_fst/snd show analyticity along each coordinate

Co-authored-by: Mario Carneiro <di.gama@gmail.com> Co-authored-by: David Loeffler <d.loeffler.01@cantab.net>

Diff
@@ -364,62 +364,8 @@ theorem radius_le_radius_continuousLinearMap_comp (p : FormalMultilinearSeries 
   simpa only [norm_norm] using f.norm_compContinuousMultilinearMap_le (p n)
 #align formal_multilinear_series.radius_le_radius_continuous_linear_map_comp FormalMultilinearSeries.radius_le_radius_continuousLinearMap_comp
 
-/-- The radius of the Cartesian product of two formal series is the minimum of their radii. --/
-lemma radius_prod_eq_min
-    (p : FormalMultilinearSeries π•œ E F) (q : FormalMultilinearSeries π•œ E G) :
-    (p.prod q).radius = min p.radius q.radius := by
-  apply le_antisymm
-  Β· refine ENNReal.le_of_forall_nnreal_lt fun r hr => ?_
-    rw [le_min_iff]
-    have := (p.prod q).isLittleO_one_of_lt_radius hr
-    constructor
-    all_goals { -- kludge, there is no "work_on_goal" in Lean 4?
-      apply FormalMultilinearSeries.le_radius_of_isBigO
-      refine (isBigO_of_le _ fun n ↦ ?_).trans this.isBigO
-      rw [norm_mul, norm_norm, norm_mul, norm_norm]
-      refine mul_le_mul_of_nonneg_right ?_ (norm_nonneg _)
-      rw [FormalMultilinearSeries.prod, ContinuousMultilinearMap.op_norm_prod]
-      try apply le_max_left
-      try apply le_max_right }
-  Β· refine ENNReal.le_of_forall_nnreal_lt fun r hr => ?_
-    rw [lt_min_iff] at hr
-    have := ((p.isLittleO_one_of_lt_radius hr.1).add
-      (q.isLittleO_one_of_lt_radius hr.2)).isBigO
-    refine (p.prod q).le_radius_of_isBigO ((isBigO_of_le _ Ξ» n ↦ ?_).trans this)
-    rw [norm_mul, norm_norm, ←add_mul, norm_mul]
-    refine mul_le_mul_of_nonneg_right ?_ (norm_nonneg _)
-    rw [FormalMultilinearSeries.prod, ContinuousMultilinearMap.op_norm_prod]
-    refine (max_le_add_of_nonneg (norm_nonneg _) (norm_nonneg _)).trans ?_
-    apply Real.le_norm_self
-
 end FormalMultilinearSeries
 
-lemma formalMultilinearSeries_geometric_radius (π•œ) [NontriviallyNormedField π•œ]
-    (A : Type*) [NormedRing A] [NormOneClass A] [NormedAlgebra π•œ A] :
-    (formalMultilinearSeries_geometric π•œ A).radius = 1 := by
-  apply le_antisymm
-  Β· refine le_of_forall_nnreal_lt (fun r hr ↦ ?_)
-    rw [←coe_one, ENNReal.coe_le_coe]
-    have := FormalMultilinearSeries.isLittleO_one_of_lt_radius _ hr
-    simp_rw [formalMultilinearSeries_geometric_apply_norm, one_mul] at this
-    contrapose! this
-    simp_rw [IsLittleO, IsBigOWith, not_forall, norm_one, mul_one,
-      not_eventually]
-    refine ⟨1, one_pos, ?_⟩
-    refine ((eventually_ne_atTop 0).mp (eventually_of_forall ?_)).frequently
-    intro n hn
-    push_neg
-    rwa [norm_pow, one_lt_pow_iff_of_nonneg (norm_nonneg _) hn,
-      Real.norm_of_nonneg (NNReal.coe_nonneg _), ←NNReal.coe_one,
-      NNReal.coe_lt_coe]
-  Β· refine le_of_forall_nnreal_lt (fun r hr ↦ ?_)
-    rw [←Nat.cast_one, ENNReal.coe_lt_coe_nat, Nat.cast_one] at hr
-    apply FormalMultilinearSeries.le_radius_of_isBigO
-    simp_rw [formalMultilinearSeries_geometric_apply_norm, one_mul]
-    refine isBigO_of_le atTop (fun n ↦ ?_)
-    rw [norm_one, Real.norm_of_nonneg (pow_nonneg (coe_nonneg r) _)]
-    exact (pow_le_one _ (coe_nonneg r) hr.le)
-
 /-! ### Expanding a function as a power series -/
 
 
@@ -438,54 +384,12 @@ structure HasFPowerSeriesOnBall (f : E β†’ F) (p : FormalMultilinearSeries π•œ
     βˆ€ {y}, y ∈ EMetric.ball (0 : E) r β†’ HasSum (fun n : β„• => p n fun _ : Fin n => y) (f (x + y))
 #align has_fpower_series_on_ball HasFPowerSeriesOnBall
 
-lemma HasFPowerSeriesOnBall.prod {e : E} {f : E β†’ F} {g : E β†’ G} {r s : ℝβ‰₯0∞}
-    {p : FormalMultilinearSeries π•œ E F} {q : FormalMultilinearSeries π•œ E G}
-    (hf : HasFPowerSeriesOnBall f p e r) (hg : HasFPowerSeriesOnBall g q e s) :
-    HasFPowerSeriesOnBall (fun x ↦ (f x, g x)) (p.prod q) e (min r s) where
-  r_le := by
-    rw [p.radius_prod_eq_min]
-    exact min_le_min hf.r_le hg.r_le
-  r_pos := lt_min hf.r_pos hg.r_pos
-  hasSum := by
-    intro y hy
-    simp_rw [FormalMultilinearSeries.prod, ContinuousMultilinearMap.prod_apply]
-    refine (hf.hasSum ?_).prod_mk (hg.hasSum ?_)
-    Β· exact EMetric.mem_ball.mpr (lt_of_lt_of_le hy (min_le_left _ _))
-    Β· exact EMetric.mem_ball.mpr (lt_of_lt_of_le hy (min_le_right _ _))
-
-variable (π•œ)
-
-lemma hasFPowerSeriesOnBall_inv_one_sub
-    (𝕝 : Type*) [NontriviallyNormedField 𝕝] [NormedAlgebra π•œ 𝕝] :
-    HasFPowerSeriesOnBall (fun x : 𝕝 ↦ (1 - x)⁻¹) (formalMultilinearSeries_geometric π•œ 𝕝) 0 1 := by
-  constructor
-  Β· exact le_of_eq (formalMultilinearSeries_geometric_radius π•œ 𝕝).symm
-  Β· exact one_pos
-  Β· intro y hy
-    simp_rw [zero_add, formalMultilinearSeries_geometric,
-        ContinuousMultilinearMap.mkPiAlgebraFin_apply,
-        List.prod_ofFn, Finset.prod_const,
-        Finset.card_univ, Fintype.card_fin]
-    apply hasSum_geometric_of_norm_lt_1
-    simpa only [←ofReal_one, Metric.emetric_ball, Metric.ball,
-      dist_eq_norm, sub_zero] using hy
-
-variable {π•œ}
-
 /-- Given a function `f : E β†’ F` and a formal multilinear series `p`, we say that `f` has `p` as
 a power series around `x` if `f (x + y) = βˆ‘' pβ‚™ yⁿ` for all `y` in a neighborhood of `0`. -/
 def HasFPowerSeriesAt (f : E β†’ F) (p : FormalMultilinearSeries π•œ E F) (x : E) :=
   βˆƒ r, HasFPowerSeriesOnBall f p x r
 #align has_fpower_series_at HasFPowerSeriesAt
 
-lemma HasFPowerSeriesAt.prod {e : E} {f : E β†’ F} {g : E β†’ G}
-    {p : FormalMultilinearSeries π•œ E F} {q : FormalMultilinearSeries π•œ E G}
-    (hf : HasFPowerSeriesAt f p e) (hg : HasFPowerSeriesAt g q e) :
-    HasFPowerSeriesAt (fun x ↦ (f x, g x)) (p.prod q) e := by
-  rcases hf with ⟨_, hf⟩
-  rcases hg with ⟨_, hg⟩
-  exact ⟨_, hf.prod hg⟩
-
 variable (π•œ)
 
 /-- Given a function `f : E β†’ F`, we say that `f` is analytic at `x` if it admits a convergent power
@@ -502,20 +406,6 @@ def AnalyticOn (f : E β†’ F) (s : Set E) :=
 
 variable {π•œ}
 
-/-- The Cartesian product of analytic functions is analytic. -/
-lemma AnalyticAt.prod {e : E} {f : E β†’ F} {g : E β†’ G}
-    (hf : AnalyticAt π•œ f e) (hg : AnalyticAt π•œ g e) :
-    AnalyticAt π•œ (fun x ↦ (f x, g x)) e := by
-  rcases hf with ⟨_, hf⟩
-  rcases hg with ⟨_, hg⟩
-  exact ⟨_, hf.prod hg⟩
-
-/-- The Cartesian product of analytic functions is analytic. -/
-lemma AnalyticOn.prod {f : E β†’ F} {g : E β†’ G} {s : Set E}
-    (hf : AnalyticOn π•œ f s) (hg : AnalyticOn π•œ g s) :
-    AnalyticOn π•œ (fun x ↦ (f x, g x)) s :=
-  fun x hx ↦ (hf x hx).prod (hg x hx)
-
 theorem HasFPowerSeriesOnBall.hasFPowerSeriesAt (hf : HasFPowerSeriesOnBall f p x r) :
     HasFPowerSeriesAt f p x :=
   ⟨r, hf⟩
@@ -635,10 +525,6 @@ theorem analyticAt_const {v : F} : AnalyticAt π•œ (fun _ => v) x :=
   ⟨constFormalMultilinearSeries π•œ E v, hasFPowerSeriesAt_const⟩
 #align analytic_at_const analyticAt_const
 
-lemma analyticAt_inv_one_sub (𝕝 : Type*) [NontriviallyNormedField 𝕝] [NormedAlgebra π•œ 𝕝] :
-    AnalyticAt π•œ (fun x : 𝕝 ↦ (1 - x)⁻¹) 0 :=
-  ⟨_, ⟨_, hasFPowerSeriesOnBall_inv_one_sub π•œ π•βŸ©βŸ©
-
 theorem analyticOn_const {v : F} {s : Set E} : AnalyticOn π•œ (fun _ => v) s :=
   fun _ _ => analyticAt_const
 #align analytic_on_const analyticOn_const
@@ -1018,6 +904,10 @@ protected theorem AnalyticOn.continuousOn {s : Set E} (hf : AnalyticOn π•œ f s)
   fun x hx => (hf x hx).continuousAt.continuousWithinAt
 #align analytic_on.continuous_on AnalyticOn.continuousOn
 
+/-- Analytic everywhere implies continuous -/
+theorem AnalyticOn.continuous {f : E β†’ F} (fa : AnalyticOn π•œ f univ) : Continuous f := by
+  rw [continuous_iff_continuousOn_univ]; exact fa.continuousOn
+
 /-- In a complete space, the sum of a converging power series `p` admits `p` as a power series.
 This is not totally obvious as we need to check the convergence of the series. -/
 protected theorem FormalMultilinearSeries.hasFPowerSeriesOnBall [CompleteSpace F]
@@ -1456,6 +1346,11 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
   apply this
 #align formal_multilinear_series.change_origin_eval FormalMultilinearSeries.changeOrigin_eval
 
+/-- Power series terms are analytic as we vary the origin -/
+theorem analyticAt_changeOrigin (p : FormalMultilinearSeries π•œ E F) (rp : p.radius > 0) (n : β„•) :
+    AnalyticAt π•œ (fun x ↦ p.changeOrigin x n) 0 :=
+  (FormalMultilinearSeries.hasFPowerSeriesOnBall_changeOrigin p n rp).analyticAt
+
 end FormalMultilinearSeries
 
 section
feat(Analysis/Analytic): some more API for analytic functions (#7552)

This PR adds some basic results about analytic functions: products of analytic functions are analytic, and the inverse map on a normed field is analytic away from 0.

Diff
@@ -70,7 +70,6 @@ notion, describing the polydisk of convergence. This notion is more specific, an
 build the general theory. We do not define it here.
 -/
 
-
 noncomputable section
 
 variable {π•œ E F G : Type*}
@@ -112,7 +111,6 @@ end FormalMultilinearSeries
 
 /-! ### The radius of a formal multilinear series -/
 
-
 variable [NontriviallyNormedField π•œ] [NormedAddCommGroup E] [NormedSpace π•œ E] [NormedAddCommGroup F]
   [NormedSpace π•œ F] [NormedAddCommGroup G] [NormedSpace π•œ G]
 
@@ -366,8 +364,62 @@ theorem radius_le_radius_continuousLinearMap_comp (p : FormalMultilinearSeries 
   simpa only [norm_norm] using f.norm_compContinuousMultilinearMap_le (p n)
 #align formal_multilinear_series.radius_le_radius_continuous_linear_map_comp FormalMultilinearSeries.radius_le_radius_continuousLinearMap_comp
 
+/-- The radius of the Cartesian product of two formal series is the minimum of their radii. --/
+lemma radius_prod_eq_min
+    (p : FormalMultilinearSeries π•œ E F) (q : FormalMultilinearSeries π•œ E G) :
+    (p.prod q).radius = min p.radius q.radius := by
+  apply le_antisymm
+  Β· refine ENNReal.le_of_forall_nnreal_lt fun r hr => ?_
+    rw [le_min_iff]
+    have := (p.prod q).isLittleO_one_of_lt_radius hr
+    constructor
+    all_goals { -- kludge, there is no "work_on_goal" in Lean 4?
+      apply FormalMultilinearSeries.le_radius_of_isBigO
+      refine (isBigO_of_le _ fun n ↦ ?_).trans this.isBigO
+      rw [norm_mul, norm_norm, norm_mul, norm_norm]
+      refine mul_le_mul_of_nonneg_right ?_ (norm_nonneg _)
+      rw [FormalMultilinearSeries.prod, ContinuousMultilinearMap.op_norm_prod]
+      try apply le_max_left
+      try apply le_max_right }
+  Β· refine ENNReal.le_of_forall_nnreal_lt fun r hr => ?_
+    rw [lt_min_iff] at hr
+    have := ((p.isLittleO_one_of_lt_radius hr.1).add
+      (q.isLittleO_one_of_lt_radius hr.2)).isBigO
+    refine (p.prod q).le_radius_of_isBigO ((isBigO_of_le _ Ξ» n ↦ ?_).trans this)
+    rw [norm_mul, norm_norm, ←add_mul, norm_mul]
+    refine mul_le_mul_of_nonneg_right ?_ (norm_nonneg _)
+    rw [FormalMultilinearSeries.prod, ContinuousMultilinearMap.op_norm_prod]
+    refine (max_le_add_of_nonneg (norm_nonneg _) (norm_nonneg _)).trans ?_
+    apply Real.le_norm_self
+
 end FormalMultilinearSeries
 
+lemma formalMultilinearSeries_geometric_radius (π•œ) [NontriviallyNormedField π•œ]
+    (A : Type*) [NormedRing A] [NormOneClass A] [NormedAlgebra π•œ A] :
+    (formalMultilinearSeries_geometric π•œ A).radius = 1 := by
+  apply le_antisymm
+  Β· refine le_of_forall_nnreal_lt (fun r hr ↦ ?_)
+    rw [←coe_one, ENNReal.coe_le_coe]
+    have := FormalMultilinearSeries.isLittleO_one_of_lt_radius _ hr
+    simp_rw [formalMultilinearSeries_geometric_apply_norm, one_mul] at this
+    contrapose! this
+    simp_rw [IsLittleO, IsBigOWith, not_forall, norm_one, mul_one,
+      not_eventually]
+    refine ⟨1, one_pos, ?_⟩
+    refine ((eventually_ne_atTop 0).mp (eventually_of_forall ?_)).frequently
+    intro n hn
+    push_neg
+    rwa [norm_pow, one_lt_pow_iff_of_nonneg (norm_nonneg _) hn,
+      Real.norm_of_nonneg (NNReal.coe_nonneg _), ←NNReal.coe_one,
+      NNReal.coe_lt_coe]
+  Β· refine le_of_forall_nnreal_lt (fun r hr ↦ ?_)
+    rw [←Nat.cast_one, ENNReal.coe_lt_coe_nat, Nat.cast_one] at hr
+    apply FormalMultilinearSeries.le_radius_of_isBigO
+    simp_rw [formalMultilinearSeries_geometric_apply_norm, one_mul]
+    refine isBigO_of_le atTop (fun n ↦ ?_)
+    rw [norm_one, Real.norm_of_nonneg (pow_nonneg (coe_nonneg r) _)]
+    exact (pow_le_one _ (coe_nonneg r) hr.le)
+
 /-! ### Expanding a function as a power series -/
 
 
@@ -386,12 +438,54 @@ structure HasFPowerSeriesOnBall (f : E β†’ F) (p : FormalMultilinearSeries π•œ
     βˆ€ {y}, y ∈ EMetric.ball (0 : E) r β†’ HasSum (fun n : β„• => p n fun _ : Fin n => y) (f (x + y))
 #align has_fpower_series_on_ball HasFPowerSeriesOnBall
 
+lemma HasFPowerSeriesOnBall.prod {e : E} {f : E β†’ F} {g : E β†’ G} {r s : ℝβ‰₯0∞}
+    {p : FormalMultilinearSeries π•œ E F} {q : FormalMultilinearSeries π•œ E G}
+    (hf : HasFPowerSeriesOnBall f p e r) (hg : HasFPowerSeriesOnBall g q e s) :
+    HasFPowerSeriesOnBall (fun x ↦ (f x, g x)) (p.prod q) e (min r s) where
+  r_le := by
+    rw [p.radius_prod_eq_min]
+    exact min_le_min hf.r_le hg.r_le
+  r_pos := lt_min hf.r_pos hg.r_pos
+  hasSum := by
+    intro y hy
+    simp_rw [FormalMultilinearSeries.prod, ContinuousMultilinearMap.prod_apply]
+    refine (hf.hasSum ?_).prod_mk (hg.hasSum ?_)
+    Β· exact EMetric.mem_ball.mpr (lt_of_lt_of_le hy (min_le_left _ _))
+    Β· exact EMetric.mem_ball.mpr (lt_of_lt_of_le hy (min_le_right _ _))
+
+variable (π•œ)
+
+lemma hasFPowerSeriesOnBall_inv_one_sub
+    (𝕝 : Type*) [NontriviallyNormedField 𝕝] [NormedAlgebra π•œ 𝕝] :
+    HasFPowerSeriesOnBall (fun x : 𝕝 ↦ (1 - x)⁻¹) (formalMultilinearSeries_geometric π•œ 𝕝) 0 1 := by
+  constructor
+  Β· exact le_of_eq (formalMultilinearSeries_geometric_radius π•œ 𝕝).symm
+  Β· exact one_pos
+  Β· intro y hy
+    simp_rw [zero_add, formalMultilinearSeries_geometric,
+        ContinuousMultilinearMap.mkPiAlgebraFin_apply,
+        List.prod_ofFn, Finset.prod_const,
+        Finset.card_univ, Fintype.card_fin]
+    apply hasSum_geometric_of_norm_lt_1
+    simpa only [←ofReal_one, Metric.emetric_ball, Metric.ball,
+      dist_eq_norm, sub_zero] using hy
+
+variable {π•œ}
+
 /-- Given a function `f : E β†’ F` and a formal multilinear series `p`, we say that `f` has `p` as
 a power series around `x` if `f (x + y) = βˆ‘' pβ‚™ yⁿ` for all `y` in a neighborhood of `0`. -/
 def HasFPowerSeriesAt (f : E β†’ F) (p : FormalMultilinearSeries π•œ E F) (x : E) :=
   βˆƒ r, HasFPowerSeriesOnBall f p x r
 #align has_fpower_series_at HasFPowerSeriesAt
 
+lemma HasFPowerSeriesAt.prod {e : E} {f : E β†’ F} {g : E β†’ G}
+    {p : FormalMultilinearSeries π•œ E F} {q : FormalMultilinearSeries π•œ E G}
+    (hf : HasFPowerSeriesAt f p e) (hg : HasFPowerSeriesAt g q e) :
+    HasFPowerSeriesAt (fun x ↦ (f x, g x)) (p.prod q) e := by
+  rcases hf with ⟨_, hf⟩
+  rcases hg with ⟨_, hg⟩
+  exact ⟨_, hf.prod hg⟩
+
 variable (π•œ)
 
 /-- Given a function `f : E β†’ F`, we say that `f` is analytic at `x` if it admits a convergent power
@@ -408,6 +502,20 @@ def AnalyticOn (f : E β†’ F) (s : Set E) :=
 
 variable {π•œ}
 
+/-- The Cartesian product of analytic functions is analytic. -/
+lemma AnalyticAt.prod {e : E} {f : E β†’ F} {g : E β†’ G}
+    (hf : AnalyticAt π•œ f e) (hg : AnalyticAt π•œ g e) :
+    AnalyticAt π•œ (fun x ↦ (f x, g x)) e := by
+  rcases hf with ⟨_, hf⟩
+  rcases hg with ⟨_, hg⟩
+  exact ⟨_, hf.prod hg⟩
+
+/-- The Cartesian product of analytic functions is analytic. -/
+lemma AnalyticOn.prod {f : E β†’ F} {g : E β†’ G} {s : Set E}
+    (hf : AnalyticOn π•œ f s) (hg : AnalyticOn π•œ g s) :
+    AnalyticOn π•œ (fun x ↦ (f x, g x)) s :=
+  fun x hx ↦ (hf x hx).prod (hg x hx)
+
 theorem HasFPowerSeriesOnBall.hasFPowerSeriesAt (hf : HasFPowerSeriesOnBall f p x r) :
     HasFPowerSeriesAt f p x :=
   ⟨r, hf⟩
@@ -527,6 +635,10 @@ theorem analyticAt_const {v : F} : AnalyticAt π•œ (fun _ => v) x :=
   ⟨constFormalMultilinearSeries π•œ E v, hasFPowerSeriesAt_const⟩
 #align analytic_at_const analyticAt_const
 
+lemma analyticAt_inv_one_sub (𝕝 : Type*) [NontriviallyNormedField 𝕝] [NormedAlgebra π•œ 𝕝] :
+    AnalyticAt π•œ (fun x : 𝕝 ↦ (1 - x)⁻¹) 0 :=
+  ⟨_, ⟨_, hasFPowerSeriesOnBall_inv_one_sub π•œ π•βŸ©βŸ©
+
 theorem analyticOn_const {v : F} {s : Set E} : AnalyticOn π•œ (fun _ => v) s :=
   fun _ _ => analyticAt_const
 #align analytic_on_const analyticOn_const
chore: cleanup typo in filter_upwards (#7719)

mathport was forgetting a space in filter_upwards [...]with instead of filter_upwards [...] with.

Diff
@@ -480,7 +480,7 @@ protected theorem HasFPowerSeriesAt.eventually (hf : HasFPowerSeriesAt f p x) :
 
 theorem HasFPowerSeriesOnBall.eventually_hasSum (hf : HasFPowerSeriesOnBall f p x r) :
     βˆ€αΆ  y in 𝓝 0, HasSum (fun n : β„• => p n fun _ : Fin n => y) (f (x + y)) := by
-  filter_upwards [EMetric.ball_mem_nhds (0 : E) hf.r_pos]using fun _ => hf.hasSum
+  filter_upwards [EMetric.ball_mem_nhds (0 : E) hf.r_pos] using fun _ => hf.hasSum
 #align has_fpower_series_on_ball.eventually_has_sum HasFPowerSeriesOnBall.eventually_hasSum
 
 theorem HasFPowerSeriesAt.eventually_hasSum (hf : HasFPowerSeriesAt f p x) :
feat: Add analytic structure groupoid on models with corners (#6386)

Co-authored-by: Michael Lee <michael_lee1@brown.edu>

Diff
@@ -544,6 +544,13 @@ theorem HasFPowerSeriesAt.add (hf : HasFPowerSeriesAt f pf x) (hg : HasFPowerSer
   exact ⟨r, hr.1.add hr.2⟩
 #align has_fpower_series_at.add HasFPowerSeriesAt.add
 
+theorem AnalyticAt.congr (hf : AnalyticAt π•œ f x) (hg : f =αΆ [𝓝 x] g) : AnalyticAt π•œ g x :=
+  let ⟨_, hpf⟩ := hf
+  (hpf.congr hg).analyticAt
+
+theorem analyticAt_congr (h : f =αΆ [𝓝 x] g) : AnalyticAt π•œ f x ↔ AnalyticAt π•œ g x :=
+  ⟨fun hf ↦ hf.congr h, fun hg ↦ hg.congr h.symm⟩
+
 theorem AnalyticAt.add (hf : AnalyticAt π•œ f x) (hg : AnalyticAt π•œ g x) : AnalyticAt π•œ (f + g) x :=
   let ⟨_, hpf⟩ := hf
   let ⟨_, hqf⟩ := hg
@@ -588,6 +595,21 @@ theorem AnalyticOn.mono {s t : Set E} (hf : AnalyticOn π•œ f t) (hst : s βŠ† t)
   fun z hz => hf z (hst hz)
 #align analytic_on.mono AnalyticOn.mono
 
+theorem AnalyticOn.congr' {s : Set E} (hf : AnalyticOn π•œ f s) (hg : f =αΆ [𝓝˒ s] g) :
+    AnalyticOn π•œ g s :=
+  fun z hz => (hf z hz).congr (mem_nhdsSet_iff_forall.mp hg z hz)
+
+theorem analyticOn_congr' {s : Set E} (h : f =αΆ [𝓝˒ s] g) : AnalyticOn π•œ f s ↔ AnalyticOn π•œ g s :=
+  ⟨fun hf => hf.congr' h, fun hg => hg.congr' h.symm⟩
+
+theorem AnalyticOn.congr {s : Set E} (hs : IsOpen s) (hf : AnalyticOn π•œ f s) (hg : s.EqOn f g) :
+    AnalyticOn π•œ g s :=
+  hf.congr' $ mem_nhdsSet_iff_forall.mpr
+    (fun _ hz => eventuallyEq_iff_exists_mem.mpr ⟨s, hs.mem_nhds hz, hg⟩)
+
+theorem analyticOn_congr {s : Set E} (hs : IsOpen s) (h : s.EqOn f g) : AnalyticOn π•œ f s ↔
+    AnalyticOn π•œ g s := ⟨fun hf => hf.congr hs h, fun hg => hg.congr hs h.symm⟩
+
 theorem AnalyticOn.add {s : Set E} (hf : AnalyticOn π•œ f s) (hg : AnalyticOn π•œ g s) :
     AnalyticOn π•œ (f + g) s :=
   fun z hz => (hf z hz).add (hg z hz)
chore: tidy various files (#6577)
Diff
@@ -602,7 +602,7 @@ theorem HasFPowerSeriesOnBall.coeff_zero (hf : HasFPowerSeriesOnBall f pf x r) (
     pf 0 v = f x := by
   have v_eq : v = fun i => 0 := Subsingleton.elim _ _
   have zero_mem : (0 : E) ∈ EMetric.ball (0 : E) r := by simp [hf.r_pos]
-  have : βˆ€ (i) (_ : i β‰  0), (pf i fun j => 0) = 0 := by
+  have : βˆ€ i, i β‰  0 β†’ (pf i fun j => 0) = 0 := by
     intro i hi
     have : 0 < i := pos_iff_ne_zero.2 hi
     exact ContinuousMultilinearMap.map_coord_zero _ (⟨0, this⟩ : Fin i) rfl
field_simp: Use positivity as a discharger (#6312)

The main reasons is that having h : 0 < denom in the context should suffice for field_simp to do its job, without the need to manually pass h.ne or similar.

Quite a few have := … β‰  0 could be dropped, and some field_simp calls no longer need explicit arguments; this is promising.

This does break some proofs where field_simp was not used as a closing tactic, and it now shuffles terms around a bit different. These were fixed. Using field_simp in the middle of a proof seems rather fragile anyways.

As a drive-by contribution, positivity now knows about Ο€ > 0.

fixes: #4835

Co-authored-by: Matthew Ballard <matt@mrb.email>

Diff
@@ -202,7 +202,7 @@ theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
   refine' ⟨_, rt, C, Or.inr zero_lt_one, fun n => _⟩
   calc
     |β€–p nβ€– * (r : ℝ) ^ n| = β€–p nβ€– * (t : ℝ) ^ n * (r / t : ℝ) ^ n := by
-      field_simp [mul_right_comm, abs_mul, this.ne']
+      field_simp [mul_right_comm, abs_mul]
     _ ≀ C * (r / t : ℝ) ^ n := by gcongr; apply hC
 #align formal_multilinear_series.is_o_of_lt_radius FormalMultilinearSeries.isLittleO_of_lt_radius
 
@@ -670,7 +670,7 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
   calc
     β€–(p n) fun _ : Fin n => yβ€–
     _ ≀ β€–p nβ€– * ∏ _i : Fin n, β€–yβ€– := ContinuousMultilinearMap.le_op_norm _ _
-    _ = β€–p nβ€– * (r' : ℝ) ^ n * (β€–yβ€– / r') ^ n := by field_simp [hr'0.ne', mul_right_comm]
+    _ = β€–p nβ€– * (r' : ℝ) ^ n * (β€–yβ€– / r') ^ n := by field_simp [mul_right_comm]
     _ ≀ C * a ^ n * (β€–yβ€– / r') ^ n := by gcongr ?_ * _; apply hp
     _ ≀ C * (a * (β€–yβ€– / r')) ^ n := by rw [mul_pow, mul_assoc]
 #align has_fpower_series_on_ball.uniform_geometric_approx' HasFPowerSeriesOnBall.uniform_geometric_approx'
@@ -758,7 +758,7 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
         _ = B n := by
           -- porting note: in the original, `B` was in the `field_simp`, but now Lean does not
           -- accept it. The current proof works in Lean 4, but does not in Lean 3.
-          field_simp [pow_succ, hr'0.ne']
+          field_simp [pow_succ]
           simp only [mul_assoc, mul_comm, mul_left_comm]
     have hBL : HasSum B (L y) := by
       apply HasSum.mul_left
chore: drop MulZeroClass. in mul_zero/zero_mul (#6682)

Search&replace MulZeroClass.mul_zero -> mul_zero, MulZeroClass.zero_mul -> zero_mul.

These were introduced by Mathport, as the full name of mul_zero is actually MulZeroClass.mul_zero (it's exported with the short name).

Diff
@@ -815,7 +815,7 @@ theorem HasFPowerSeriesOnBall.tendstoUniformlyOn {r' : ℝβ‰₯0} (hf : HasFPowerS
   refine' Metric.tendstoUniformlyOn_iff.2 fun Ξ΅ Ξ΅pos => _
   have L : Tendsto (fun n => (C : ℝ) * a ^ n) atTop (𝓝 ((C : ℝ) * 0)) :=
     tendsto_const_nhds.mul (tendsto_pow_atTop_nhds_0_of_lt_1 ha.1.le ha.2)
-  rw [MulZeroClass.mul_zero] at L
+  rw [mul_zero] at L
   refine' (L.eventually (gt_mem_nhds Ξ΅pos)).mono fun n hn y hy => _
   rw [dist_eq_norm]
   exact (hp y hy n).trans_lt hn
chore: drop some unneeded maxHeartbeats (#6564)
Diff
@@ -1082,7 +1082,6 @@ section
 
 variable (p : FormalMultilinearSeries π•œ E F) {x y : E} {r R : ℝβ‰₯0}
 
-set_option synthInstance.maxHeartbeats 100000 in
 /-- A term of `FormalMultilinearSeries.changeOriginSeries`.
 
 Given a formal multilinear series `p` and a point `x` in its ball of convergence,
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -73,7 +73,7 @@ build the general theory. We do not define it here.
 
 noncomputable section
 
-variable {π•œ E F G : Type _}
+variable {π•œ E F G : Type*}
 
 open Topology Classical BigOperators NNReal Filter ENNReal
 
chore: fix grammar mistakes (#6121)
Diff
@@ -981,7 +981,7 @@ set_option linter.uppercaseLean3 false in
 #align asymptotics.is_O.continuous_multilinear_map_apply_eq_zero Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero
 
 /-- If a formal multilinear series `p` represents the zero function at `x : E`, then the
-terms `p n (fun i ↦ y)` appearing the in sum are zero for any `n : β„•`, `y : E`. -/
+terms `p n (fun i ↦ y)` appearing in the sum are zero for any `n : β„•`, `y : E`. -/
 theorem HasFPowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {x : E}
     (h : HasFPowerSeriesAt 0 p x) (n : β„•) : βˆ€ y : E, (p n fun _ => y) = 0 := by
   refine' Nat.strong_induction_on n fun k hk => _
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2020 SΓ©bastien GouΓ«zel. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: SΓ©bastien GouΓ«zel, Yury Kudryashov
-
-! This file was ported from Lean 3 source module analysis.analytic.basic
-! leanprover-community/mathlib commit 32253a1a1071173b33dc7d6a218cf722c6feb514
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Analysis.Calculus.FormalMultilinearSeries
 import Mathlib.Analysis.SpecificLimits.Normed
 import Mathlib.Logic.Equiv.Fin
 import Mathlib.Topology.Algebra.InfiniteSum.Module
 
+#align_import analysis.analytic.basic from "leanprover-community/mathlib"@"32253a1a1071173b33dc7d6a218cf722c6feb514"
+
 /-!
 # Analytic functions
 
feat: complex differentiable functions are continuously differentiable (#5629)
Diff
@@ -1379,6 +1379,16 @@ theorem isOpen_analyticAt : IsOpen { x | AnalyticAt π•œ f x } := by
   exact mem_of_superset (EMetric.ball_mem_nhds _ hr.r_pos) fun y hy => hr.analyticAt_of_mem hy
 #align is_open_analytic_at isOpen_analyticAt
 
+variable {π•œ}
+
+theorem AnalyticAt.eventually_analyticAt {f : E β†’ F} {x : E} (h : AnalyticAt π•œ f x) :
+    βˆ€αΆ  y in 𝓝 x, AnalyticAt π•œ f y :=
+(isOpen_analyticAt π•œ f).mem_nhds h
+
+theorem AnalyticAt.exists_mem_nhds_analyticOn {f : E β†’ F} {x : E} (h : AnalyticAt π•œ f x) :
+    βˆƒ s ∈ 𝓝 x, AnalyticOn π•œ f s :=
+h.eventually_analyticAt.exists_mem
+
 end
 
 section
chore: remove occurrences of semicolon after space (#5713)

This is the second half of the changes originally in #5699, removing all occurrences of ; after a space and implementing a linter rule to enforce it.

In most cases this 2-character substring has a space after it, so the following command was run first:

find . -type f -name "*.lean" -exec sed -i -E 's/ ; /; /g' {} \;

The remaining cases were few enough in number that they were done manually.

Diff
@@ -1002,7 +1002,7 @@ theorem HasFPowerSeriesAt.apply_eq_zero {p : FormalMultilinearSeries π•œ E F} {
 /-- A one-dimensional formal multilinear series representing the zero function is zero. -/
 theorem HasFPowerSeriesAt.eq_zero {p : FormalMultilinearSeries π•œ π•œ E} {x : π•œ}
     (h : HasFPowerSeriesAt 0 p x) : p = 0 := by
-  -- porting note: `funext ; ext` was `ext (n x)`
+  -- porting note: `funext; ext` was `ext (n x)`
   funext n
   ext x
   rw [← mkPiField_apply_one_eq_self (p n)]
chore: rename Fin.cast to Fin.castIso (#5584)

Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -1177,7 +1177,7 @@ def changeOriginIndexEquiv :
   invFun s :=
     ⟨s.1 - s.2.card, s.2.card,
       ⟨s.2.map
-          (Fin.cast <| (tsub_add_cancel_of_le <| card_finset_fin_le s.2).symm).toEquiv.toEmbedding,
+        (Fin.castIso <| (tsub_add_cancel_of_le <| card_finset_fin_le s.2).symm).toEquiv.toEmbedding,
         Finset.card_map _⟩⟩
   left_inv := by
     rintro ⟨k, l, ⟨s : Finset (Fin <| k + l), hs : s.card = l⟩⟩
@@ -1185,15 +1185,15 @@ def changeOriginIndexEquiv :
     -- Lean can't automatically generalize `k' = k + l - s.card`, `l' = s.card`, so we explicitly
     -- formulate the generalized goal
     suffices βˆ€ k' l', k' = k β†’ l' = l β†’ βˆ€ (hkl : k + l = k' + l') (hs'),
-        (⟨k', l', ⟨Finset.map (Fin.cast hkl).toEquiv.toEmbedding s, hs'⟩⟩ :
+        (⟨k', l', ⟨Finset.map (Fin.castIso hkl).toEquiv.toEmbedding s, hs'⟩⟩ :
           Ξ£k l : β„•, { s : Finset (Fin (k + l)) // s.card = l }) = ⟨k, l, ⟨s, hs⟩⟩ by
       apply this <;> simp only [hs, add_tsub_cancel_right]
     rintro _ _ rfl rfl hkl hs'
-    simp only [Equiv.refl_toEmbedding, Fin.cast_refl, Finset.map_refl, eq_self_iff_true,
+    simp only [Equiv.refl_toEmbedding, Fin.castIso_refl, Finset.map_refl, eq_self_iff_true,
       OrderIso.refl_toEquiv, and_self_iff, heq_iff_eq]
   right_inv := by
     rintro ⟨n, s⟩
-    simp [tsub_add_cancel_of_le (card_finset_fin_le s), Fin.cast_to_equiv]
+    simp [tsub_add_cancel_of_le (card_finset_fin_le s), Fin.castIso_to_equiv]
 #align formal_multilinear_series.change_origin_index_equiv FormalMultilinearSeries.changeOriginIndexEquiv
 
 theorem changeOriginSeries_summable_aux₁ {r r' : ℝβ‰₯0} (hr : (r + r' : ℝβ‰₯0∞) < p.radius) :
@@ -1320,7 +1320,7 @@ theorem changeOrigin_eval (h : (β€–xβ€–β‚Š + β€–yβ€–β‚Š : ℝβ‰₯0∞) < p.radius
     changeOriginIndexEquiv_symm_apply_snd_fst, changeOriginIndexEquiv_symm_apply_snd_snd_coe]
   rw [ContinuousMultilinearMap.curryFinFinset_apply_const]
   have : βˆ€ (m) (hm : n = m), p n (s.piecewise (fun _ => x) fun _ => y) =
-      p m ((s.map (Fin.cast hm).toEquiv.toEmbedding).piecewise (fun _ => x) fun _ => y) := by
+      p m ((s.map (Fin.castIso hm).toEquiv.toEmbedding).piecewise (fun _ => x) fun _ => y) := by
     rintro m rfl
     simp [Finset.piecewise]
   apply this
chore: clean up spacing around at and goals (#5387)

Changes are of the form

  • some_tactic at h⊒ -> some_tactic at h ⊒
  • some_tactic at h -> some_tactic at h
Diff
@@ -1409,7 +1409,7 @@ theorem hasFPowerSeriesAt_iff :
     simp only [ENNReal.coe_pos]
     exact zero_lt_iff.mpr (nnnorm_ne_zero_iff.mpr (norm_pos_iff.mp z_pos))
   Β· simp only [EMetric.mem_ball, lt_inf_iff, edist_lt_coe, apply_eq_pow_smul_coeff, and_imp,
-      dist_zero_right] at h⊒
+      dist_zero_right] at h ⊒
     refine' fun {y} _ hyr => h _
     simpa [nndist_eq_nnnorm, Real.lt_toNNReal_iff_coe_lt] using hyr
 #align has_fpower_series_at_iff hasFPowerSeriesAt_iff
feat: golf using gcongr throughout the library (#4784)

Following on from #4702, another hundred sample uses of the gcongr tactic.

Diff
@@ -206,7 +206,7 @@ theorem isLittleO_of_lt_radius (h : ↑r < p.radius) :
   calc
     |β€–p nβ€– * (r : ℝ) ^ n| = β€–p nβ€– * (t : ℝ) ^ n * (r / t : ℝ) ^ n := by
       field_simp [mul_right_comm, abs_mul, this.ne']
-    _ ≀ C * (r / t : ℝ) ^ n := mul_le_mul_of_nonneg_right (hC n) (pow_nonneg (div_nonneg r.2 t.2) _)
+    _ ≀ C * (r / t : ℝ) ^ n := by gcongr; apply hC
 #align formal_multilinear_series.is_o_of_lt_radius FormalMultilinearSeries.isLittleO_of_lt_radius
 
 /-- For `r` strictly smaller than the radius of `p`, then `β€–pβ‚™β€– rⁿ = o(1)`. -/
@@ -665,16 +665,16 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx' {r' : ℝβ‰₯0}
     mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)
   suffices β€–p.partialSum n y - f (x + y)β€– ≀ C * (a * (β€–yβ€– / r')) ^ n / (1 - a * (β€–yβ€– / r')) by
     refine' this.trans _
-    apply_rules [div_le_div_of_le_left, sub_pos.2, div_nonneg, mul_nonneg, pow_nonneg, hC.lt.le,
-        ha.1.le, norm_nonneg, NNReal.coe_nonneg, ha.2, (sub_le_sub_iff_left _).2]
+    have : 0 < a := ha.1
+    gcongr
+    apply_rules [sub_pos.2, ha.2]
   apply norm_sub_le_of_geometric_bound_of_hasSum (ya.trans_lt ha.2) _ (hf.hasSum this)
   intro n
   calc
     β€–(p n) fun _ : Fin n => yβ€–
     _ ≀ β€–p nβ€– * ∏ _i : Fin n, β€–yβ€– := ContinuousMultilinearMap.le_op_norm _ _
     _ = β€–p nβ€– * (r' : ℝ) ^ n * (β€–yβ€– / r') ^ n := by field_simp [hr'0.ne', mul_right_comm]
-    _ ≀ C * a ^ n * (β€–yβ€– / r') ^ n :=
-      (mul_le_mul_of_nonneg_right (hp n) (pow_nonneg (div_nonneg (norm_nonneg _) r'.coe_nonneg) _))
+    _ ≀ C * a ^ n * (β€–yβ€– / r') ^ n := by gcongr ?_ * _; apply hp
     _ ≀ C * (a * (β€–yβ€– / r')) ^ n := by rw [mul_pow, mul_assoc]
 #align has_fpower_series_on_ball.uniform_geometric_approx' HasFPowerSeriesOnBall.uniform_geometric_approx'
 
@@ -689,7 +689,7 @@ theorem HasFPowerSeriesOnBall.uniform_geometric_approx {r' : ℝβ‰₯0}
     hf.uniform_geometric_approx' h
   refine' ⟨a, ha, C, hC, fun y hy n => (hp y hy n).trans _⟩
   have yr' : β€–yβ€– < r' := by rwa [ball_zero_eq] at hy
-  refine' mul_le_mul_of_nonneg_left (pow_le_pow_of_le_left _ _ _) hC.lt.le
+  gcongr
   exacts [mul_nonneg ha.1.le (div_nonneg (norm_nonneg y) r'.coe_nonneg),
     mul_le_of_le_one_right ha.1.le (div_le_one_of_le yr'.le r'.coe_nonneg)]
 #align has_fpower_series_on_ball.uniform_geometric_approx HasFPowerSeriesOnBall.uniform_geometric_approx
@@ -752,10 +752,12 @@ theorem HasFPowerSeriesOnBall.isBigO_image_sub_image_sub_deriv_principal
           ring
         -- porting note: the two `↑` in `↑r'` are new, without them, Lean fails to synthesize
         -- instances `HDiv ℝ ℝβ‰₯0 ?m` or `HMul ℝ ℝβ‰₯0 ?m`
-        _ ≀ C * a ^ (n + 2) / ↑r' ^ (n + 2) * ↑r' ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) :=
-          by apply_rules [mul_le_mul_of_nonneg_right, mul_le_mul, hp, pow_le_pow_of_le_left, hy'.le,
-            norm_nonneg, pow_nonneg, div_nonneg, mul_nonneg, Nat.cast_nonneg, hC.le, r'.coe_nonneg,
-            ha.1.le]
+        _ ≀ C * a ^ (n + 2) / ↑r' ^ (n + 2)
+            * ↑r' ^ n * (↑(n + 2) * β€–y - (x, x)β€– * β€–y.1 - y.2β€–) := by
+          have : 0 < a := ha.1
+          gcongr
+          Β· apply hp
+          Β· apply hy'.le
         _ = B n := by
           -- porting note: in the original, `B` was in the `field_simp`, but now Lean does not
           -- accept it. The current proof works in Lean 4, but does not in Lean 3.
@@ -971,8 +973,7 @@ theorem Asymptotics.IsBigO.continuousMultilinearMap_apply_eq_zero {n : β„•} {p :
         simpa only [inv_smul_smulβ‚€ (norm_pos_iff.mp k_pos), norm_smul, Finset.prod_const,
           Finset.card_fin] using
           congr_arg norm (p.map_smul_univ (fun _ : Fin n.succ => k⁻¹) fun _ : Fin n.succ => k β€’ y)
-      _ ≀ β€–k⁻¹ ^ n.succβ€– * (β€–kβ€– ^ n.succ * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1)))) :=
-        (mul_le_mul_of_nonneg_left hβ‚‚ (norm_nonneg _))
+      _ ≀ β€–k⁻¹ ^ n.succβ€– * (β€–kβ€– ^ n.succ * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1)))) := by gcongr
       _ = β€–(k⁻¹ * k) ^ n.succβ€– * (β€–kβ€– * (c * β€–yβ€– ^ (n.succ + 1))) := by
         rw [← mul_assoc]
         simp [norm_mul, mul_pow]
style: allow _ for an argument in notation3 & replace _foo with _ in notation3 (#4652)
Diff
@@ -127,7 +127,7 @@ variable (p : FormalMultilinearSeries π•œ E F) {r : ℝβ‰₯0}
 converges for all `β€–yβ€– < r`. This implies that `Ξ£ pβ‚™ yⁿ` converges for all `β€–yβ€– < r`, but these
 definitions are *not* equivalent in general. -/
 def radius (p : FormalMultilinearSeries π•œ E F) : ℝβ‰₯0∞ :=
-  ⨆ (r : ℝβ‰₯0) (C : ℝ) (_hr : βˆ€ n, β€–p nβ€– * (r : ℝ) ^ n ≀ C), (r : ℝβ‰₯0∞)
+  ⨆ (r : ℝβ‰₯0) (C : ℝ) (_ : βˆ€ n, β€–p nβ€– * (r : ℝ) ^ n ≀ C), (r : ℝβ‰₯0∞)
 #align formal_multilinear_series.radius FormalMultilinearSeries.radius
 
 /-- If `β€–pβ‚™β€– rⁿ` is bounded in `n`, then the radius of `p` is at least `r`. -/
@@ -1142,14 +1142,14 @@ def changeOriginSeries (k : β„•) : FormalMultilinearSeries π•œ E (E[Γ—k]β†’L[
 
 theorem nnnorm_changeOriginSeries_le_tsum (k l : β„•) :
     β€–p.changeOriginSeries k lβ€–β‚Š ≀
-      βˆ‘' _x : { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + l)β€–β‚Š :=
+      βˆ‘' _ : { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + l)β€–β‚Š :=
   (nnnorm_sum_le _ (fun t => changeOriginSeriesTerm p k l (Subtype.val t) t.prop)).trans_eq <| by
     simp_rw [tsum_fintype, nnnorm_changeOriginSeriesTerm (p := p) (k := k) (l := l)]
 #align formal_multilinear_series.nnnorm_change_origin_series_le_tsum FormalMultilinearSeries.nnnorm_changeOriginSeries_le_tsum
 
 theorem nnnorm_changeOriginSeries_apply_le_tsum (k l : β„•) (x : E) :
     β€–p.changeOriginSeries k l fun _ => xβ€–β‚Š ≀
-      βˆ‘' _s : { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + l)β€–β‚Š * β€–xβ€–β‚Š ^ l := by
+      βˆ‘' _ : { s : Finset (Fin (k + l)) // s.card = l }, β€–p (k + l)β€–β‚Š * β€–xβ€–β‚Š ^ l := by
   rw [NNReal.tsum_mul_right, ← Fin.prod_const]
   exact (p.changeOriginSeries k l).le_of_op_nnnorm_le _ (p.nnnorm_changeOriginSeries_le_tsum _ _)
 #align formal_multilinear_series.nnnorm_change_origin_series_apply_le_tsum FormalMultilinearSeries.nnnorm_changeOriginSeries_apply_le_tsum
feat: port Analysis.Analytic.Basic (#4275)

Co-authored-by: adomani <adomani@gmail.com> Co-authored-by: int-y1 <jason_yuen2007@hotmail.com> Co-authored-by: Jireh Loreaux <loreaujy@gmail.com> Co-authored-by: Johan Commelin <johan@commelin.net>

Dependencies 10 + 651

652 files ported (98.5%)
291771 lines ported (98.2%)
Show graph

The unported dependencies are

The following 1 dependencies have changed in mathlib3 since they were ported, which may complicate porting this file