geometry.manifold.bump_functionMathlib.Geometry.Manifold.BumpFunction

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)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -3,8 +3,8 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 -/
-import Analysis.Calculus.BumpFunctionFindim
-import Geometry.Manifold.ContMdiff
+import Analysis.Calculus.BumpFunction.FiniteDimension
+import Geometry.Manifold.ContMDiff.Defs
 
 #align_import geometry.manifold.bump_function from "leanprover-community/mathlib"@"30faa0c3618ce1472bf6305ae0e3fa56affa3f95"
 
Diff
@@ -246,7 +246,7 @@ theorem nonempty_support : (support f).Nonempty :=
 #print SmoothBumpFunction.isCompact_symm_image_closedBall /-
 theorem isCompact_symm_image_closedBall :
     IsCompact ((extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I)) :=
-  ((isCompact_closedBall _ _).inter_right I.closed_range).image_of_continuousOn <|
+  ((isCompact_closedBall _ _).inter_right I.isClosed_range).image_of_continuousOn <|
     (continuousOn_extChartAt_symm _ _).mono f.closedBall_subset
 #align smooth_bump_function.is_compact_symm_image_closed_ball SmoothBumpFunction.isCompact_symm_image_closedBall
 -/
Diff
@@ -163,7 +163,7 @@ theorem image_eq_inter_preimage_of_subset_support {s : Set M} (hs : s ⊆ suppor
     extChartAt I c '' s =
       closedBall (extChartAt I c c) f.rOut ∩ range I ∩ (extChartAt I c).symm ⁻¹' s :=
   by
-  rw [support_eq_inter_preimage, subset_inter_iff, ← extChartAt_source I, ← image_subset_iff] at hs 
+  rw [support_eq_inter_preimage, subset_inter_iff, ← extChartAt_source I, ← image_subset_iff] at hs
   cases' hs with hse hsf
   apply subset.antisymm
   · refine' subset_inter (subset_inter (subset.trans hsf ball_subset_closed_ball) _) _
@@ -294,7 +294,7 @@ theorem exists_r_pos_lt_subset_ball {s : Set M} (hsc : IsClosed s) (hs : s ⊆ s
   by
   set e := extChartAt I c
   have : IsClosed (e '' s) := f.is_closed_image_of_is_closed hsc hs
-  rw [support_eq_inter_preimage, subset_inter_iff, ← image_subset_iff] at hs 
+  rw [support_eq_inter_preimage, subset_inter_iff, ← image_subset_iff] at hs
   rcases exists_pos_lt_subset_ball f.R_pos this hs.2 with ⟨r, hrR, hr⟩
   exact ⟨r, hrR, subset_inter hs.1 (image_subset_iff.1 hr)⟩
 #align smooth_bump_function.exists_r_pos_lt_subset_ball SmoothBumpFunction.exists_r_pos_lt_subset_ball
Diff
@@ -415,7 +415,7 @@ variable [SmoothManifoldWithCorners I M] {I}
 /-- A smooth bump function is infinitely smooth. -/
 protected theorem smooth : Smooth I 𝓘(ℝ) f :=
   by
-  refine' contMDiff_of_support fun x hx => _
+  refine' contMDiff_of_tsupport fun x hx => _
   have : x ∈ (chart_at H c).source := f.tsupport_subset_chart_at_source hx
   refine'
     ContMDiffAt.congr_of_eventuallyEq _
@@ -442,7 +442,7 @@ on the source of the chart at `c`, then `f • g` is smooth on the whole manifol
 theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
     (hg : SmoothOn I 𝓘(ℝ, G) g (chartAt H c).source) : Smooth I 𝓘(ℝ, G) fun x => f x • g x :=
   by
-  apply contMDiff_of_support fun x hx => _
+  apply contMDiff_of_tsupport fun x hx => _
   have : x ∈ (chart_at H c).source
   calc
     x ∈ tsupport fun x => f x • g x := hx
Diff
@@ -278,7 +278,7 @@ theorem isClosed_image_of_isClosed {s : Set M} (hsc : IsClosed s) (hs : s ⊆ su
   by
   rw [f.image_eq_inter_preimage_of_subset_support hs]
   refine'
-    ContinuousOn.preimage_closed_of_closed
+    ContinuousOn.preimage_isClosed_of_isClosed
       ((continuousOn_extChartAt_symm _ _).mono f.closed_ball_subset) _ hsc
   exact IsClosed.inter is_closed_ball I.closed_range
 #align smooth_bump_function.is_closed_image_of_is_closed SmoothBumpFunction.isClosed_image_of_isClosed
Diff
@@ -3,8 +3,8 @@ Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 -/
-import Mathbin.Analysis.Calculus.BumpFunctionFindim
-import Mathbin.Geometry.Manifold.ContMdiff
+import Analysis.Calculus.BumpFunctionFindim
+import Geometry.Manifold.ContMdiff
 
 #align_import geometry.manifold.bump_function from "leanprover-community/mathlib"@"30faa0c3618ce1472bf6305ae0e3fa56affa3f95"
 
@@ -369,7 +369,7 @@ theorem tsupport_subset_chartAt_source : tsupport f ⊆ (chartAt H c).source :=
 
 #print SmoothBumpFunction.hasCompactSupport /-
 protected theorem hasCompactSupport : HasCompactSupport f :=
-  isCompact_of_isClosed_subset f.isCompact_symm_image_closedBall isClosed_closure
+  IsCompact.of_isClosed_subset f.isCompact_symm_image_closedBall isClosed_closure
     f.tsupport_subset_symm_image_closedBall
 #align smooth_bump_function.has_compact_support SmoothBumpFunction.hasCompactSupport
 -/
Diff
@@ -261,7 +261,7 @@ theorem nhdsWithin_range_basis :
   by
   refine'
     ((nhdsWithin_hasBasis nhds_basis_closed_ball _).restrict_subset
-          (extChartAt_target_mem_nhdsWithin _ _)).to_has_basis'
+          (extChartAt_target_mem_nhdsWithin _ _)).to_hasBasis'
       _ _
   · rintro R ⟨hR0, hsub⟩
     exact ⟨⟨⟨R / 2, R, half_pos hR0, half_lt_self hR0⟩, hsub⟩, trivial, subset.rfl⟩
@@ -404,7 +404,7 @@ neighborhood of `c` and each neighborhood of `c` includes `support f` for some `
 smooth_bump_function I c` such that `tsupport f ⊆ s`. -/
 theorem nhds_basis_support {s : Set M} (hs : s ∈ 𝓝 c) :
     (𝓝 c).HasBasis (fun f : SmoothBumpFunction I c => tsupport f ⊆ s) fun f => support f :=
-  ((nhds_basis_tsupport I c).restrict_subset hs).to_has_basis'
+  ((nhds_basis_tsupport I c).restrict_subset hs).to_hasBasis'
     (fun f hf => ⟨f, hf.2, subset_closure⟩) fun f hf => f.support_mem_nhds
 #align smooth_bump_function.nhds_basis_support SmoothBumpFunction.nhds_basis_support
 -/
Diff
@@ -2,15 +2,12 @@
 Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module geometry.manifold.bump_function
-! leanprover-community/mathlib commit 30faa0c3618ce1472bf6305ae0e3fa56affa3f95
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Analysis.Calculus.BumpFunctionFindim
 import Mathbin.Geometry.Manifold.ContMdiff
 
+#align_import geometry.manifold.bump_function from "leanprover-community/mathlib"@"30faa0c3618ce1472bf6305ae0e3fa56affa3f95"
+
 /-!
 # Smooth bump functions on a smooth manifold
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 
 ! This file was ported from Lean 3 source module geometry.manifold.bump_function
-! leanprover-community/mathlib commit b018406ad2f2a73223a3a9e198ccae61e6f05318
+! leanprover-community/mathlib commit 30faa0c3618ce1472bf6305ae0e3fa56affa3f95
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Geometry.Manifold.ContMdiff
 /-!
 # Smooth bump functions on a smooth manifold
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 In this file we define `smooth_bump_function I c` to be a bundled smooth "bump" function centered at
 `c`. It is a structure that consists of two real numbers `0 < r < R` with small enough `R`. We
 define a coercion to function for this type, and for `f : smooth_bump_function I c`, the function
Diff
@@ -51,6 +51,7 @@ In this section we define a structure for a bundled smooth bump function and pro
 -/
 
 
+#print SmoothBumpFunction /-
 /-- Given a smooth manifold modelled on a finite dimensional space `E`,
 `f : smooth_bump_function I M` is a smooth function on `M` such that in the extended chart `e` at
 `f.c`:
@@ -66,6 +67,7 @@ namespace. -/
 structure SmoothBumpFunction (c : M) extends ContDiffBump (extChartAt I c c) where
   closedBall_subset : closedBall (extChartAt I c c) R ∩ range I ⊆ (extChartAt I c).target
 #align smooth_bump_function SmoothBumpFunction
+-/
 
 variable {M}
 
@@ -73,52 +75,71 @@ namespace SmoothBumpFunction
 
 variable {c : M} (f : SmoothBumpFunction I c) {x : M} {I}
 
+#print SmoothBumpFunction.toFun /-
 /-- The function defined by `f : smooth_bump_function c`. Use automatic coercion to function
 instead. -/
 def toFun : M → ℝ :=
   indicator (chartAt H c).source (f.toContDiffBump ∘ extChartAt I c)
 #align smooth_bump_function.to_fun SmoothBumpFunction.toFun
+-/
 
 instance : CoeFun (SmoothBumpFunction I c) fun _ => M → ℝ :=
   ⟨toFun⟩
 
+#print SmoothBumpFunction.coe_def /-
 theorem coe_def : ⇑f = indicator (chartAt H c).source (f.toContDiffBump ∘ extChartAt I c) :=
   rfl
 #align smooth_bump_function.coe_def SmoothBumpFunction.coe_def
+-/
 
+#print SmoothBumpFunction.rOut_pos /-
 theorem rOut_pos : 0 < f.rOut :=
   f.toContDiffBump.rOut_pos
 #align smooth_bump_function.R_pos SmoothBumpFunction.rOut_pos
+-/
 
+#print SmoothBumpFunction.ball_subset /-
 theorem ball_subset : ball (extChartAt I c c) f.rOut ∩ range I ⊆ (extChartAt I c).target :=
   Subset.trans (inter_subset_inter_left _ ball_subset_closedBall) f.closedBall_subset
 #align smooth_bump_function.ball_subset SmoothBumpFunction.ball_subset
+-/
 
+#print SmoothBumpFunction.eqOn_source /-
 theorem eqOn_source : EqOn f (f.toContDiffBump ∘ extChartAt I c) (chartAt H c).source :=
   eqOn_indicator
 #align smooth_bump_function.eq_on_source SmoothBumpFunction.eqOn_source
+-/
 
+#print SmoothBumpFunction.eventuallyEq_of_mem_source /-
 theorem eventuallyEq_of_mem_source (hx : x ∈ (chartAt H c).source) :
     f =ᶠ[𝓝 x] f.toContDiffBump ∘ extChartAt I c :=
   f.EqOnSource.eventuallyEq_of_mem <| IsOpen.mem_nhds (chartAt H c).open_source hx
 #align smooth_bump_function.eventually_eq_of_mem_source SmoothBumpFunction.eventuallyEq_of_mem_source
+-/
 
+#print SmoothBumpFunction.one_of_dist_le /-
 theorem one_of_dist_le (hs : x ∈ (chartAt H c).source)
     (hd : dist (extChartAt I c x) (extChartAt I c c) ≤ f.R) : f x = 1 := by
   simp only [f.eq_on_source hs, (· ∘ ·), f.to_cont_diff_bump.one_of_mem_closed_ball hd]
 #align smooth_bump_function.one_of_dist_le SmoothBumpFunction.one_of_dist_le
+-/
 
+#print SmoothBumpFunction.support_eq_inter_preimage /-
 theorem support_eq_inter_preimage :
     support f = (chartAt H c).source ∩ extChartAt I c ⁻¹' ball (extChartAt I c c) f.rOut := by
   rw [coe_def, support_indicator, (· ∘ ·), support_comp_eq_preimage, ← extChartAt_source I, ←
     (extChartAt I c).symm_image_target_inter_eq', ← (extChartAt I c).symm_image_target_inter_eq',
     f.to_cont_diff_bump.support_eq]
 #align smooth_bump_function.support_eq_inter_preimage SmoothBumpFunction.support_eq_inter_preimage
+-/
 
+#print SmoothBumpFunction.isOpen_support /-
 theorem isOpen_support : IsOpen (support f) := by rw [support_eq_inter_preimage];
   exact isOpen_extChartAt_preimage I c is_open_ball
 #align smooth_bump_function.is_open_support SmoothBumpFunction.isOpen_support
+-/
 
+#print SmoothBumpFunction.support_eq_symm_image /-
 theorem support_eq_symm_image :
     support f = (extChartAt I c).symm '' (ball (extChartAt I c c) f.rOut ∩ range I) :=
   by
@@ -129,11 +150,15 @@ theorem support_eq_symm_image :
     and_congr_right_iff.2 fun hy =>
       ⟨fun h => extChartAt_target_subset_range _ _ h, fun h => f.ball_subset ⟨hy, h⟩⟩
 #align smooth_bump_function.support_eq_symm_image SmoothBumpFunction.support_eq_symm_image
+-/
 
+#print SmoothBumpFunction.support_subset_source /-
 theorem support_subset_source : support f ⊆ (chartAt H c).source := by
   rw [f.support_eq_inter_preimage, ← extChartAt_source I]; exact inter_subset_left _ _
 #align smooth_bump_function.support_subset_source SmoothBumpFunction.support_subset_source
+-/
 
+#print SmoothBumpFunction.image_eq_inter_preimage_of_subset_support /-
 theorem image_eq_inter_preimage_of_subset_support {s : Set M} (hs : s ⊆ support f) :
     extChartAt I c '' s =
       closedBall (extChartAt I c c) f.rOut ∩ range I ∩ (extChartAt I c).symm ⁻¹' s :=
@@ -148,22 +173,30 @@ theorem image_eq_inter_preimage_of_subset_support {s : Set M} (hs : s ⊆ suppor
   · refine' subset.trans (inter_subset_inter_left _ f.closed_ball_subset) _
     rw [(extChartAt I c).image_eq_target_inter_inv_preimage hse]
 #align smooth_bump_function.image_eq_inter_preimage_of_subset_support SmoothBumpFunction.image_eq_inter_preimage_of_subset_support
+-/
 
+#print SmoothBumpFunction.mem_Icc /-
 theorem mem_Icc : f x ∈ Icc (0 : ℝ) 1 :=
   by
   have : f x = 0 ∨ f x = _ := indicator_eq_zero_or_self _ _ _
   cases this <;> rw [this]
   exacts [left_mem_Icc.2 zero_le_one, ⟨f.to_cont_diff_bump.nonneg, f.to_cont_diff_bump.le_one⟩]
 #align smooth_bump_function.mem_Icc SmoothBumpFunction.mem_Icc
+-/
 
+#print SmoothBumpFunction.nonneg /-
 theorem nonneg : 0 ≤ f x :=
   f.mem_Icc.1
 #align smooth_bump_function.nonneg SmoothBumpFunction.nonneg
+-/
 
+#print SmoothBumpFunction.le_one /-
 theorem le_one : f x ≤ 1 :=
   f.mem_Icc.2
 #align smooth_bump_function.le_one SmoothBumpFunction.le_one
+-/
 
+#print SmoothBumpFunction.eventuallyEq_one_of_dist_lt /-
 theorem eventuallyEq_one_of_dist_lt (hs : x ∈ (chartAt H c).source)
     (hd : dist (extChartAt I c x) (extChartAt I c c) < f.R) : f =ᶠ[𝓝 x] 1 :=
   by
@@ -171,38 +204,54 @@ theorem eventuallyEq_one_of_dist_lt (hs : x ∈ (chartAt H c).source)
   rintro z ⟨hzs, hzd : _ < _⟩
   exact f.one_of_dist_le hzs hzd.le
 #align smooth_bump_function.eventually_eq_one_of_dist_lt SmoothBumpFunction.eventuallyEq_one_of_dist_lt
+-/
 
+#print SmoothBumpFunction.eventuallyEq_one /-
 theorem eventuallyEq_one : f =ᶠ[𝓝 c] 1 :=
   f.eventuallyEq_one_of_dist_lt (mem_chart_source _ _) <| by rw [dist_self]; exact f.r_pos
 #align smooth_bump_function.eventually_eq_one SmoothBumpFunction.eventuallyEq_one
+-/
 
+#print SmoothBumpFunction.eq_one /-
 @[simp]
 theorem eq_one : f c = 1 :=
   f.eventuallyEq_one.eq_of_nhds
 #align smooth_bump_function.eq_one SmoothBumpFunction.eq_one
+-/
 
+#print SmoothBumpFunction.support_mem_nhds /-
 theorem support_mem_nhds : support f ∈ 𝓝 c :=
   f.eventuallyEq_one.mono fun x hx => by rw [hx]; exact one_ne_zero
 #align smooth_bump_function.support_mem_nhds SmoothBumpFunction.support_mem_nhds
+-/
 
+#print SmoothBumpFunction.tsupport_mem_nhds /-
 theorem tsupport_mem_nhds : tsupport f ∈ 𝓝 c :=
   mem_of_superset f.support_mem_nhds subset_closure
 #align smooth_bump_function.tsupport_mem_nhds SmoothBumpFunction.tsupport_mem_nhds
+-/
 
+#print SmoothBumpFunction.c_mem_support /-
 theorem c_mem_support : c ∈ support f :=
   mem_of_mem_nhds f.support_mem_nhds
 #align smooth_bump_function.c_mem_support SmoothBumpFunction.c_mem_support
+-/
 
+#print SmoothBumpFunction.nonempty_support /-
 theorem nonempty_support : (support f).Nonempty :=
   ⟨c, f.c_mem_support⟩
 #align smooth_bump_function.nonempty_support SmoothBumpFunction.nonempty_support
+-/
 
+#print SmoothBumpFunction.isCompact_symm_image_closedBall /-
 theorem isCompact_symm_image_closedBall :
     IsCompact ((extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I)) :=
   ((isCompact_closedBall _ _).inter_right I.closed_range).image_of_continuousOn <|
     (continuousOn_extChartAt_symm _ _).mono f.closedBall_subset
 #align smooth_bump_function.is_compact_symm_image_closed_ball SmoothBumpFunction.isCompact_symm_image_closedBall
+-/
 
+#print SmoothBumpFunction.nhdsWithin_range_basis /-
 /-- Given a smooth bump function `f : smooth_bump_function I c`, the closed ball of radius `f.R` is
 known to include the support of `f`. These closed balls (in the model normed space `E`) intersected
 with `set.range I` form a basis of `𝓝[range I] (ext_chart_at I c c)`. -/
@@ -221,7 +270,9 @@ theorem nhdsWithin_range_basis :
       inter_mem (mem_nhdsWithin_of_mem_nhds <| closed_ball_mem_nhds _ f.rOut_pos)
         self_mem_nhdsWithin
 #align smooth_bump_function.nhds_within_range_basis SmoothBumpFunction.nhdsWithin_range_basis
+-/
 
+#print SmoothBumpFunction.isClosed_image_of_isClosed /-
 theorem isClosed_image_of_isClosed {s : Set M} (hsc : IsClosed s) (hs : s ⊆ support f) :
     IsClosed (extChartAt I c '' s) :=
   by
@@ -231,7 +282,9 @@ theorem isClosed_image_of_isClosed {s : Set M} (hsc : IsClosed s) (hs : s ⊆ su
       ((continuousOn_extChartAt_symm _ _).mono f.closed_ball_subset) _ hsc
   exact IsClosed.inter is_closed_ball I.closed_range
 #align smooth_bump_function.is_closed_image_of_is_closed SmoothBumpFunction.isClosed_image_of_isClosed
+-/
 
+#print SmoothBumpFunction.exists_r_pos_lt_subset_ball /-
 /-- If `f` is a smooth bump function and `s` closed subset of the support of `f` (i.e., of the open
 ball of radius `f.R`), then there exists `0 < r < f.R` such that `s` is a subset of the open ball of
 radius `r`. Formally, `s ⊆ e.source ∩ e ⁻¹' (ball (e c) r)`, where `e = ext_chart_at I c`. -/
@@ -245,37 +298,49 @@ theorem exists_r_pos_lt_subset_ball {s : Set M} (hsc : IsClosed s) (hs : s ⊆ s
   rcases exists_pos_lt_subset_ball f.R_pos this hs.2 with ⟨r, hrR, hr⟩
   exact ⟨r, hrR, subset_inter hs.1 (image_subset_iff.1 hr)⟩
 #align smooth_bump_function.exists_r_pos_lt_subset_ball SmoothBumpFunction.exists_r_pos_lt_subset_ball
+-/
 
+#print SmoothBumpFunction.updateRIn /-
 /-- Replace `r` with another value in the interval `(0, f.R)`. -/
-def updateR (r : ℝ) (hr : r ∈ Ioo 0 f.rOut) : SmoothBumpFunction I c :=
+def updateRIn (r : ℝ) (hr : r ∈ Ioo 0 f.rOut) : SmoothBumpFunction I c :=
   ⟨⟨r, f.rOut, hr.1, hr.2⟩, f.closedBall_subset⟩
-#align smooth_bump_function.update_r SmoothBumpFunction.updateR
+#align smooth_bump_function.update_r SmoothBumpFunction.updateRIn
+-/
 
+#print SmoothBumpFunction.updateRIn_rOut /-
 @[simp]
-theorem updateR_rOut {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) : (f.updateR r hr).rOut = f.rOut :=
+theorem updateRIn_rOut {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) : (f.updateRIn r hr).rOut = f.rOut :=
   rfl
-#align smooth_bump_function.update_r_R SmoothBumpFunction.updateR_rOut
+#align smooth_bump_function.update_r_R SmoothBumpFunction.updateRIn_rOut
+-/
 
+#print SmoothBumpFunction.updateRIn_rIn /-
 @[simp]
-theorem updateR_rIn {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) : (f.updateR r hr).R = r :=
+theorem updateRIn_rIn {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) : (f.updateRIn r hr).R = r :=
   rfl
-#align smooth_bump_function.update_r_r SmoothBumpFunction.updateR_rIn
+#align smooth_bump_function.update_r_r SmoothBumpFunction.updateRIn_rIn
+-/
 
+#print SmoothBumpFunction.support_updateRIn /-
 @[simp]
-theorem support_updateR {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) : support (f.updateR r hr) = support f := by
-  simp only [support_eq_inter_preimage, update_r_R]
-#align smooth_bump_function.support_update_r SmoothBumpFunction.support_updateR
+theorem support_updateRIn {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) :
+    support (f.updateRIn r hr) = support f := by simp only [support_eq_inter_preimage, update_r_R]
+#align smooth_bump_function.support_update_r SmoothBumpFunction.support_updateRIn
+-/
 
 instance : Inhabited (SmoothBumpFunction I c) :=
   Classical.inhabited_of_nonempty nhdsWithin_range_basis.Nonempty
 
 variable [T2Space M]
 
+#print SmoothBumpFunction.isClosed_symm_image_closedBall /-
 theorem isClosed_symm_image_closedBall :
     IsClosed ((extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I)) :=
   f.isCompact_symm_image_closedBall.IsClosed
 #align smooth_bump_function.is_closed_symm_image_closed_ball SmoothBumpFunction.isClosed_symm_image_closedBall
+-/
 
+#print SmoothBumpFunction.tsupport_subset_symm_image_closedBall /-
 theorem tsupport_subset_symm_image_closedBall :
     tsupport f ⊆ (extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I) :=
   by
@@ -284,7 +349,9 @@ theorem tsupport_subset_symm_image_closedBall :
     closure_minimal (image_subset _ <| inter_subset_inter_left _ ball_subset_closed_ball)
       f.is_closed_symm_image_closed_ball
 #align smooth_bump_function.tsupport_subset_symm_image_closed_ball SmoothBumpFunction.tsupport_subset_symm_image_closedBall
+-/
 
+#print SmoothBumpFunction.tsupport_subset_extChartAt_source /-
 theorem tsupport_subset_extChartAt_source : tsupport f ⊆ (extChartAt I c).source :=
   calc
     tsupport f ⊆ (extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I) :=
@@ -292,18 +359,24 @@ theorem tsupport_subset_extChartAt_source : tsupport f ⊆ (extChartAt I c).sour
     _ ⊆ (extChartAt I c).symm '' (extChartAt I c).target := (image_subset _ f.closedBall_subset)
     _ = (extChartAt I c).source := (extChartAt I c).symm_image_target_eq_source
 #align smooth_bump_function.tsupport_subset_ext_chart_at_source SmoothBumpFunction.tsupport_subset_extChartAt_source
+-/
 
+#print SmoothBumpFunction.tsupport_subset_chartAt_source /-
 theorem tsupport_subset_chartAt_source : tsupport f ⊆ (chartAt H c).source := by
   simpa only [extChartAt_source] using f.tsupport_subset_ext_chart_at_source
 #align smooth_bump_function.tsupport_subset_chart_at_source SmoothBumpFunction.tsupport_subset_chartAt_source
+-/
 
+#print SmoothBumpFunction.hasCompactSupport /-
 protected theorem hasCompactSupport : HasCompactSupport f :=
   isCompact_of_isClosed_subset f.isCompact_symm_image_closedBall isClosed_closure
     f.tsupport_subset_symm_image_closedBall
 #align smooth_bump_function.has_compact_support SmoothBumpFunction.hasCompactSupport
+-/
 
 variable (I c)
 
+#print SmoothBumpFunction.nhds_basis_tsupport /-
 /-- The closures of supports of smooth bump functions centered at `c` form a basis of `𝓝 c`.
 In other words, each of these closures is a neighborhood of `c` and each neighborhood of `c`
 includes `tsupport f` for some `f : smooth_bump_function I c`. -/
@@ -320,9 +393,11 @@ theorem nhds_basis_tsupport :
     this.to_has_basis' (fun f hf => ⟨f, trivial, f.tsupport_subset_symm_image_closedBall⟩)
       fun f _ => f.tsupport_mem_nhds
 #align smooth_bump_function.nhds_basis_tsupport SmoothBumpFunction.nhds_basis_tsupport
+-/
 
 variable {c}
 
+#print SmoothBumpFunction.nhds_basis_support /-
 /-- Given `s ∈ 𝓝 c`, the supports of smooth bump functions `f : smooth_bump_function I c` such that
 `tsupport f ⊆ s` form a basis of `𝓝 c`.  In other words, each of these supports is a
 neighborhood of `c` and each neighborhood of `c` includes `support f` for some `f :
@@ -332,9 +407,11 @@ theorem nhds_basis_support {s : Set M} (hs : s ∈ 𝓝 c) :
   ((nhds_basis_tsupport I c).restrict_subset hs).to_has_basis'
     (fun f hf => ⟨f, hf.2, subset_closure⟩) fun f hf => f.support_mem_nhds
 #align smooth_bump_function.nhds_basis_support SmoothBumpFunction.nhds_basis_support
+-/
 
 variable [SmoothManifoldWithCorners I M] {I}
 
+#print SmoothBumpFunction.smooth /-
 /-- A smooth bump function is infinitely smooth. -/
 protected theorem smooth : Smooth I 𝓘(ℝ) f :=
   by
@@ -345,15 +422,21 @@ protected theorem smooth : Smooth I 𝓘(ℝ) f :=
       (f.eq_on_source.eventually_eq_of_mem <| IsOpen.mem_nhds (chart_at _ _).open_source this)
   exact f.to_cont_diff_bump.cont_diff_at.cont_mdiff_at.comp _ (contMDiffAt_extChartAt' this)
 #align smooth_bump_function.smooth SmoothBumpFunction.smooth
+-/
 
+#print SmoothBumpFunction.smoothAt /-
 protected theorem smoothAt {x} : SmoothAt I 𝓘(ℝ) f x :=
   f.smooth.SmoothAt
 #align smooth_bump_function.smooth_at SmoothBumpFunction.smoothAt
+-/
 
+#print SmoothBumpFunction.continuous /-
 protected theorem continuous : Continuous f :=
   f.smooth.Continuous
 #align smooth_bump_function.continuous SmoothBumpFunction.continuous
+-/
 
+#print SmoothBumpFunction.smooth_smul /-
 /-- If `f : smooth_bump_function I c` is a smooth bump function and `g : M → G` is a function smooth
 on the source of the chart at `c`, then `f • g` is smooth on the whole manifold. -/
 theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
@@ -368,6 +451,7 @@ theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
   exact
     f.smooth_at.smul ((hg _ this).ContMDiffAt <| IsOpen.mem_nhds (chart_at _ _).open_source this)
 #align smooth_bump_function.smooth_smul SmoothBumpFunction.smooth_smul
+-/
 
 end SmoothBumpFunction
 
Diff
@@ -338,12 +338,12 @@ variable [SmoothManifoldWithCorners I M] {I}
 /-- A smooth bump function is infinitely smooth. -/
 protected theorem smooth : Smooth I 𝓘(ℝ) f :=
   by
-  refine' contMdiff_of_support fun x hx => _
+  refine' contMDiff_of_support fun x hx => _
   have : x ∈ (chart_at H c).source := f.tsupport_subset_chart_at_source hx
   refine'
-    ContMdiffAt.congr_of_eventuallyEq _
+    ContMDiffAt.congr_of_eventuallyEq _
       (f.eq_on_source.eventually_eq_of_mem <| IsOpen.mem_nhds (chart_at _ _).open_source this)
-  exact f.to_cont_diff_bump.cont_diff_at.cont_mdiff_at.comp _ (contMdiffAt_ext_chart_at' this)
+  exact f.to_cont_diff_bump.cont_diff_at.cont_mdiff_at.comp _ (contMDiffAt_extChartAt' this)
 #align smooth_bump_function.smooth SmoothBumpFunction.smooth
 
 protected theorem smoothAt {x} : SmoothAt I 𝓘(ℝ) f x :=
@@ -359,14 +359,14 @@ on the source of the chart at `c`, then `f • g` is smooth on the whole manifol
 theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
     (hg : SmoothOn I 𝓘(ℝ, G) g (chartAt H c).source) : Smooth I 𝓘(ℝ, G) fun x => f x • g x :=
   by
-  apply contMdiff_of_support fun x hx => _
+  apply contMDiff_of_support fun x hx => _
   have : x ∈ (chart_at H c).source
   calc
     x ∈ tsupport fun x => f x • g x := hx
     _ ⊆ tsupport f := (tsupport_smul_subset_left _ _)
     _ ⊆ (chart_at _ c).source := f.tsupport_subset_chart_at_source
   exact
-    f.smooth_at.smul ((hg _ this).ContMdiffAt <| IsOpen.mem_nhds (chart_at _ _).open_source this)
+    f.smooth_at.smul ((hg _ this).ContMDiffAt <| IsOpen.mem_nhds (chart_at _ _).open_source this)
 #align smooth_bump_function.smooth_smul SmoothBumpFunction.smooth_smul
 
 end SmoothBumpFunction
Diff
@@ -291,7 +291,6 @@ theorem tsupport_subset_extChartAt_source : tsupport f ⊆ (extChartAt I c).sour
       f.tsupport_subset_symm_image_closedBall
     _ ⊆ (extChartAt I c).symm '' (extChartAt I c).target := (image_subset _ f.closedBall_subset)
     _ = (extChartAt I c).source := (extChartAt I c).symm_image_target_eq_source
-    
 #align smooth_bump_function.tsupport_subset_ext_chart_at_source SmoothBumpFunction.tsupport_subset_extChartAt_source
 
 theorem tsupport_subset_chartAt_source : tsupport f ⊆ (chartAt H c).source := by
@@ -366,7 +365,6 @@ theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
     x ∈ tsupport fun x => f x • g x := hx
     _ ⊆ tsupport f := (tsupport_smul_subset_left _ _)
     _ ⊆ (chart_at _ c).source := f.tsupport_subset_chart_at_source
-    
   exact
     f.smooth_at.smul ((hg _ this).ContMdiffAt <| IsOpen.mem_nhds (chart_at _ _).open_source this)
 #align smooth_bump_function.smooth_smul SmoothBumpFunction.smooth_smul
Diff
@@ -86,11 +86,11 @@ theorem coe_def : ⇑f = indicator (chartAt H c).source (f.toContDiffBump ∘ ex
   rfl
 #align smooth_bump_function.coe_def SmoothBumpFunction.coe_def
 
-theorem r_pos : 0 < f.r :=
-  f.toContDiffBump.r_pos
-#align smooth_bump_function.R_pos SmoothBumpFunction.r_pos
+theorem rOut_pos : 0 < f.rOut :=
+  f.toContDiffBump.rOut_pos
+#align smooth_bump_function.R_pos SmoothBumpFunction.rOut_pos
 
-theorem ball_subset : ball (extChartAt I c c) f.r ∩ range I ⊆ (extChartAt I c).target :=
+theorem ball_subset : ball (extChartAt I c c) f.rOut ∩ range I ⊆ (extChartAt I c).target :=
   Subset.trans (inter_subset_inter_left _ ball_subset_closedBall) f.closedBall_subset
 #align smooth_bump_function.ball_subset SmoothBumpFunction.ball_subset
 
@@ -109,7 +109,7 @@ theorem one_of_dist_le (hs : x ∈ (chartAt H c).source)
 #align smooth_bump_function.one_of_dist_le SmoothBumpFunction.one_of_dist_le
 
 theorem support_eq_inter_preimage :
-    support f = (chartAt H c).source ∩ extChartAt I c ⁻¹' ball (extChartAt I c c) f.r := by
+    support f = (chartAt H c).source ∩ extChartAt I c ⁻¹' ball (extChartAt I c c) f.rOut := by
   rw [coe_def, support_indicator, (· ∘ ·), support_comp_eq_preimage, ← extChartAt_source I, ←
     (extChartAt I c).symm_image_target_inter_eq', ← (extChartAt I c).symm_image_target_inter_eq',
     f.to_cont_diff_bump.support_eq]
@@ -120,7 +120,7 @@ theorem isOpen_support : IsOpen (support f) := by rw [support_eq_inter_preimage]
 #align smooth_bump_function.is_open_support SmoothBumpFunction.isOpen_support
 
 theorem support_eq_symm_image :
-    support f = (extChartAt I c).symm '' (ball (extChartAt I c c) f.r ∩ range I) :=
+    support f = (extChartAt I c).symm '' (ball (extChartAt I c c) f.rOut ∩ range I) :=
   by
   rw [f.support_eq_inter_preimage, ← extChartAt_source I, ←
     (extChartAt I c).symm_image_target_inter_eq', inter_comm]
@@ -136,7 +136,7 @@ theorem support_subset_source : support f ⊆ (chartAt H c).source := by
 
 theorem image_eq_inter_preimage_of_subset_support {s : Set M} (hs : s ⊆ support f) :
     extChartAt I c '' s =
-      closedBall (extChartAt I c c) f.r ∩ range I ∩ (extChartAt I c).symm ⁻¹' s :=
+      closedBall (extChartAt I c c) f.rOut ∩ range I ∩ (extChartAt I c).symm ⁻¹' s :=
   by
   rw [support_eq_inter_preimage, subset_inter_iff, ← extChartAt_source I, ← image_subset_iff] at hs 
   cases' hs with hse hsf
@@ -198,7 +198,7 @@ theorem nonempty_support : (support f).Nonempty :=
 #align smooth_bump_function.nonempty_support SmoothBumpFunction.nonempty_support
 
 theorem isCompact_symm_image_closedBall :
-    IsCompact ((extChartAt I c).symm '' (closedBall (extChartAt I c c) f.r ∩ range I)) :=
+    IsCompact ((extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I)) :=
   ((isCompact_closedBall _ _).inter_right I.closed_range).image_of_continuousOn <|
     (continuousOn_extChartAt_symm _ _).mono f.closedBall_subset
 #align smooth_bump_function.is_compact_symm_image_closed_ball SmoothBumpFunction.isCompact_symm_image_closedBall
@@ -208,7 +208,7 @@ known to include the support of `f`. These closed balls (in the model normed spa
 with `set.range I` form a basis of `𝓝[range I] (ext_chart_at I c c)`. -/
 theorem nhdsWithin_range_basis :
     (𝓝[range I] extChartAt I c c).HasBasis (fun f : SmoothBumpFunction I c => True) fun f =>
-      closedBall (extChartAt I c c) f.r ∩ range I :=
+      closedBall (extChartAt I c c) f.rOut ∩ range I :=
   by
   refine'
     ((nhdsWithin_hasBasis nhds_basis_closed_ball _).restrict_subset
@@ -218,7 +218,8 @@ theorem nhdsWithin_range_basis :
     exact ⟨⟨⟨R / 2, R, half_pos hR0, half_lt_self hR0⟩, hsub⟩, trivial, subset.rfl⟩
   ·
     exact fun f _ =>
-      inter_mem (mem_nhdsWithin_of_mem_nhds <| closed_ball_mem_nhds _ f.r_pos) self_mem_nhdsWithin
+      inter_mem (mem_nhdsWithin_of_mem_nhds <| closed_ball_mem_nhds _ f.rOut_pos)
+        self_mem_nhdsWithin
 #align smooth_bump_function.nhds_within_range_basis SmoothBumpFunction.nhdsWithin_range_basis
 
 theorem isClosed_image_of_isClosed {s : Set M} (hsc : IsClosed s) (hs : s ⊆ support f) :
@@ -235,7 +236,7 @@ theorem isClosed_image_of_isClosed {s : Set M} (hsc : IsClosed s) (hs : s ⊆ su
 ball of radius `f.R`), then there exists `0 < r < f.R` such that `s` is a subset of the open ball of
 radius `r`. Formally, `s ⊆ e.source ∩ e ⁻¹' (ball (e c) r)`, where `e = ext_chart_at I c`. -/
 theorem exists_r_pos_lt_subset_ball {s : Set M} (hsc : IsClosed s) (hs : s ⊆ support f) :
-    ∃ (r : _) (hr : r ∈ Ioo 0 f.r),
+    ∃ (r : _) (hr : r ∈ Ioo 0 f.rOut),
       s ⊆ (chartAt H c).source ∩ extChartAt I c ⁻¹' ball (extChartAt I c c) r :=
   by
   set e := extChartAt I c
@@ -246,24 +247,22 @@ theorem exists_r_pos_lt_subset_ball {s : Set M} (hsc : IsClosed s) (hs : s ⊆ s
 #align smooth_bump_function.exists_r_pos_lt_subset_ball SmoothBumpFunction.exists_r_pos_lt_subset_ball
 
 /-- Replace `r` with another value in the interval `(0, f.R)`. -/
-def updateR (r : ℝ) (hr : r ∈ Ioo 0 f.r) : SmoothBumpFunction I c :=
-  ⟨⟨r, f.r, hr.1, hr.2⟩, f.closedBall_subset⟩
+def updateR (r : ℝ) (hr : r ∈ Ioo 0 f.rOut) : SmoothBumpFunction I c :=
+  ⟨⟨r, f.rOut, hr.1, hr.2⟩, f.closedBall_subset⟩
 #align smooth_bump_function.update_r SmoothBumpFunction.updateR
 
 @[simp]
-theorem updateR_r {r : ℝ} (hr : r ∈ Ioo 0 f.r) : (f.updateR r hr).r = f.r :=
+theorem updateR_rOut {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) : (f.updateR r hr).rOut = f.rOut :=
   rfl
-#align smooth_bump_function.update_r_R SmoothBumpFunction.updateR_r
+#align smooth_bump_function.update_r_R SmoothBumpFunction.updateR_rOut
 
-/- warning: smooth_bump_function.update_r_r clashes with smooth_bump_function.update_r_R -> SmoothBumpFunction.updateR_r
-Case conversion may be inaccurate. Consider using '#align smooth_bump_function.update_r_r SmoothBumpFunction.updateR_rₓ'. -/
 @[simp]
-theorem updateR_r {r : ℝ} (hr : r ∈ Ioo 0 f.r) : (f.updateR r hr).R = r :=
+theorem updateR_rIn {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) : (f.updateR r hr).R = r :=
   rfl
-#align smooth_bump_function.update_r_r SmoothBumpFunction.updateR_r
+#align smooth_bump_function.update_r_r SmoothBumpFunction.updateR_rIn
 
 @[simp]
-theorem support_updateR {r : ℝ} (hr : r ∈ Ioo 0 f.r) : support (f.updateR r hr) = support f := by
+theorem support_updateR {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) : support (f.updateR r hr) = support f := by
   simp only [support_eq_inter_preimage, update_r_R]
 #align smooth_bump_function.support_update_r SmoothBumpFunction.support_updateR
 
@@ -273,12 +272,12 @@ instance : Inhabited (SmoothBumpFunction I c) :=
 variable [T2Space M]
 
 theorem isClosed_symm_image_closedBall :
-    IsClosed ((extChartAt I c).symm '' (closedBall (extChartAt I c c) f.r ∩ range I)) :=
+    IsClosed ((extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I)) :=
   f.isCompact_symm_image_closedBall.IsClosed
 #align smooth_bump_function.is_closed_symm_image_closed_ball SmoothBumpFunction.isClosed_symm_image_closedBall
 
 theorem tsupport_subset_symm_image_closedBall :
-    tsupport f ⊆ (extChartAt I c).symm '' (closedBall (extChartAt I c c) f.r ∩ range I) :=
+    tsupport f ⊆ (extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I) :=
   by
   rw [tsupport, support_eq_symm_image]
   exact
@@ -288,7 +287,7 @@ theorem tsupport_subset_symm_image_closedBall :
 
 theorem tsupport_subset_extChartAt_source : tsupport f ⊆ (extChartAt I c).source :=
   calc
-    tsupport f ⊆ (extChartAt I c).symm '' (closedBall (extChartAt I c c) f.r ∩ range I) :=
+    tsupport f ⊆ (extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I) :=
       f.tsupport_subset_symm_image_closedBall
     _ ⊆ (extChartAt I c).symm '' (extChartAt I c).target := (image_subset _ f.closedBall_subset)
     _ = (extChartAt I c).source := (extChartAt I c).symm_image_target_eq_source
@@ -314,7 +313,7 @@ theorem nhds_basis_tsupport :
   by
   have :
     (𝓝 c).HasBasis (fun f : SmoothBumpFunction I c => True) fun f =>
-      (extChartAt I c).symm '' (closed_ball (extChartAt I c c) f.r ∩ range I) :=
+      (extChartAt I c).symm '' (closed_ball (extChartAt I c c) f.rOut ∩ range I) :=
     by
     rw [← map_extChartAt_symm_nhdsWithin_range I c]
     exact nhds_within_range_basis.map _
Diff
@@ -138,7 +138,7 @@ theorem image_eq_inter_preimage_of_subset_support {s : Set M} (hs : s ⊆ suppor
     extChartAt I c '' s =
       closedBall (extChartAt I c c) f.r ∩ range I ∩ (extChartAt I c).symm ⁻¹' s :=
   by
-  rw [support_eq_inter_preimage, subset_inter_iff, ← extChartAt_source I, ← image_subset_iff] at hs
+  rw [support_eq_inter_preimage, subset_inter_iff, ← extChartAt_source I, ← image_subset_iff] at hs 
   cases' hs with hse hsf
   apply subset.antisymm
   · refine' subset_inter (subset_inter (subset.trans hsf ball_subset_closed_ball) _) _
@@ -153,7 +153,7 @@ theorem mem_Icc : f x ∈ Icc (0 : ℝ) 1 :=
   by
   have : f x = 0 ∨ f x = _ := indicator_eq_zero_or_self _ _ _
   cases this <;> rw [this]
-  exacts[left_mem_Icc.2 zero_le_one, ⟨f.to_cont_diff_bump.nonneg, f.to_cont_diff_bump.le_one⟩]
+  exacts [left_mem_Icc.2 zero_le_one, ⟨f.to_cont_diff_bump.nonneg, f.to_cont_diff_bump.le_one⟩]
 #align smooth_bump_function.mem_Icc SmoothBumpFunction.mem_Icc
 
 theorem nonneg : 0 ≤ f x :=
@@ -235,12 +235,12 @@ theorem isClosed_image_of_isClosed {s : Set M} (hsc : IsClosed s) (hs : s ⊆ su
 ball of radius `f.R`), then there exists `0 < r < f.R` such that `s` is a subset of the open ball of
 radius `r`. Formally, `s ⊆ e.source ∩ e ⁻¹' (ball (e c) r)`, where `e = ext_chart_at I c`. -/
 theorem exists_r_pos_lt_subset_ball {s : Set M} (hsc : IsClosed s) (hs : s ⊆ support f) :
-    ∃ (r : _)(hr : r ∈ Ioo 0 f.r),
+    ∃ (r : _) (hr : r ∈ Ioo 0 f.r),
       s ⊆ (chartAt H c).source ∩ extChartAt I c ⁻¹' ball (extChartAt I c c) r :=
   by
   set e := extChartAt I c
   have : IsClosed (e '' s) := f.is_closed_image_of_is_closed hsc hs
-  rw [support_eq_inter_preimage, subset_inter_iff, ← image_subset_iff] at hs
+  rw [support_eq_inter_preimage, subset_inter_iff, ← image_subset_iff] at hs 
   rcases exists_pos_lt_subset_ball f.R_pos this hs.2 with ⟨r, hrR, hr⟩
   exact ⟨r, hrR, subset_inter hs.1 (image_subset_iff.1 hr)⟩
 #align smooth_bump_function.exists_r_pos_lt_subset_ball SmoothBumpFunction.exists_r_pos_lt_subset_ball
Diff
@@ -40,7 +40,7 @@ variable {E : Type uE} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensi
 
 open Function Filter FiniteDimensional Set Metric
 
-open Topology Manifold Classical Filter BigOperators
+open scoped Topology Manifold Classical Filter BigOperators
 
 noncomputable section
 
Diff
@@ -256,8 +256,6 @@ theorem updateR_r {r : ℝ} (hr : r ∈ Ioo 0 f.r) : (f.updateR r hr).r = f.r :=
 #align smooth_bump_function.update_r_R SmoothBumpFunction.updateR_r
 
 /- warning: smooth_bump_function.update_r_r clashes with smooth_bump_function.update_r_R -> SmoothBumpFunction.updateR_r
-warning: smooth_bump_function.update_r_r -> SmoothBumpFunction.updateR_r is a dubious translation:
-<too large>
 Case conversion may be inaccurate. Consider using '#align smooth_bump_function.update_r_r SmoothBumpFunction.updateR_rₓ'. -/
 @[simp]
 theorem updateR_r {r : ℝ} (hr : r ∈ Ioo 0 f.r) : (f.updateR r hr).R = r :=
Diff
@@ -115,9 +115,7 @@ theorem support_eq_inter_preimage :
     f.to_cont_diff_bump.support_eq]
 #align smooth_bump_function.support_eq_inter_preimage SmoothBumpFunction.support_eq_inter_preimage
 
-theorem isOpen_support : IsOpen (support f) :=
-  by
-  rw [support_eq_inter_preimage]
+theorem isOpen_support : IsOpen (support f) := by rw [support_eq_inter_preimage];
   exact isOpen_extChartAt_preimage I c is_open_ball
 #align smooth_bump_function.is_open_support SmoothBumpFunction.isOpen_support
 
@@ -132,10 +130,8 @@ theorem support_eq_symm_image :
       ⟨fun h => extChartAt_target_subset_range _ _ h, fun h => f.ball_subset ⟨hy, h⟩⟩
 #align smooth_bump_function.support_eq_symm_image SmoothBumpFunction.support_eq_symm_image
 
-theorem support_subset_source : support f ⊆ (chartAt H c).source :=
-  by
-  rw [f.support_eq_inter_preimage, ← extChartAt_source I]
-  exact inter_subset_left _ _
+theorem support_subset_source : support f ⊆ (chartAt H c).source := by
+  rw [f.support_eq_inter_preimage, ← extChartAt_source I]; exact inter_subset_left _ _
 #align smooth_bump_function.support_subset_source SmoothBumpFunction.support_subset_source
 
 theorem image_eq_inter_preimage_of_subset_support {s : Set M} (hs : s ⊆ support f) :
@@ -146,8 +142,7 @@ theorem image_eq_inter_preimage_of_subset_support {s : Set M} (hs : s ⊆ suppor
   cases' hs with hse hsf
   apply subset.antisymm
   · refine' subset_inter (subset_inter (subset.trans hsf ball_subset_closed_ball) _) _
-    · rintro _ ⟨x, -, rfl⟩
-      exact mem_range_self _
+    · rintro _ ⟨x, -, rfl⟩; exact mem_range_self _
     · rw [(extChartAt I c).image_eq_target_inter_inv_preimage hse]
       exact inter_subset_right _ _
   · refine' subset.trans (inter_subset_inter_left _ f.closed_ball_subset) _
@@ -178,10 +173,7 @@ theorem eventuallyEq_one_of_dist_lt (hs : x ∈ (chartAt H c).source)
 #align smooth_bump_function.eventually_eq_one_of_dist_lt SmoothBumpFunction.eventuallyEq_one_of_dist_lt
 
 theorem eventuallyEq_one : f =ᶠ[𝓝 c] 1 :=
-  f.eventuallyEq_one_of_dist_lt (mem_chart_source _ _) <|
-    by
-    rw [dist_self]
-    exact f.r_pos
+  f.eventuallyEq_one_of_dist_lt (mem_chart_source _ _) <| by rw [dist_self]; exact f.r_pos
 #align smooth_bump_function.eventually_eq_one SmoothBumpFunction.eventuallyEq_one
 
 @[simp]
@@ -190,9 +182,7 @@ theorem eq_one : f c = 1 :=
 #align smooth_bump_function.eq_one SmoothBumpFunction.eq_one
 
 theorem support_mem_nhds : support f ∈ 𝓝 c :=
-  f.eventuallyEq_one.mono fun x hx => by
-    rw [hx]
-    exact one_ne_zero
+  f.eventuallyEq_one.mono fun x hx => by rw [hx]; exact one_ne_zero
 #align smooth_bump_function.support_mem_nhds SmoothBumpFunction.support_mem_nhds
 
 theorem tsupport_mem_nhds : tsupport f ∈ 𝓝 c :=
Diff
@@ -267,10 +267,7 @@ theorem updateR_r {r : ℝ} (hr : r ∈ Ioo 0 f.r) : (f.updateR r hr).r = f.r :=
 
 /- warning: smooth_bump_function.update_r_r clashes with smooth_bump_function.update_r_R -> SmoothBumpFunction.updateR_r
 warning: smooth_bump_function.update_r_r -> SmoothBumpFunction.updateR_r is a dubious translation:
-lean 3 declaration is
-  forall {E : Type.{u1}} [_inst_1 : NormedAddCommGroup.{u1} E] [_inst_2 : NormedSpace.{0, u1} Real E Real.normedField (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_1)] [_inst_3 : FiniteDimensional.{0, u1} Real E Real.divisionRing (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_1) (NormedSpace.toModule.{0, u1} Real E Real.normedField (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_1) _inst_2)] {H : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} H] {I : ModelWithCorners.{0, u1, u2} Real (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) E _inst_1 _inst_2 H _inst_4} {M : Type.{u3}} [_inst_5 : TopologicalSpace.{u3} M] [_inst_6 : ChartedSpace.{u2, u3} H _inst_4 M _inst_5] [_inst_7 : SmoothManifoldWithCorners.{0, u1, u2, u3} Real (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) E _inst_1 _inst_2 H _inst_4 I M _inst_5 _inst_6] {c : M} (f : SmoothBumpFunction.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c) {r : Real} (hr : Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) r (Set.Ioo.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f)))), Eq.{1} Real (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c (SmoothBumpFunction.updateR.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f r hr))) r
-but is expected to have type
-  forall {E : Type.{u1}} [_inst_1 : NormedAddCommGroup.{u1} E] [_inst_2 : NormedSpace.{0, u1} Real E Real.normedField (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_1)] [_inst_3 : FiniteDimensional.{0, u1} Real E Real.divisionRing (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_1) (NormedSpace.toModule.{0, u1} Real E Real.normedField (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_1) _inst_2)] {H : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} H] {I : ModelWithCorners.{0, u1, u2} Real (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) E _inst_1 _inst_2 H _inst_4} {M : Type.{u3}} [_inst_5 : TopologicalSpace.{u3} M] [_inst_6 : ChartedSpace.{u2, u3} H _inst_4 M _inst_5] [_inst_7 : SmoothManifoldWithCorners.{0, u1, u2, u3} Real (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) E _inst_1 _inst_2 H _inst_4 I M _inst_5 _inst_6] {c : M} (f : SmoothBumpFunction.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c) {r : Real} (hr : Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) r (Set.Ioo.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f)))), Eq.{1} Real (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c (SmoothBumpFunction.updateR.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f r hr))) (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f))
+<too large>
 Case conversion may be inaccurate. Consider using '#align smooth_bump_function.update_r_r SmoothBumpFunction.updateR_rₓ'. -/
 @[simp]
 theorem updateR_r {r : ℝ} (hr : r ∈ Ioo 0 f.r) : (f.updateR r hr).R = r :=
