Skip to content
Philosophy for Kids

Is ‘Sherlock Holmes Is a Detective’ Actually True?

The Mystery of the Empty Name

If Sherlock never existed, can it be true that he was a detective?

Imagine two friends arguing. “Sherlock Holmes is the world’s greatest detective,” says one. The other shrugs. “But he never really existed! So the whole sentence can’t be true—or can it?” This debate sounds like a silly game, but it cuts straight to the heart of a deep puzzle in logic. How do we talk about things that are not there? Can a sentence with an empty name like ‘Sherlock Holmes’ or ‘Pegasus’ be true, false, or even meaningful at all?

Philosophers and logicians have wrestled with this for over a century. The answer they developed is called free logic—a system of reasoning that does not automatically assume every name in our language refers to something real. To see why they had to invent it, we first have to look at a rule that classical logic takes for granted.

Why Classical Logic Trips Over ‘Sleipnir Doesn’t Exist’

The old rule of logic works like a falling domino chain—until a name points to nothing.

In ordinary school logic, if you say “Bucephalus is a horse,” and you know Bucephalus is real, you can safely conclude “There exists something that is a horse.” This move is called existential generalization. It works perfectly for names that have real owners. But now try: “Sleipnir does not exist.” (Sleipnir is Odin’s eight-legged horse in Norse myth.) If we apply the same rule, we get “There exists something that does not exist”—a flat contradiction.

Classical logic dodges this by simply demanding that every singular term (every proper name, every description) must refer to an actual object. If a name doesn’t, the sentence gets tossed out as ill-formed or not a real claim. But that feels like cheating. After all, we use empty names all the time—in stories, in hypotheses, when we talk about numbers that haven’t been discovered yet. The 4th-century philosopher Aristotle (384–322 BCE) himself noticed the problem when he pointed out that if Socrates does not exist, both “Socrates is well” and “Socrates is sick” are false.

So in the mid‑20th century, a new logic emerged. The philosopher Karel Lambert (born 1928) gave it its name: free logic, because it is free of the assumption that every name must pick out something that exists. Free logics replace the careless existential rule with a careful one that uses a special existence predicate, usually written E!. Before you can infer that something with a certain property exists, you first have to prove that the thing the name names really is among the existing things.

Three Flavors of Free Logic: Positive, Negative, and Neutral

Positive says “some can be true,” negative says “all false,” neutral says “doesn’t compute.”

Once you agree that empty names should be allowed, you face the next puzzle: what truth‑value do you give to an atomic sentence like “Sherlock Holmes is a detective”? Free logic splits into three main varieties, each with a different answer.

Positive free logic says some atomic sentences with empty names can be true. At the very least, it insists that a thing is always equal to itself, so “Sherlock Holmes = Sherlock Holmes” is true, even if Sherlock doesn’t exist. You might also be willing to call “Sherlock Holmes is a detective” true because the stories define him that way. To make this work, positive free logic needs an outer domain—a collection of objects that don’t exist but which names can still point to. We’ll visit that domain in a moment.

Negative free logic takes the opposite path: it treats every atomic sentence with an empty name as false. If the name doesn’t latch onto a real thing, the whole claim flunks. That’s the line Aristotle suggested: “Sleipnir is a horse” is false, “Sherlock Holmes = Sherlock Holmes” is false, and so is “Sherlock Holmes is a detective.” This keeps things tidy, but it makes some statements seem harshly false when they feel, at worst, just undecided.

Neutral free logic opens a third door. It says sentences with empty names are neither true nor false—they suffer a truth‑value gap or get a third value meaning “makes no sense because the name is empty.” So “Sherlock Holmes is a detective” becomes truth‑valueless, not outright false. Like neutral gear in a car, the logic refuses to commit.

These three choices shape how a logic handles almost everything else, from equations to fictional characters.

The Zoo of Existence: Inner and Outer Domains

Positive free logic gives a separate home to things that don’t exist.

Positive free logic often uses a picture that’s easy to imagine: the inner‑outer domain, sometimes called Meinongian semantics after the philosopher Alexius Meinong. Think of a zoo. The inner domain is the enclosure for real animals that exist—lions, zebras, the elephant. The outer domain is the fantasy pen, where you keep a dragon, a unicorn, and Sherlock Holmes as a consulting resident. Both domains together hold everything our language can talk about, but only the inner domain holds the things we consider actually existing.

When positive free logic says “Sherlock Holmes = Sherlock Holmes” is true, it checks the outer domain: the object tagged “Sherlock” is the same as the object tagged “Sherlock,” so it’s a match. When it says “There exists a detective named Sherlock Holmes” is false, it looks only at the inner domain—Sherlock isn’t there, so the existential claim fails. This separation allows us to say true things about fictions without pretending they populate the real world.

