Did Frege Invent Modern Logic Twice?
A Shy Man and a Strange New Language

In 1879, Gottlob Frege (1848–1925), a quiet mathematician in Jena, Germany, published a small book with an extraordinary title: Begriffsschrift, or “Concept Script.” He had a huge ambition: to prove that all of arithmetic — every truth about numbers — could be boiled down to pure logic, with no gaps, no leaps, and no hidden assumptions. To do that, he needed a logic that was far more precise than anything that had existed before. So he invented one. But the logic he invented in 1879 was not the same logic he ended up using fourteen years later. Frege, it turns out, invented modern logic not once, but twice.
Frege’s Begriffsschrift didn’t look like logic before. Instead of writing “All humans are mortal” as a single line, he drew a vertical stack with a “conditional stroke” and a curved concavity holding a Gothic letter. He rejected the old idea that every statement has a fixed subject and predicate. Instead, he saw statements as built from a function and an argument — much like a mathematical function (f(x)) takes a number and gives a new number. In “Hydrogen is lighter than carbon dioxide,” you could treat “Hydrogen” as the argument and “…is lighter than carbon dioxide” as the function, or flip it: “carbon dioxide” as argument and “…is heavier than hydrogen” as function. The same conceptual content could be sliced up in different ways.
That flexibility was powerful, but it came with a big problem right at the heart of the simplest idea: saying that two things are the same.
The Puzzle That Forced Frege to Think Again

Suppose someone tells you “the morning star is the same thing as the evening star.” You learn something new, even though both names refer to the planet Venus. But if identity only concerns the object itself, then “the morning star = the morning star” and “the morning star = the evening star” ought to have exactly the same content — yet clearly they don’t. The first is a boring tautology; the second is an astronomical discovery.
Frege felt this puzzle sharply. In Begriffsschrift he had no good solution. There, a statement like “(a = b)” was not about objects but about the symbols (a) and (b) — it said those two names have the same conceptual content, meaning roughly that one can replace the other in any reasoning without changing what follows. This meant that inside an identity statement, the names stood for themselves, not for the objects they normally named. As Frege himself noted, a kind of split meaning entered every symbol. That was awkward, and it muddied the clean waters he wanted for logic.
He solved the puzzle a dozen years later. In a famous essay, “Sense and Reference” (1892), Frege drew a crucial distinction. Every expression has a reference — the thing it picks out in the world — and a sense, which is the way it presents that thing. “The morning star” and “the evening star” have the same reference (Venus) but different senses. So “(a = b)” can be informative because the senses are different, even though the references coincide. This insight didn’t just tidy up identity; it forced Frege to rebuild his entire logic from the ground up, because it meant sentences could not just be “judgeable contents” that were facts. They had to name something — specifically, truth values.
From Facts to Truth Values: When “¬2” Became a Proper Sentence

In Begriffsschrift, the judgement stroke “(\vdash)” could only attach to a judgeable content — something that could be true or false, like “Snow is white.” You couldn’t write “(\vdash 2)” because 2 is a number, not a claim. Negation was an operation that took a judgeable content and turned it into another judgeable content. So “(\not\vdash 2)” wasn’t just false — it was nonsense, not even a finished thought.
When Frege adopted the sense/reference distinction, everything changed. He now treated sentences as names of two special objects: the True and the False. The sentence “(2 + 2 = 4)” no longer asserted a fact; it named the True. The horizontal stroke “(—)” became a function that output the True if its argument was the True, and the False otherwise. So if you wrote “(— \Delta)” where (\Delta) named some object like 2 (not a truth value), the horizontal returned the False. That meant “(— 2)” was a name of the False, and then negating it — “(\neg (— 2))” — gave the True. In other words, “it is not the case that 2” was not only a well‑formed judgement, it was a true one, because 2 is not the True.
This might sound bizarre, but it made logic perfectly systematic. Every function, including the negation stroke and the conditional stroke, had to be defined for every object, not just truth values. The cost was a logic full of strange truths like “¬2 is true.” The gain was a logic where every name, from “(5)” to “(5 > 3),” could be handled by the same strict rules.
Building a Ladder of Types: Objects, Functions, and Levels

