Enough LaTeX for basic logic typesetting

I’m currently taking a (meta)logic class. There are assigned problem sets. A lot of people either don’t know how to type logical symbols or else cannot be bothered to fight with Word. I’m a fan of LaTeX. I like it for several reasons, one of them being easy use of logical symbols.

There are a lot of guides to using LaTeX. To my knowledge, none start from nothing and end with just what’s needed for a logic class. So here I fill in that void. My goal is to be comprehensive enough to cover what’s needed to type up assignments for a logic class while not including anything else so someone can be up and running with just this guide in a few minutes.

Setting Up

First, you need something to edit your text and something to compile it to a PDF or whatever other format you like. I personally use Overleaf. It’s a free, online application that lets you type in one column with live updates to what it looks like on the page in the other column. It also has templates, allows collaboration, and has some other nice features that are not important to our purposes here. (Full disclosure: The link is a referral link. If you refer people, you get extra storage space and pro features for free. The default free features and space are fine, though.)

There are other popular options. If you need to compile offline, I suggest TeXmaker. If you go this route, you need to download MiKTeX. If you want to write something very long, you may want to type into a text editor and then copy and paste into Overleaf or TeXmaker. (By “long” I mean over fifty pages, give or take based on things like included pictures.)

Onto the actual typing process. If you’re using Overleaf, go to the “My Projects” page and then create a new project. Choose “blank paper”. Then you’ll have this code:

\documentclass{article}
\usepackage[utf8]{inputenc}
\begin{document}
(Type your content here.)
\end{document}

If you’re not using Overleaf, go ahead and put that code into your document.

There is a bit of tweaking to the basic template to make this better. Before the \begin{document} line, add a line containing just \usepackage{amsmath}. Then add lines with add \title{TITLE} and \author{NAME}. Then after the \begin{document} line, add a line saying \maketitle. If you want it to not be huge, type \small\maketitle\normalsize. (The \small makes it small. The \normalsize makes the stuff after it normal size.) At this point my document looks like this.

\documentclass{article}
\usepackage[utf8]{inputenc}
\title{Phil 125 Homework Set 2}
\author{Nichole Smith}
\begin{document}
\small\maketitle\normalsize
(Type your content here.)
\end{document}

Typing the Document

Everything after this replaces “(Type your content here.)”.

  • Typing letters and numbers works as you would expect. Certain symbols are used by the code so typing them is not straightforward. (The & and squiggle brackets are the most notable here.)
  • Single line breaks are ignored. So if you type some stuff, hit return/enter, and then type some more, it will show up as one paragraph. (This can be useful. I like to type every step of a proof in a new line. Then it compiles into a paragraph.)
  • Double line breaks give you a new paragraph.
  • If you want extra space, use \vspace{1cm} as its own paragraph. You can choose lengths other than 1cm if you want.

Onto the logic specific stuff. Of critical importance is math mode. Whenever you surround text with dollar signs ($) LaTeX treats it as mathematical symbols. So, if you type $x$ it will be italicized like a variable should be. Math mode does not have spaces. So $two words$ will not have a space between them. (If you need a space while in math mode for some reason, “\ ” gives you a space. That is a backslash with a space after it.)

