From 51f99a87abb17fa64c719a52ac726c839d685e53 Mon Sep 17 00:00:00 2001 From: Alexander Rosenberg Date: Tue, 3 Sep 2024 18:25:54 -0700 Subject: [PATCH] Add README.md --- README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f6dabe8 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# Truth Table +This is a simple truth table generator. For more information about truth tables, +please see the [relevant Wikipedia article][1]. + +[1]: https://en.wikipedia.org/wiki/Truth_table + +To build, just run `make`. You will need SBCL, as well as 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 +`truth-table.lisp` for all the variations supported by this program. + +Here is the help output from the program: +```text +usage: truth-table [options] + + -h, --help print this message, then exit + -f, --format= 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: +```text +$ truth-table '(a /\ b) -> ~b' + +┌───┬───┬────────────┐ +│ a │ b │ a ∧ b → ¬b │ +├───┼───┼────────────┤ +│ ⊤ │ ⊤ │ ⊥ │ +│ ⊤ │ ⊥ │ ⊤ │ +│ ⊥ │ ⊤ │ ⊤ │ +│ ⊥ │ ⊥ │ ⊤ │ +└───┴───┴────────────┘ +```