In my course notes on the put-call parity, the proof is presented by going over two inequalities, namely $\text{RHS} > \text{LHS}$ implies arbtirage and $\text{RHS} < \text{LHS}$ implies arbitrage. Therefore, they conclude, $\text{RHS} = \text{LHS}$.
This strategy is legit, but I have the feeling the following proof is more straightforward.
$\textbf{Lemma 1 (law of one price):}$ If two portfolios have the same profit at maturity time $T$, then for all prior times $t<T$ the price of the portfolio's must be equal.
$\textbf{Proof:}$ The proof can easily be done by deriving arbitrage by contradiction.
$\textbf{Theorem (put-call parity)}:$ Let $P_0$ be the price of a European put with strike $K$ and maturation date $T$. Let $C_0$ be the price of a European call with same parameters as the put, and $r$ be a risk-free rate. Let $S_0$ be the price of a stock at $t=0$. Then $$S_0 + P_0 = D(r)K + C_0,$$ where $D(r)$ is the discount of the risk-free bank account.
$\textbf{Proof:}$ Work out that the portfolios $\{\text{own a put, stock}\}$ and $\{D(r)K\text{ in risk-free bank, own a call}\}$ make the same profit at time $T$. Then by lemma 1 at all times $t<T$ they must be worth the same, so too for $t=0$.
Is there something wrong with this proof?