A Working Overview of Formal Semantics in Linguistics

Formal semantics is the branch of linguistics that maps natural language expressions onto mathematical logic so their truth conditions become explicit. It treats meaning as a function from possible worlds to truth values. You give it a sentence. You get back a set of worlds where that sentence is true. That is it. Nothing more. The approach originated from work by logicians like Alfred Tarski and Richard Montague. Montague showed in the late 1960s that English could be treated as a formal language, which was controversial at the time. People thought natural language was too messy for logic. It wasn't. It was just sloppy. The central tool is compositionality. The meaning of a complex expression is determined by the meanings of its parts and the rules used to combine them. "The cat chased the dog" breaks into individual lexical meanings plus syntactic structure, and the structure tells you how to plug one meaning into another. Type theory does most of the heavy lifting here. Every expression gets assigned a type. An individual constant like "Socrates" is type e. A predicate like "is mortal" is type . Function application moves meanings through types systematically. If you mess up the type assignment, the whole derivation crashes. This happens constantly in real work.

Unpacking The Enigma Of Formal Meaning Understanding Its Foundations And Significance requires getting past the textbook clean examples. Textbooks use sentences like "Every student read a book" because they parse beautifully. Real data does not cooperate. Ambiguity shows up in places the textbooks never predict. Quantifier scope is the usual offender.

I spent a few weeks trying to model focus-sensitive particles like even in a rule-based semantic parser. The issue is that even interacts with alternatives, and those alternatives depend on the context set, which is not part of the sentence itself. Standard Montague grammar has no mechanism to represent the contextual domain of alternatives. I ended up writing a custom handler that tracks a parallel set of focus alternatives alongside the main semantic derivation. It added maybe forty lines of code but forced me to confront the fact that the whole framework quietly smuggles pragmatic information through the back door and then acts surprised when it causes problems. Type shifting is another area where things get opaque fast. The basic system says nouns are type . But you can also treat them as generalized quantifiers of type <,t>. Both analyses are technically valid within the system. The choice matters enormously for how you handle coordination, modification, and binding. Beginners pick one and never reconsider. You should not make that mistake. Scope ambiguity is one of the most predictable failure modes in applied work. "A man saw a woman with a telescope" has two logical forms. The prepositional phrase attaches either to the noun phrase or to the verb phrase. Formal semantics represents both readings correctly but gives you no principled way to decide which one the speaker intended. That decision lives entirely in pragmatics, which the framework does not cover. I have seen people try to solve this with probabilistic weighting based on corpus frequency. It works sometimes. It breaks when the corpus happens to favor the wrong reading for a particular dialect or register. Presupposition projection is another problem area that textbooks hand-wave. "The present King of France is bald" fails to refer. Frege noted this in 1892 and the problem has never been fully resolved within a purely extensional framework. Russell handled it by treating definite descriptions as existentially quantified phrases. That avoids the reference failure but loses the presuppositional structure, which means you cannot easily model what happens when a presupposition gets canceled or embedded under negation. Dynamic semantics, particularly the work by Groenendijk and Stokhof, addressed this by treating meaning as context change potential rather than truth conditions. It is a significant improvement but introduces its own complications around accommodation and information state representation. Context dependence is the universal bottleneck. Pronouns, indexicals, temporal expressions, spatial deixis—all of these require information that is not encoded in the sentence. Formal semantics handles this by parameterizing interpretation functions over context. That is elegant on paper. In practice it means every semantic representation you produce comes with an invisible dependency on a context vector that is never explicitly represented in the formalism. Anyone building a system that processes real sentences needs to make that context explicit or accept that their output will be incomplete. Vagueness is where the framework hits its limits. "This pile is small" does not have a clear truth condition. Formal semantics assumes classical binary logic. There is no room for degrees of truth within the standard apparatus. Fuzzy logic and supervaluationist approaches exist but they are extensions, not part of the core framework. If your work involves vague predicates, you need to bring in additional machinery from the start. The framework also handles generic statements poorly. "Dogs bark" is not true in all worlds. It is true in normal worlds or in most worlds or in relevant worlds depending on how you calibrate it. Different researchers have proposed different solutions, and none of them are universally accepted. This is not a trivial gap. It affects how you model statements about categories, kinds, and habitual actions. Quantifier interpretation reveals another subtlety. Generalized quantifier theory treats every determiner as a relation between two sets. "Every" relates a set to a subset. "Some" relates it to a non-empty intersection. "Most" introduces a cardinality comparison. The mathematical elegance is undeniable. The downside is that natural language quantifiers do not always map cleanly onto logical operators. "Many" and "several" resist precise formalization because their thresholds shift with context and domain. You can pin down "every" and "some" but words like "a few" and "numerous" remain stubbornly imprecise even in formal treatment. Binding phenomena expose another layer of complexity. Pronouns must obey principles like Condition C, which says R-expressions cannot be bound. Formal semantics captures this through variables and lambda abstraction but the interaction between binding theory and semantic interpretation is not straightforward. Anaphora resolution in practice often requires discourse-level information that the local syntactic structure does not provide. I have found that the most useful thing you can do when applying formal semantics is to separate the compositional derivation from the interpretive layer. Build a clean syntax-semantics interface first. Then handle pragmatics, context, and presupposition in a second pass. If you try to do everything in one pipeline, the system becomes fragile. I learned this the hard way after three months of debugging a parser that could not distinguish between a presupposition failure and a simple negation. The computational implementations of formal semantics, including tools like Semlink and various logical form parsers, generally assume well-formed input. They break down on fragments, colloquial speech, and highly elliptical constructions. If you are working with real text rather than constructed examples, you need a preprocessing stage that normalizes the input before the semantic parser touches it. Type checking alone does not guarantee correctness. You can have a perfectly well-typed derivation that produces the wrong meaning because the lexical entries themselves are incorrect. Lexicon construction is the unglamorous part of this work. It takes far longer than the formal machinery and it is where most projects stall. The framework is reliable for straightforward declarative sentences in controlled domains. It becomes increasingly unreliable as you move toward dialogue, imperatives, questions, and non-literal language. It was never designed for those. Using it outside its intended scope without adaptation will produce formally correct but pragmatically useless results.