Diff
@@ -266,13 +266,16 @@ theorem updateR_r {r : ℝ} (hr : r ∈ Ioo 0 f.r) : (f.updateR r hr).r = f.r :=
 #align smooth_bump_function.update_r_R SmoothBumpFunction.updateR_r
 
 /- warning: smooth_bump_function.update_r_r clashes with smooth_bump_function.update_r_R -> SmoothBumpFunction.updateR_r
+warning: smooth_bump_function.update_r_r -> SmoothBumpFunction.updateR_r is a dubious translation:
+lean 3 declaration is
+  forall {E : Type.{u1}} [_inst_1 : NormedAddCommGroup.{u1} E] [_inst_2 : NormedSpace.{0, u1} Real E Real.normedField (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_1)] [_inst_3 : FiniteDimensional.{0, u1} Real E Real.divisionRing (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_1) (NormedSpace.toModule.{0, u1} Real E Real.normedField (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_1) _inst_2)] {H : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} H] {I : ModelWithCorners.{0, u1, u2} Real (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) E _inst_1 _inst_2 H _inst_4} {M : Type.{u3}} [_inst_5 : TopologicalSpace.{u3} M] [_inst_6 : ChartedSpace.{u2, u3} H _inst_4 M _inst_5] [_inst_7 : SmoothManifoldWithCorners.{0, u1, u2, u3} Real (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) E _inst_1 _inst_2 H _inst_4 I M _inst_5 _inst_6] {c : M} (f : SmoothBumpFunction.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c) {r : Real} (hr : Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) r (Set.Ioo.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f)))), Eq.{1} Real (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c (SmoothBumpFunction.updateR.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f r hr))) r
+but is expected to have type
+  forall {E : Type.{u1}} [_inst_1 : NormedAddCommGroup.{u1} E] [_inst_2 : NormedSpace.{0, u1} Real E Real.normedField (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_1)] [_inst_3 : FiniteDimensional.{0, u1} Real E Real.divisionRing (NormedAddCommGroup.toAddCommGroup.{u1} E _inst_1) (NormedSpace.toModule.{0, u1} Real E Real.normedField (NormedAddCommGroup.toSeminormedAddCommGroup.{u1} E _inst_1) _inst_2)] {H : Type.{u2}} [_inst_4 : TopologicalSpace.{u2} H] {I : ModelWithCorners.{0, u1, u2} Real (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) E _inst_1 _inst_2 H _inst_4} {M : Type.{u3}} [_inst_5 : TopologicalSpace.{u3} M] [_inst_6 : ChartedSpace.{u2, u3} H _inst_4 M _inst_5] [_inst_7 : SmoothManifoldWithCorners.{0, u1, u2, u3} Real (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) E _inst_1 _inst_2 H _inst_4 I M _inst_5 _inst_6] {c : M} (f : SmoothBumpFunction.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c) {r : Real} (hr : Membership.Mem.{0, 0} Real (Set.{0} Real) (Set.hasMem.{0} Real) r (Set.Ioo.{0} Real Real.preorder (OfNat.ofNat.{0} Real 0 (OfNat.mk.{0} Real 0 (Zero.zero.{0} Real Real.hasZero))) (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f)))), Eq.{1} Real (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c (SmoothBumpFunction.updateR.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f r hr))) (ContDiffBump.r.{u1} E (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (LocalEquiv.{u3, u1} M E) (fun (_x : LocalEquiv.{u3, u1} M E) => M -> E) (LocalEquiv.hasCoeToFun.{u3, u1} M E) (extChartAt.{0, u1, u3, u2} Real E M H (DenselyNormedField.toNontriviallyNormedField.{0} Real Real.denselyNormedField) _inst_1 _inst_2 _inst_4 _inst_5 I _inst_6 c) c) (SmoothBumpFunction.toContDiffBump.{u1, u2, u3} E _inst_1 _inst_2 _inst_3 H _inst_4 I M _inst_5 _inst_6 _inst_7 c f))
 Case conversion may be inaccurate. Consider using '#align smooth_bump_function.update_r_r SmoothBumpFunction.updateR_rₓ'. -/
