The meaning of traffic lights

Model-theoretic semantics aims to define a mechanism that systematically maps the expressions of a language to objects that are not expressions of that language.

Let’s take traffic lights as our first example. The language of traffic lights, call it \(T\), is simply the set \(\{red, yellow, green\}\). The three expressions of \(T\) are systematically associated with three distinct abstract objects that are not expressions of \(T\). What are these objects exactly?

You might say \(\{\)“stop”, “ready”, “go”\(\}\). Technically, this is a legitimate interpretation as it fits our definition by associating the elements of \(T\) with some English words. But are we happy with this interpretation? Do we have a satisfactory characterization of what traffic lights mean? Yes, why not, you might think. But there is a lot left to worry about.

If \(red\) means “stop”, this cannot be its only meaning. If it were, we would have to conclude that people who do not know the meaning of “stop” also do not know the meaning of red traffic light. As a solution to this problem, we may take the red traffic light to be ambiguous between as many meanings as there are (or can be) human languages. This time we would need to accept that the red traffic light means different things to a Russian speaker and an Italian speaker, or that polyglots attribute more than one meaning to the red light.1 These conclusions do not feel right, right?

Given that we have a technically correct but unsatisfactory interpretation, we should note that

not all technically correct interpretations of a language are equally useful.

I think the best we can do for \(T\) is to say that its expressions correspond to some abstract objects living in the realm of laws that regulate traffic, calling them \(\{S,R,G\}\).2 Note that “the realm of laws that regulate traffic” is not made up of expressions of a particular language. We use a language, Russian, English, whatever, when we want to refer to objects living in that realm. The objects themselves are not linguistic expressions, they are more abstract than that.

Did we get any better on the meaning of traffic lights? All we have, it seems, is a correspondence between three things on the language side and three things on the meaning side. And we, at least on the meaning side, are not able to characterize what those things really are.

But we still find it sound to talk about the correspondence itself. The reason is that we know that it exists. We know it exists, because we know that it has causal efficacy. This follows from the fact that it is by means of this correspondence that drivers adjust their behavior at certain occasions. The red traffic light on its own does not have the causal power to stop the driver, the causal chain tying the red light to the relevant firings of muscular pathways of the driver breaks off without the correspondence, which, in some form or other, is represented in the driver’s nervous system.

Natural languages

Of course, natural languages profoundly differ from traffic lights.

  1. They are non-finite. A natural language is the product of a generative mechanism that yields an infinite number of expressions using a finite number of building blocks and a finite number of production rules. Therefore, the correspondence cannot be a simple listing of pairs (aka dictionary) as in the case of traffic lights. We give the name “grammar” to the system of rules and regulations that maps a non-finite set of expressions to a non-finite set of meanings in a computable way.
  2. In the traffic light example, drivers, human drivers at least, are consciously aware of the relevant mapping between the lights and the corresponding regulations.3 In human languages, however, the conscious self of the agent has no access to the mapping.4

Basic terminology, concepts, and methods

Language

When we talk about semantics, this will always be the semantics of some language (aka the object language). The languages we study will be related to some or other natural language. I said “related to” because our conception of language will substantially differ from common usage. Here are some key differences, to be qualified and further clarified later:

  1. We will define a language as a set of its basic units, which we will call signs.
  2. The closure of this set under a finite number of language-invariant rules of production will yield a possibly non-finite set of signs.5
  3. Observe that there will be two related but distinct uses of the term “language”, one to refer to the definition (set of basic signs), and the other to the set of all possible signs (basic or compound).
  4. When we talk about, say, English, we will always focus on a fragment (=subset) of the language. This will allow us to isolate the phenomena we want to study in detail without getting lost in the vast complexity of English herself.

Evaluation

Assume we want to study a microscopic fragment of English, containing only three basic signs, corresponding to the words John, Mary and loves.6 Let’s use an orthographic indicator of whether we deal with expressions of English or signs corresponding to them, and define our fragment \(F\) as a set of basic signs,

\[F=\lbrace\sign{John}, \sign{Mary}, \sign{loves}\rbrace\]

