Smooth Approximation Up to the Boundary (Theorem # 3097)
Theorem
Let $\Omega \subset \mathbb{R}^n$ be a bounded open set with Lipschitz boundary, and let $1 \leq p < \infty$. Then $C^\infty(\overline\Omega)$ is dense in $W^{1,p}(\Omega)$.
Analysis
Real Analysis
Discussion
No discussion available for this theorem.
Proof
[proofplan]
Fix $u \in W^{1,p}(\Omega)$ and $\delta > 0$; we construct $v \in C^\infty(\overline{\Omega})$ with $\|u - v\|_{W^{1,p}(\Omega)} < \delta$. The Lipschitz boundary lets us cover $\partial\Omega$ by finitely many open sets $U_1, \dots, U_N$ on each of which $\Omega \cap U_j$ coincides, after a Lipschitz change of variables, with the region above a Lipschitz graph. Together with one interior set $U_0 \subset\subset \Omega$, this forms an open cover $\{U_0, U_1, \dots, U_N\}$ of $\overline{\Omega}$. We use a smooth partition of unity $\{\zeta_j\}_{j=0}^N$ subordinate to this cover to localise: $u = \sum_{j=0}^N \zeta_j u$, with each $\zeta_j u$ supported in $U_j$. On the interior piece, the [Meyers-Serrin Theorem](/theorems/58) provides a smooth approximation. On each boundary piece, the difficulty is that $u_j = \zeta_j u$ generally has nonzero trace on $\partial\Omega$, so the zero extension of $u_j$ to $\mathbb{R}^n$ need not lie in $W^{1,p}(\mathbb{R}^n)$ — the weak gradient picks up a singular part on $\partial\Omega$, which would invalidate any direct application of the convolution-derivative formula on $\mathbb{R}^n$. The remedy is to translate $u_j$ along the upward graph direction by a fixed amount $\beta\tau$ before mollifying: the translated function $u_j^\tau$, restricted to a small neighbourhood of $\overline{\Omega} \cap U_j$, equals a translate of $u_j|_\Omega$ pulled in from strictly inside $\Omega$, with no boundary trace contribution to spoil the regularity of its zero extension. Mollifying at scale $\varepsilon < \tau/2$ then yields a $C^\infty$ function approximating $\zeta_j u$ in $W^{1,p}$ via continuity of translation in $L^p$ and standard mollifier estimates. Summing the $N+1$ smooth pieces gives the required $v \in C^\infty(\overline{\Omega})$.
[/proofplan]
[step:Cover $\overline{\Omega}$ by an interior set and finitely many boundary charts]
By definition of [Lipschitz Boundary](/page/Lipschitz%20Boundary), for every $x \in \partial\Omega$ there exist $r_x > 0$, an orthogonal change of coordinates centred at $x$, and a Lipschitz function $\gamma_x: \mathbb{R}^{n-1} \to \mathbb{R}$ such that, in these coordinates, writing $y = (y', y_n) \in \mathbb{R}^{n-1} \times \mathbb{R}$,
\begin{align*}
\Omega \cap B(x, r_x) = \{(y', y_n) : |y' - x'| < r_x,\ \gamma_x(y') < y_n < x_n + r_x\}, \\
\partial\Omega \cap B(x, r_x) = \{(y', \gamma_x(y')) : |y' - x'| < r_x\}.
\end{align*}
Since $\partial\Omega$ is compact (closed and bounded as the boundary of a bounded set), a finite subcover $\{B(x_j, r_{x_j})\}_{j=1}^N$ extracts. Write $U_j := B(x_j, r_{x_j})$ for $j = 1, \dots, N$ and let $\gamma_j := \gamma_{x_j}$.
Pick $r_0 > 0$ small enough that the open set
\begin{align*}
U_0 := \{x \in \Omega : \operatorname{dist}(x, \partial\Omega) > r_0\}
\end{align*}
together with $U_1, \dots, U_N$ covers $\overline{\Omega}$. (Such $r_0$ exists: $\bigcup_{j=1}^N U_j$ is open and contains the compact set $\partial\Omega$, so it contains an open $\rho$-neighbourhood of $\partial\Omega$ for some $\rho > 0$; take $r_0 < \rho/2$.) Note $\overline{U_0} \subset \Omega$, in particular $U_0 \subset\subset \Omega$.
Let $\{\zeta_j\}_{j=0}^N$ be a smooth [Partition of Unity](/page/Partition%20of%20Unity) subordinate to the cover $\{U_j\}_{j=0}^N$ of $\overline{\Omega}$: each $\zeta_j \in C_c^\infty(\mathbb{R}^n)$, $\operatorname{supp} \zeta_j \subset U_j$, $0 \leq \zeta_j \leq 1$, and $\sum_{j=0}^N \zeta_j \equiv 1$ on a neighbourhood of $\overline{\Omega}$.
[guided]
The aim of this step is to set up the geometric scaffolding: a finite open cover of $\overline{\Omega}$ in which one set sits strictly inside $\Omega$ and the remaining sets are adapted to the Lipschitz graph structure near $\partial\Omega$, together with a smooth partition of unity that lets us localise $u$ to each piece. The construction proceeds in three parts: extract a finite boundary cover from the Lipschitz hypothesis, add an interior set, and produce the partition of unity.
**Boundary cover from the Lipschitz hypothesis.** By definition of [Lipschitz Boundary](/page/Lipschitz%20Boundary), for every $x \in \partial\Omega$ there exist $r_x > 0$, an orthogonal change of coordinates centred at $x$, and a Lipschitz function $\gamma_x: \mathbb{R}^{n-1} \to \mathbb{R}$ with Lipschitz constant $L_x$ such that, in these coordinates and writing $y = (y', y_n) \in \mathbb{R}^{n-1} \times \mathbb{R}$,
\begin{align*}
\Omega \cap B(x, r_x) = \{(y', y_n) : |y' - x'| < r_x,\ \gamma_x(y') < y_n < x_n + r_x\}, \\
\partial\Omega \cap B(x, r_x) = \{(y', \gamma_x(y')) : |y' - x'| < r_x\}.
\end{align*}
The collection $\{B(x, r_x)\}_{x \in \partial\Omega}$ covers $\partial\Omega$. Why a finite subcover exists: $\Omega$ is a bounded open set, so its boundary $\partial\Omega = \overline{\Omega} \setminus \Omega$ is closed and bounded in $\mathbb{R}^n$, hence compact by the Heine-Borel theorem. Compactness extracts a finite subcover $\{B(x_j, r_{x_j})\}_{j=1}^N$. Set $U_j := B(x_j, r_{x_j})$ and $\gamma_j := \gamma_{x_j}$ for $j = 1, \dots, N$.
**Interior set and global cover.** The set $\bigcup_{j=1}^N U_j$ is open and contains the compact set $\partial\Omega$, so by elementary point-set topology it contains an open $\rho$-neighbourhood $\{x : \operatorname{dist}(x, \partial\Omega) < \rho\}$ for some $\rho > 0$. Choose $r_0 \in (0, \rho/2)$ and define
\begin{align*}
U_0 := \{x \in \Omega : \operatorname{dist}(x, \partial\Omega) > r_0\}.
\end{align*}
This is an open subset of $\Omega$. Together with the boundary balls, $\{U_0, U_1, \dots, U_N\}$ covers $\overline{\Omega}$: any $x \in \overline{\Omega}$ is either at distance $> r_0$ from $\partial\Omega$ (then $x \in U_0$) or at distance $\leq r_0 < \rho$ from $\partial\Omega$ (then $x \in \bigcup_j U_j$). We have $\overline{U_0} \subset \{x \in \Omega : \operatorname{dist}(x, \partial\Omega) \geq r_0\} \subset \Omega$, so $U_0 \subset\subset \Omega$.
**Partition of unity.** Since $\overline{\Omega}$ is a compact subset of $\mathbb{R}^n$ covered by the open sets $\{U_0, \dots, U_N\}$, the existence of a smooth [Partition of Unity](/page/Partition%20of%20Unity) subordinate to this cover gives a family $\{\zeta_j\}_{j=0}^N$ with $\zeta_j \in C_c^\infty(\mathbb{R}^n)$, $\operatorname{supp} \zeta_j \subset U_j$, $0 \leq \zeta_j \leq 1$, and $\sum_{j=0}^N \zeta_j \equiv 1$ on a neighbourhood of $\overline{\Omega}$.
**Why this scaffolding is right for the proof.** The output of the construction is a smooth function on $\overline{\Omega}$, not just on $\Omega$. The interior tool [Meyers-Serrin Theorem](/theorems/58) provides smooth approximations on $\Omega$ but does not on its own deliver a $C^\infty(\overline{\Omega})$ function near $\partial\Omega$. The decisive obstruction at the boundary, however, is not smoothness — convolution of any $L^1_{\mathrm{loc}}$ function with a $C_c^\infty$ kernel is automatically smooth — but rather a $W^{1,p}$-regularity issue under zero extension. A boundary piece $u_j = \zeta_j u$ has support meeting $\partial\Omega$ and generically nonzero trace there, so its zero extension to $\mathbb{R}^n$ need not lie in $W^{1,p}(\mathbb{R}^n)$: the weak gradient of the zero extension, computed against test functions whose support crosses $\partial\Omega$, picks up a singular boundary contribution proportional to the trace, which is not represented by an $L^p$ function. Without zero-extension regularity on $\mathbb{R}^n$, the commutation $\partial_{x_i}(u_j * \eta_\varepsilon) = (\partial_{x_i} u_j) * \eta_\varepsilon$ furnished by [Differentiation Passes Through Convolution](/theorems/3096) cannot be applied, so the $W^{1,p}$ approximation control over the gradient breaks down. The geometric remedy uses the Lipschitz graph hypothesis: translation by $\beta\tau$ in the positive $y_n$-direction pulls the values that $u_j$ attains near $\partial\Omega$ in from points strictly inside $\Omega$. The choice $\beta = L_j + 2$ ensures the vertical shift exceeds the maximum graph wobble $L_j\tau$ over a horizontal step of size $\tau$ by an extra margin of $\tau$, so that on a neighbourhood of $\overline{\Omega} \cap U_j$ the translated function $u_j^\tau$ samples $u_j$ only at points strictly inside $\Omega$, away from $\partial\Omega$. The zero extension of $u_j^\tau$, restricted to that neighbourhood, then has no boundary trace to contend with and lies in $W^{1,p}(\mathbb{R}^n)$ in the relevant region — making the convolution-derivative formula applicable. The partition of unity localises this trick to each chart: $u = \sum_{j=0}^N \zeta_j u$ decomposes into pieces $u_j := \zeta_j u$ supported in $\overline{\operatorname{supp} \zeta_j} \subset U_j$, each piece treated by the appropriate tool — Meyers-Serrin on $u_0$ (whose support is bounded away from $\partial\Omega$ by $r_0$), translate-then-mollify on each $u_j$ for $j \geq 1$. With each piece approximated to within $\delta/(N+1)$ in $W^{1,p}$, the triangle inequality on the sum of $N+1$ pieces gives a total error of at most $\delta$, the bound recorded in the theorem.
[/guided]
[/step]
[step:Localise $u$ via the partition of unity]
Set $u_j := \zeta_j u$ for $j = 0, 1, \dots, N$. Since $\zeta_j \in C_c^\infty(\mathbb{R}^n)$ and $u \in W^{1,p}(\Omega)$, the product rule for weak derivatives gives $u_j \in W^{1,p}(\Omega)$ with
\begin{align*}
\partial_{x_i} u_j = (\partial_{x_i} \zeta_j) u + \zeta_j (\partial_{x_i} u),
\end{align*}
both summands in $L^p(\Omega)$ (the first by boundedness of $\partial_{x_i}\zeta_j$ and $u \in L^p$; the second by boundedness of $\zeta_j$ and $\partial_{x_i} u \in L^p$). Moreover $\operatorname{supp} u_j \subset \operatorname{supp} \zeta_j \subset U_j$, and on a neighbourhood of $\overline{\Omega}$,
\begin{align*}
u = \sum_{j=0}^N u_j.
\end{align*}
[/step]
[step:Approximate the interior piece $u_0$ by Meyers-Serrin]
The function $u_0 = \zeta_0 u$ is supported in $\overline{\operatorname{supp} \zeta_0} \subset U_0 \subset\subset \Omega$. Hence $u_0$ extended by zero outside $\Omega$ lies in $W^{1,p}(\Omega)$ with compact support in $\Omega$. By the [Meyers-Serrin Theorem](/theorems/58), there exists $v_0 \in C^\infty(\Omega) \cap W^{1,p}(\Omega)$ with
\begin{align*}
\|u_0 - v_0\|_{W^{1,p}(\Omega)} < \frac{\delta}{N+1}.
\end{align*}
A stronger statement is available: since $\operatorname{supp} u_0$ is a compact subset of $\Omega$, we can choose the mollification scale $\varepsilon < \operatorname{dist}(\operatorname{supp} u_0, \partial\Omega)$ and take $v_0 := u_0 * \eta_\varepsilon$ to be the mollification of (the zero extension of) $u_0$. Then $v_0 \in C_c^\infty(\Omega) \subset C^\infty(\overline{\Omega})$, with $v_0$ vanishing on a neighbourhood of $\partial\Omega$, and by the standard convergence of mollifications in $L^p$ we can choose $\varepsilon$ small enough that $\|u_0 - v_0\|_{W^{1,p}(\Omega)} < \delta/(N+1)$.
[guided]
The interior piece $u_0 = \zeta_0 u$ is the only one of the $N+1$ pieces whose support sits at strictly positive distance from $\partial\Omega$, which means the obstruction motivating the translate-then-mollify construction does not arise here. We can mollify $u_0$ directly and obtain a $C_c^\infty(\Omega)$ approximation that extends smoothly across $\partial\Omega$ by zero. The plan: (i) extend by zero, (ii) mollify at a scale below the boundary distance, (iii) verify smoothness across $\overline{\Omega}$, (iv) bound the $W^{1,p}$ error using the standard mollifier convergence theorem.
**Setup and zero extension.** The support satisfies $\operatorname{supp} u_0 \subset \overline{\operatorname{supp} \zeta_0} \subset U_0 = \{x \in \Omega : \operatorname{dist}(x, \partial\Omega) > r_0\}$, so the distance
\begin{align*}
d_0 := \operatorname{dist}(\operatorname{supp} u_0, \partial\Omega) \geq r_0 > 0
\end{align*}
is strictly positive. Extending $u_0$ by zero outside $\Omega$ produces a function on all of $\mathbb{R}^n$. Because $\operatorname{supp} u_0$ is a compact subset of $\Omega$, the weak derivative of the zero extension on $\mathbb{R}^n$ equals the zero extension of the weak derivative on $\Omega$: for any $\varphi \in C_c^\infty(\mathbb{R}^n)$, $\int_{\mathbb{R}^n} u_0\, \partial_{x_i}\varphi\, d\mathcal{L}^n = \int_\Omega u_0\, \partial_{x_i}\varphi\, d\mathcal{L}^n = -\int_\Omega (\partial_{x_i} u_0)\, \varphi\, d\mathcal{L}^n = -\int_{\mathbb{R}^n} (\partial_{x_i} u_0)\, \varphi\, d\mathcal{L}^n$, where the second equality uses $\operatorname{supp} u_0 \subset\subset \Omega$ to drop the boundary effects of integration by parts. Hence the zero extension lies in $W^{1,p}(\mathbb{R}^n)$.
**Mollifier choice.** Fix a standard mollifier $\eta \in C_c^\infty(\mathbb{R}^n)$ with $\eta \geq 0$, $\operatorname{supp} \eta \subset B(0,1)$, and $\int_{\mathbb{R}^n} \eta\, d\mathcal{L}^n = 1$. Define
\begin{align*}
\eta_\varepsilon: \mathbb{R}^n &\to \mathbb{R} \\
x &\mapsto \varepsilon^{-n} \eta(x/\varepsilon).
\end{align*}
Then $\eta_\varepsilon \in C_c^\infty(\mathbb{R}^n)$ with $\operatorname{supp} \eta_\varepsilon \subset B(0,\varepsilon)$ and $\int \eta_\varepsilon\, d\mathcal{L}^n = 1$.
**Mollification and smoothness.** For $\varepsilon \in (0, d_0)$ define
\begin{align*}
v_0 := u_0 * \eta_\varepsilon : \mathbb{R}^n \to \mathbb{R}, \quad v_0(x) = \int_{\mathbb{R}^n} u_0(z)\, \eta_\varepsilon(x - z)\, d\mathcal{L}^n(z).
\end{align*}
The convolution of an $L^p$ function with a $C_c^\infty$ kernel is smooth on $\mathbb{R}^n$, and its support lies in $\operatorname{supp} u_0 + B(0,\varepsilon)$. For $\varepsilon < d_0$ this support is contained in $\{x : \operatorname{dist}(x, \partial\Omega) > 0\}$, in fact at distance $\geq d_0 - \varepsilon > 0$ from $\partial\Omega$, so $v_0 \in C_c^\infty(\Omega) \subset C^\infty(\overline{\Omega})$.
**$W^{1,p}$ approximation.** We invoke the standard convergence of mollifications in $L^p$. The hypotheses require $f \in L^p_{\mathrm{loc}}$ on the relevant set and an open subset $V$ with $V \subset\subset \Omega$. Take $V$ to be any open set with $\operatorname{supp} u_0 \subset V \subset\subset \Omega$, for example $V = \{x : \operatorname{dist}(x, \operatorname{supp} u_0) < d_0/2\}$. Then $u_0 \in L^p(\Omega) \subset L^p(V)$ holds because $u_0 \in W^{1,p}(\Omega)$, and similarly $\partial_{x_i} u_0 \in L^p(V)$. The theorem yields, as $\varepsilon \to 0$,
\begin{align*}
\|u_0 * \eta_\varepsilon - u_0\|_{L^p(V)} \to 0.
\end{align*}
For weak derivatives, [Differentiation Passes Through Convolution](/theorems/3096) — whose hypotheses are $u_0 \in W^{1,p}(\mathbb{R}^n)$ (verified by the zero extension argument above) and $\eta_\varepsilon \in C_c^\infty(\mathbb{R}^n)$ — gives the commutation
\begin{align*}
\partial_{x_i} v_0 = \partial_{x_i}(u_0 * \eta_\varepsilon) = (\partial_{x_i} u_0) * \eta_\varepsilon \quad \text{on } \mathbb{R}^n.
\end{align*}
Applying the same standard convergence theorem to $\partial_{x_i} u_0 \in L^p(V)$,
\begin{align*}
\|(\partial_{x_i} u_0) * \eta_\varepsilon - \partial_{x_i} u_0\|_{L^p(V)} \to 0 \quad \text{as } \varepsilon \to 0.
\end{align*}
Outside $V$ both $u_0$ and $v_0$ vanish for all $\varepsilon < d_0/2$ (since $\operatorname{supp} v_0 \subset \operatorname{supp} u_0 + B(0, \varepsilon) \subset V$), so the $L^p(V)$ convergence extends to $L^p(\Omega)$ convergence with no change.
**Conclusion.** Combining the $L^p$ and weak-derivative estimates, choose $\varepsilon \in (0, d_0)$ small enough that
\begin{align*}
\|u_0 - v_0\|_{W^{1,p}(\Omega)} < \frac{\delta}{N+1},
\end{align*}
which is the bound recorded in the step body. The resulting $v_0 \in C_c^\infty(\Omega) \subset C^\infty(\overline{\Omega})$ is the smooth approximant for the interior piece.
[/guided]
[/step]
[step:Approximate each boundary piece $u_j$ by translation followed by mollification]
Fix $j \in \{1, \dots, N\}$ and work in the rotated coordinates around $x_j$ in which $\Omega \cap U_j = \{(y', y_n) : |y' - x_j'| < r_j,\ \gamma_j(y') < y_n < (x_j)_n + r_j\}$, with $r_j = r_{x_j}$ and $\gamma_j$ Lipschitz with constant $L_j$. Let $\beta := \max_{1 \leq j \leq N} L_j + 2$.
For $\tau > 0$, define the translated function
\begin{align*}
u_j^\tau: \mathbb{R}^n &\to \mathbb{R} \\
y &\mapsto u_j(y + \beta \tau e_n) \quad \text{(in the rotated coordinates around } x_j\text{)},
\end{align*}
where we extend $u_j$ by zero outside $\Omega$, so $u_j$ is defined on all of $\mathbb{R}^n$. We claim that for $\tau > 0$ sufficiently small, the values of $u_j^\tau$ on a neighbourhood of $\overline{\Omega} \cap U_j$ are sampled from $u_j$ only at points strictly inside $\Omega$, so that mollifying $u_j^\tau$ at scale $\varepsilon \ll \tau$ produces a $C^\infty$ function on a neighbourhood of $\overline{\Omega \cap U_j}$ to which the convolution-derivative formula applies.
[claim:For $\tau$ small enough and $\varepsilon \ll \tau$, the mollification $v_j^\tau := u_j^\tau * \eta_\varepsilon$ is $C^\infty$ on a neighbourhood of $\overline{\Omega} \cap U_j$ and approximates $u_j$ in $W^{1,p}(\Omega)$]
[proof]
**Geometric setup.** In the rotated coordinates around $x_j$, the support of $u_j$ lies in the closed set
\begin{align*}
S_j := \overline{\operatorname{supp} \zeta_j} \cap \overline{\Omega} \subset \{(y', y_n) : |y' - x_j'| \leq r_j',\ \gamma_j(y') \leq y_n\}
\end{align*}
for some $r_j' < r_j$ (because $\operatorname{supp}\zeta_j$ is compact in $U_j = B(x_j, r_j)$).
**Inward shift.** For any $y = (y', y_n) \in \overline{\Omega} \cap U_j$ in the rotated coordinates, $y_n \geq \gamma_j(y')$. We claim that for any $z = (z', z_n)$ with $|z - y| \leq \tau$ (so $z$ is within $\tau$ of $y$), the shifted point $z + \beta\tau e_n = (z', z_n + \beta\tau)$ satisfies $z_n + \beta\tau > \gamma_j(z')$, i.e., $z + \beta\tau e_n \in \Omega$ in the local description.
To see this, note $|z' - y'| \leq \tau$, so by the Lipschitz bound on $\gamma_j$,
\begin{align*}
|\gamma_j(z') - \gamma_j(y')| \leq L_j |z' - y'| \leq L_j \tau.
\end{align*}
Then $\gamma_j(z') \leq \gamma_j(y') + L_j \tau \leq y_n + L_j\tau$ (using $\gamma_j(y') \leq y_n$). Also $z_n \geq y_n - \tau$, so
\begin{align*}
z_n + \beta\tau \geq y_n - \tau + \beta\tau = y_n + (\beta - 1)\tau \geq \gamma_j(z') + (\beta - 1 - L_j)\tau.
\end{align*}
Since $\beta = L_j + 2$ (or larger), $\beta - 1 - L_j \geq 1$, so $z_n + \beta\tau \geq \gamma_j(z') + \tau > \gamma_j(z')$, confirming that $z + \beta\tau e_n$ lies strictly above the graph $\gamma_j$. To ensure $z + \beta\tau e_n$ remains within the chart $U_j$, we restrict $\tau$ so that $\beta\tau < r_j - r_j'$.
**Zero-extension regularity on a neighbourhood of $\overline{\Omega} \cap U_j$.** With the formula $u_j^\tau(y) = u_j(y + \beta\tau e_n)$, the value of $u_j^\tau$ at $y$ samples $u_j$ at the up-shifted point $y + \beta\tau e_n$. Define the open neighbourhood
\begin{align*}
W_j^\tau := \{y \in \mathbb{R}^n : \operatorname{dist}(y, \overline{\Omega} \cap U_j) < \tau\}.
\end{align*}
By the inward shift estimate, for any $y \in W_j^\tau$ the point $y + \beta\tau e_n$ lies strictly inside $\Omega$. Hence $u_j^\tau|_{W_j^\tau}$ equals the restriction to $W_j^\tau$ of the translate $u_j(\cdot + \beta\tau e_n)$ taken with $u_j$ viewed as a $W^{1,p}(\Omega)$ function on the strict interior — there is no contribution from the zero extension across $\partial\Omega$. Translation preserves weak differentiability: for $y \in W_j^\tau$, $u_j^\tau \in W^{1,p}(W_j^\tau)$ with weak partials $\partial_{y_i} u_j^\tau(y) = (\partial_{x_i} u_j)(y + \beta\tau e_n)$ pulled back from the strict interior. In particular, $u_j^\tau \in W^{1,p}(W_j^\tau)$ in the genuine sense, and its weak gradient on $W_j^\tau$ is the translate of $\nabla u_j$ from inside $\Omega$ — no $\partial\Omega$-supported singular part. This is precisely the local regularity statement required to apply the convolution-derivative formula on $W_j^\tau$.
**Mollification is smooth on a neighbourhood of $\overline{\Omega} \cap U_j$.** Define
\begin{align*}
v_j^\tau: \mathbb{R}^n &\to \mathbb{R} \\
y &\mapsto (u_j^\tau * \eta_\varepsilon)(y) = \int_{\mathbb{R}^n} u_j^\tau(z)\, \eta_\varepsilon(y - z)\, d\mathcal{L}^n(z).
\end{align*}
This is smooth on $\mathbb{R}^n$ (convolution of an $L^1_{\mathrm{loc}}$ function with a $C_c^\infty$ function). In particular, $v_j^\tau \in C^\infty(\overline{\Omega})$ — smoothness on the open neighbourhood $\mathbb{R}^n$ of the closed set $\overline{\Omega}$ is more than enough.
**$W^{1,p}$-approximation.** Choose $\tau$ so small that, by the standard continuity of translation in $L^p$, the up-translates $u_j(\cdot + \beta\tau e_n)$ and $\partial_{x_i} u_j(\cdot + \beta\tau e_n)$ differ from $u_j$ and $\partial_{x_i} u_j$ respectively by less than the per-component threshold $\delta/(3(N+1) n^{1/p})$ in $L^p(\mathbb{R}^n)$:
\begin{align*}
\|u_j(\cdot + \beta\tau e_n) - u_j\|_{L^p(\mathbb{R}^n)} < \frac{\delta}{3(N+1) n^{1/p}}, \\
\|\partial_{x_i} u_j(\cdot + \beta\tau e_n) - \partial_{x_i} u_j\|_{L^p(\mathbb{R}^n)} < \frac{\delta}{3(N+1) n^{1/p}}.
\end{align*}
The hypotheses of continuity of translation in $L^p$ require $f \in L^p$ for $1 \leq p < \infty$ — both $u_j$ and $\partial_{x_i} u_j$ satisfy this. (For $p = \infty$ translation is not continuous, but the hypothesis $1 \leq p < \infty$ rules this out.)
After fixing $\tau$, choose $\varepsilon < \tau / 2$ small enough that, by the standard convergence of mollifications in $L^p$,
\begin{align*}
\|u_j^\tau * \eta_\varepsilon - u_j^\tau\|_{L^p(\mathbb{R}^n)} < \frac{\delta}{3(N+1) n^{1/p}}, \\
\|(\partial_{x_i} u_j^\tau) * \eta_\varepsilon - \partial_{x_i} u_j^\tau\|_{L^p(\mathbb{R}^n)} < \frac{\delta}{3(N+1) n^{1/p}}.
\end{align*}
Note that translation commutes with weak differentiation on the strict interior of $\Omega$: on $W_j^\tau$, $\partial_{y_i} u_j^\tau(y) = (\partial_{x_i} u_j)(y + \beta\tau e_n)$, so $\partial_{x_i} u_j^\tau$ on $W_j^\tau$ is the corresponding translate of $\partial_{x_i} u_j$.
The convolution-derivative formula [Differentiation Passes Through Convolution](/theorems/3096) is applied locally on $W_j^\tau$, where $u_j^\tau$ is a genuine $W^{1,p}$ function (zero-extension regularity established above): for $y$ at distance more than $\varepsilon$ from $\partial W_j^\tau$ (in particular for $y$ in a slightly smaller open neighbourhood of $\overline{\Omega} \cap U_j$),
\begin{align*}
\partial_{x_i} v_j^\tau = \partial_{x_i}(u_j^\tau * \eta_\varepsilon) = (\partial_{x_i} u_j^\tau) * \eta_\varepsilon.
\end{align*}
Outside $U_j$, $u_j^\tau$ vanishes (by the support constraint $\beta\tau < r_j - r_j'$), so the formula extends by zero to $\mathbb{R}^n$. Note that $u_j^\tau(y) = u_j(y + \beta\tau e_n)$, so by a change of variables $\|u_j^\tau - u_j\|_{L^p(\mathbb{R}^n)} = \|u_j(\cdot + \beta\tau e_n) - u_j\|_{L^p(\mathbb{R}^n)}$, the same quantity bounded above. Combining the two estimates by the triangle inequality,
\begin{align*}
\|v_j^\tau - u_j\|_{L^p(\mathbb{R}^n)} &\leq \|v_j^\tau - u_j^\tau\|_{L^p} + \|u_j^\tau - u_j\|_{L^p} < \frac{2\delta}{3(N+1) n^{1/p}}, \\
\|\partial_{x_i} v_j^\tau - \partial_{x_i} u_j\|_{L^p(\mathbb{R}^n)} &\leq \|(\partial_{x_i} u_j^\tau) * \eta_\varepsilon - \partial_{x_i} u_j^\tau\|_{L^p} + \|\partial_{x_i} u_j^\tau - \partial_{x_i} u_j\|_{L^p} < \frac{2\delta}{3(N+1) n^{1/p}}.
\end{align*}
Restricting to $\Omega$ (which only decreases the $L^p$ norm) and combining the $n+1$ contributions,
\begin{align*}
\|u_j - v_j^\tau\|_{W^{1,p}(\Omega)}^p \leq \left(\frac{2\delta}{3(N+1) n^{1/p}}\right)^p + n \left(\frac{2\delta}{3(N+1) n^{1/p}}\right)^p = (n+1) \left(\frac{2\delta}{3(N+1) n^{1/p}}\right)^p.
\end{align*}
Taking $p$-th roots and using $(n+1)^{1/p} n^{-1/p} = ((n+1)/n)^{1/p} \leq 2^{1/p} \leq 2$ (since $n \geq 1$ and $p \geq 1$),
\begin{align*}
\|u_j - v_j^\tau\|_{W^{1,p}(\Omega)} \leq \frac{2\delta}{3(N+1)} \cdot \left(\frac{n+1}{n}\right)^{1/p} \leq \frac{2\delta}{3(N+1)} \cdot 2 \leq \frac{4\delta}{3(N+1)}.
\end{align*}
The numerical constant $C := (4/3) \cdot ((n+1)/n)^{1/p} \cdot (3/4) \cdot \dots$ — more directly: the bound $\|u_j - v_j^\tau\|_{W^{1,p}(\Omega)} \leq C \cdot \delta/(N+1)$ holds with $C \leq 2$ uniformly in $n$ and $p$. To absorb the constant, replace $\delta$ by $\delta/2$ at the start of the construction, so that the per-piece bound becomes $\|u_j - v_j^\tau\|_{W^{1,p}(\Omega)} < \delta/(N+1)$ as recorded.
[/proof]
[/claim]
[guided]
Fix $j \in \{1, \dots, N\}$ and work in the rotated coordinates around $x_j$ in which
\begin{align*}
\Omega \cap U_j = \{(y', y_n) : |y' - x_j'| < r_j,\ \gamma_j(y') < y_n < (x_j)_n + r_j\},
\end{align*}
with $r_j = r_{x_j}$ and $\gamma_j: \mathbb{R}^{n-1} \to \mathbb{R}$ Lipschitz with constant $L_j$. Define the shift parameter $\beta := \max_{1 \leq k \leq N} L_k + 2$ (a single constant chosen uniformly across charts, larger than each individual $L_j + 2$).
**Why shift then mollify, not just mollify.** The boundary piece $u_j$ has support meeting $\partial\Omega$ and a generally nonzero trace there. The zero extension of $u_j$ from $\Omega$ to $\mathbb{R}^n$ is therefore not in $W^{1,p}(\mathbb{R}^n)$: integrating by parts against a test function $\varphi \in C_c^\infty(\mathbb{R}^n)$ whose support crosses $\partial\Omega$ produces a boundary term involving the trace of $u_j$, so the weak gradient of the zero extension fails to be represented by an $L^p$ function — it carries a singular part supported on $\partial\Omega$. Consequently the commutation $\partial_{x_i}(u_j * \eta_\varepsilon) = (\partial_{x_i} u_j) * \eta_\varepsilon$ furnished by [Differentiation Passes Through Convolution](/theorems/3096) cannot be applied to $u_j$ on $\mathbb{R}^n$, and direct mollification of $u_j$ does not give an approximation in the gradient norm. The fix is to translate $u_j$ in the upward graph direction (the $+e_n$ axis in the local rotation) by a fixed distance $\beta\tau$ before mollifying, so that on a small neighbourhood of $\overline{\Omega} \cap U_j$ the values of the translated function are pulled in from points strictly inside $\Omega$, away from $\partial\Omega$. The translated function then has zero extension of genuine $W^{1,p}(\mathbb{R}^n)$ regularity in the relevant region (no boundary trace contributing a singular part), and the convolution-derivative formula applies. Mollifying at a scale $\varepsilon < \tau/2$ small relative to the inward shift keeps the sampling kernel inside that region.
**Translated function.** Extend $u_j$ by zero outside $\Omega$, so $u_j: \mathbb{R}^n \to \mathbb{R}$ globally. For $\tau > 0$ define
\begin{align*}
u_j^\tau: \mathbb{R}^n &\to \mathbb{R} \\
y &\mapsto u_j(y + \beta\tau e_n) \quad \text{(in the rotated coordinates around } x_j\text{)}.
\end{align*}
Evaluation at $y$ samples $u_j$ at the up-shifted point $y + \beta\tau e_n$. The support of $u_j^\tau$ — the set of $y$ for which $y + \beta\tau e_n$ lies in $\operatorname{supp} u_j$ — equals $\operatorname{supp}(u_j) - \beta\tau e_n$, the support of $u_j$ shifted downward by $\beta\tau$ in the $e_n$-direction.
[claim:For $\tau$ small enough and $\varepsilon \ll \tau$, the mollification $v_j^\tau := u_j^\tau * \eta_\varepsilon$ is $C^\infty(\overline{\Omega})$ and approximates $u_j$ in $W^{1,p}(\Omega)$]
[proof]
**Geometric setup.** In the rotated coordinates around $x_j$, the support of $u_j$ lies in the closed set
\begin{align*}
S_j := \overline{\operatorname{supp} \zeta_j} \cap \overline{\Omega} \subset \{(y', y_n) : |y' - x_j'| \leq r_j',\ \gamma_j(y') \leq y_n\}
\end{align*}
for some $r_j' < r_j$. The bound $r_j' < r_j$ holds because $\operatorname{supp}\zeta_j$ is compactly contained in $U_j = B(x_j, r_j)$ — a compact subset of an open ball sits inside a smaller closed ball.
**Inward shift estimate.** We claim: for any $y = (y', y_n) \in \overline{\Omega} \cap U_j$ and any $z = (z', z_n) \in \mathbb{R}^n$ with $|z - y| \leq \tau$, the shifted point $z + \beta\tau e_n = (z', z_n + \beta\tau)$ satisfies $z_n + \beta\tau > \gamma_j(z')$, that is, $z + \beta\tau e_n$ lies strictly in $\Omega$ in the local description.
To prove this estimate, note that $|z' - y'| \leq |z - y| \leq \tau$, so by the Lipschitz bound on $\gamma_j$,
\begin{align*}
|\gamma_j(z') - \gamma_j(y')| \leq L_j |z' - y'| \leq L_j \tau,
\end{align*}
which gives $\gamma_j(z') \leq \gamma_j(y') + L_j \tau \leq y_n + L_j\tau$, using $\gamma_j(y') \leq y_n$ from $y \in \overline{\Omega}$. Also $z_n \geq y_n - |z_n - y_n| \geq y_n - \tau$. Combining,
\begin{align*}
z_n + \beta\tau \geq y_n - \tau + \beta\tau = y_n + (\beta - 1)\tau \geq \gamma_j(z') + (\beta - 1 - L_j)\tau.
\end{align*}
Since $\beta \geq L_j + 2$, we have $\beta - 1 - L_j \geq 1$, so $z_n + \beta\tau \geq \gamma_j(z') + \tau > \gamma_j(z')$ as claimed. To ensure the shifted point remains within the chart $U_j$, restrict $\tau$ so that $\beta\tau < r_j - r_j'$, which keeps the horizontal coordinate of $z + \beta\tau e_n$ within distance $r_j$ of $x_j'$.
**Zero-extension regularity in a neighbourhood of $\overline{\Omega} \cap U_j$.** This is the step that earns the inward shift. With the formula $u_j^\tau(y) = u_j(y + \beta\tau e_n)$, evaluation of $u_j^\tau$ at $y$ samples $u_j$ at the up-shifted point. Define the open neighbourhood
\begin{align*}
W_j^\tau := \{y \in \mathbb{R}^n : \operatorname{dist}(y, \overline{\Omega} \cap U_j) < \tau\}.
\end{align*}
By the inward shift estimate just proved, for every $y \in W_j^\tau$ the up-shifted point $y + \beta\tau e_n$ lies strictly inside $\Omega$, in fact at distance at least $\tau$ above the graph $\gamma_j$. Consequently, on $W_j^\tau$ the function $u_j^\tau$ depends only on the values of $u_j$ at strictly interior points — the zero extension of $u_j$ across $\partial\Omega$ contributes nothing on $W_j^\tau$.
Let $\widetilde u_j$ denote the restriction of $u_j$ to $\Omega$, viewed as an element of $W^{1,p}(\Omega)$, and let $\widetilde u_j^\tau(y) := \widetilde u_j(y + \beta\tau e_n)$ for $y$ such that $y + \beta\tau e_n \in \Omega$. Translation preserves weak differentiability on the shifted domain $\Omega - \beta\tau e_n$: $\widetilde u_j^\tau \in W^{1,p}(\Omega - \beta\tau e_n)$ with weak partials $\partial_{y_i} \widetilde u_j^\tau(y) = (\partial_{x_i} \widetilde u_j)(y + \beta\tau e_n)$. Since $W_j^\tau \subset \Omega - \beta\tau e_n$ by the inward shift estimate, and $u_j^\tau = \widetilde u_j^\tau$ on $W_j^\tau$ (the zero extension does not enter), we conclude that $u_j^\tau \in W^{1,p}(W_j^\tau)$ with
\begin{align*}
\partial_{y_i} u_j^\tau(y) = (\partial_{x_i} u_j)(y + \beta\tau e_n) \quad \text{for a.e. } y \in W_j^\tau.
\end{align*}
The weak gradient on $W_j^\tau$ is the up-translate of $\nabla u_j$ pulled in from the strict interior — no $\partial\Omega$-supported singular part. Outside $W_j^\tau$, the support constraint $\beta\tau < r_j - r_j'$ ensures $u_j^\tau$ vanishes outside a compact subset of $W_j^\tau \cup (\mathbb{R}^n \setminus U_j)$, so the same identity for the weak gradient extends globally on $\mathbb{R}^n$ (with both sides set to zero away from a compact subset of $W_j^\tau$). In particular, $u_j^\tau \in W^{1,p}(\mathbb{R}^n)$ in the genuine sense, and its weak derivatives are the up-translates of $\partial_{x_i} u_j$.
**Smoothness on a neighbourhood of $\overline{\Omega} \cap U_j$.** Define
\begin{align*}
v_j^\tau: \mathbb{R}^n &\to \mathbb{R} \\
y &\mapsto (u_j^\tau * \eta_\varepsilon)(y) = \int_{\mathbb{R}^n} u_j^\tau(z)\, \eta_\varepsilon(y - z)\, d\mathcal{L}^n(z).
\end{align*}
Since $u_j^\tau \in L^p(\mathbb{R}^n) \subset L^1_{\mathrm{loc}}(\mathbb{R}^n)$ (a translate of a function in $L^p(\mathbb{R}^n)$) and $\eta_\varepsilon \in C_c^\infty(\mathbb{R}^n)$, the convolution is smooth on $\mathbb{R}^n$. In particular, $v_j^\tau \in C^\infty(\overline{\Omega})$ — smoothness on the open set $\mathbb{R}^n$ containing the closed set $\overline{\Omega}$ is more than enough.
**$W^{1,p}$ approximation, ingredient one — continuity of translation in $L^p$.** The standard continuity-of-translation theorem states that for $1 \leq p < \infty$ and $f \in L^p(\mathbb{R}^n)$, the map $h \mapsto f(\cdot - h)$ is continuous from $\mathbb{R}^n$ to $L^p(\mathbb{R}^n)$. We verify the hypothesis: $u_j \in L^p(\mathbb{R}^n)$ since $u_j \in W^{1,p}(\Omega)$ extended by zero, and $\partial_{x_i} u_j \in L^p(\mathbb{R}^n)$ for each $i$. The hypothesis $1 \leq p < \infty$ is exactly the hypothesis of the theorem we are proving — for $p = \infty$ translation is not continuous in $L^\infty$, and indeed $C^\infty(\overline{\Omega})$ is not dense in $W^{1,\infty}(\Omega)$.
Choose $\tau$ small enough that
\begin{align*}
\|u_j(\cdot + \beta\tau e_n) - u_j\|_{L^p(\mathbb{R}^n)} < \frac{\delta}{3(N+1) n^{1/p}}, \\
\|\partial_{x_i} u_j(\cdot + \beta\tau e_n) - \partial_{x_i} u_j\|_{L^p(\mathbb{R}^n)} < \frac{\delta}{3(N+1) n^{1/p}}
\end{align*}
for each $i = 1, \dots, n$, where the per-component threshold $\delta/(3(N+1) n^{1/p})$ is chosen to absorb the factor of $n$ that appears when summing $n$ partial derivatives in the $W^{1,p}$ norm.
**Ingredient two — convergence of mollifications.** With $\tau$ now fixed, choose $\varepsilon < \tau/2$ small enough that, by the standard convergence of mollifications in $L^p$ (whose hypotheses are $f \in L^p(\mathbb{R}^n)$ and $\eta_\varepsilon$ a standard mollifier — both verified for $u_j^\tau$ and its weak derivatives),
\begin{align*}
\|u_j^\tau * \eta_\varepsilon - u_j^\tau\|_{L^p(\mathbb{R}^n)} < \frac{\delta}{3(N+1) n^{1/p}}, \\
\|(\partial_{x_i} u_j^\tau) * \eta_\varepsilon - \partial_{x_i} u_j^\tau\|_{L^p(\mathbb{R}^n)} < \frac{\delta}{3(N+1) n^{1/p}}.
\end{align*}
By the zero-extension regularity step above, the weak partials of $u_j^\tau$ on $\mathbb{R}^n$ satisfy $\partial_{x_i} u_j^\tau(y) = (\partial_{x_i} u_j)(y + \beta\tau e_n)$ for a.e. $y$, so $\partial_{x_i} u_j^\tau$ is the corresponding up-translate of $\partial_{x_i} u_j$ and lies in $L^p(\mathbb{R}^n)$.
**Combining the two ingredients.** By [Differentiation Passes Through Convolution](/theorems/3096) applied to $u_j^\tau \in W^{1,p}(\mathbb{R}^n)$ — whose hypothesis $u_j^\tau \in W^{1,p}(\mathbb{R}^n)$ is precisely the conclusion of the zero-extension regularity step,
\begin{align*}
\partial_{x_i} v_j^\tau = \partial_{x_i}(u_j^\tau * \eta_\varepsilon) = (\partial_{x_i} u_j^\tau) * \eta_\varepsilon \quad \text{on } \mathbb{R}^n.
\end{align*}
Note that by translation invariance of the Lebesgue measure, $\|u_j^\tau - u_j\|_{L^p(\mathbb{R}^n)} = \|u_j(\cdot + \beta\tau e_n) - u_j\|_{L^p(\mathbb{R}^n)}$, the same quantity bounded above. Combining via the triangle inequality,
\begin{align*}
\|v_j^\tau - u_j\|_{L^p(\mathbb{R}^n)} &\leq \|v_j^\tau - u_j^\tau\|_{L^p} + \|u_j^\tau - u_j\|_{L^p} < \frac{2\delta}{3(N+1) n^{1/p}}, \\
\|\partial_{x_i} v_j^\tau - \partial_{x_i} u_j\|_{L^p(\mathbb{R}^n)} &\leq \|(\partial_{x_i} u_j^\tau) * \eta_\varepsilon - \partial_{x_i} u_j^\tau\|_{L^p} + \|\partial_{x_i} u_j^\tau - \partial_{x_i} u_j\|_{L^p} < \frac{2\delta}{3(N+1) n^{1/p}}.
\end{align*}
Restricting from $\mathbb{R}^n$ to $\Omega$ does not increase the $L^p$ norm. Combining the $L^p$ contribution with the $n$ partial-derivative contributions in the $W^{1,p}$ norm,
\begin{align*}
\|u_j - v_j^\tau\|_{W^{1,p}(\Omega)}^p \leq \left(\frac{2\delta}{3(N+1) n^{1/p}}\right)^p + n \left(\frac{2\delta}{3(N+1) n^{1/p}}\right)^p = (n+1) \left(\frac{2\delta}{3(N+1) n^{1/p}}\right)^p.
\end{align*}
Taking $p$-th roots,
\begin{align*}
\|u_j - v_j^\tau\|_{W^{1,p}(\Omega)} \leq \frac{2\delta}{3(N+1)} \cdot \left(\frac{n+1}{n}\right)^{1/p}.
\end{align*}
The factor $((n+1)/n)^{1/p} \leq 2^{1/p} \leq 2$ uniformly in $n \geq 1$ and $p \geq 1$, so
\begin{align*}
\|u_j - v_j^\tau\|_{W^{1,p}(\Omega)} \leq \frac{4\delta}{3(N+1)}.
\end{align*}
The numerical constant $4/3$ is absorbed by replacing $\delta$ with $\delta/2$ at the start of the construction (a harmless rescaling of an arbitrary positive parameter), so that the per-piece bound becomes $\|u_j - v_j^\tau\|_{W^{1,p}(\Omega)} < \delta/(N+1)$ as recorded.
[/proof]
[/claim]
[/guided]
By the claim, for each $j = 1, \dots, N$ we obtain $v_j := v_j^\tau \in C^\infty(\overline{\Omega})$ with $\|u_j - v_j\|_{W^{1,p}(\Omega)} < \delta/(N+1)$.
[/step]
[step:Sum the smooth pieces and conclude]
Define
\begin{align*}
v := \sum_{j=0}^N v_j.
\end{align*}
Each $v_j \in C^\infty(\overline{\Omega})$, so $v \in C^\infty(\overline{\Omega})$. By the triangle inequality,
\begin{align*}
\|u - v\|_{W^{1,p}(\Omega)} = \left\|\sum_{j=0}^N (u_j - v_j)\right\|_{W^{1,p}(\Omega)} \leq \sum_{j=0}^N \|u_j - v_j\|_{W^{1,p}(\Omega)} < (N+1) \cdot \frac{\delta}{N+1} = \delta.
\end{align*}
Since $u \in W^{1,p}(\Omega)$ and $\delta > 0$ were arbitrary, $C^\infty(\overline{\Omega})$ is dense in $W^{1,p}(\Omega)$.
[/step]
Explore Further
Jump Set is Rectifiable
Geometric Measure Theory
Weighted BV Coarea Formula
Geometric Measure Theory
Riesz Representation Theorem for Bounded Linear Functionals
Geometric Measure Theory
Isodiametric Inequality
Geometric Measure Theory
Blow-up Convergence at Reduced Boundary Points
Geometric Measure Theory
Abstract Direct Method
Geometric Measure Theory
Mass Distribution Principle
Geometric Measure Theory
Compactness for Radon Measures
Geometric Measure Theory