Hatt
Hatt is a command-line program which prints truth tables for expressions in classical propositional logic, and a library allowing its parser, evaluator and truth table generator to be used in other programs.
It’s written in Haskell, and is available from Hackage, so if you have the cabal-install program it’s very easy to install; from the terminal you can just run the following commands.
$ cabal update
$ cabal install hatt
Then you can use the hatt binary to evaluate expressions. Use the --help flag to see a list of available commands.
$ hatt --evaluate="(A <-> (B | ~C))" --pretty
A B C | (A ↔ (B ∨ ¬C))
----------------------
T T T | T
T T F | T
T F T | F
T F F | T
F T T | F
F T F | F
F F T | T
F F F | F
The following are all valid expression forms which can be parsed by Hatt, where ϕ and ψ are metalinguistic variables standing in for any valid expression.
- Variables:
P,Q,a,betc.—basically anything in the character class[a-zA-Z] - Negation:
~ϕ - Conjunction:
(ϕ & ψ) - Disjunction:
(ϕ | ψ) - Conditional:
(ϕ -> ψ) - Biconditional:
(ϕ <-> ψ)
For top-level formulae where the primary connective is a binary one, parentheses are not required. For example, the expression a | b is valid and will be parsed correctly.