Update README.md

This commit is contained in:
Alexander Rosenberg 2024-09-14 01:18:20 -07:00
parent bbc02349af
commit 627c62772b
Signed by: Zander671
GPG Key ID: 5FD0394ADBD72730

View File

@ -4,24 +4,41 @@ please see the [relevant Wikipedia article][1].
[1]: https://en.wikipedia.org/wiki/Truth_table [1]: https://en.wikipedia.org/wiki/Truth_table
To build, just run `make`. You will need SBCL, ASDF, and Quicklisp. Quicklisp is There is an instance of the web version of this program hosted here: [tt.zander.im][2]
used to load `uiop` and `with-user-abort`.
[2]: https://tt.zander.im/
This repository contains three things: a Common Lisp library to parse and
manipulate propositional logic expressions, a command line truth table
generator, and a web-based truth table generator.
To build the CLI version, just run `make`. You will need SBCL, ASDF, and
Quicklisp. Quicklisp is used to load `uiop` and `with-user-abort`.
To run the web server, execute `./truth-table-web-wrapper`. If you want to run
it in the background, I recommend using something like GNU Screen. The web
server supports `-h` and `--help`, you can use them to see all the options it
supports. It should be noted, however, that it does not support HTTPS. If you
want to use HTTPS, run the web server behind something like Nginx or HAProxy.
The format of the input propositions is fairly free-form. The above Wikipedia 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 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 operators. You can also take a look at the table near the top of `parse.lisp`
`parse.lisp` for all the variations supported by this program. for all the variations supported by this program.
Here is the help output from the program: ### CLI Usage
Here is the help output from the CLI (not web) program:
```text ```text
usage: truth-table [options] <propositions...> usage: truth-table [options] <propositions...>
-h, --help print this message, then exit -h, --help print this message, then exit
-f, --format=<arg> specify the output format (*unicode*, ascii, or latex) -f, --format=<arg> specify the output format (*unicode*, ascii, latex, or html)
-s, --subexps include sub-expressions in the output table -s, --subexps include sub-expressions in the output table
-n, --no-vars do not include variables in the output table -n, --no-vars do not include variables in the output table
-m, --multi-char allow multi-character variable names -m, --multi-char allow multi-character variable names
-i, --no-implicit do not use implicit 'and' operations -i, --no-implicit do not use implicit 'and' operations
-p, --pretty pretty print latex, html, etc. output
-l, --latin use the Latin T and F characters for truth values
The choice surrounded by '*' is the default. Arguments to long The choice surrounded by '*' is the default. Arguments to long
options are also required for their short variant. options are also required for their short variant.
@ -30,7 +47,6 @@ options are also required for their short variant.
Here is an example truth table: Here is an example truth table:
```text ```text
$ truth-table '(a /\ b) -> ~b' $ truth-table '(a /\ b) -> ~b'
┌───┬───┬────────────┐ ┌───┬───┬────────────┐
│ a │ b │ a ∧ b → ¬b │ │ a │ b │ a ∧ b → ¬b │
├───┼───┼────────────┤ ├───┼───┼────────────┤