A smooth compactly supported plateau inside any open neighborhood of a compact set
AutoSamplingTheory.TechnicalLemmas.Analysis.Calculus.Cutoff.exists_contDiff_eq_one_tsupport_subset · theorem · Teaching coverage
Statement
Let E be a finite-dimensional real normed vector space. If K⊆E is compact, U⊆E is open, and K⊆U, then there exists a real-valued smooth function χ on E which takes values in [0,1], equals one on K, and has compact topological support contained in U. The statement also explicitly includes ordinary support contained in U.
All objects and hypotheses
- E is a normed additive commutative group with a real normed-vector-space structure and is finite-dimensional over ℝ.
- K and U are subsets of E, K is compact, U is open, and K⊆U.
- No inner product, nontriviality, or nonemptiness of K or U is assumed.
Mathematical proof
1. Insert a compact neighborhood and obtain an auxiliary smooth function
Choose a compact set L with K⊆interior(L) and L⊆U. Mathlib's smooth-support theorem for an open set supplies a smooth g:E→ℝ with ordinary support exactly interior(L) and all values in [0,1]. Thus g is strictly positive at each point of K.
Corresponding Lean step
exists_compact_between hK hU hKU; (isOpen_interior : IsOpen (interior L)).exists_contDiff_support_eq (E := E) (n := (⊤ : ℕ∞)); lt_of_le_of_ne (hg_range (Set.mem_range_self x)).1 (Ne.symm hx_support)
2. Choose a uniform positive lower bound on K
Continuity and strict positivity of g on the compact set K give a real m>0 such that m≤g(x) for all x∈K. The library statement also handles K empty; no attained positive minimum is claimed in that case.
Corresponding Lean step
hK.exists_forall_le' hg_contDiff.continuous.continuousOn hg_pos; have hm_half_pos : 0 < m / 2 := half_pos hm_pos
3. Compress the values through the smooth transition
Define χ using the standard transition S, with threshold m/2 and transition interval up to m. This composition is smooth because g is smooth and the denominator is a fixed nonzero constant. Its values lie in [0,1] because every value of S does.
Corresponding Lean step
let χ : E → ℝ := fun x => Real.smoothTransition ((g x - m / 2) / (m / 2)); Real.smoothTransition.contDiff.comp; (hg_contDiff.sub contDiff_const).div_const (m / 2); ⟨Real.smoothTransition.nonneg _, Real.smoothTransition.le_one _⟩
4. Separate the nonzero set from the boundary of the auxiliary support
If χ(x)≠0, then its transition argument must be positive, since S vanishes on nonpositive arguments. Hence g(x)>m/2. In particular the ordinary support lies in the closed superlevel set F={x:g(x)≥m/2}.
Corresponding Lean step
Real.smoothTransition.zero_of_nonpos hnonpos; (div_pos_iff_of_pos_right hm_half_pos).mp harg; exact (sub_pos.mp hnum).le
5. Control the closed support and obtain compactness
Continuity of g makes F closed, so tsupp χ⊆F. Because m/2>0, every point of F has g(x)≠0, hence lies in interior(L). Therefore tsupp χ⊆L⊆U. The closed set tsupp χ is a subset of compact L and is compact; ordinary support is contained in tsupport and hence also in U.
Corresponding Lean step
isClosed_le continuous_const hg_contDiff.continuous; closure_minimal hχ_support_superlevel hsuperlevel_closed; hm_half_pos.trans_le hx; (subset_tsupport χ).trans hχ_tsupport_U; hL.of_isClosed_subset isClosed_closure hχ_tsupport_L
6. Verify the plateau and collect all six properties
For x∈K, the bound g(x)≥m forces the transition argument to be at least one. Hence χ(x)=1. Together with the support inclusions, compactness, smoothness, and range bounds already proved, this supplies the required witness.
Corresponding Lean step
apply Real.smoothTransition.one_of_one_le; rw [one_le_div hm_half_pos]; linarith [hm_le x hx]; exact ⟨χ, hχ_support_U, hχ_tsupport_U, hχ_compact, hχ_contDiff, hχ_range, hχ_one⟩
Lean statement · exists_contDiff_eq_one_tsupport_subset
This is an existence theorem proved by constructing a witness from two Mathlib existence results and a scalar transition. It is not a definition of a canonical χ: the chosen L, g, and m are not exported as a uniquely determined plateau.
Braces mark parameters Lean can infer; square brackets request structures such as a measurable space or probability measure. Named hypotheses are mathematical premises, not facts established by this declaration. Section parameters are described in the mathematical hypotheses above; the module link retains their exact source context.
theorem exists_contDiff_eq_one_tsupport_subset
{E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E]
{K U : Set E} (hK : IsCompact K) (hU : IsOpen U) (hKU : K ⊆ U) :
∃ χ : E → ℝ,
Function.support χ ⊆ U ∧ tsupport χ ⊆ U ∧ HasCompactSupport χ ∧
ContDiff ℝ (⊤ : ℕ∞) χ ∧ Set.range χ ⊆ Set.Icc 0 1 ∧ Set.EqOn χ 1 KLean proof · exists_contDiff_eq_one_tsupport_subset
Actual proof outline: Insert a compact neighborhood and obtain an auxiliary smooth function: The first two library results provide L and g with their recorded properties. Positivity on K combines nonzero support membership with nonnegativity, rather than assuming g equals one there. Choose a uniform positive lower bound on K: `exists_forall_le'` gives a strict improvement of the lower bound zero, not an extra nonempty-set premise. Compress the values through the smooth transition: This is the construction used to prove the existence theorem. The scalar transition has already been supplied by Mathlib; no new bump formula is postulated. Separate the nonzero set from the boundary of the auxiliary support: The proof weakens the strict lower bound to a non-strict one so that the containing set F is closed and can also contain the closure of the support. Control the closed support and obtain compactness: This is why using a positive superlevel threshold matters: merely knowing supp g⊆U would not by itself control its closure inside U. Verify the plateau and collect all six properties: `Set.EqOn χ 1 K` means equality on K with the constant-one function. The final nested conjunction lists exactly the six requested properties.
Braces mark parameters Lean can infer; square brackets request structures such as a measurable space or probability measure. Named hypotheses are mathematical premises, not facts established by this declaration. Section parameters are described in the mathematical hypotheses above; the module link retains their exact source context.
theorem exists_contDiff_eq_one_tsupport_subset
{E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E]
{K U : Set E} (hK : IsCompact K) (hU : IsOpen U) (hKU : K ⊆ U) :
∃ χ : E → ℝ,
Function.support χ ⊆ U ∧ tsupport χ ⊆ U ∧ HasCompactSupport χ ∧
ContDiff ℝ (⊤ : ℕ∞) χ ∧ Set.range χ ⊆ Set.Icc 0 1 ∧ Set.EqOn χ 1 K := by
obtain ⟨L, hL, hK_intL, hL_U⟩ := exists_compact_between hK hU hKU
obtain ⟨g, hg_support, hg_contDiff, hg_range⟩ :=
(isOpen_interior : IsOpen (interior L)).exists_contDiff_support_eq
(E := E) (n := (⊤ : ℕ∞))
have hg_pos : ∀ x ∈ K, 0 < g x := by
intro x hx
have hx_support : x ∈ Function.support g := by
rw [hg_support]
exact hK_intL hx
exact lt_of_le_of_ne
(hg_range (Set.mem_range_self x)).1 (Ne.symm hx_support)
obtain ⟨m, hm_pos, hm_le⟩ :=
hK.exists_forall_le' hg_contDiff.continuous.continuousOn hg_pos
have hm_half_pos : 0 < m / 2 := half_pos hm_pos
let χ : E → ℝ := fun x =>
Real.smoothTransition ((g x - m / 2) / (m / 2))
have hχ_support_superlevel :
Function.support χ ⊆ {x : E | m / 2 ≤ g x} := by
intro x hx
change χ x ≠ 0 at hx
have harg : 0 < (g x - m / 2) / (m / 2) := by
apply lt_of_not_ge
intro hnonpos
apply hx
exact Real.smoothTransition.zero_of_nonpos hnonpos
have hnum : 0 < g x - m / 2 :=
(div_pos_iff_of_pos_right hm_half_pos).mp harg
exact (sub_pos.mp hnum).le
have hsuperlevel_closed : IsClosed {x : E | m / 2 ≤ g x} :=
isClosed_le continuous_const hg_contDiff.continuous
have hχ_tsupport_superlevel :
tsupport χ ⊆ {x : E | m / 2 ≤ g x} := by
exact closure_minimal hχ_support_superlevel hsuperlevel_closed
have hsuperlevel_intL : {x : E | m / 2 ≤ g x} ⊆ interior L := by
intro x hx
have hgx_pos : 0 < g x := hm_half_pos.trans_le hx
have hx_support : x ∈ Function.support g := hgx_pos.ne'
rwa [hg_support] at hx_support
have hχ_tsupport_L : tsupport χ ⊆ L :=
hχ_tsupport_superlevel.trans (hsuperlevel_intL.trans interior_subset)
have hχ_tsupport_U : tsupport χ ⊆ U := hχ_tsupport_L.trans hL_U
have hχ_support_U : Function.support χ ⊆ U :=
(subset_tsupport χ).trans hχ_tsupport_U
have hχ_compact : HasCompactSupport χ := by
rw [hasCompactSupport_def]
exact hL.of_isClosed_subset isClosed_closure hχ_tsupport_L
have hχ_contDiff : ContDiff ℝ (⊤ : ℕ∞) χ := by
apply Real.smoothTransition.contDiff.comp
exact (hg_contDiff.sub contDiff_const).div_const (m / 2)
have hχ_range : Set.range χ ⊆ Set.Icc (0 : ℝ) 1 := by
rintro _ ⟨x, rfl⟩
exact ⟨Real.smoothTransition.nonneg _, Real.smoothTransition.le_one _⟩
have hχ_one : Set.EqOn χ 1 K := by
intro x hx
apply Real.smoothTransition.one_of_one_le
rw [one_le_div hm_half_pos]
linarith [hm_le x hx]
exact ⟨χ, hχ_support_U, hχ_tsupport_U, hχ_compact,
hχ_contDiff, hχ_range, hχ_one⟩
end Plateau
end Cutoff
end Calculus
end Analysis
end TechnicalLemmas
end AutoSamplingTheoryScope and omitted-condition boundaries
- There are no radius-dependent derivative constants, Hessian estimates, or measure-theoretic limits in this theorem.
- This proof does not call the radial cutoff family; its compact-within-open construction is a separate API.
Source and reuse
ASTIS parents called
Mathlib API called (external library)
- exists_compact_between
- IsOpen.exists_contDiff_support_eq
- IsCompact.exists_forall_le'
- Real.smoothTransition
- Real.smoothTransition.contDiff
- Real.smoothTransition.nonneg
- Real.smoothTransition.le_one
- Real.smoothTransition.zero_of_nonpos
- Real.smoothTransition.one_of_one_le
- isClosed_le
- closure_minimal
- subset_tsupport
- IsCompact.of_isClosed_subset
Mathematical sources
- Current ASTIS declaration and complete body — Authority for the statement, local assumptions, and actual proof/construction documented here.
- Existing module card — Existing curated entry for this declaration. Attribution is preserved as local card evidence only, without a new external-source audit or source-equivalence verdict.
- exists_compact_between — Exact checked local Mathlib dependency definition or theorem.
- IsOpen.exists_contDiff_support_eq — Exact checked local Mathlib dependency definition or theorem.
- IsCompact.exists_forall_le' — Exact checked local Mathlib dependency definition or theorem.
- Real.smoothTransition — Exact checked local Mathlib dependency definition or theorem.
- Real.smoothTransition.contDiff — Exact checked local Mathlib dependency definition or theorem.
- Real.smoothTransition.nonneg — Exact checked local Mathlib dependency definition or theorem.
- Real.smoothTransition.le_one — Exact checked local Mathlib dependency definition or theorem.
- Real.smoothTransition.zero_of_nonpos — Exact checked local Mathlib dependency definition or theorem.
- Real.smoothTransition.one_of_one_le — Exact checked local Mathlib dependency definition or theorem.
- subset_tsupport — Additive declaration generated by to_additive.
- closure_minimal — Exact checked local Mathlib lemma used in this proof.
- Existing test source — Existing direct example invocation inspected; no build or test run was performed.
ASTIS prose is not a quotation or a source-equivalence certificate. Definitions and aliases are explained as constructions, not counted as new mathematical proofs.