Te comento que tienes que trabajar con lógica Proposicional. Vamos, básicamente lo que estas haciendo, unas proposiciones que son las variables, y las conectivas que son los enlaces(&&, |, etc...).
El problema que tienen estos programas es que el algoritmo de resolución básico que harías(que son las tablas de verdad) tiene esta forma:
2^n
Donde n es el número de proposiciones(ya que pueden ser verdaderas o falsas).
Es un verdadero problema, ya que una vez que tengas un gran número de proposiciones se va a disparar el número de ejecuciones que vas a realizar. Para eso se han creado una serie de métodos(como sacarlo por contradicción) que hacen que el algoritmo tenga una complejidad menor. De hecho, asi fue como surgio uno de los primeros problemas np complejos, que todavia sigue sin resolver.
Pero bueno, el caso es que hay una pagina en la que se compite por ver quien es capaz de idear el algoritmo mas eficiente:
http://www.satcompetition.orgSe trata de saber si una fórmula es satisfacible, lo que usaras para ver si un razonamiento es correcto(el razonamiento deberia de ser siempre satisfacible).
http://es.wikipedia.org/wiki/Problema_de_satisfacibilidad_booleana#AlgoritmosEn el apartado de algoritmos tienes un resumen, yo que tu me lo leeria, ya que el tema de logica es muy importante en el desarrollo de la computacion y la algoritmia en general, ademas de ser realmente fascinante.
Cualquier duda pregunta, que probablemente me pase poniendo conceptos XD
Un saludo!