Negative and neutral free logics usually don’t need an outer domain because they give their verdicts without one. But for positive logic, the double‑zoo is a crucial tool.

Sticky Problems: Why ‘Exists’ Keeps Things Messy

Swapping equal‑sounding phrases can break the chain of reasoning when a name is empty.

Even the neatest free logic hits speed bumps. Here are three that keep philosophers awake.

Primitive‑predicate trouble. In negative free logic, whether a sentence comes out true or false can depend on which words you treat as your basic building blocks. Suppose you start with the primitive predicate “is an adult.” You define “is a minor” as “not an adult.” For an empty name like “Sherlock,” “Sherlock is an adult” is false, so “Sherlock is a minor” becomes true. But if you had started with “is a minor” as primitive, the truth values flip. Why should the truth hinge on such a choice of vocabulary?

Substitution failures. Normally, if two phrases are true of exactly the same real things, you can swap them without changing truth. But in free logic, that breaks down. “x = x” is satisfied by everything, both real and imaginary. So is “E!x → x = x” (if x exists, then x is self‑identical), because it’s always true for non‑existents too. Yet when you put an empty name like “Sherlock” in, “Sherlock = Sherlock” is true in positive logic, while “E!Sherlock → Sherlock = Sherlock” is false (since “E!Sherlock” is false, so the whole conditional is true! Actually it’s true in most logics… but let’s use a better example from the source: positive makes “t=t” true and “t=t & E!t” false). The source says: positive free logic makes t=t true and t=t & E!t false; negative makes t=t false and E!t → t=t true. So co‑extensive formulas don’t swap equally. That ruffles the idea that meaning is just about extension.

The inexpressibility of existence conditions. Try saying “Whatever thinks exists” inside free logic. You’d write something like “For all x, if x thinks, then E!x”. But because the quantifier “for all x” only ranges over existing things (the inner domain), this statement turns out to be trivially true—even impossible things would count if they were in the domain. So you can’t genuinely state a sufficient condition for existence without already assuming the thing exists. To fix it, you have to bring in quantifiers that range over the outer domain too, which pushes beyond pure free logic.

Where Free Logic Shines: Descriptions, Fictions, and What‑If Worlds

Fiction lets us talk about what is true “in the story” without committing to reality.

Despite the hiccups, free logic earns its keep in three big arenas.

Definite descriptions. A phrase like “the present king of France” is a definite description that doesn’t refer to anyone. Classical logic, following Bertrand Russell (1872–1970), paraphrases sentences away so the empty description never acts as a genuine name. But free logics let you keep the description as a genuine singular term and then use the E! predicate to mark whether it has a real referent. This makes it easier to compare different theories of descriptions inside a single framework.

Logics of fiction. When you say “In The Lord of the Rings, Gollum hates the sun,” you want to infer that in the story there exists something that hates the sun. That’s fine as long as you stay inside the story’s world. But if you step out and declare literally that something hates the sun, you’d be making a false existential claim. Free logic, with its existence predicate, lets you keep the two levels separate: the quantifier for “in the story” behaves differently from the quantifier for reality. Many philosophers use a positive or neutral free logic to handle fictional names like ‘Gollum’ that seem to refer to non‑existent objects.

Possible worlds and modal logic. When we think about what must be true or what could have been different, we use possible‑world semantics. Suppose you ask, “Could Sherlock Holmes have been a villain?” In a world where that is true, the name “Sherlock Holmes” still points to an object, but that object may not exist in the actual world. Free logic underpins much of modern quantified modal logic precisely because it does not demand that every name refers to something in the actual inner domain.

Why It Still Matters to You

Free logic lives on in computer code, where values can be undefined.

You probably don’t spend your days debating whether Sleipnir exists. But you do talk about things that aren’t real all the time—characters in a game, an imaginary friend when you were little, a perfect plan that might never happen. Free logic gives you the mental tool‑kit to handle such talk without getting tangled up. It reminds you that language is more flexible than the simple “everything refers to something” rule suggests.

It also shows up in computer science. Programs often deal with variables that haven’t been assigned yet or with division by zero. A logic of partial functions—a cousin of free logic—helps programmers reason about those undefined spots without the whole program crashing. So whether you are coding a video game where an invisible character glitches, or just wondering why “My sister’s unicorn is pink” feels different from “That rock is pink,” you’re brushing up against the same questions free logic was built for.

The next time someone says, “That sentence can’t be true because the thing isn’t real,” you’ll know there isn’t one simple answer. There are at least three, and a whole zoo of ideas behind them.

Think about it

  1. If you invent a new character right now and say “My hero can fly,” is that sentence true, false, or something else? Does your answer change if you write the story down?
  2. Imagine a world where every name refers to something—even “the round square.” Would it still make sense to say some things don’t exist?
  3. Should a video game treat a missing player as “false” (no player here) or as “no information yet”? Which approach causes fewer bugs?