The early Begriffsschrift had no fixed hierarchy. Anything could be an argument; anything could be a function. But in Grundgesetze, Frege introduced a rigid type hierarchy. At the bottom are objects — “saturated” things like the number 2, the True, the Moon. Above them sit first‑level functions that take objects as inputs and produce other objects. The function “(x + 1)” is first‑level; so are concepts like “x is a horse,” which when applied to an object, output a truth value. Higher up, second‑level functions take first‑level functions as inputs. The universal quantifier “every” is a second‑level function: it takes a concept and says whether that concept holds for all objects.
This ladder prevented a famous kind of confusion. In the early logic, one could write something like “the concept of a horse is a horse” and treat “concept of a horse” as an argument or a function arbitrarily, leading to logical muddles. Now Frege declared that a concept can never serve as its own argument: a first‑level function cannot take another first‑level function as input; you need a second‑level function for that. The concavity quantifier “(\forall \mathfrak{a} \Phi(\mathfrak{a}))” was accordingly split into a first‑order version ranging over objects and a second‑order version ranging over first‑level functions, each with its own German letter. This innovation is one of the clearest ways that Grundgesetze feels like the logic you might learn today, while Begriffsschrift is a strange hybrid.
The Secret Second Way of Saying “Every”

One of the quietest but most important changes was how Frege handled generality. In Begriffsschrift, a formula like “(A(a))” with a Roman letter “(a)” was just an abbreviation for a statement where a German letter was bound by a concavity placed at the very front. In Grundgesetze, Roman letters became an entirely separate device. They no longer abbreviated anything. Instead, a proposition with a Roman letter “(x)” indicated a truth‑value without naming it. You could think of “(A(x))” as saying: pick any object you like, and this holds. The scope of the Roman letter was flexible; it could even stretch across several propositions in the middle of an inference, allowing Frege to perform moves like the syllogism “All (A) are (B), all (B) are (C), therefore all (A) are (C)” in a single elegant step. That would have been impossible in the earlier system without awkward rewrites.
This meant Frege now had two tools for “all”: the concavity (German letters) with a fixed, precise scope, and the Roman letter generality device with a floating, inference‑friendly scope. Neither was redundant. Together they gave his system a power that modern linear logics often need many extra steps to match.
The Paradox That Shook the Foundations

No story about Frege’s second logic is complete without the ending. In 1902, just as the second volume of Grundgesetze was at the printer, Frege received a letter from a young philosopher named Bertrand Russell. Russell had found a contradiction lurking in Frege’s system — the famous Russell paradox. The problem stemmed from Basic Law V, which allowed Frege to form the “value‑range” of any function (roughly, the set of all things that satisfy it). Russell asked: consider the set of all sets that do not belong to themselves. Does it belong to itself? If yes, then no; if no, then yes. This destroyed the consistency of Frege’s logic.
Frege was devastated. The logicism project collapsed because the logic itself contained a hidden flaw. But the story does not end with failure. Frege’s distinctions — between sense and reference, between object and function, between levels of functions, between truth and assertion — became the bedrock of modern logic and analytic philosophy. The very paradox that broke his system sparked new work that gave us type theory, set theory, and the foundations of computer science.
Why Frege’s Second Logic Lives on Every Time You Reason

When you learn that “All dogs are mammals” and “Rex is a dog” together force “Rex is a mammal,” you are using ideas that Frege systematized. When you see truth tables, you are exploiting the idea that sentences evaluate to truth values, independently of what they are about. When you write a computer program with different “types” — integers, strings, functions — you are living in the world Frege’s second logic made possible.
So the next time someone tells you that logic is about discovering truths about language, remember Frege: he thought logic was about discovering universal truths that hold no matter what you are talking about — numbers, dogs, stars, or even the logic itself. His journey from one logic to another teaches us that the very rules of rational thinking are not set in stone; they are built by careful minds who are willing to rebuild when the foundations crack. And that is a deeply philosophical thought worth holding onto.
Think about it
- Frege thought every sentence secretly names the True or the False. Do you think a question like “Who ate the last cookie?” names a truth value? Why or why not?
- Frege’s second system says “It is true that 2” is a true statement, because 2 is not the True. Does that make sense to you, or does it show that the logic has gone wrong somewhere?
- Frege’s logic collapsed because of a hidden contradiction. Can you think of a rule in everyday reasoning that, if pushed too far, might lead to a contradiction? (For example, “always trust what your friend says” when two friends disagree.)





