A library for generating truth tables
Compose logic expressions with the logic operators: l-and(a, b), l-or(a, b),
l-imp(a, b), l-iff(a, b), l-not(a), where a and b can be either
other expressions created with operators, atomic variables/propositions
(which can be created with "name" or
l-var("name", repr: $custom_representation$)), and boolean values
(true or false).
Then, for any expression, you may write #truth-table(expr) to generate its
truth table.
Note that it gets ugly if there are too many columns, so make sure to mark any
excessive columns with skip: true (e.g. l-and(a, b, skip: true)) will not show
the possible values for "a and b" in the table).
You may also create your own n-ary operator by invoking l-operator("ITS_NAME", a, b, ..other_children, value: variable_mapping => {/* calculate truth value based on a dict (VARIABLE_NAME: true_or_false) */}, repr: $my_operators_appearance$). Regarding value, note that you may get your children's
truth value based on the given variable map with (child.value)(variable_mapping).
See examples/ for some examples.
