Dualizing sheaf for local complete intersection I am studying section III.7 (The Serre Duality Theorem) of Hartshorne's Algebraic Geometry and have some issues with the proof of

Theorem 7.11. Let $X$ be a closed subscheme of $P = \mathbb{P}^N_k$ which is a local complete intersection of codimension $r$. Let $\mathscr{I}$ be the ideal sheaf of $X$. Then $\omega_X^{\circ} \cong \omega_P \otimes \bigwedge^r (\mathscr{I}/\mathscr{I}^2)^\vee$. In particular, $\omega_X^{\circ}$ is an invertible sheaf on $X$.

Say $j \colon X \hookrightarrow P$ is a closed immersion, defining the ideal sheaf 
    \begin{align*}
    \mathscr{I} = \ker(j^{\flat} \colon \mathscr{O}_P \twoheadrightarrow j_* \mathscr{O}_X).
  \end{align*}
    I guess what we want to show is $j_* \omega^{\circ}_X \cong \omega_P \otimes \bigwedge^r (\mathscr{I}/\mathscr{I}^2)^\vee$. What I already know is that
        \begin{align*}
   \omega^{\circ}_X \cong j^* \mathscr{E}xt^r_P(j_* \mathscr{O}_X, \omega_P), 
  \end{align*}
    so that
        \begin{align*}
    j_*\omega^{\circ}_X \cong j_*j^* \mathscr{E}xt^r_P(j_* \mathscr{O}_X, \omega_P) \cong \mathscr{E}xt^r_P(j_* \mathscr{O}_X , \omega_P).
  \end{align*}
Hence we have to compute $\mathscr{E}xt_P^r(j_* \mathscr{O}_X , \omega_P)$. Now this is where Hartshorne's proof (and with it my problems) begins. Since I don't understand the way how Hartshorne gets the required isomorphism I just start writing down things I know (or think to know) - maybe, with someone's help, it turns out that this gives a rise to a way of proving the theorem in a way I understand. The aim is to cover $P$ by open affines $U_i \cong \text{Spec}(A_i)$, such that $\mathscr{I}_{|U_i}$ is generated by $r$ local sections $f_{i,1}, \dots , f_{i,r} \in \Gamma(U_i, \mathscr{O}_P)$ (this is possible since $X$ is a local complete intersection in $P$) and then to construct isomorphisms
        \begin{align*}
    \mathscr{E}xt_P(j_* \mathscr{O}_X, \omega_P)_{|U_i} \overset{\sim}{\longrightarrow} (\omega_P \otimes \bigwedge^r (\mathscr{I}/\mathscr{I}^2)^\vee)_{| U_i},  
   \end{align*}
    which after all can be glued together to give the required isomorphism. What I know about the left hand side: As $P$ is noetherian and both $j_* \mathscr{O}_X$ and $\omega_P$ are coherent we have
        \begin{align*}
   \mathscr{E}xt_P(j_* \mathscr{O}_X, \omega_P)_{|U_i} \cong \text{Ext}^r_{A_i}(M_i,N_i)^{\sim}
  \end{align*}
    for some finitely generated $A_i$-modules $M_i,N_i$, satisfying $(j_* \mathscr{O}_X)_{| U_i} \cong M_i^{\sim}$ and ${\omega_P}_{| U_i} \cong N_i^{\sim}$. (Can there something be said about the modules $M_i$ and $N_i$? As $j_* \mathscr{O}_X \cong \mathscr{O}_P / \mathscr{I}$ it feels like there could be something.) What I (think to) know about the right hand side: Using the fact that $\mathscr{I}/\mathscr{I}^2$ is locally free of finite rank we have
        \begin{align*}
   \omega_P \otimes \bigwedge^r (\mathscr{I}/\mathscr{I}^2)^{\vee} \cong \mathscr{H}om_{\mathscr{O}_P}(\bigwedge^r \mathscr{I}/\mathscr{I}^2 , \omega_P). 
  \end{align*}
Can we do something similar with this guy (i.e. writing the restriction of this as some tilde of a module)? Then it would look like we "only" had to give an isomorphism from some Ext to some Hom. (Well, and then think about glueing..) Thanks in advance for any comment.
 A: What you're describing is a special case of the fundamental local isomorphism: for a lci morphism $i:Y\hookrightarrow X$ of pure codimension $n$ and any $\mathcal{O}_X$-module $\mathcal{F}$, we have that $\mathscr{Ext}^n_X(i_*\mathcal{O}_Y,\mathcal{F})\cong \omega_{Y/X} \otimes i^*(\mathcal{F})$ compatible with localization on $X$. The following treatment follows Brian Conrad's book on Grothendieck Duality and Base Change, available on his website. 
To start, let us work affine-locally. Suppose $X=\operatorname{Spec} A$ with $Y\hookrightarrow X$ a closed subscheme given by the ideal $J$ which is generated by the regular sequence $(f_1,f_2,\cdots,f_n)$. Then $Y\hookrightarrow X$ is a lci morphism of pure codimension $n$.
For any $A$-module $M$, we may compute $$\operatorname{Ext}^i_A(A/J,M) = H^i(\operatorname{Hom}^\bullet_A(K_\bullet(\textbf{f}),M))$$ where $K_\bullet(\textbf{f})$ is the Koszul complex associated to the regular sequence $(f_1,\cdots,f_n)$. The key feature of $K_\bullet(\textbf{f})$ in this case is that it is a free resolution of $A/J$. This enables us to write $\operatorname{Ext}_A^i(A/J,M)=0$ except when $i=n$ and in that case we get $\operatorname{Ext}_A^n(A/J,M)=M/JM$. From here, we use the isomorphism $A/J \to \bigwedge^n(J/J^2)$ given by $1\mapsto f_1\wedge f_2\wedge\cdots\wedge f_n$ and the isomorphism $M/JM \otimes A/J \cong M/JM$ to get an isomorphism $M/JM \to \bigwedge^n(J/J^2)\otimes_{A/J} M/JM$. Composing these two isomorphisms, we see that we have an isomorphism $$\operatorname{Ext}_A^i(A/J,M)\to \bigwedge^n(J/J^2)^*\otimes_{A/J} M/JM$$ which is independent of the regular sequence we used, so we can sheafify and globalize to reach the result in the general case.
