The recovery of $W^{1,p}(\Omega)$ to $C^1(\Omega)$? In Chapter 9 of Brezis' Functional Analysis, there is a Remark without proof. ($\Omega \subset \mathbb{R}^N$)

"... Conversely, one can show that if $u \in W^{1,p}(\Omega)$ for some $1 \le p \le \infty$ and if $\frac{\partial u}{\partial x_i} \in C(\Omega)$ for all $i = 1,2, \cdots , N$ (there $\frac{\partial u}{\partial x_i}$ means the partial derivative in the $W^{1,p}$ sense), then $u \in C^1(\Omega)$; more precisely, there exists a function $\tilde{u} \in C^1(\Omega)$ such that $u = \tilde{u}$ a.e.
  "

I know Morrey's theorem and as a result of it, every $u \in W^{1,p} (\mathbb{R}^N)$ with $p > N$ has its continuous representative. However, I don't see how I can prove the above statement. Any help would be appreciated!
 A: This question has been discussed before; see here and here. But for convenience, let me sketch a proof for $p \in [1, \infty)$. 
It suffices to show that for every $\omega \Subset \Omega$ there exists $\tilde{u} \in C^1(\omega)$ such that $\tilde u = u$ almost everywhere in $\omega$. Fix $\omega \Subset \Omega$ and set $K\:= \overline{\omega}$. Let $(\rho_{\varepsilon})_{\varepsilon}$ be a sequence of standard mollifiers and define 
\begin{equation}
U_{\varepsilon} := \lbrace x \in \Omega \, \lvert\, \text{dist}(x, \partial \Omega) > \varepsilon \rbrace\, .
\end{equation}
The function $u_{\varepsilon} \colon U_{\varepsilon} \to \mathbb{R}$, $u_{\varepsilon}:= u * \rho_{\varepsilon}$ is smooth. Moreover, 
by standard properties of the convolution and using the fact that $\nabla u \in C^0(\Omega)$, we find that
\begin{align}
(a) &\quad u_{\varepsilon} \to u \text{ in } L^1_{\text{loc}}(\Omega)\, ,\\
(b) & \quad \nabla u_{\varepsilon} = (\nabla u)* \rho_{\varepsilon} \text{ on } U_{\varepsilon}\, ,\\
(c) &\quad \nabla u_{\varepsilon} \to \nabla u \text{ uniformly on every compact subset of } \Omega\, .
\end{align}
The question is now, how do we find a function $\tilde{u} \in C^1(K)$ with $\tilde u = u$ almost everywhere? We know that $(u_{\varepsilon})_{\varepsilon}$ is a sequence in $C^1(K)$ and that $C^1(K)$ is a Banach space. Due to $(c)$, $(\nabla u_{\varepsilon})_{\varepsilon}$ is a Cauchy sequence in $C^0(K;\mathbb{R}^n)$. Unfortunately, we cannot directly deduce from $(a)$ that $(u_{\varepsilon})_{\varepsilon}$ is a Cauchy sequence in $C^0(K)$. But, we do have the following 

Lemma.
   The map $\lVert \cdot\lVert_{1} \colon C^1(K) \to \mathbb{R}$, $\lVert u\lVert_1 := \lVert u\lVert_{L^1(K)} + \lVert \nabla u \lVert_{C^0(K)}$ is an equivalent norm on $C^1(K)$. 

Let us assume that this lemma is true (I sketch the proof below). Then, due to $(a)$ and $(c)$, the sequence $(u_{\varepsilon})_{\varepsilon}$ is Cauchy in $(C^1(K), \lVert \cdot \lVert_1)$. Moreover, $(C^1(K), \lVert \cdot \lVert_1)$ is a Banach space, since $\lVert \cdot \lVert_1$ is equivalent to the standard norm on $C^1(K)$. We thus find $\tilde u \in C^1(K)$ such that $u_{\varepsilon} \to \tilde u$ in $C^1(K)$; in particular, $\tilde u = u $ almost everywhere. This finishes the proof provided the above lemma is true. 
Proof sketch of the lemma: It's straightforward to see that $\lVert \cdot \lVert_1$ is a norm and that there exists $C > 0$ such that
\begin{equation}
\lVert u \lVert_1 \leq C \lVert u \lVert_{C^1(K)} = C (\lVert u \lVert_{C^0(K)} + \lVert \nabla u\lVert_{C^0(K)}) \quad \text{ for all } u \in C^1(K)\, .
\end{equation}
One way to see that there exists a constant $c > 0$ such that $\lVert u\lVert_{C^1(K)} \leq c \lVert u\lVert_1$  for all $u \in C^1(K)$ is to apply Ehrling's lemma (in Brezis' Functional Analysis this is called a Lemma of J.-L. Lions and can be found on page 173; see also this post).
