This is a follow up to my previous question about model theory. While the answer to that question was very insightful, one key issue has continued to bother me since. In a comment clarifying their answer, the respondent wrote:
... Mathematics is a social enterprise, which is carried out in natural language. Vanishingly few theorems have actually been formalized in ZFC. Now to make mathematics a coherent enterprise, we have to agree on what counts as a proof, and the common consensus is [that] we accept a proof if it can in principle be formalized in ZFC. Those who care put in the work to carefully understand what can be formalized but the majority just pick up the intuition for this as they get socialized into the mathematical community.
I take exception to this sentiment because I like facts, and social consensus is not the same thing as fact. I know from experience that regarding social consensus as a form of truth can have serious consequences (admittedly, the context isn't usually mathematics, but I am still quite averse to the idea of accepting something simply because it is believed by a particular population). From my point of view, the purpose of proof is to verify the truth of a statement, not to convince a specific audience.
With this in mind I am still left wondering how exactly one goes about verifying that a "structure" is a model of a theory - chiefly because I do not see any obvious way to describe models in the language of ZFC.
Returning to the example from my previous question
Let $\mathcal{T}$ be the theory consisting of one nullary function/constant $c$, one binary function $f$, and one binary relation $R$, with the following [non-logical] axioms:
$$\begin{align} a_1&\qquad\forall x.\neg R(x,x)\\ a_2&\qquad\forall x.\forall y.R(x,y)\implies\neg R(y,x)\\ a_3&\qquad\forall x.\forall y.\forall z.R(x,y)\land R(y,z)\implies R(x,z)\\ a_4&\qquad\forall x.\forall y.f(x,y)=f(y,x)\\ a_5&\qquad\forall x.f(x,c)=x\\ a_6&\qquad\forall x.\exists y.f(x,y)=c\\ a_7&\qquad\forall x.\forall y.\forall z.f(x,f(y,z))=f(f(x,y),z) \end{align}$$
Let $\mathcal{I}$ be the interpretation $\mathcal{I}(c)=``0"$, $\mathcal{I}(f)=``+"$, and $\mathcal{I}(R)=``<"$. Let $\mathcal{M}=(\mathbb{R},0,+<)$. Then, $\mathcal{M}\vDash \mathcal{T}$.
In keeping with the accepted answer, I will not regard $\mathcal{M}$ as symbols of a new theory, but as an "actual" set of objects.
Now, because I am not a Platonist, I absolutely refuse to entertain the notion of any kind of pure-abstract-thought things-in-themselves. That being said, I am perfectly fine with discussing the theory in which $\mathcal{M}$ is defined (a theory, after all, is a collection of symbols and rules, which, unlike "the set of real numbers itself" do exist). I take "structure" to refer to a subset of the theory used to define it, not the "structure itself." From what I understand, this theory is taken to be ZFC by default. Hence, $\mathcal{M}\vDash\mathcal{T}$ is regarded as a theorem of ZFC (if this is not the case, then I would ask instead for an account of the [formal] theory that $\mathcal{M}\vDash\mathcal{T}$ does belong to).
How do I write a ZFC proof of $\mathcal{M}\vDash\mathcal{T}$?
The biggest obstacle I have encountered is that of translating $\mathcal{M}\vDash\mathcal{T}$ into the language of ZFC. At first, I thought to define:
$$\mathcal{M}\vDash\mathcal{T}:=\text{ZFC}\vdash\exists M.\exists 0.\exists +.\exists <. (\forall x.x\in M\implies (x,x)\notin<)\land(\forall x.\forall y.x\in M\land y\in M\implies [(x,y)\in <\implies \neg((y,x)\in<)])\land(\forall x.\forall y.\forall z.x\in M\land y\in M\land z\in M\implies[((x,y)\in<\land(y,z)\in<)\implies(x,z)\in<])\land(\forall x.\forall y.\forall z.x\in M\land y \in M\land z\in M\implies ((x,y,z)\in+\iff (y,x,z)\in +))\land(\forall x.x\in M\implies(x,0,x)\in+)\land(\forall x.\exists y.y\in M\land (x\in M\implies (x,y,0)\in+))\land(\forall x.\forall y.\forall z.\forall u.\forall v. x\in M\land y \in M\land z\in M\land u\in M\land v\in M\implies[(y,z,u)\in+\land (x,y,v)\in+\implies (\forall w.w\in M\implies ((x,u,w)\in+\iff (v,z,w)\in+))])$$
but this only shows that $\mathcal{T}$ has a model; it does not show $M=\Bbb{R}$, nor does it uniquely identify the constant $0$, the function $+$, or the relation $<$. Thus, while I can say "$\varphi$ is true of some structure" I cannot say "$\varphi$ is true of the real numbers."
Note: While I understand Dedekind cuts, I do not understand how to implement them in the language of ZFC proper.