This short project is inspired by avbop's "Syllogisms" repository, my implementation of propositional and predicate logic, and a paper titled "The four essential Aristotelian syllogisms, via substitution and symmetry" by Vaughn R. Pratt: http://boole.stanford.edu/pub/nemhaj.pdf.
avbop's "Syllogisms" repository can be found here: https://github.com/avbop/syllogisms/tree/master. Their method correctly reduces 18/24 valid syllogisms, while this method correctly reduces all 24.
Pratt points out that obversion, conversion, and contraposition can be used as edges to form two connected graphs of valid syllogisms, that this allows us to think of one syllogism as being "reduced" to another, and claims that this is the central desired property of a proof theory. Here I implement his descriptions of obversion, conversion, and contraposition to check that all valid syllogisms eventually reduce to one of four chosen as end points, and that no invalid syllogisms do.
Moreover, this script can easily be adapted to check what subsets of syllogisms may be used as endpoints to reduce any other set of syllogisms. ('Darii', 'Celaront'),('Darii', 'Barbari'), ('Celarent', 'Celaront'), and ('Celarent', 'Barbari') are the smallest sets of first-figure end points found by this script that are sufficient to reduce all 24 valid moods by these rules. There are at least 72 sets of two moods taken from any figure capable of serving as endpoints for the reduction of all valid syllogisms and no invalid syllogisms: 4 from the first figure, 4 from the second figure, 4 from the third figure, 6 from the fourth figure, and 54 from cross-figure combinations.