[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]
custom_env
Unknown
[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}$.[/step]
custom_env
Unknown
[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]
custom_env
Unknown
[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]
custom_env
Unknown
[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)$.[/step]
custom_env
Unknown
[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]
custom_env
Unknown
[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]
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]
custom_env
Unknown
[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]
custom_env
Unknown
[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]
custom_env
Unknown