Truth table generator
Go to file
2024-09-06 14:58:47 -07:00
.gitignore Finish port to asdf and make webserer template files 2024-09-04 03:49:47 -07:00
arguments.lisp Make web server 2024-09-05 14:46:05 -07:00
base-packages.lisp Make web server 2024-09-05 14:46:05 -07:00
build.lisp Make web server 2024-09-05 14:46:05 -07:00
cli.lisp Make web server 2024-09-05 14:46:05 -07:00
eval.lisp Move to new parser 2024-09-06 14:21:17 -07:00
LICENSE Refactor to use ASDF 2024-09-04 03:14:57 -07:00
Makefile Make web server 2024-09-05 14:46:05 -07:00
parse.lisp Fix some typos 2024-09-06 14:58:47 -07:00
README.md Update README.md 2024-09-04 03:16:05 -07:00
table.lisp Make web server 2024-09-05 14:46:05 -07:00
truth-table-web-wrapper Update truth-table-web-wrapper 2024-09-05 16:41:04 -07:00
truth-table.asd Make web server 2024-09-05 14:46:05 -07:00
typeset.lisp Fix some typos 2024-09-06 14:58:47 -07:00
web.lisp Remove prefix option 2024-09-05 19:01:22 -07:00

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 │
├───┼───┼────────────┤
│  │     ⊥      │
│  │ ⊥ │           │
│ ⊥ │       │
│ ⊥ │ ⊥ │           │
└───┴───┴────────────┘