Definitions for the syntax of formal languages frequently make use of clauses such as
If $t_1, ..., t_n$ are terms in $\mathcal{L}$ and $P$ is an $n$-ary predicate in the vocabulary of $\mathcal{L}$, then $P(t_1, ..., t_n)$ is a formula in $\mathcal{L}$.
Isn't this actually imprecise in that it makes use of a unidirectional implication instead of a bidirectional one?
Logically seen, the above formulation would allow for a complex expression to be a valid formula of the language even if $t_1, ..., t_n$ weren't terms or $P$ wasn't a predicate, since the mathemaical "if" stays true if the antecedent ("$t_1, ..., t_n$ are terms and $P$ is an $n$-ary predicate") is false and the consequent ("$P(t_1, ..., t_n)$ is a formula") is true.
When interpreting the implication in this way, this would mean that something like $\exists (P, R \forall)$ can be a formula, which is clearly not what is intended.
Shouldn't it rather be
If and only if $t_1, ..., t_n$ are terms in $\mathcal{L}$ and $P$ is an $n$-ary predicate in the vocabulary of $\mathcal{L}$, then $P(t_1, ..., t_n)$ is a formula in $\mathcal{L}$.
thereby ensuring that the constituents must actually be syntactically correct in order for the more complex statement to be too?
I would also think that appending a final "Nothing else is a formula in $\mathcal{L}$" doesn't save the problem: This only ensures that nothing apart from what is defined by these clauses is a formula, but given the wording of the clauses, the implicational clauses themselves would already permit $\exists (P, R \forall)$ as a formula.
However, I've almost never seen a biimplicational "iff" in such definitory statements and am now confused as to whether my reasoning is correct.