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, b etc.—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.