This is quite an understatement because already

is a tautology. Indeed, given , we conclude in turn using implications.

There is a subtle difference between proving that if 2 > 0, then 2 > 0 and showing that p -> p is a tautology. In the first case, you assume 2 > 0 and (trivially) show the conclusion. In the second case, you need to prove that the truth value of p -> p is T in every interpretation. You consider an interpretation I. It follows from the truth table for implication that for any formulas A and B, I(A -> B) = T iff I(A) = T implies I(B) = T. So, you assume that I(p) = T and (trivially) show that I(p) = T.

We have a mixture of two languages here. One is a metalanguage, where we say "2 > 0 implies 2 > 0." In proving such statement, we can say, "assume that 2 > 0." The second is an object language, which consists of propositional formulas like p -> p. In proving that p -> p is a tautology, we can't assume p because p is not a metalanguage proposition. However, object language propositions can be mapped to the metalanguage, e.g., p -> q becomes "(in some interpretation,) if p = T, then q = T." The truth tables of propositional connectives are designed so that p is a tautology iff p is mapped into a true statement of the metalanguage. Therefore, instead of showing that a formula of the object language is a tautology by considering interpretations and truth tables, we can prove its conversion to the metalanguage instead. This is called "reasoning inside propositional logic," and that's what you have done in your proof.

In general, it's useful to signal this transition between the two languages to the reader by saying "assume that p = T" or "assume that p is true" instead of just "assume p." One can also say, "reasoning inside propositional logic, ...".

Otherwise, you proof is fine.