-#print SmoothBumpFunction.updateR_r /-
 @[simp]
 theorem updateR_r {r : ℝ} (hr : r ∈ Ioo 0 f.r) : (f.updateR r hr).R = r :=
   rfl
 #align smooth_bump_function.update_r_r SmoothBumpFunction.updateR_r
--/
 
 @[simp]
 theorem support_updateR {r : ℝ} (hr : r ∈ Ioo 0 f.r) : support (f.updateR r hr) = support f := by
Diff
@@ -302,7 +302,7 @@ theorem tsupport_subset_extChartAt_source : tsupport f ⊆ (extChartAt I c).sour
   calc
     tsupport f ⊆ (extChartAt I c).symm '' (closedBall (extChartAt I c c) f.r ∩ range I) :=
       f.tsupport_subset_symm_image_closedBall
-    _ ⊆ (extChartAt I c).symm '' (extChartAt I c).target := image_subset _ f.closedBall_subset
+    _ ⊆ (extChartAt I c).symm '' (extChartAt I c).target := (image_subset _ f.closedBall_subset)
     _ = (extChartAt I c).source := (extChartAt I c).symm_image_target_eq_source
     
 #align smooth_bump_function.tsupport_subset_ext_chart_at_source SmoothBumpFunction.tsupport_subset_extChartAt_source
