Truth table generator
.gitignore | ||
build.lisp | ||
cli.lisp | ||
eval.lisp | ||
LICENSE | ||
Makefile | ||
packages.lisp | ||
parse.lisp | ||
README.md | ||
table.lisp | ||
truth-table.asd | ||
typeset.lisp |
Truth Table
This is a simple truth table generator. For more information about truth tables, please see the relevant Wikipedia article.
To build, just run make
. You will need SBCL, ASDF, and Quicklisp. Quicklisp is
used to load uiop
and with-user-abort
.
The format of the input propositions is fairly free-form. The above Wikipedia
article has some information about their format, as well as possible symbols for
operators. You can also take a look at the table near the top of
parse.lisp
for all the variations supported by this program.
Here is the help output from the program:
usage: truth-table [options] <propositions...>
-h, --help print this message, then exit
-f, --format=<arg> specify the output format (*unicode*, ascii, or latex)
-s, --subexps include sub-expressions in the output table
-n, --no-vars do not include variables in the output table
-m, --multi-char allow multi-character variable names
-i, --no-implicit do not use implicit 'and' operations
The choice surrounded by '*' is the default. Arguments to long
options are also required for their short variant.
Here is an example truth table:
$ truth-table '(a /\ b) -> ~b'
┌───┬───┬────────────┐
│ a │ b │ a ∧ b → ¬b │
├───┼───┼────────────┤
│ ⊤ │ ⊤ │ ⊥ │
│ ⊤ │ ⊥ │ ⊤ │
│ ⊥ │ ⊤ │ ⊤ │
│ ⊥ │ ⊥ │ ⊤ │
└───┴───┴────────────┘