Now assume a single production rule \(r\) that operates on two (basic or compound) signs to return a compound sign. I don’t give the definition of \(r\), but will just state that the closure of \(F\) under \(r\) is,

\[\begin{align} \begin{aligned} \closure{r}{F} = F \cup \lbrace & (\sign{loves\oplus Mary}),\\ & (\sign{loves\oplus John}),\\ & (\sign{John\oplus (loves\oplus Mary)}),\\ & (\sign{John\oplus (loves\oplus John)}),\\ & (\sign{Mary\oplus (loves\oplus John)}),\\ & (\sign{Mary\oplus (loves\oplus Mary)})\rbrace \end{aligned} \end{align}\]

Notice that,

  1. The \(\oplus\) symbol and the parentheses represent which signs \(r\) worked on and in what order to generate these compound signs.
  2. \(r\) appears to be more intelligent than a simple concatenation operator, as you don’t see signs like \((\sign{loves}\oplus\sign{loves})\) or any sign that has more than 3 component basic signs. A simple concatenation operation would yield an infinite set of signs.

Our central task is to construct a semantic theory (aka account) that, in effect, maps the set \(\closure{r}{F}\) to their semantic values – put aside for now what those values are. A familiar name for this mapping is evaluation, in the same sense we commit to when talking about evaluating expressions in a programming language. In this regard, we will treat natural languages pretty much as programming languages, but those with the crucial quality of having no statements. This means that any sign (basic or compound) has a value, and when a sign is evaluated its value replaces the sign, and nothing else happens (no side-effect).7 A useful model to keep in mind is the evaluation of an arithmetic expression of arbitrary complexity with a recursive algorithm.

We will use the following notation to denote evaluation functions that apply to signs \(\interp{\cdot}: S\mapsto O\),

\[\begin{align*} \interp{s} = o \end{align*}\]

where \(s\) is a sign and \(o\) is its semantic value.

Semantic values

We now know enough about the set of signs \(S\), the domain of the evaluation function. But what about its codomain \(O\), namely the universe from which the evaluation function picks the semantic values of its input signs?

First, this is the fundamental research question of the theory of meaning and reference. And it, as of now, has both empirical and philosophical aspects. Let’s start with the most simple and intuitive proposal.

Take the sentence,

\[\text{A sample is contaminated.}\label{sample}\]

What does sentence (\ref{sample}) mean?

On one hand it is impossible to tell. What are we sampling? What does it mean to be contaminated for our samples? Where are we? Who are we?

We will call the inhabitants of that universe semantic objects.8 Here is how that universe is defined:

Let \(E\) be an infinite set of individuals.1 Let \(\top\) and \(\bot\) be two atoms that do not belong in \(E\).

  1. \(U_0 = E \cup \lbrace \top,\bot\rbrace\);
  2. \(U_{n+1} = U_n \cup \mathcal{P}(U_n) \cup \lbrace\langle x_1, x_2,\ldots,x_k\rangle\mid k \geq 2 \text{ and } x_1, x_2,\ldots,x_k\in U_n \rbrace\);2
  3. \(U = \bigcup\limits_{n=0}^{\infty} U_n\).

The set \(U\) is the set of semantic objects.

  1. “Individual” is used here in the sense of “indivisible entity”. ↩

  2. \(\mathcal{P}\) is the full power set function. ↩

In plain words, we construct a set-theoretic universe containing all possible structures (by set and tuple constructors) that can be formed on the basis of some primitive atoms.

Digression: The definition of semantic objects might expectedly appear confusing for some of you. If what is confusing is the individual mathematical steps, then please revise the relevant material on set-theory, and skip the rest of this digression.

If you have difficulty in understanding the motivation of the definition despite you have no problem with the notation, here are some key points that might help:

  1. We want a universe that allows for possibly non-finite sets with arbitrary but finite depth, with depth defined as the maximum number of braces you need to open up to reach an atom.
  2. Power set part of the second clause increments the set-induced depth and the comprehension part handles the tuple-induced depth. Of course sets and tuples can intermix freely.
  3. As we have full power sets, we allow for non-finite sets at every level.
  4. Tuples, on the other hand, has arbitrary but finite size.
  5. The infinite set \(U\) of objects is constructed in stages, so that the subscript of each stage is the maximum depth the objects created at that stage can have. Each object you pick from \(U\) will always have a finite depth. But there will always be structures with greater depth in \(U\). Therefore, you can have a structure in any depth you like, but once you have it the depth gets fixed.

