is a tautology. Indeed, given , we conclude in turn using implications.
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.