
Logic is the study of reasoning. It is concerned mainly with inference, but also with entailment, causality, consequence, induction, deduction, truth, falsity, belief, fallacies, paradoxes, probabilities, analysis, tense, modality, necessity, sufficiency, possibility, identity, vagueness, existence, description, justification, tolerance, obligation, permission, relevance, assertion, judgment, soundness, validity, contradiction, provability, and argumentation.
Logic is topic-neutral, meaning we don’t let our biases about subject matter influence the way we look at the structure of arguments. Logic focuses on the form of arguments rather than their content. Here’s an introductory video. In fact it is the first video in an amazing playlist of 83 videos on logic.
One of the central questions explored in the study of logic is:
Does the conclusion follow from the premises?
The phrase “follow from” can have different interpretations, depending on the inference mode you are working under:
We know a general rule to be valid. We see an instance of this rule, so we apply the general rule to show, with complete certainty, the truth of the specific instance.
We have seen a bunch of cases to be true, so we infer that a new related case is also true. We can’t be completely sure of the truth of our conclusion, though, since a few special cases cannot necessarily prove a general rule.
The premises give really strong evidence for the truth of the conclusion.
Deduction is the one most often formally studied in philosophy, mathematics, and computer science. The others are still important, of course.
But hang on though! Each of these descriptions used the word truth. But what is truth? And how do we reason our way from premises to true conclusions? Answers to those questions depend on the system of logic we are using. We’ll see many systems of logic later in these notes.
Have some fun! Take this logic pre-test.
A rigorous study of any field benefits from an understanding of its basic concepts and terminology.
Since logic requires a rigorous study of the forms of arguments, it helps to not get bogged down in long, confusing, and often ambiguous prose, so we want our statements, or sentences, to have a very compact form. We can achieve this by using single letters for our subjects, objects, and predicates, and fancy symbols for our conjunctions and prepositions and other grammatical words. Let’s jump right into some examples (with details to follow):
| English | Logic | Breakdown |
|---|---|---|
| Juliet is Italian | $Ij$ | |
| Romeo likes Juliet | $Lrj$ | |
| Romeo likes himself | $Lrr$ | Romeo likes Romeo |
| The sidewalk is wet when it rains | $R \supset Ws$ | If it is raining then the sidewalk is wet |
| Romeo likes the king’s daughter | $Lr(\iota p.Dkp)$ | Romeo likes the p such that the daughter of the king is p |
| $Lr(dk)$ | Romeo likes the daughter of the king | |
| Alice sees everybody | $\forall p. Sap$ | For every p Alice sees p |
| $\neg \exists p.\neg Sap$ | It is not the case that there exists a p such that it is not the case that Alice sees p | |
| Alice sees somebody | $\exists p.Sap$ | There exists a p such that Alice sees p |
| $\neg \forall p. \neg Sap$ | It is not the case that for every p it is not the case that Alice sees p | |
| Alice sees nobody | $\neg \exists p.Sap$ | It is not the case that there exists a p such that Alice sees p |
| $\forall p. \neg Sap$ | For every p it is not the case that Alice sees p | |
| All apples are fruits | $\forall x.(Ax \supset Fx)$ | For every x if x is an apple then x is a fruit |
| Some apples are green | $\exists x.(Ax \land Gx)$ | There exists an x such that x is an apple AND x is green |
| All snakes are animals | $\forall x.(Sx \supset Ax)$ | For every thing x if x is a snake then x is an animal |
| $\neg \exists x.(Sx \land \neg Ax)$ | It is not the case that there exists an x such that x is a snake AND x is not an animal | |
| Some snakes are poisonous | $\exists x.(Sx \land Px)$ | There exists an x such that x is a snake AND x is poisonous |
| $\neg \forall x.(Sx \supset \neg Px)$ | It is not the case that for every x if x is a snake then x is non-poisonous | |
| Juliet doesn’t like French people | $ \neg\exists p.(Fp \land Ljp)$ | It is NOT the case that there exists a p such that p is French AND Juliet likes p |
| $\forall p.(Fp \supset \neg Ljp)$ | For every p if p is French then it is not the case that Juliet likes p | |
| Juliet likes all Italians | $\forall p.(Ip \supset Ljp)$ | For every p if p is Italian then Juliet likes p |
| Juliet likes all Italians except Romeo | $\forall p.(Ip \supset (Ljp \equiv \neg (p=r)))$ | For every p if p is Italian then Juliet likes p IF AND ONLY IF p is not Romeo |
| Every Italian likes someone | $\forall p. (Ip \supset \exists q.Lpq)$ | For every p if p is Italian then there exists a q such that p likes q |
| Everyone likes an Italian | $\forall p. \exists q.(Iq \land Lpq)$ | For every p there exists some q such that q is Italian AND p likes q |
| Everyone likes this one particular Italian | $\exists q.(Iq \land \forall p.Lpq)$ | There exists a particular q such that q is Italian AND for every p p likes this one particular q |
| Pablo shaves all and only those who do not shave themselves | $\forall q.(Spq \equiv \neg Sqq)$ | For every q Pablo shaves q IF AND ONLY IF it is not that case that q shaves q |
| Not everyone is libertarian or progressive | $\neg \forall p.(Lp \lor Pp)$ | It is NOT the case that there exists a p such that p is Libertarian OR p is progressive |
| $\exists p.(\neg Lp \land \neg Pp)$ | There exists a p such that p is NOT libertarian AND p is NOT progressive | |
| Either the queen is rich or some pigs fly | $Rq \lor \exists p.(Pp \land Fp)$ | The queen is rich OR there exists a p such that p is a pig AND p flies |
| Everything has a cause | $\forall x. \exists y.Cyx$ | For every (thing) x there exists some y such that y caused x |
| Everything has the same cause | $\exists y. \forall x.Cyx$ | There exists this one (uber thing) y such that for every thing x y caused x |
| Nothing caused itself | $\forall x. \neg Cxx$ | For every (thing) x it is not the case that x caused x |
| $\neg \exists x. Cxx$ | It is not the case that there exists an x such that x caused x | |
| Everybody loves somebody, but someone is unloved | $(\forall x. \exists y.Lxy) \land (\exists x.\neg \exists y.Lyx)$ | For every x there is some y such that x loves y AND ALSO There exists some x such that it is NOT the case that there exists some y such that y loves x |
| Some number less than 5 is a perfect square | $\exists x. (Lx5 \land \exists y.(x=qy))$ | There exists an x such that x < 5 AND there exists a y such that x is y squared |
| $\exists x. (x<5 \land \exists y.(x=y^2))$ | ||
| Juliet might like Romeo | $\lozenge Ljr$ | It is possible that Juliet likes Romeo |
| Two is necessarily equal to two | $\Box (2=2)$ | It is necessary that 2 equals 2 |
| The thunder god was worshiped by some Athenians | $\exists p.(Ap \land Wp(gt))$ | There exists a p such that p is an Athenian AND p worships the god of thunder |
| It is possible that some day the sun-god will become forever awesome | $\lozenge \mathbf{FG}A(gs)$ | It is possible that at some point in the future it will always be the case that the god of the sun is awesome |
| Juliet believes that Romeo doesn’t believe that Juliet likes him | $\mathscr{B}_j(\neg \mathscr{B}_r Ljr)$ | Juliet believes that it is not the case that Romeo believes that Juliet likes Romeo |
| There is a better than 50-50 chance that Juliet is hungry when it’s raining | $pr(Hj \mid R) > 0.5$ | The probability that Juliet is hungry, given that it’s raining is bigger than 0.5 |
Now here’s a summary of common logical notation:
| Form | Meaning | Technical Term |
|---|---|---|
| $T$ | True | Truth |
| $F$ | False | Falsity |
| $\neg A$ | Not $A$ | Negation |
| $A \land B$ | $A$ and $B$ | Conjunction |
| $A \lor B$ | $A$ or $B$, or both | Disjunction |
| $A \supset B$ | Anything other than $A$ and not $B$ | Material Implication |
| $A \equiv B$ | $A$ and $B$ have the same truth value | Material Equivalence |
| $\forall x. A$ | For every $x$, $A$ | Universal quantification |
| $\exists x. A$ | There exists an $x$ such that $A$ | Existential quantification |
| $f\,x$ | The result of applying function $f$ to $x$ | Function application |
| $\iota x. A$ | The $x$ such that $A$ | Description |
| $x = y$ | $x$ and $y$ are the same object | Equality |
| $\Box A$ | In all possible worlds, $A$ | Necessity |
| $\lozenge A$ | In some possible world, $A$ | Possibility |
| $\mathbf{P} A$ | It was (at least once) the case that $A$ | Past |
| $\mathbf{F} A$ | It will (at least at some point) be the case that $A$ | Future |
| $\mathbf{H} A$ | It was always the case that $A$ | Always has been |
| $\mathbf{G} A$ | It will forever be the case that $A$ | Always going to be |
| $\mathscr{O} A$ | $A$ must (morally) be done | Obligation |
| $\mathscr{P} A$ | $A$ may (morally) be done | Permission |
| $\mathscr{K}_x A$ | Agent $x$ knows $A$ | Knowledge |
| $\mathscr{B}_x A$ | Agent $x$ believes $A$ | Belief |
| $|A|$ | Truth value of $A$ (in 0.0 ... 1.0) | Numerical Truth Value |
| $pr(A)$ | Probability of $A$ being true | Probability |
| $pr(A|B)$ | Probability of $A$ being true given that $B$ is true | Conditional Probability |
It takes an enormous amount of practice to translate sentences of English (or other natural language) into sentences of logic. Such translations are not unique, nor are they always even exact, as natural language is fluid and frequently imprecise.
Most systems of logic distinguish between terms and formulas.
ParenthesesBe sure to use parentheses when needed. For example, $Pfb$ is an application of the two-argument predicate $P$ to $f$ and $b$, for instance “Farah pressed the button”; but in $P(fb)$, $P$ is a one-argument predicate and $f$ is a function, as in “The friend of Billie is popular.”
For operators, $\neg$ has the highest precedence, then $\land$, then $\lor$ then $\supset$ then $\equiv$. All operators associate to the right, so $P \supset Q \supset R$ means $P \supset (Q \supset R)$ and does not mean $(P \supset Q) \supset R$.
The . is sugar for a left parenthesis whose implicit made is as far to the right as possible. So $\exists x. Px \land Q$ means $\exists x. (Px \land Q)$ and does not mean $(\exists x. Px) \land Q$. .
You can also just use parentheses everywhere. No shame in that!
Be careful not to confuse terms and formulas. For example, note $\iota x. Px$ is a term, but $\exists x. Px$ is a formula.
Notation conventionsNote how we’ve always used lowercase letters in the term world (objects and functions) and uppercase letters in the formula world (predicates and propositions). This is the way.
If you were a minimalist, you might notice:
That’s cool from a foundational point of view, but as humans, we like to work with objects, functions, terms, propositions, predicates, and formulae as distinct concepts.
A variable stands for something unspecified.
Every variable occurrence is either bound or free. It’s bound if it is within the scope of a $\forall$, $\exists$, or $\iota$ that binds it or is the binding occurrence itself, and free otherwise. This requires examples! In the following, the free variable occurrences are underlined:
The names of bound variables are rather arbitrary: $\forall x. x = x$ and $\forall y. y = y$ are meant to represent the same sentence.
A term or formula with a free variable is called an open term or open formula. A term or formula with no free variables is called closed. Open formulas are general statements and closed statements are specific statements. When useful to do so, we will indicate that a term or formula has certain free variables by writing $A[x]$ or $A[x,y]$ (read: “there are free occurrences of $x$ in $A$” and “there are free occurrences of $x$ and $y$ in $A$”, respectively).
To increase specificity, we may substitute for the free variables in a term or formula. The notation for substituting $t$ for free occurrences of $x$ in formula $A$ such that no free variable in $t$ becomes bound (i.e., is captured) is $A[x \mapsto t]$ or $A[t/x]$.
Capturing is explicitly disallowed because a capture changes the meaning of the formula. For example, in the formula $\exists x. x \neq y$, the substitution $[y \mapsto x]$ mustn’t replace $y$ with $x$, since you’d end up with $\exists x. x \neq x$, which means something completely different! To properly substitute in such cases, you must rename bound variable occurrences in $A$ to avoid capturing free variables in $t$, like so:
$$(\exists x. x \neq y)[y \mapsto x] \quad=\quad \exists z. z \neq x$$Where we can safely substitute $t$ for $x$ in $A$ (without any need for renaming), we say $t$ is free for $x$ in $A$.
A formula is just a string of symbols: on its own it asserts nothing. To actually claim something, we need a judgment.
The first judgment we’ll see is that a formula is true. We write it:
$$A\;\textsf{true}$$which is read “$A$ is true.” This looks trivial, but the distinction matters: $A$ is just a formula; $A\;\textsf{true}$ is an assertion about that formula. It is easy to get confused.
A hypothetical judgment is one that asserts something relative to assumptions:
$$ J_1, J_2, \ldots, J_n \vdash J $$where each of the $J$s are simple judgments. We often use $\mathcal{H}$ for a list of hypotheses so:
$$\mathcal{H} \vdash A\;\textsf{true}$$is the assertion that “$A$ is true, given that every assertion in $\mathcal{H}$ holds.” The symbol $\vdash$ is called turnstile. Since $A\;\textsf{true}$ is (for now) our only judgment, people often shortcut the notation and abbreviate $A\;\textsf{true}$ as just $A$, so you will see entire judgments shortened to $\mathcal{H} \vdash A$ or $\vdash A$ or even (yikes) just $A$.
AMBIGUOUS NOTATION ALERTOnce we start dropping $\textsf{true}$, the symbol $A$ on its own becomes confusing: sometimes it’s the formula (pure syntax), and sometimes shorthand for the judgment $A\;\textsf{true}$.
If the context is such that you are dealing with judgments rather than formulas, you will have to mentally understand that the $\textsf{true}$ symbols are really present, just not visible. BE CAREFUL.
There is no shame at all, however, in being pedantic and never dropping the $\textsf{true}$s.
What other judgments are there?In beginning logic, the truth assertion $A\;\textsf{true}$ is pretty much the only one we’ll see. But we’ll see more, especially in computer science. Examples:
$t\;\textsf{type}$$t$ is a type$e\!:t$$e$ has type $t$$e \Downarrow v$$e$ evaluates to $v$$e \Uparrow$The evaluation of $e$ diverges$e\;\to\;e'$$e$ reduces in one step to $e'$$s\;\mapsto\;s'$State $s$ transitions in one step to $s'$$p\;\textsf{halts}$Program $p$ halts
When you are done reading these notes, you will be ready to return to the deeper philosophical questions about the difference between formulas and judgments, and will then enjoy reading the transcript of the three lectures by Per Martin-Löf.
A logical argument is a sequence of judgments, each of which is either a hypothesis or follows from earlier judgments in the sequence via inference rules. The set of inference rules depends on the particular system of logic you are working in. In other words, a particular system will tell you which judgments you are allowed to state and how to infer from existing judgments to new judgments. An argument is valid if all of its judgments are derived by following the rules of the system.
Arguments are often written graphically, with premises above the line and conclusion below. Example:
If a particular logic system allows you to make a hypothetical judgment $J$ from no prior judgments, $J$ is called an axiom of that system. If a non-hypothetical judgment $J$ is an axiom or can be inferred from other judgments according to the rules of the system, then $J$ is said to be a theorem of that system. Because theorems are non-hypothetical judgments you will often see the notation:
$$ \vdash A $$to mean $A$ is a theorem, or equivalently, $A$ is provable, $A$ is derivable from the inference rules. etc.
A system of logic needs to do at least two things. It needs to define:
The first part, truth, is a semantic notion, concerning the relationship between formulas and the world (or model) they describe. Truth values vary according to system: they can be exact (e.g., true, false, both, neither) or a “degree of belief,” or whether something is “justified,” or “achievable,” or “knowable.”
The second part, proof, is a syntactic notion. You blindly follow the rules, deriving new judgments as you go, without consulting the model. You have to hope that whoever designed the inference rules did so in a way that the rules line up with model, so you only derive truthy things as theorems.
Some of the truth values of a system are known as its designated values. These are the truthy ones. Formulas that always have a designated value in a model, no matter what their internal variables are assigned to, are valid. If $A$ is valid, we write;
$$ \vDash A $$ As we saw earlier, a formula you can derive from the inference rules is a theorem. If $A$ is a theorem, we write: $$ \vdash A $$The notations look similar, but they are different things.
Truth and proof are related, but absolutely not the same thing.
How can there be many different kinds of logic? Well, there could be different ways to understand truth, as we saw above. There can also be different ways to reason, with some inferences acceptable in some contexts but not others. Some systems are deliberately small (in that they cannot capture all forms of reasoning), to simply serve as a stepping stone for more complex forms of reasoning.
Here are some kinds of logics. The list is incomplete. The kinds are also overlapping.
A bivalent system has exactly two truth values, usually called true and false. Contrast this with a non-bivalent system has more than two truth values, perhaps three, four, eight, or an infinite number (e.g. a value $\in 0.0\ldots 1.0$).
Often a bivalent system will identify false with $0$ and true with $1$, as this will scale up nicely to three-valued logics where the third value gets $\frac{1}{2}$, and to infinitely-valued, or fuzzy, logics that admit any value between $0.0$ and $1.0$ inclusive. Bivalency is about complete certainty of truth or falsity with nothing in between.
Bivalent logics are super simple to work with, even if they don’t fully capture the nuances of the real world.
For example, bivalent logical negation is trivial: $\neg \textbf{true} = \textbf{false}$ and $\neg \textbf{false} = \textbf{true}$.
Also, bivalency gives rise to dualities with respect to negation that sometimes facilitate reasoning. The duals are related to each other as $\neg\square A \equiv \blacksquare\neg A$ or as $ \neg(A\circ B) = \neg A\bullet \neg B$.
Technically, a proposition is a predicate with no arguments, such as “It‘s raining”. (We saw this in the example above, where we represented this with $R$.)
There is a type of logic where we simplify things so much that we ignore subjects, predicates, and objects, where all information is rolled up into single, atomic, nondecomposable sentences. Then propositions can be things like “Pigs fly”, “I am late”, “The moon is square”, and “The baby wants to sleep”. Propositional Logic is a system of reasoning about these things without decomposing them. The traditional operators are:
| Form | Meaning |
|---|---|
| $P \land Q$ | $P$ and $Q$ |
| $P \lor Q$ | $P$ or $Q$ (or both) |
| $\neg P$ | not $P$ |
| $P \supset Q$ | $P$ materially implies $Q$; e.g., $\neg(P \land \neg Q)$, or equivalently, $\neg P \lor Q$ |
| $P \equiv Q$ | $P$ and $Q$ have the same truth value |
Note: The $\land$ and $\lor$ operators are meant to be material, not causal. They cannot distinguish the sentence “I called her and found out about the problem” from “I found out about the problem and called her.”
Propositional logic is too weak to deal with everything we need to reason about. But the simplicity buys us so much! Besides being easy to learn and understand, a propositional logic system has many desirable technical properties, many of which we’ll see in these notes.
Systems of logic featuring syllogisms were studied thousands of years ago; they include reasoning about “all” and “some”, but do not allow general propositions nor connectives like “and” and “or”. Traditionally, only the following eight kinds of statements were considered (capital letters are classes, small letters are instances):
| Form | Example |
|---|---|
| $x$ is $A$ | Socrates is human |
| $x$ is not $A$ | Fido is not human |
| $x$ is $y$ | Obama is the 44th U.S. President |
| $x$ is not $y$ | Italy is not the 2016 Olympic champion in Women’s Water Polo |
| All $A$ are $B$ | All dogs are mammals |
| No $A$ is $B$ | No dogs are fish |
| Some $A$ are $B$ | Some birds are flyers |
| Some $A$ are not $B$ | Some markers are not green |
For historical use onlySyllogistic logic has been completely superseded by first-order predicate logic.
A predicate logic adds objects, functions on objects, predicates, descriptions, and quantifiers (such as $\exists$ and $\forall$) to propositional logic. A first-order logic allows quantification over objects only; In a second-order logic you can quantify over first-order predicates. You can go on forever with these orders. At $\omega$-order logic, you essentially have type theory.
For each of the eight examples of syllogistic forms above, we will write the corresponding formula in first-order logic. Then we’ll try to come up with formulae in first-order logic that cannot be expressed in syllogistic logic.
Here is an example of a second-order logic formula. Do you recognize it? It’s the principle of mathematical induction on natural numbers, where $s$ is the successor function (that is, $sn = n+1$):
$$\forall P.((P0 \land \forall n.(Pn \supset P(sn))) \supset \forall n.Pn)$$
Classical Logic is probably the most widely used logic. It has several properties:
The term “classical” here does mean old or ancient. This was not the logic of the Ancient Greeks, the Ancient Chinese, or the Ancient anyone else. Classical Logic dates from the late 1800s. It’s relatively new. However, it is strongly influenced by the work of a few ancient philosophers.
Some classical logics are entirely truth-functional, which means we can give the meanings of the logical operators purely in terms of the meanings of their components. For example, in a bivalent, propositional, classical logic, we can give the following truth table:
| $p$ | $q$ | $\neg p$ | $p \land q$ | $p \lor q$ | $p \supset q$ | $p \equiv q$ |
|---|---|---|---|---|---|---|
| T | T | F | T | T | T | T |
| T | F | F | F | T | F | F |
| F | T | T | F | T | T | F |
| F | F | T | F | F | T | T |
Sometimes these are shortened to one table per operator.
| ¬ | |
|---|---|
| T | F |
| F | T |
| ∧ | T | F |
|---|---|---|
| T | T | F |
| F | F | F |
| ∨ | T | F |
|---|---|---|
| T | T | T |
| F | T | F |
| ⊃ | T | F |
|---|---|---|
| T | T | F |
| F | T | T |
| ≡ | T | F |
|---|---|---|
| T | T | F |
| F | F | T |
Classical logic is quite useful, but there are quite a few things that folks can rightly quibble over, hence the interest in non-classical logics.
In intuitionistic logic (often identified with constructive logic), we are not concerned with the truth of a statement as much as we are about its justification. Everything we assert in intuitionistic logic is something justifiable, constructively. So $A$ means “$A$ is provable” and $\neg A$ means “$A$ is refutable” (i.e., it is provable that no proof of $A$ exists—in other words, assuming $A$ allows you to derive falsity). Therefore:
Therefore:
Intuitionistic logic is not truth-functional.
Our familiar logical connectives are read quite differently:
Constructive logic codifies the principles of mathematical reasoning as it is actually practiced. In mathematics a proposition may be judged to be true exactly when it has a proof, and may be judged to be false exactly when it has a refutation. Because there are, and always will be, unsolved problems, we cannot expect in general that a proposition is either true or false, for in most cases we have neither a proof nor a refutation of it. Constructive logic may be described as logic as if people matter, as distinct from classical logic, which may be described as the logic of the mind of god. From a constructive viewpoint the judgment “φ true” means that “there is a proof of φ.” —Robert Harper, Practical Foundations of Programming Languages, Chapter 30.
Intuitionistic logic turns out to be ideal for computer science.
Learn more at Wikipedia and the SEP. And if you prefer a video introduction, here’s Attic Philosophy’s:
Sometimes bivalent systems are just too restrictive. We run into sentences like “This sentence is false” which appear to be both true and false, or sentences like “This sentence is true” which appear to be neither true nor false. Approaches to handling these seemingly self-contradictory or seemingly meaningless statements include adding to a bivalent system either (1) a third truth value for “other” or (2) two new truth values for “both true and false” and “neither true nor false”.
In general, a many-valued logic is one with three or more truth-values. Many such systems exist. We can have $3$, $4$, or even infinitely many truth values.
Don’t miss the Attic Philosophy videos on this topicSee the Logic playlist, videos 44–51, for Mark Jago’s presentations of many-valued logics, paradoxes, dialetheism, paraconsistent logics, and Curry’s Paradox.
In the case of a three-valued system, the third value is just “other” ($O$). Let’s construct the truth matrices for a truth-functional 3-valued logic. Using the laws from the section on propositional logic we can fill in almost everything:
| ¬ | |
|---|---|
| T | F |
| O | O |
| F | T |
| ∧ | T | O | F |
|---|---|---|---|
| T | T | O | F |
| O | O | O | F |
| F | F | F | F |
| ∨ | T | O | F |
|---|---|---|---|
| T | T | T | T |
| O | T | O | O |
| F | T | O | F |
| ⊃ | T | O | F |
|---|---|---|---|
| T | T | O | F |
| O | T | ? | O |
| F | T | T | T |
We have two reasonable options:
But now here’s something interesting with multi-valued logics. What does it mean for a sentence to be valid? Does it have to be (1) always true or (2) just never false? Look at these tautologies from classical logic:
| Possible Truth Values | |||
|---|---|---|---|
| Interpretation | Excluded Middle $A \lor \neg A$ | Non-Contradiction $\neg(A \land \neg A)$ | Self-Implication $A \supset A$ |
| (Classical Logic) | $T$ | $T$ | $T$ |
| Strong Kleene $K_3$ | $T,O$ | $T,O$ | $T,O$ |
| Łukasiewicz $Ł_3$ | $T,O$ | $T,O$ | $T$ |
Under the always-true interpretation of validity, none of those sentences are valid in $K_3$, and only self-implication is valid in $Ł_3$. Under the never-false interpretation, all are valid under all interpretations.
The Logic of Paradoxes ($LP$) is a three-valued logic that uses the $K_3$ truth matrices but the never-false interpretation of validity. (When folks talk about $K_3$ as a complete system they assume the always-true interpretation.) $LP$ is an example of a paraconsistent logic, which we’ll turn to now.
Resources on Many-Valued LogicsThe SEP and Wikipedia have quite a few articles on this topic. Notable ones include Many-valued Logics, Four-valued logics, The Liar Paradox, and The Logic of Conditionals.
Classical logic, and even several non-classical logics, are explosive, meaning that from a contradiction, anything and everything follows (in Latin: ex falso quodlibet, or ECQ), $ \frac{A \quad \neg A}{B}$. Here’s how it is shown in a classical logic:
A paraconsistent logic is any logic that is nonexplosive. That’s the definition. Contradictions do not collapse everything into triviality. The argument above is invalid in a paraconsistent logic. There are a few real-life situations where adopting paraconsistency is quite useful.
The big idea in paraconsistent logic is not to abolish contradictions but to contain them so the logic is not explosive. Approaches to doing so include (1) adding new truth values to essentially allow statements that are both true and false, (2) requiring premisses and conclusions to be somehow relevant to each other, and (3) keeping $A$ and $\neg A$ in separate contexts, much like two people arguing different sides of a sentence.
One well-known paraconsistent logic is $LP$ that we saw above. How is this not explosive? It’s because validity here is about falsity avoidance, so both $T$ and $O$ are its designated values (its “truthy values”). So $\frac{A\quad\neg A}{B}$ cannot be a valid argument: take $A$ to have the value $\textsf{other}$ and therefore $\neg A$ also has the value $\textsf{other}$. You cannot derive any $B$ whatsoever, since a false $B$ must never be come from designated premises!
The SEP article on Paraconsistent Logic has quite a few examples. Read the article for an in-depth look, or this video for a short introduction:
In a 3-valued logic, you get paraconsistency when the third value has “both true and false” vibes rather than “neither true nor false” vibes. So the natural next question we might ask: what if we had a logic with four values, embracing both and neither?
The Catuṣkoṭi is also known as the “Four Corners.” Propositions take on four values :
Find out more at Wikipedia and the SEP.
This 16-minute by Graham Priest is really good:
The Catuṣkoṭi is sometimes pictured as follows in logic, with the left column being True and the bottom row being False:
Here’s a modern take on the Catuṣkoṭi. Consider these four possible responses to a person asking you what they think is a yes-no question:
Here’s why it works:
And don’t miss this article by Graham Priest.
Sometimes the principle of explosion pops up because of irrelevant implications, as in these completely true statements of classical logic:
A relevance logic is a paraconsistent logic that rejects the explosion by requires the antecedent and consequent to be related to each other, usually by requiring both to share some common content (like a variable or a predicate), though there are many different ways to encode relevance.
Read about Relevance Logic in the SEP.
A discussive logic is a paraconsistent logic that allows contradictions to exist in separate contexts. It is based on the idea that two people can discuss the same topic and have different opinions about it, and both can be right in their own context. You can consider it a third “family” of paraconsistent logics (the other two being many-valued logics with a “both true and false” option and relevance logics).
We’ll not say much here, but refer you to the SEP.
A non-monotonic logic rejects monotonicity. If a logic is monotonic, then adding new information can change the set of known facts, causing previously known truths to become falsehoods. These kind of logics are good for cases where you have to retract previous knowledge when new facts are known, as in:
See the SEP article on non-monotonic logic.
Descriptions can be tricky. What if no object satisfies the description?
Russell regarded $P(\iota x.Ax)$ as an abbreviation for $\exists x.((\forall y.(Ay \equiv y=x)) \land Px)$. But this means the statement is false unless there is a unique object satisfying the description $A$ and that has the property $P$.
A free logic allows the description of terms that do not denote anything. Read about Free Logic in the SEP.
A fuzzy logic is one in which facts have a numeric truth value between $0$ and $1$, inclusive. It is a generalization of many-valued logics to an infinite number of truth values. It is useful for statements like “$X$ is tall” or “$X$ is an adult” or “The bike is new.” where truth is thought of as a matter of degree.
Do not confuse fuzzy logic with paraconsistent logic.
Do not confuse fuzzy logic with probability theory.
Read about Fuzzy Logic in the SEP.
Modal Logic deals with modalities, which qualify statements somehow. There are many different kinds of modalities, giving rise to different kinds of logics. Each can be based on classical or non-classical logics, and use numeric truth values, too.
See the SEP article on modal logic.
The basic alethic modal operators are defined as:
| Form | Meaning |
|---|---|
| $\Box A$ | It is necessary that $A$ |
| $\lozenge A$ | It is possible that $A$ |
In classical modal logic, the two operators are duals:
The basic deontic operators are defined as:
| Form | Meaning |
|---|---|
| $\mathscr{O}A$ | It is obligatory that $A$, or $A$ ought to be (MUST) |
| $\mathscr{P}A$ | It is permissible that $A$, or $A$ is allowed (MAY) |
In epistemic logic we have:
| Form | Meaning |
|---|---|
| $\mathscr{K}_x A$ | Agent $x$ knows $A$ |
| $\mathscr{K} A$ | $A$ is known (by all agents or by some agent whose identity we assume from context) |
In doxastic logic we have:
| Form | Meaning |
|---|---|
| $\mathscr{B}_x A$ | Agent $x$ believes $A$ |
| $\mathscr{B} A$ | $A$ is believed (by all agents or by some agent whose identity we assume from context) |
You may sometimes see the epistemic and the doxastic distinguished in the following context. Let $\Gamma = \exists g. G g$, i.e., there exists a $g$ such that $g$ is a god, or “(at least one) god exists.” Then:
Temporal logic deals with the modalities of time.
| Form | Meaning |
|---|---|
| $\mathbf{P}A$ | $A$ was true (at some point) in the Past |
| $\mathbf{F}A$ | $A$ will be true (at some point) in the Future |
| $\mathbf{H}A$ | $A$ Has always been true |
| $\mathbf{G}A$ | $A$ is always Going to be true |
Dynamic Logic brings events into the picture:
| Form | Meaning |
|---|---|
| $[e]A$ | “After event $e$, $A$ is necessarily true” |
| $\langle e \rangle A$ | “After event e, A is possibly true” |
Temporal vs. Dynamic Logic
Temporal logic [is] the modal logic of choice for reasoning about concurrent systems with its aspects of synchronization, interference, independence, deadlock, livelock, fairness, etc. These concerns of concurrency would appear to be less central to linguistics, philosophy, and artificial intelligence, the areas in which dynamic logic is most often encountered nowadays. — Wikipedia
In logic we are not so much concerned with the absolute truth or falsity of premises themselves, but rather with the form of arguments. We can deal with “forms” using a formal systems. Formal systems manipulate formulas.
A formal system (or calculus) is a purely syntactic mechanism used to mechanically generate formulas. It consists of a formal language (alphabet and grammar) and a set of inference rules, and operates entirely without regard to meaning or truth.
A logical system, sometimes called a formal logic, pairs a formal system with a semantics (or model). A logical system has both the syntactic machinery of proof ($\vdash$) and the semantic machinery of truth ($\vDash$), which we want to ultimately try to connect.
To define a logical system we need three parts:
What the possible formulas are
What the formulas mean
How judgments can be derived from other judgments
In more detail: A syntax gives a rigorous, formal specification of exactly what is and what is not a formula. A semantics assigns truth values to each formula, usually via reference to a model of some sort. We need only describe the semantic mappings—we don’t show how to compute them step-by-step. The inference rules are what we apply algorithmically (i.e., mechanistically, typographically, symbolically) to judgments to derive new judgments. A formula $A$ for which the non-hypothetical judgment $\vdash A\;\textsf{true}$ is so derivable is called a theorem. Inference rule application is purely syntactic: it never consults the semantics!
That last statement is important.
Inference rules operate on judgments mechanistically, independent of their semantic interpretation.
Following are three examples of logical systems.
We begin with the syntax:
This means that, for example:
p
(¬(p′′′ ∧ q) ∨ ¬¬p)
(r ⊃ p′)
are formulas, but
¬≡pp∧))′∧¬q∨(F′′
is not. Neither, by the way is
p ∧ q
since the syntax above requires parentheses around all formulae formed with binary operators. Look again, closely!
Wait, what? Parentheses are...required?In this formal syntax, yes they are. That said, you are free to write another formal syntax to capture operator precedence if you like, or you can allow for an informal representation of formulas in which precedence is assumed. That’s what we’ll do from now on.
A semantics assigns truth values to each formula. Because variables are permitted, a semantics must to take into account the truth values of variables before computing the truth values of formulas. That is, while we may be able to assign a truth value of false to $p \land \neg p$, the truth value of $p \supset q$ depends on the previously assigned values of $p$ and $q$. We call a mapping of variables to truth values an interpretation and require semantic definitions to be relative to an interpretation. Here is a semantic definition for classical propositional logic:
Don’t mix syntax and semanticsIn particular, note that $T$ is a syntactic element, a formula, just a symbol; while true is from the world of semantics.
$(\neg p \land (r \supset \neg q)) \lor p)$
under an interpretation in which $p$ is mapped to true, $q$ to false, and $r$ to true.There are quite a few different ways to represent inference rules. There are two styles of presenting them: (1) the Hilbert-style, which does not use any hypothetical judgments and separates axioms from inference rules, and (2) the Gentzen-style, which is all about hypothetical judgments. Gentzen-style is much easier for to understand and work with, and the only one we’ll be using here. Recall that hypothetical judgments are of the form:
$A_1\;\textsf{true}, ..., A_n\;\textsf{true} \vdash B\;\textsf{true}$
but, as mentioned above, since the only kind of judgment we have is that a formula is true, we can drop the $\textsf{true}$ and just write:
$A_1, ..., A_n \vdash B$
and keep in mind that is really a judgment meaning “$B$ given assumptions $A_1, ..., A_n$.” One set of inference rules for classical propositional logic is:
Latin NamesLet’s get classically educated! Impress your friends with these Latin terms:
- $T$ = Verum (sometimes written $\top$)
- $F$ = Falsum (sometimes written $\bot$)
- IMPL-ELIM = Modus Ponens (MP)
- NEG-INTRO = Reductio ad absurdum (RAA)
- FALSE-ELIM = Ex falso quodlibet (EFQ)
Also not Latin, but worth knowing: IMPL-INTRO is also called “Conditional Proof” (which kind of mirrors the funny name “Indirect Proof”)
If $\mathcal{H}$ is empty in $\mathcal{H} \vdash A$, we say $A$ is a theorem and write $\vdash A$. The sequence of inferences producing a theorem is a proof of that theorem. The goal is to get to something that does not rely on any assumptions. The theorems of a formal logic are exactly those formulas we can reach through the rules.
Finding proofs is a bit of an art form when humans do it themselves, but a very worthy endeavour to undertake to sharpen your logic skills! For complex tasks, computer programs called mechanical proof assistants or automatic theorem provers exist. These programs can systematically apply inference rules to derive theorems. The good ones are really efficient at finding the proofs, that is, they do much better than a brute-force search through all possible inferences. As with AI coding tools, you can run proofs with the human-in-charge, program helps mode; or give the prover full automation permission.
To find proofs on your own, a graphical technique, such as Fitch-style Natural Deduction is powerful. Watch Attic Philosophy’s video #11, video #12, and video #72 in the Logic playlist for a great tutorial on doing proofs with this technique. It works for propositional and first-order logic. Some automated theorem provers use this mechanism internally as well!
You can find additional information on this technique at Wikipedia and Stanford Encyclopedia of Philosophy. We’ll offer just a simple example, a proof of the theorem $\vdash p \land (p \supset q) \supset (p \land q)$:
Derived RulesThe set of inference rules defining a logical system can be extended with derived rules which are those that can be proven using the existing rules. These make things much more convenient for a human doing proofs (if you’re a programmer, think of writing new procedures and functions).
Examples of derived rules that you can prove for classical propositional logic include modus tollens (MT), disjunctive syllogism, the “law” of excluded middle (EM), and double negation elimination (DNE) and a few others:$$ \frac{\mathcal{H} \vdash A \supset B \quad\;\; \mathcal{H} \vdash \neg B}{\mathcal{H} \vdash \neg A}\;{\tiny \textrm{MT}} $$ $$ \frac{\mathcal{H} \vdash \neg\neg A}{\mathcal{H} \vdash A}\;{\tiny \textrm{DNE}} $$ $$ \frac{}{\mathcal{H} \vdash A \lor \neg A}\;{\tiny \textrm{EM}} $$ $$ \frac{\mathcal{H} \vdash A \lor B \quad\;\; \mathcal{H} \vdash \neg A}{\mathcal{H} \vdash B}\;{\tiny \textrm{DISJ-SYLL}} $$ $$ \frac{\mathcal{H} \vdash A \supset B \quad\;\; \mathcal{H} \vdash B \supset C}{\mathcal{H} \vdash A \supset C}\;{\tiny \textrm{IMPL-TRANS}} $$ $$ \frac{\mathcal{H}\vdash A \land B \supset C}{\mathcal{H}\vdash A \supset (B \supset C)}\;{\tiny \textrm{CURRY}} $$ $$ \frac{\mathcal{H}\vdash A \supset (B \supset C)}{\mathcal{H}\vdash A \land B \supset C}\;{\tiny \textrm{UNCURRY}} $$
Here is how we derive modus tollens:
We are going to show exactly how to derive the other derived rules.
Yet another reminder: theoremhood is syntactic, not semanticTheorems are statements that can be derived using the rules of inference, regardless of their truth in any particular model. Proving a theorem is mechanical and syntactic. Truth comes from the semantics. Proof and truth are distinct concepts. We will connect them in our section on metalogic, below.
Surprise: you get Intuitionistic Propositional Logic by taking Classical Propositional Logic and simply removing the inference rule INDIRECT-PROOF.
That’s it!
That one simple change is all you need. It makes it impossible to derive excluded middle and double negation elimination and other rules that intuitionists do not accept. It’s rather interesting to show that for most of the classical rules that don’t exist in intuitionistic logic (those that require indirect proof to show), there is a corresponding rule that is intuitionistically (and classically) valid:
| Classical ONLY | Works in Intuitionistic also |
|---|---|
| (EM) $\dfrac{}{A \lor \neg A}$ | (NC) $\dfrac{}{A \land \neg A}$ |
| (DNE) $\dfrac{\neg \neg A}{A}$ | (DNI) $\dfrac{\neg A}{\neg \neg A}$ |
| (IMP-TO-DISJ) $\dfrac{\neg A \supset B}{A \lor B}$ $\dfrac{A \supset B}{\neg A \lor B}$ | (DISJ-TO-IMP) $\dfrac{A \lor B}{\neg A \supset B}$ $\dfrac{\neg A \lor B}{A \supset B}$ |
| (DeMORGAN-NAND) $\dfrac{\neg (A \land B)}{\neg A \lor \neg B}$ | (DeMORGAN-NOR) $\dfrac{\neg (A \lor B)}{\neg A \land \neg B}$ |
| (CONTRAPOS-NEG-ELIM) $\dfrac{\neg B \supset \neg A}{A \supset B}$ | (CONTRAPOS-NEG-INTRO) $\dfrac{A \supset B}{\neg B \supset \neg A}$ |
Starting with the syntax:
Parentheses can be removed as long as precedence is respected.
The semantics for first-order logic is significantly more involved than for propositional logic (it requires a domain of discourse and an interpretation of constants and function symbols as objects/functions over that domain), so we’ll leave those details for later.
However, the inference rules are a modest, concise extension of what we’ve already seen.
For the history of how first-order logic came to be the workhorse of mathematics and semantics, see this really cool SEP article.
There are many higher-order logics, each with different features and expressive power. In most of these systems, the core idea is that every term has a type, and so higher order logics are sometimes called type theories. We’ll therefore defer discussion of these logics to our notes on Type Theory.
For alethic modal logic, which add the operators $\Box$ and $\lozenge$ to predicate logic, there are quite a few versions, based on the axioms and inference rules they add to the underlying logic. Here are some examples:
We’re interested ultimately in valid reasoning—what follows from what—so let’s define some terms:

By allowable interpretations we mean the interpretations that are permitted by the rules and constraints of the logical system we are working within.
In practice, you might hear people use the term “valid” rather loosely, but try to keep in mind the exact definition of this term.
More terms! A formula is a:
The definition of truth in a system is generally just stated in precise natural language, or with semantic functions (as in our example above). The derivation of theorems, however, is a purely mechanical process. We would like to know how well, in a logistic system, theorem derivation (proof) correlates with truth (keeping in mind the notion of truth varies between systems).
The reasoning about logistic systems themselves is called metalogic.
Here are some questions useful for your spaced repetition learning. Many of the answers are not found on this page. Some will have popped up in lecture. Others will require you to do your own research.
null thing.We’ve covered: