Book Cover
Book Cover


forall x is a full-featured textbook on formal logic. It covers key notions of logic such as consequence and validity of arguments, the syntax of truth-functional propositional logic TFL and truth-table semantics, the syntax of first-order (predicate) logic FOL with identity (first-order interpretations), translating (formalizing) English in TFL and FOL, and Fitch-style natural deduction proof systems for both TFL and FOL. It also deals with some advanced topics such as truth-functional completeness. Exercises with solutions are available. It is provided in PDF (for screen reading, printing, and a special version for dyslexics) and in LaTeX source code. A proof editor/checker for the proof system used is available at

Download links below.

Credits and License

The forall x: Calgary Remix is based on forall x: Cambridge, by Tim Button used under a CC BY 4.0 license, which is based in turn on forall x, by P.D. Magnus used under a CC BY 4.0 license, and was remixed, revised, & expanded by Aaron Thomas-Bolduc & Richard Zach. It includes additional material from forall x by P.D. Magnus and Metatheory by Tim Button, both used under a CC BY 4.0 license, and from forall x: Lorain County Remix, by Cathal Woods and J. Robert Loftis, used with permission.

Creative Commons License

This work is licensed under a Creative Commons Attribution 4.0 International License.

The LaTeX source code for this work is available on GitHub at


You can download PDFs of the files here:

Note that these files change whenevery the source files are changed. So if you use the text in a course, better to download the PDFs and make them available to students directly, than to link here.

Buy a Printed Copy

If you’d like to purchase a nice paperback copy, you can do so on Amazon (Canada, UK) (or use search in your local Amazon store).

(The process for getting the book printed is described here and here.)

Make PDFs Yourself

Clone the GitHub repository locally or download the ZIP file and run LaTeX on one of

  • forallxyyc.tex (in color, for screen reading)
  • forallxyyc-accessible.tex (accessible version)
  • forallxyyc-print.tex (b/w, for printing on Quarto stock)
  • forallxyyc-letter.tex (b/w, for printing on regular letter-size paper)

You’ll have to run makeglossaries to produce the glossary as well.

To make changes to the definitions in the preamble and forallyyc.sty file, put them in a file named forallxyyc-local.sty. For instance, to get the connectives to be & for and and horseshoe for the conditional, copy forallxyyc-local-sample.sty to that file.