Note all logical symbols have to be typed in math mode. The logical symbols:

  • \land gives you the and symbol
  • \lor gives you the or symbol
  • \lnot gives you the not symbol
  • \rightarrow gives you the material conditional arrow
  • \Rightarrow gives you the logical implication arrow
  • \leftrightarrow gives you the biconditional arrow
  • \Leftrightarrow gives you the logical equivalence arrow (So, capitalizing the arrow tags makes them the bigger arrows)
  • = is the equal sign
  • Parentheses are parentheses
  • \subset gives you the strict subset symbol
  • \subseteq gives you the subset symbol
  • In general, typing \not immediately before another symbol puts a slash through it. E.g. \not\subseteq gives you the not a subset symbol
  • \in gives you the element symbol
  • \times gives you the times sign
  • \neq gives you the not equal sign
  • > and < can be typed directly. To get the or equal to versions, type \geq or \leq
  • \emptyset gives you the empty set symbol
  • \{ and \} give you squiggle brackets
  • \& gives you the & symbol
  • \top and \bot give you the tautology and contradiction symbols.
  • \Alpha and \alpha give you upper and lower case alpha. The other Greek letters are similar.
  • | gives you the Sheffer stroke and \downarrow gives you the Peirce dagger.
  • An underscore gives you subscript. A caret gives you superscript. E.g. p sub 1 is typed $p_1$.
  • \hdots gives you a nice ellipsis. Use \cdots if you want them elevated to the middle of the line.
  • Anything on a line after % will not be compiled. So if you want to make a note to self, you can.

I think this covers it. Most of them are pretty straightforward. If you do need more, this webpage has a nifty list. Or, detexify lets you just draw what you want, and it gives you the code. At this point you’re ready to type stuff.

I will provide an example now. Say problem 2 asks you to symbolize “neither both p and q, nor q only if p” with the and, material conditional, and nor operators. Then you type:

2. The sentence “neither both $p$ and $q$, nor $q$ only if $p$” symbolized with the and, material conditional, and nor operators is $(p\land q)\downarrow(q\rightarrow p)$.

Truth Tables

LaTeX can also handle tables very nicely. If you’re lazy, there are online tools to make tables. They have quite a few options. You’re probably fine using that.

I prefer more control for my truth tables. Again, you’re fine without. But in case anyone is interested, I’ll explain. Maybe you’ll want to be able to edit the code the generator spits out. (I often use a generator to start and then tweak as needed.) First, here’s the code for the truth table for p_1 or not p_1:

\begin{tabular}{c|cccc}
$p_1$ & $p_1$ & $\lor$ & $\lnot$ & $p_1$ \\
\hline
T & & \textcolor{red}{T} & F & \\
F & & \textcolor{red}{T} & T & \\
\end{tabular}

How do you construct this thing? First set up the tabular environment:

\begin{tabular}{}
\end{tabular}

The second set of squiggle brackets after \begin let you set up the columns. Each c gives a center aligned column. If you want left or right aligned columned, use l or r instead of c. Yes, you can mix the three. The | gives a vertical line going down the entire table. Note for truth tables you want a column for every single symbol. That way nothing is under the variables and you can have a straight line of Ts and Fs under the connectives. So, for p_1 or not p_1 we want a column for p_1, a bar, then columns for each of p_1, or, not, and p_1. That’s four more. So, we have:

\begin{tabular}{c|cccc}
\end{tabular}

We have the table set up. Now to fill it in. The first line of the table has the atomic sentences on the left and then the sentence in question on the right. Type the content of each column, separated by &. Then end the line with \\. So, to have the first line of the truth table:

\begin{tabular}{c|cccc}
$p_1$ & $p_1$ & $\lor$ & $\lnot$ & $p_1$ \\
\end{tabular}

To have the horizontal line, type \hline on its own line. Then more on to the next row, doing the same thing you did for the first row. Note that if you want nothing in a certain spot, just leave the space between the two &s empty. So, for the second row, you want a T under the first p_1 (The one on the left side of the table), then nothing under the first one on the right, then a T under the and sign, an F under the not sign, and then nothing under the last p_1. The third line is similar.  Now we have:

\begin{tabular}{c|cccc}
$p_1$ & $p_1$ & $\lor$ & $\lnot$ & $p_1$ \\
\hline
T & & T & F & \\
F & & T & T & \\
\end{tabular}

This is a fine truth table. But, maybe you want to bold the truth values for the main connective. To make T bold, type \textbf{T}. You can replace “T” with other text, of course. If you’re using Overleaf, highlighting the text and pressing Ctrl+B will put the tag in automatically.