Anatomy of evaluation

The process of evaluation is broken down into some levels and components.

We will name the function that evaluates expressions the “interpretation function”, denoted by \(I\). Being a function, \(I\) will have a domain and a codomain. Its domain is the set of expressions of the language under discussion. Its codomain will be a set-theoretic structure.

which covers all the objects you can possibly build by elements, set, and n-tuples and sets of previously cited items.

Our main aim is to map expressions of the object language to objects in a realm that is external to the object language. This realm will be a structure that holds worlds. Again, the term “world” is an abstract technical term. In the simplest case we will assume that there is a single world. We will be interested in the meaning of our expressions in this world.

Think of a world as a structure that can be at one of some possible states.

In natural language semantics, the general practice – or where people usually begin – is to take the world as the model. This approach conceives the world as consisting of entities (humans, cats, chairs, hopes, fears…) and properties of and relations among these entities. Again to give a very simple example: the expression “the largest planet in the solar system as of October 15, 2017, 14:14:19 CET" is mapped to Jupiter.

Although model-theoretic semanticists intend to associate language with the world outside, they use a certain formal representation of the world instead of the world itself, when they construct their semantic theories. In the case of physical objects like Jupiter or the chair I sit on at the moment, the reason why they do so is that the physical objects are impractical (or impossible in the case of Jupiter) to put on paper or computer screen, where you describe your semantics. There are also abstract objects that language refers to, but for which it is not easy, if not impossible, to pick corresponding objects from the outer world.

In natural language semantics, we are interested in natural languages, which are highly ambiguous. Given this and some other concerns that we will come to later, what semanticists do is to first map natural languages to a disambiguated formal language (e.g. first order logic), and then interpret the expressions of this formal language with respect to a given model. We will call such intermediate representation that serve a way point in mapping natural languages to model-theoretic objects “logical forms”. In what follows, we will have a deeper look at this process. We will return to the topic of how to map natural language expressions to logical forms later on, where we delve into the notion of grammar that governs that mapping.

Characteristic functions and Currying

We will assume that natural language expressions get transformed into a formal disambiguated language. The formal language we will use is a slight variant of first-order logic with equality and lambda abstraction. We will develop it gradually. There are certain notational conventions and conceptual points we diverge from first-order logic. We will first discuss those.

Natural language has many expressions that correspond to the mathematical concept of a relation. Loves for instance is a verb that denotes a relation defined over the set of individuals. It simply includes those ordered pairs \((x,y)\) s.t. \(x\) loves \(y\). Certain mathematical properties of relations directly apply to natural language meaning. For instance, the love relation is not symmetric, because the fact that \(x\) loves \(y\) does not guarantee that \(y\) loves \(x\) in return, it may but it doesn’t have to. Compare this with the relation class-mate. The love relation is also not reflexive (as not every individual has to love him/herself), but the relation denoted by has the same name is. Love is also far from being transitive, because the fact that \(x\) loves \(y\) and \(y\) loves \(z\) does not guarantee that \(x\) loves \(z\), but sibling denotes a transitive relation (which is also symmetric but not reflexive).

Relations are fun, but we need to get used to seeing everything as functions, which constitute a subset of relations that insist that each individual is related to one and only one individual. How can we think of love as a function then?

Relations are simply sets. Binary relations are sets of ordered pairs, ternary relations are sets of triples, and so on. In model-theoretic semantics, a very central, and equally simple, mathematical fact is that every set is equivalent to a function, which is called its characteristic function.

For every set \(A\), there exists a unique function \(f_A\), called the characteristic function of \(A\), defined as follows:

\[f_A(x) = \begin{cases} 1, \text{ if } x \in A \\ 0, \text{ otherwise } \end{cases}\]

Therefore we will take a binary relation \(R\) defined on a set \(A\) to be a function \(f:A\times A\mapsto \{0,1\}\). All functions with the codomain \(\lbrace0,1\rbrace\) will be called boolean functions; the connection to truth and falsity should be obvious.

The second concept related to functions that we will need is Currying. Take the following simple function that multiplies two numbers:

def multiply(x,y): return x*y

Whenever you need to use multiply, you have to provide the both arguments; it is impossible to delay the saturation of one of the arguments. Compare the following Curried form with the above:

def curried_multiply(x):
    def f(y):
        return x*y
    return f

Now you can incrementally saturate the function: curried_multiply(8) will give you a function that multiplies its argument with 8 and returns the result; to get 72 you need to have curried_multiply(8)(9), rather than curried_multiply(8,9).

The functions in our language will all be Curried as in the above example. Therefore a function like \(\sysm{Loves}\) (yes, we take it to be a function rather than a relation) will get its arguments one by one. By convention we will agree that the arguments are fed in the reverse order.9 For instance, to express what is expressed by the sentence John loves Mary, we will first feed the second argument to the function, resulting in,

\[Loves(Mary)\]

which stands for a function that returns 1 for individuals who love Mary and 0 otherwise. The full form is,

\[Loves(Mary)(John)\]

