Sentential Logic and

Deductive Reasoning


In the winter of 2002, I took an introductory logic course at Columbia College. Midway through, I came up with a simple idea: Make a program to take any deductive argument, and have it decide whether the argument is valid or not, after all logic is a computer's native language. But as I started coding, I realized that I would never be done by the end of the semester. I got far enough into it, however, that I couldn't turn back. Here's what I came up with.


Current Status

So far, I have a working, fairly stable version. The problem that I'm facing, though, is the exponential growth of truth value combinations. What I mean is, each term involved in an argument can either be true, or false. So if one term is involved, there are only two truth value combinations. But what happens if more than one term is involved? Well, two terms would be four combinations; three terms would be eight combinations; four terms would be sixteen combinations, and so on. If we assume the terms involved are only one character in length, that would give us twenty-six terms available for use in an argument. Twenty-six terms, the maximum allowed, would produce 67,108,806 combinations of truth values. Theoretically, the code I have developed can handle this volume of truth value combinations. In practice, well, imagine a tranquilized cheetah.


The code

The source code, documentation, and other stuff is freely available to the public, or private for that matter, and can be found here. The code may be modified, altered, changed, melted, burned, smoked, or used without prejudice. If you have any questions you may direct them to me, Andrew Brian Church, at


Mine Gracious Host

I would like to thank for hosting this project. Organizations like allow developers around the world to combine, co-operate, learn, and unify. Click on the image below to go to their home page.