Out of curiosity I wanted to translate modus ponens into a logical statement and condense/solve it in some way, and I ended up getting True:
$p \land (p \rightarrow q) \rightarrow q$
$=p \land (\lnot p \lor q) \rightarrow q$
$=\lnot(p \land (\lnot p \lor q)) \lor q$
$=\lnot((p \land \lnot p) \lor (p \land q)) \lor q$
$=\lnot(\text{False} \lor (p \land q)) \lor q$
$=\lnot(p \land q) \lor q$
$=\lnot p \lor \lnot q \lor q$
$=\lnot p \lor \text{True}$
$=\text{True}$
I'm not really sure what to make of this. Is modus ponens a tautology? How is it useful in practice if it's not really saying anything?
Modus ponens isn't that formula or any formula (and thus not a tautology), it's a rule. A rule tells you one way of building a proof. In fact, rules are part of the definition of what a proof is1 (for a given logical system). For this specific case, it sounds like this: "One way of building a proof of $Q$ is to combine a proof of $P$ and a proof of $P\to Q$ and label that combination "modus ponens". So "modus ponens" is operating at the meta-logical level. It is part of the definition of the logical framework, and specifically part of the definition of proof. (Other logical frameworks may or may not have modus ponens as a rule.)
In more program-y terms, a proof is a data structure and a rule is one of the ways of building a value of that data structure. This is literally how such a thing is represented in many mechanized proof systems when we study logics within them. For example, as demonstrated in Agda for a basic logical framework here where modus ponens literally is a data constructor (
H-IM) of a data type.1 You can have "derived rules" which can just be thought of as abbreviations of using several "primitive" rules. These derived rules are not part of the definition of a proof. In some presentations of logics, modus ponens might be a derived rule rather than a primitive rule.