Propositional Logic
A rust library for generating the truth table of any single compound proposition.
only has one dependency: cli_table
Usage
truth_table! macro
this macro only creates and returns the truth table.
use *;
use ;
let compound_proposition = ;
// giving it a function (any function with boolean input and output works, technically)
let table: TableStruct = truth_table!;
// giving it an inline proposition (similar to a closure)
let table: TableStruct = truth_table!;
// giving it both (you can give it as many as you want)
let table: TableStruct = truth_table!;
assert!;
Outputs:
+-------+-------+-------+----------------------+-----------------------------+
| p | q | r | compound_proposition | inline_compound_proposition |
+-------+-------+-------+----------------------+-----------------------------+
| true | true | true | false | false |
+-------+-------+-------+----------------------+-----------------------------+
| true | true | false | false | false |
+-------+-------+-------+----------------------+-----------------------------+
| true | false | true | false | false |
+-------+-------+-------+----------------------+-----------------------------+
| true | false | false | false | false |
+-------+-------+-------+----------------------+-----------------------------+
| false | true | true | true | true |
+-------+-------+-------+----------------------+-----------------------------+
| false | true | false | false | false |
+-------+-------+-------+----------------------+-----------------------------+
| false | false | true | true | true |
+-------+-------+-------+----------------------+-----------------------------+
| false | false | false | false | false |
+-------+-------+-------+----------------------+-----------------------------+
print_truth_table! macro
use *;
let compound_proposition = ;
// giving it a function (any function with boolean input and output works, technically)
print_truth_table!;
println!;
// giving it an inline proposition (similar to a closure)
print_truth_table!;
println!;
// giving it both (you can give it as many as you want, but every item must have a comma at the end (even the last one))
print_truth_table!;
Output:
+-------+-------+----------------------+
| p | q | compound_proposition |
+-------+-------+----------------------+
| true | true | true |
+-------+-------+----------------------+
| true | false | false |
+-------+-------+----------------------+
| false | true | false |
+-------+-------+----------------------+
| false | false | true |
+-------+-------+----------------------+
+-------+-----------------------------+
| p | inline_compound_proposition |
+-------+-----------------------------+
| true | false |
+-------+-----------------------------+
| false | true |
+-------+-----------------------------+
+-------+-------+----------------------+-----------------------------+
| p | q | compound_proposition | inline_compound_proposition |
+-------+-------+----------------------+-----------------------------+
| true | true | true | false |
+-------+-------+----------------------+-----------------------------+
| true | false | false | false |
+-------+-------+----------------------+-----------------------------+
| false | true | false | true |
+-------+-------+----------------------+-----------------------------+
| false | false | true | true |
+-------+-------+----------------------+-----------------------------+