We will adopt two other notational conventions: 1. The constants10 like \(Loves\), \(John\), and so on, will be written in lower case and terminated by a prime as in \(\sysm{loves'}\) and \(\sysm{john'}\) (or an abbreviated form \(\sysm{j}'\)); 2. Given a function \(f\) and an argument \(a\), we will depict function application as \(\sysm{(f\cnct a)}\), rather than the standard notation \(\sysm{f(a)}\). Under these conventions the logical representation of John loves Mary becomes,

\[((loves'\cnct mary')\cnct john')\]

Next section is on one of the most important concepts in natural language semantics.

Semantic types

In programming, the error you get when you attempt to take the square root of a string is a type error. The square root function is a function from floats to floats, it neither accepts nor returns any other type of object. Our functions will be similarly typed, so that they work with only objects of types designated beforehand.

Thanks to the fact that our functions are Curried, we will be able to elegantly characterize the set of possible types our functions can get on the basis of a small set of basic types.

For now we will have only two basic types. It is remarkable how far one can go with just two basic types in semantics. One of our basic types is the type of expressions that have a truth value; a sentence like Mary smiled, for instance. We will designate this type with \(t\). The second basic type is the type of individuals (or entities), and it is designated by \(e\). What about functions? The type of a function is designated by having its domain’s (input) type and range’s (output) type concatenated and wrapped in parentheses. For instance, \(\sysm{smiles'}\) is a function that returns 1 or 0 according to whether or not it takes an individual who had a smile on his/her face some time before the expression is uttered. Therefore it has the type \((et)\), a function from individuals (or entities) to truth values. What about \(\sysm{loves'}\)? Given that it takes an individual and returns a function, its result type should be more complex than its input type. The type of \(loves'\) after it is fed an individual is a function that takes an individual as an input and gives 1 if that individual loves whatever was the first argument and 0 otherwise. Therefore \(\sysm{loves'}\) has the type \(\smtyp{e}{\smtyp{e}{t}}\): a function from individuals to functions from individuals to truth values.

Here is a definition that provides all the possible types that can be built on the basis of a set of basic types \(T\) (\(=\lbrace e, t\rbrace\) in our case):

Given a set \(T\) of basic semantic types.

  1. \(\tau\) is a semantic type if \(\tau \in T\).
  2. If \(\tau_1\) and \(\tau_2\) are semantic types, then \(\smtyp{\tau_1}{\tau_2}\) is a semantic type.
  3. Nothing else is a semantic type.

In defining our formal language for semantic representations, every item in our vocabulary will belong to one of the types defined as in the definition above.

A language for logical forms

Syntax

The vocabulary of our language – everything except parentheses – comes from the three sets below; type of each item is subscripted to its name, except quantifiers which do not have types.

Logical constants come in two separate sets, connectives and quantifiers:

\[\begin{align} K & = \{\land_{\smtyp{t}{\smtyp{t}{t}}},\lor_{\smtyp{t}{\smtyp{t}{t}}},\to_{\smtyp{t}{\smtyp{t}{t}}},\neg_{\smtyp{t}{t}}\}\\ Q & = \{\forall,\exists\} \end{align}\]

Non-logical constants:

\[C=\{\tcon{loves}{(e(et))}, \tcon{diameter}{\smtyp{e}{e}}, \tcon{slowly}{\smtyp{\smtyp{e}{t}}{\smtyp{e}{t}}}, \tcon{blue}{(et)}, \tcon{j}{e}, \ldots\}\]

Variables:

\[V=\{p_{(et)},q_{(et)},r_{(et)},\ldots,x_{e},y_{e},z_{e},\ldots\}\]

Think of logical constants as function words in natural language; non-logical constants as content-words; variables as pronouns. Variables are distinguished from non-logical constants by not having a prime. They are also always single character. When the type of an expression is not at issue or obvious, we do not write it.

We are ready to define the well-formed expressions of our language.

Let \(L\) be the set of well-formed expressions of the language of logical forms.

Given the sets \(C\), \(K\), \(V\), \(Q\) for constants, connectives, variables, and quantifiers, respectively, the language \(L\) is defined as follows:

  1. \(C\cup K\cup V \subseteq L\)
  2. If \(\pi_{\smtyp{\alpha}{\beta}} \in L\) and \(\sigma_{\alpha} \in L\), then \((\pi\sigma)_{\beta} \in L\).
  3. If \(\kappa \in \{\forall,\exists\}\), \(\chi \in V\) and \(\tau_{t} \in L\), then \((\kappa \chi \tau)_{t} \in L\)
  4. Nothing else is in \(L\).

Clause (1) says that all items in our vocabulary except the quantifiers are well-formed expressions. Clause (2) builds up complex expressions through function application. A simple example:

A diagram

The leaves of the tree \(\tcon{loves}{(e(et))}\) and \(x_{e}\) are validated by Clause (1), while application of the former to the latter to form the root of the tree, , is validated by Clause (2). Now we take a further step and apply the function we obtained in to another item from our vocabulary, this time a constant rather than a variable:

A diagram

Our type system says that the expression at the root of is of type \(t\), which means it must stand for something that can be true or false. An approximation to this formal expression from natural language would be Mary loves it, him or her. The variable acts like a pronoun as mentioned above. And as in the case of natural language pronouns, we cannot decide on the truth value of the expression unless we know who or what the variable (or pronoun) stands for.

So far we made use of Clauses (1) and (2) of . Now let us see Clause (3) in action.

A diagram

What we have here is an approximation to the sentence Mary loves everything.

In a similar fashion, we can invite our connectives into the business. Connectives will also be curried functions, so that they can be applied to their arguments one by one. For instance, the conditional will be applied to its antecedent and consequent one by one, resulting in the following equivalence to standard logical notation:

\[\begin{align*} ((\to \alpha)\beta) \equiv \alpha\to\beta \end{align*}\]

Here is a representation corresponding to For any individual, if Mary loves him or her, then there is someone who gets broken:

A diagram

The formulas in their current forms are quite hard to read. One way to make them more readable is to agree on a convention to eliminate some parentheses. From now on we agree that in function application (i) outermost parentheses are omitted, and (ii) application associates to left. The first is easy to grasp: \(((fx)y)\) becomes \((fx)y\). The second needs some time get used to. Assume you are given an expression with some of its parenthesis are removed. Left association means that in restoring the parentheses back, you start from the two left most expressions, without looking into parentheses you encounter when counting the left-most two. Here are a couple of examples:

\[\begin{align*} x\cnct y \cnct z &\equiv& ((xy)z) & \\ x(yz) &\equiv& (x(yz)) &\\ x(yz)w &\equiv& ((x(yz))w) & \end{align*}\]

Let us now apply these parentheses elimination conventions to ; observe that the type decorations goes away with the outer parentheses, you need to mentally keep track of them:

A diagram

Semantics

Now it is time to give a semantics to our formal language \(L\). But before we embark on that task let’s preempt a nasty confusion of terminology. Below, we will use the term domain in a sense different from the usual one. The usual sense of the term is “the set of input values of a function”; but we will use it in a second sense, according to which the domain of a function \(f\) is the the set of all functions that has the same type as \(f\). In this extended sense, the domain of the function \(f(x)=x^2\) is the set of all functions from \(\mathbb{R}\) to \(\mathbb{R}\). The sense will also apply to non-functional objects.

First we define a model. A model \(\mathcal{M}\) is a tuple \(\langle D_e,D_t,I\rangle\), where \(D_e\) is the domain of individuals (i.e. a set of \(e\) type entities), \(D_t\) is the domain of truth values (usually ${0,1}$), and \(I\) is the interpretation function. We need some more notation to understand the mechanics of \(I\).

Given two sets \(X\) and \(Y\), \(X^Y\) denotes the set of all functions defined from \(Y\) to \(X\).

The notation is motivated by the fact that given two sets \(X\) and \(Y\) with cardinalities \(m\) and \(n\), respectively. There exists \(m^n\) functions from \(Y\) to \(X\).

Given a model \(\mathcal{M}=\langle D_e,D_t,I\rangle\), the domain of any type of objects can be denoted using . For instance, the domain of functions from entities to truth values is \(D_t^{D_e}\) or \(\{0,1\}^{D_e}\). For the domain of functions of type \((e(et))\) you will have \((\{0,1\}^{D_e})^{D_e}\), or for \(((et)t)\) you will have \(\{0,1\}^{(\{0,1\}^{D_e})}\), and in general the domain of functions of type \(\smtyp{\alpha}{\beta}\) is \(D_{\beta}^{D_{\alpha}}\).

For a model \(\mathcal{M} = \langle D_e, D_t, I \rangle\) to be a model for a language \(L\), the interpretation function $I$ should be able to return a value for all the constants (logical and non-logical) of \(L\) from the domain corresponding to the type of the constant. In other words, \(I\) needs to be an effective dictionary for the vocabulary of \(L\).

The interpretation function that comes with the model takes care of constants of our language; how about the variables? The variables – pronouns of \(L\) – are handled via the environment for evaluation, a function that maps variables of the language to corresponding objects in the model. Like the interpretation function \(I\), the environment, denoted by \(g\) maps each variable to an object with the same type. The fundamental difference between \(I\) and \(g\) is that the former is fixed by the model and does not change during the course of evaluation; the environment on the other hand is dynamic, it gets extended during evaluation. We define the extension of an environment as follows:

Given an environment \(g\), a variable \(x\), and a constant \(c\), an extension of \(g\) is the function denoted as \(\fnex{g}{x}{c}\) which is exactly like \(g\) possibly except that it maps \(x\) to \(c\).

It is time to state the semantics of \(L\) with respect to a model \(\mathcal{M}\) and an environment \(g\). You can think of evaluation as a higher order function denoted by double pipes: \(\interp{\psi}_{\mathcal{M},g}\) stands for the semantic evaluation of the expression \(\psi\) with respect to \(\mathcal{M}\) and \(g\).

  1. \(\interpp{\alpha} = g(\alpha)\), if \(\alpha \in V\)
  2. \(\interpp{\alpha} = I(\alpha)\), if \(\alpha \in C \cup K\)
  3. \( \interpp{(\alpha\beta)} = \interpp{\alpha}(\interpp{\beta}) \)
  4. \(\interpp{(\forall \alpha_{\pi} \beta)} = 1\) iff for all \(d \in D_{\pi}\), \(\interp{\beta}_{\mathcal{M},\fnex{g}{x}{d}} = 1\)
  5. \(\interpp{(\exists \alpha_{\pi} \beta)} = 1\) iff there is at least one \(d \in D_{\pi}\), \(\interp{\beta}_{\mathcal{M},\fnex{g}{x}{d}} = 1\)

Example

Let’s clarify over an example. Assume we were able to transform the sentence Whenever Mary loves someone, there is someone who will be jealous of the person Mary loves into the following logical form:

\[\begin{align*} \interpp{\forall x (\to (loves'\cnct x\cnct mary')\cnct (\exists y (jealous'\cnct x\cnct y)))} \end{align*}\]

Any propositional expression like this can be either true or false with respect to a model. Therefore, we need to specify a model.

Here is our model \(\mathcal{M}\) and the environment \(g\):

\[\begin{align*} D_e = & \{\mtob{mary,pedro,rosinante}\} \\ D_t = & \{1,0\}\\ I = & \{(mary',\mtob{mary}), (pedro',\mtob{pedro}),\\ & (loves',\{(\mtob{mary},\{(\mtob{rosinante}, 1), (\mtob{pedro}, 1), (\mtob{mary}, 0)\}),\\ & \quad\quad\quad\quad (\mtob{pedro}, \{(\mtob{rosinante}, 0), (\mtob{pedro}, 1), (\mtob{mary}, 0)\}), \\ & \quad\quad\quad\quad (\mtob{rosinante}, \{(\mtob{rosinante}, 0), (\mtob{pedro}, 0), (\mtob{mary}, 1)\})\}), \\ & (jealous',\{(\mtob{mary},\{(\mtob{rosinante}, 0), (\mtob{pedro}, 1), (\mtob{mary}, 0)\}),\\ & \quad\quad\quad\quad (\mtob{pedro}, \{(\mtob{rosinante}, 1), (\mtob{pedro}, 0), (\mtob{mary}, 0)\}), \\ & \quad\quad\quad\quad (\mtob{rosinante}, \{(\mtob{rosinante}, 0), (\mtob{pedro}, 0), (\mtob{mary}, 1)\})\})\}\\ g = & \{(x,\mtob{rosinante}),(y,\mtob{rosinante})\} \end{align*}\]

We do not provide the interpretations of logical constants, which are taken to be the standard logical connectives.

The first invoked clause of is (4):

\[\begin{align*} & \interpp{\forall x (\to (loves'\cnct x\cnct mary')\cnct (\exists y (jealous'\cnct x\cnct y)))} = 1 \text{ iff }, &\\ & \text{for all } d \in D_e,\quad \interp{(\to (loves'\cnct x\cnct mary')\cnct (\exists y (jealous'\cnct x\cnct y)))}_{\mathcal{M},\fnex{g}{x}{d}} = 1 \end{align*}\]

We start iterating over \(D_e\), replacing \(x\) with a model-theoretic object in \(D_e\) and checking whether we obtain 1 as result. First,

\[\begin{align*} \interp{(\to (loves'\cnct x\cnct mary')\cnct (\exists y (jealous'\cnct x\cnct y)))}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}} \end{align*}\]

This invokes clause (3):

\[\begin{align*} \interp{(\to (loves'\cnct x\cnct mary')}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}} (\interp{(\exists y (jealous'\cnct x\cnct y))}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}}) \end{align*}\]

To handle this function argument form, let us first compute the function part \(\interp{(\to (loves'\cnct x\cnct mary')}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}}\), which is itself a function application, invoking clause (3) again:

\[\begin{align*} \interp{\to}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}} (\interp{(loves' x\cnct mary')}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}}) \end{align*}\]

Now evaluate \(\interp{(loves' x\cnct mary')}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}}\), invoking clause (3):

\[\begin{align*} \label{lovesxmary} \interp{(loves' x)}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}} (\interp{mary'}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}}) \end{align*}\]

Evaluate \(\interp{(loves' x)}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}}\), once again invoking clause (3):

\[\begin{align*} \label{lovesx} \interp{loves'}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}} (\interp{x}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}}) \end{align*}\]

Evaluate \(\interp{x}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}}\), invoking clause (1):

\[\begin{align*} \interp{x}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}} = \fnex{g}{x}{\mtob{mary}}(x) = \mtob{mary} \end{align*}\]

We also have the following by clause (2),

\[\begin{align*} \interp{loves'}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}} = I(loves') \end{align*}\]

the evaluation step yields a function from \(e\) type objects to \(t\) type objects:

\[\begin{align*} I(loves') (\mtob{mary}) \\ = \{(\mtob{rosinante}, 1), (\mtob{pedro}, 1), (\mtob{mary}, 0)\} \end{align*}\]

We have,

\[\begin{align*} \interp{mary'}_{\mathcal{M},\fnex{g}{x}{\mtob{mary}}} = I(mary') = \mtob{mary} \end{align*}\]

Feeding this into its function, we get 0 as the value. Feeding 0 to the interpretation of \(\to\) would yield the function \(\{(0,1), (1,1)\}\). The next task is to compute the value for the consequent of the conditional with the extended environment and completing the iteration for \(x\mapsto \mtob{mary}\). The iteration has to go on until we are out of objects in \(D_e\). The completion of the evaluation is left as an exercise.


This was a brief and dense introduction to model-theoretic interpretation. It aimed to introduce how to define a semantics for a formal language that can be used as a logical form for natural language expressions. The research in natural language morphosyntax-semantics correspondence concentrates on how to map natural language expressions to logical forms. In such a setting logical forms serve an intermediary ground between form and meaning, just like intermediary languages and representations used in translating high-level programming languages to machine executable code. There are, broadly speaking, two camps that differ in the role they confer to intermediary representations. For one camp, the logical form is theoretically superfluous. According to this camp, semantic theory is a direct mapping from forms to model-theoretic objects, and logical form is there only to make this mapping more readable, or less complex to track, contributing nothing to the explanatory power of the theory. The other camp, on the other hand, takes logical form to be an essential part of the theory, where certain principles and mechanisms are defined at the level of logical form. In either case, the interpretation of logical forms has to be understood and internalized by semanticists, although it will not be part of their regular research practice. This paragraph will be justified.

  1. If you are interested in the relation between the language we speak and the way we experience the world, check Sapir-Worf thesis and its critiques. ↩

  2. By the way, we’ve been acting as if the elements of \(T\) stand on solid rock. But, do they? What are those expressions? Are they just colors, patches of them, lamps on the post, spectral ranges? ↩

  3. Of course this is so only in principle. No one, I guess, consciously thinks of the regulation every time they stop at a red light; but everyone, I guess, when asked, will cite the regulation as part of the reason why they stopped. ↩

  4. It is hard to resist the feeling that you have access to the meaning of the languages you competently speak – we know a great deal about the meaning of words, don’t we?. But, the knowledge you have conscious access to is world (or conceptual) knowledge, rather than grammatical knowledge. As you advance in semantics, you will get much clearer on the difference. ↩

  5. Given a set \(A\) and an operation \(f\), the closure of \(A\) under \(f\) is the smallest set that contains whatever you can get by zero or more applications of \(f\) to elements of \(A\) and values computed in any of the previous applications. Remember our axiomatization of propositional logic, where we closed the set of axioms under two inference rules (modus ponens and substitution) to generate the non-finite set of the well-formed formulas of the system. ↩

  6. Linguistic convention italicizes expressions mentioned in running text. ↩

  7. This is actually a provisional description, which I will adapt when I qualify the notion of sign below. ↩

  8. You may be thinking “we already have the name ‘semantic value’, why do we need the term ‘semantic object’? Isn’t it redundant?” It is not. Value is a relational concept: if you are a value, you are always a value of some other thing – this is even so for the fixed points of a function where \(c\) is the value of \(f(c)\), not \(c\) itself. Therefore, “semantic value” is the name of a relation, rather than a property or description of an entity with an existence independent of the relations it participates in. If you define something as a value, it stops existing without something that it is the value of. This is why we need the concept of a semantic object besides semantic value. It allows us to talk about semantic objects with no sign whatsoever that they are the value of. It is perfectly fine for something to be a semantic object without being at the same time a semantic value. As we will see, there are in fact infinitely many of them. ↩

  9. This has a deeper linguistic reason that we will see later on. ↩

  10. See below for what “constant” means. ↩