@@ -377,7 +377,7 @@ theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
   have : x ∈ (chart_at H c).source
   calc
     x ∈ tsupport fun x => f x • g x := hx
-    _ ⊆ tsupport f := tsupport_smul_subset_left _ _
+    _ ⊆ tsupport f := (tsupport_smul_subset_left _ _)
     _ ⊆ (chart_at _ c).source := f.tsupport_subset_chart_at_source
     
   exact

Changes in mathlib4

mathlib3
mathlib4
chore: superfluous parentheses part 2 (#12131)

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

Diff
@@ -269,7 +269,7 @@ theorem tsupport_subset_extChartAt_source : tsupport f ⊆ (extChartAt I c).sour
   calc
     tsupport f ⊆ (extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I) :=
       f.tsupport_subset_symm_image_closedBall
-    _ ⊆ (extChartAt I c).symm '' (extChartAt I c).target := (image_subset _ f.closedBall_subset)
+    _ ⊆ (extChartAt I c).symm '' (extChartAt I c).target := image_subset _ f.closedBall_subset
     _ = (extChartAt I c).source := (extChartAt I c).symm_image_target_eq_source
 #align smooth_bump_function.tsupport_subset_ext_chart_at_source SmoothBumpFunction.tsupport_subset_extChartAt_source
 
@@ -338,7 +338,7 @@ theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
   -- Porting note: was a more readable `calc`
   -- calc
   --   x ∈ tsupport fun x => f x • g x := hx
-  --   _ ⊆ tsupport f := (tsupport_smul_subset_left _ _)
+  --   _ ⊆ tsupport f := tsupport_smul_subset_left _ _
   --   _ ⊆ (chart_at _ c).source := f.tsupport_subset_chartAt_source
     f.tsupport_subset_chartAt_source <| tsupport_smul_subset_left _ _ hx
   exact f.smoothAt.smul ((hg _ this).contMDiffAt <| (chartAt _ _).open_source.mem_nhds this)
chore: rename open_range to isOpen_range, closed_range to isClosed_range (#11438)

All these lemmas refer to the range of some function being open/range (i.e. isOpen or isClosed).

Diff
@@ -194,7 +194,7 @@ theorem nonempty_support : (support f).Nonempty :=
 
 theorem isCompact_symm_image_closedBall :
     IsCompact ((extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I)) :=
-  ((isCompact_closedBall _ _).inter_right I.closed_range).image_of_continuousOn <|
+  ((isCompact_closedBall _ _).inter_right I.isClosed_range).image_of_continuousOn <|
     (continuousOn_extChartAt_symm _ _).mono f.closedBall_subset
 #align smooth_bump_function.is_compact_symm_image_closed_ball SmoothBumpFunction.isCompact_symm_image_closedBall
 
@@ -217,7 +217,7 @@ theorem isClosed_image_of_isClosed {s : Set M} (hsc : IsClosed s) (hs : s ⊆ su
   rw [f.image_eq_inter_preimage_of_subset_support hs]
   refine' ContinuousOn.preimage_isClosed_of_isClosed
     ((continuousOn_extChartAt_symm _ _).mono f.closedBall_subset) _ hsc
-  exact IsClosed.inter isClosed_ball I.closed_range
+  exact IsClosed.inter isClosed_ball I.isClosed_range
 #align smooth_bump_function.is_closed_image_of_is_closed SmoothBumpFunction.isClosed_image_of_isClosed
 
 /-- If `f` is a smooth bump function and `s` closed subset of the support of `f` (i.e., of the open
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
@@ -248,7 +248,7 @@ theorem support_updateRIn {r : ℝ} (hr : r ∈ Ioo 0 f.rOut) :
   simp only [support_eq_inter_preimage, updateRIn_rOut]
 #align smooth_bump_function.support_update_r SmoothBumpFunction.support_updateRIn
 
--- porting note: was an `Inhabited` instance
+-- Porting note: was an `Inhabited` instance
 instance : Nonempty (SmoothBumpFunction I c) := nhdsWithin_range_basis.nonempty
 
 variable [T2Space M]
@@ -335,7 +335,7 @@ theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
     (hg : SmoothOn I 𝓘(ℝ, G) g (chartAt H c).source) : Smooth I 𝓘(ℝ, G) fun x => f x • g x := by
   refine contMDiff_of_tsupport fun x hx => ?_
   have : x ∈ (chartAt H c).source :=
-  -- porting note: was a more readable `calc`
+  -- Porting note: was a more readable `calc`
   -- calc
   --   x ∈ tsupport fun x => f x • g x := hx
   --   _ ⊆ tsupport f := (tsupport_smul_subset_left _ _)
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
@@ -334,13 +334,13 @@ on the source of the chart at `c`, then `f • g` is smooth on the whole manifol
 theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
     (hg : SmoothOn I 𝓘(ℝ, G) g (chartAt H c).source) : Smooth I 𝓘(ℝ, G) fun x => f x • g x := by
   refine contMDiff_of_tsupport fun x hx => ?_
-  have : x ∈ (chartAt H c).source
+  have : x ∈ (chartAt H c).source :=
   -- porting note: was a more readable `calc`
   -- calc
   --   x ∈ tsupport fun x => f x • g x := hx
   --   _ ⊆ tsupport f := (tsupport_smul_subset_left _ _)
   --   _ ⊆ (chart_at _ c).source := f.tsupport_subset_chartAt_source
-  · exact f.tsupport_subset_chartAt_source <| tsupport_smul_subset_left _ _ hx
+    f.tsupport_subset_chartAt_source <| tsupport_smul_subset_left _ _ hx
   exact f.smoothAt.smul ((hg _ this).contMDiffAt <| (chartAt _ _).open_source.mem_nhds this)
 #align smooth_bump_function.smooth_smul SmoothBumpFunction.smooth_smul
 
refactor(ContMDiff/Basic): multiplicativise, generalise and golf contMDiff_of_support and friends (#9764)
  • multiplicativise contMDiff_of_support, contMDiffWithinAt_of_not_mem and contMDiffAt_of_not_mem and use to_additive
  • golf extend_one with the multiplicative version
  • generalise these lemmas to manifolds with zero/one
  • slight clean-up: remove unused variables and opens
  • slight drive-by golfing of one proof
  • deprecate eventuallyEq_zero_nhds in favor of not_mem_tsupport_iff_eventuallyEq

Addresses the post-merge review comments in #9669.

Co-authored-by: ADedecker <anatolededecker@gmail.com> Co-authored-by: grunweg <grunweg@posteo.de>

Diff
@@ -314,7 +314,7 @@ variable [SmoothManifoldWithCorners I M] {I}
 
 /-- A smooth bump function is infinitely smooth. -/
 protected theorem smooth : Smooth I 𝓘(ℝ) f := by
-  refine' contMDiff_of_support fun x hx => _
+  refine contMDiff_of_tsupport fun x hx => ?_
   have : x ∈ (chartAt H c).source := f.tsupport_subset_chartAt_source hx
   refine ContMDiffAt.congr_of_eventuallyEq ?_ <| f.eqOn_source.eventuallyEq_of_mem <|
     (chartAt H c).open_source.mem_nhds this
@@ -333,7 +333,7 @@ protected theorem continuous : Continuous f :=
 on the source of the chart at `c`, then `f • g` is smooth on the whole manifold. -/
 theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
     (hg : SmoothOn I 𝓘(ℝ, G) g (chartAt H c).source) : Smooth I 𝓘(ℝ, G) fun x => f x • g x := by
-  refine contMDiff_of_support fun x hx => ?_
+  refine contMDiff_of_tsupport fun x hx => ?_
   have : x ∈ (chartAt H c).source
   -- porting note: was a more readable `calc`
   -- calc
chore(Geometry/Manifold): use dot notation for IsOpen lemmas more (#9567)

While at it, switch from refine' to refine (easy cases only) in the lines I'm touching anyway.

Diff
@@ -101,7 +101,7 @@ theorem eqOn_source : EqOn f (f.toContDiffBump ∘ extChartAt I c) (chartAt H c)
 
 theorem eventuallyEq_of_mem_source (hx : x ∈ (chartAt H c).source) :
     f =ᶠ[𝓝 x] f.toContDiffBump ∘ extChartAt I c :=
-  f.eqOn_source.eventuallyEq_of_mem <| IsOpen.mem_nhds (chartAt H c).open_source hx
+  f.eqOn_source.eventuallyEq_of_mem <| (chartAt H c).open_source.mem_nhds hx
 #align smooth_bump_function.eventually_eq_of_mem_source SmoothBumpFunction.eventuallyEq_of_mem_source
 
 theorem one_of_dist_le (hs : x ∈ (chartAt H c).source)
@@ -316,8 +316,8 @@ variable [SmoothManifoldWithCorners I M] {I}
 protected theorem smooth : Smooth I 𝓘(ℝ) f := by
   refine' contMDiff_of_support fun x hx => _
   have : x ∈ (chartAt H c).source := f.tsupport_subset_chartAt_source hx
-  refine' ContMDiffAt.congr_of_eventuallyEq _ <| f.eqOn_source.eventuallyEq_of_mem <|
-    IsOpen.mem_nhds (chartAt H c).open_source this
+  refine ContMDiffAt.congr_of_eventuallyEq ?_ <| f.eqOn_source.eventuallyEq_of_mem <|
+    (chartAt H c).open_source.mem_nhds this
   exact f.contDiffAt.contMDiffAt.comp _ (contMDiffAt_extChartAt' this)
 #align smooth_bump_function.smooth SmoothBumpFunction.smooth
 
@@ -341,7 +341,7 @@ theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
   --   _ ⊆ tsupport f := (tsupport_smul_subset_left _ _)
   --   _ ⊆ (chart_at _ c).source := f.tsupport_subset_chartAt_source
   · exact f.tsupport_subset_chartAt_source <| tsupport_smul_subset_left _ _ hx
-  exact f.smoothAt.smul ((hg _ this).contMDiffAt <| IsOpen.mem_nhds (chartAt _ _).open_source this)
+  exact f.smoothAt.smul ((hg _ this).contMDiffAt <| (chartAt _ _).open_source.mem_nhds this)
 #align smooth_bump_function.smooth_smul SmoothBumpFunction.smooth_smul
 
 end SmoothBumpFunction
chore: split Geometry/Manifold/ContMDiff (#8726)

At about 2200 lines, this is currently the longest file in the Geometry/Manifolds.

(It also moves the slowly compiling proof of ContMDiffWithinAt.cle_arrowCongr out of a common recompilation path.)

Diff
@@ -4,7 +4,8 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
 -/
 import Mathlib.Analysis.Calculus.BumpFunction.FiniteDimension
-import Mathlib.Geometry.Manifold.ContMDiff
+import Mathlib.Geometry.Manifold.ContMDiff.Atlas
+import Mathlib.Geometry.Manifold.ContMDiff.NormedSpace
 
 #align_import geometry.manifold.bump_function from "leanprover-community/mathlib"@"b018406ad2f2a73223a3a9e198ccae61e6f05318"
 
chore: rename most lemmas involving clopen to isClopen (#8720)

This PR renames the field Clopens.clopen' -> Clopens.isClopen', and the lemmas

  • preimage_closed_of_closed -> ContinuousOn.preimage_isClosed_of_isClosed

as well as: ClopenUpperSet.clopen -> ClopenUpperSet.isClopen connectedComponent_eq_iInter_clopen -> connectedComponent_eq_iInter_isClopen connectedComponent_subset_iInter_clopen -> connectedComponent_subset_iInter_isClopen continuous_boolIndicator_iff_clopen -> continuous_boolIndicator_iff_isClopen continuousOn_boolIndicator_iff_clopen -> continuousOn_boolIndicator_iff_isClopen DiscreteQuotient.ofClopen -> DiscreteQuotient.ofIsClopen disjoint_or_subset_of_clopen -> disjoint_or_subset_of_isClopen exists_clopen_{lower,upper}of_not_le -> exists_isClopen{lower,upper}_of_not_le exists_clopen_of_cofiltered -> exists_isClopen_of_cofiltered exists_clopen_of_totally_separated -> exists_isClopen_of_totally_separated exists_clopen_upper_or_lower_of_ne -> exists_isClopen_upper_or_lower_of_ne IsPreconnected.subset_clopen -> IsPreconnected.subset_isClopen isTotallyDisconnected_of_clopen_set -> isTotallyDisconnected_of_isClopen_set LocallyConstant.ofClopen_fiber_one -> LocallyConstant.ofIsClopen_fiber_one LocallyConstant.ofClopen_fiber_zero -> LocallyConstant.ofIsClopen_fiber_zero LocallyConstant.ofClopen -> LocallyConstant.ofIsClopen preimage_clopen_of_clopen -> preimage_isClopen_of_isClopen TopologicalSpace.Clopens.clopen -> TopologicalSpace.Clopens.isClopen

Diff
@@ -214,7 +214,7 @@ theorem nhdsWithin_range_basis :
 theorem isClosed_image_of_isClosed {s : Set M} (hsc : IsClosed s) (hs : s ⊆ support f) :
     IsClosed (extChartAt I c '' s) := by
   rw [f.image_eq_inter_preimage_of_subset_support hs]
-  refine' ContinuousOn.preimage_closed_of_closed
+  refine' ContinuousOn.preimage_isClosed_of_isClosed
     ((continuousOn_extChartAt_symm _ _).mono f.closedBall_subset) _ hsc
   exact IsClosed.inter isClosed_ball I.closed_range
 #align smooth_bump_function.is_closed_image_of_is_closed SmoothBumpFunction.isClosed_image_of_isClosed
chore(Topology/SubsetProperties): rename isCompact_of_isClosed_subset (#7298)

As discussed on Zulip.

Co-authored-by: grunweg <grunweg@posteo.de>

Diff
@@ -277,7 +277,7 @@ theorem tsupport_subset_chartAt_source : tsupport f ⊆ (chartAt H c).source :=
 #align smooth_bump_function.tsupport_subset_chart_at_source SmoothBumpFunction.tsupport_subset_chartAt_source
 
 protected theorem hasCompactSupport : HasCompactSupport f :=
-  isCompact_of_isClosed_subset f.isCompact_symm_image_closedBall isClosed_closure
+  f.isCompact_symm_image_closedBall.of_isClosed_subset isClosed_closure
     f.tsupport_subset_symm_image_closedBall
 #align smooth_bump_function.has_compact_support SmoothBumpFunction.hasCompactSupport
 
chore: tidy various files (#7081)
Diff
@@ -204,7 +204,7 @@ theorem nhdsWithin_range_basis :
     (𝓝[range I] extChartAt I c c).HasBasis (fun _ : SmoothBumpFunction I c => True) fun f =>
       closedBall (extChartAt I c c) f.rOut ∩ range I := by
   refine' ((nhdsWithin_hasBasis nhds_basis_closedBall _).restrict_subset
-    (extChartAt_target_mem_nhdsWithin _ _)).to_has_basis' _ _
+    (extChartAt_target_mem_nhdsWithin _ _)).to_hasBasis' _ _
   · rintro R ⟨hR0, hsub⟩
     exact ⟨⟨⟨R / 2, R, half_pos hR0, half_lt_self hR0⟩, hsub⟩, trivial, Subset.rfl⟩
   · exact fun f _ => inter_mem (mem_nhdsWithin_of_mem_nhds <| closedBall_mem_nhds _ f.rOut_pos)
@@ -293,7 +293,7 @@ theorem nhds_basis_tsupport :
       (extChartAt I c).symm '' (closedBall (extChartAt I c c) f.rOut ∩ range I) := by
     rw [← map_extChartAt_symm_nhdsWithin_range I c]
     exact nhdsWithin_range_basis.map _
-  refine' this.to_has_basis' (fun f _ => ⟨f, trivial, f.tsupport_subset_symm_image_closedBall⟩)
+  refine' this.to_hasBasis' (fun f _ => ⟨f, trivial, f.tsupport_subset_symm_image_closedBall⟩)
     fun f _ => f.tsupport_mem_nhds
 #align smooth_bump_function.nhds_basis_tsupport SmoothBumpFunction.nhds_basis_tsupport
 
@@ -305,7 +305,7 @@ neighborhood of `c` and each neighborhood of `c` includes `support f` for some
 `f : SmoothBumpFunction I c` such that `tsupport f ⊆ s`. -/
 theorem nhds_basis_support {s : Set M} (hs : s ∈ 𝓝 c) :
     (𝓝 c).HasBasis (fun f : SmoothBumpFunction I c => tsupport f ⊆ s) fun f => support f :=
-  ((nhds_basis_tsupport I c).restrict_subset hs).to_has_basis'
+  ((nhds_basis_tsupport I c).restrict_subset hs).to_hasBasis'
     (fun f hf => ⟨f, hf.2, subset_closure⟩) fun f _ => f.support_mem_nhds
 #align smooth_bump_function.nhds_basis_support SmoothBumpFunction.nhds_basis_support
 
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,15 +2,12 @@
 Copyright (c) 2021 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov
-
-! This file was ported from Lean 3 source module geometry.manifold.bump_function
-! leanprover-community/mathlib commit b018406ad2f2a73223a3a9e198ccae61e6f05318
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Analysis.Calculus.BumpFunction.FiniteDimension
 import Mathlib.Geometry.Manifold.ContMDiff
 
+#align_import geometry.manifold.bump_function from "leanprover-community/mathlib"@"b018406ad2f2a73223a3a9e198ccae61e6f05318"
+
 /-!
 # Smooth bump functions on a smooth manifold
 
refactor: split BumpFunctionInner (#5940)

Fixes #4755

Diff
@@ -8,7 +8,7 @@ Authors: Yury Kudryashov
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
-import Mathlib.Analysis.Calculus.BumpFunctionFindim
+import Mathlib.Analysis.Calculus.BumpFunction.FiniteDimension
 import Mathlib.Geometry.Manifold.ContMDiff
 
 /-!
chore: tidy various files (#5482)
Diff
@@ -15,12 +15,12 @@ import Mathlib.Geometry.Manifold.ContMDiff
 # Smooth bump functions on a smooth manifold
 
 In this file we define `SmoothBumpFunction I c` to be a bundled smooth "bump" function centered at
-`c`. It is a structure that consists of two real numbers `0 < r < R` with small enough `R`. We
-define a coercion to function for this type, and for `f : SmoothBumpFunction I c`, the function
+`c`. It is a structure that consists of two real numbers `0 < rIn < rOut` with small enough `rOut`.
+We define a coercion to function for this type, and for `f : SmoothBumpFunction I c`, the function
 `⇑f` written in the extended chart at `c` has the following properties:
 
-* `f x = 1` in the closed ball of radius `f.r` centered at `c`;
-* `f x = 0` outside of the ball of radius `f.R` centered at `c`;
+* `f x = 1` in the closed ball of radius `f.rIn` centered at `c`;
+* `f x = 0` outside of the ball of radius `f.rOut` centered at `c`;
 * `0 ≤ f x ≤ 1` for all `x`.
 
 The actual statements involve (pre)images under `extChartAt I f` and are given as lemmas in the
@@ -53,8 +53,8 @@ In this section we define a structure for a bundled smooth bump function and pro
 `f : SmoothBumpFunction I M` is a smooth function on `M` such that in the extended chart `e` at
 `f.c`:
 
-* `f x = 1` in the closed ball of radius `f.r` centered at `f.c`;
-* `f x = 0` outside of the ball of radius `f.R` centered at `f.c`;
+* `f x = 1` in the closed ball of radius `f.rIn` centered at `f.c`;
+* `f x = 0` outside of the ball of radius `f.rOut` centered at `f.c`;
 * `0 ≤ f x ≤ 1` for all `x`.
 
 The structure contains data required to construct a function with these properties. The function is
@@ -137,7 +137,7 @@ theorem support_subset_source : support f ⊆ (chartAt H c).source := by
 theorem image_eq_inter_preimage_of_subset_support {s : Set M} (hs : s ⊆ support f) :
     extChartAt I c '' s =
       closedBall (extChartAt I c c) f.rOut ∩ range I ∩ (extChartAt I c).symm ⁻¹' s := by
-  rw [support_eq_inter_preimage, subset_inter_iff, ← extChartAt_source I, ← image_subset_iff] at hs 
+  rw [support_eq_inter_preimage, subset_inter_iff, ← extChartAt_source I, ← image_subset_iff] at hs
   cases' hs with hse hsf
   apply Subset.antisymm
   · refine' subset_inter (subset_inter (hsf.trans ball_subset_closedBall) _) _
@@ -223,14 +223,14 @@ theorem isClosed_image_of_isClosed {s : Set M} (hsc : IsClosed s) (hs : s ⊆ su
 #align smooth_bump_function.is_closed_image_of_is_closed SmoothBumpFunction.isClosed_image_of_isClosed
 
 /-- If `f` is a smooth bump function and `s` closed subset of the support of `f` (i.e., of the open
-ball of radius `f.R`), then there exists `0 < r < f.R` such that `s` is a subset of the open ball of
-radius `r`. Formally, `s ⊆ e.source ∩ e ⁻¹' (ball (e c) r)`, where `e = extChartAt I c`. -/
+ball of radius `f.rOut`), then there exists `0 < r < f.rOut` such that `s` is a subset of the open
+ball of radius `r`. Formally, `s ⊆ e.source ∩ e ⁻¹' (ball (e c) r)`, where `e = extChartAt I c`. -/
 theorem exists_r_pos_lt_subset_ball {s : Set M} (hsc : IsClosed s) (hs : s ⊆ support f) :
     ∃ r ∈ Ioo 0 f.rOut,
       s ⊆ (chartAt H c).source ∩ extChartAt I c ⁻¹' ball (extChartAt I c c) r := by
   set e := extChartAt I c
   have : IsClosed (e '' s) := f.isClosed_image_of_isClosed hsc hs
-  rw [support_eq_inter_preimage, subset_inter_iff, ← image_subset_iff] at hs 
+  rw [support_eq_inter_preimage, subset_inter_iff, ← image_subset_iff] at hs
   rcases exists_pos_lt_subset_ball f.rOut_pos this hs.2 with ⟨r, hrR, hr⟩
   exact ⟨r, hrR, subset_inter hs.1 (image_subset_iff.1 hr)⟩
 #align smooth_bump_function.exists_r_pos_lt_subset_ball SmoothBumpFunction.exists_r_pos_lt_subset_ball
@@ -304,8 +304,8 @@ variable {c}
 
 /-- Given `s ∈ 𝓝 c`, the supports of smooth bump functions `f : SmoothBumpFunction I c` such that
 `tsupport f ⊆ s` form a basis of `𝓝 c`.  In other words, each of these supports is a
-neighborhood of `c` and each neighborhood of `c` includes `support f` for some `f :
-SmoothBumpFunction I c` such that `tsupport f ⊆ s`. -/
+neighborhood of `c` and each neighborhood of `c` includes `support f` for some
+`f : SmoothBumpFunction I c` such that `tsupport f ⊆ s`. -/
 theorem nhds_basis_support {s : Set M} (hs : s ∈ 𝓝 c) :
     (𝓝 c).HasBasis (fun f : SmoothBumpFunction I c => tsupport f ⊆ s) fun f => support f :=
   ((nhds_basis_tsupport I c).restrict_subset hs).to_has_basis'
@@ -347,4 +347,3 @@ theorem smooth_smul {G} [NormedAddCommGroup G] [NormedSpace ℝ G] {g : M → G}
 #align smooth_bump_function.smooth_smul SmoothBumpFunction.smooth_smul
 
 end SmoothBumpFunction
-
feat: port Geometry.Manifold.BumpFunction (#5437)

Dependencies 12 + 1067

1068 files ported (98.9%)
486370 lines ported (98.9%)
Show graph

The unported dependencies are

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