This brings us to the complete table as quoted in the beginning of this section.

The comment section is open. Questions and suggestions are welcome.

(Edit notes: As Soren pointed out, I originally put the wrong symbol for commenting. I also realized the amsmath package is not needed, so I removed that. Since these are usually printed in black and white anyway, I got rid of color in favor of boldface type. This has the added benefit of avoiding the need for packages entirely. In the third edit I added the \leq and \geq tags as well as \hdots because I realized they’re needed for indexing variables. \hdots requires the amsmath package, so I added that line back in. Using bold instead of color still seems to be better.)

Advertisements

Quote of the Day 2016-12-06: Bertrand Russell

“By the law of excluded middle, either “A is B” or “A is not B ” must be true. Hence either “the present King of France is bald” or “the present King of France is not bald” must be true. Yet if we enumerated the things that are bald, and then the things that are not bald, we should not find the present King of France in either list. Hegelians, who love a synthesis, will probably conclude that he wears a wig.” (from “On Denoting”)

The Most Obnoxious Argument

I see this argument far too often, usually in a limited quantity of forms, but across a wide variety of topics. The argument goes:

  1. S entails x.
  2. x is good/bad.
  3. Therefore is good/bad.
  4. entails y.
  5. Therefore is good/bad.

The word “entails” might be better swapped out for “includes” or some other verb depending on what S is. Usually the work is done with a sneaky shift in what’s meant by S. A lot of bad arguments on the web about feminism are subject to this.

  1. Feminism entails equality across gender.
  2. Equality across gender is good.
  3. Therefore feminism is good. (Or, “If you think men and women are equal, you’re a feminist.”)
  4. Feminism entails #KillAllMen.
  5. Therefore #KillAllMen is good.

Often this is played out contrapositively: If you think #KillAllMen isn’t good, you must be anti-feminist, which means you must be anti-gender-equality. This is, of course, silly. We can fight over what precisely the word “feminism” means, or just agree that there are multiple senses of it or homonyms in play (i.e. either the equality feminism and killing feminism are two kinds of feminism or there’s actually two words, pronounced and spelled the same, but with different meanings.) We can also just give the term to the other party and pick a new word to conveniently label a bundle of beliefs. (Or just state the whole bundle. This has issues for brevity, which in too many media is required to a stupid degree.)

This same basic line of thought is used to put words into others’ mouths or try to force them to make the contrapositive argument. For example, a communist may support public ownership of the means of production. Someone arguing against them may claim communism clearly involves killing millions of people, so it must be bad. That means communism must also be bad and thus public ownership of the means of production must be bad. Again, either we can play some games with the word “communism” or move over. (Other factors will come into play here as well. For this example in particular, “socialism” has had its meaning for many Americans shifted far to the right, leaving only “communism” which still leaves a bad taste for many.)

Ideally people would stop making this argument. In the absence of this ideal, I’m partial to acknowledging the usage disparities up front and defining words explicitly, easily hedging to use a different label for a set of beliefs. Granted, there is still the possibility of insisting on making this argument. Someone who is hostile to Christianity and also likes this argument may say Christians did the Crusades which were bad. Therefore Christianity is bad. Christianity includes believing Christ is the Son of God. Therefore believing Christ is the Son of God is bad. Ignoring the jump from Christians doing something to Christianity including something, someone not super attached to words may just make a new word. If I were a Christian who believed in Christ being the Son of God but thought the Crusades were bad, I might decide to tie all that up in, say, “Orichalchist”. So in this case I can say, sure, Christianity (i.e. Christ is Son + Crusades) is bad and Orichalcism (i.e. Christ is Son + anti-Crusades) is good. At this point the hostile may claim the Christ is Son thesis is sufficient to be a Christian, and being a Christian necessarily entails endorsing the Crusades. (I.e. there’s a non-necessary condition that’s necessary.) The argument is even more clearly absurd.