Esto va muy profundo en realidad. Es extraño que Wikipedia nunca lo mencione.
Lo que está buscando son pruebas muy duras que, probablemente, se puedan alcanzar con cosas como las pruebas de Fitch . Así que estamos tratando de deducir cosas de nuestros datos dados. Hay muchos constructores a prueba de Fitch que hacen mucho trabajo por ti. Pero algunos ejercicios simplemente no son a prueba.
No sé si el usuario debe hacer los cálculos. Si es así, tenga en cuenta cosas como 3SAT , que son problemas que no se pueden deshacer para el tiempo polinómico.
En cuanto a las estructuras de datos que desea utilizar, creo que desea tener algún tipo de Rule
clase. La regla puede ser cualquier cosa, según el tipo. No hay muchas reglas en la lógica de predicados , por lo que esto se puede superar heredando (if, iff, and, or, not ...). Estas reglas solo tienen que ser evaluadas. Y lo único que puede hacer una regla es devolver verdadero o falso. Porque eso es lo que haces con la lógica de predicados. En la universidad, John Kelly me recomendó leer este libro .
Volviendo a las clases: debería ver estos problemas como vería la implementación de cálculos normales con las matemáticas. ¿Qué es un +
operador? Contiene dos parámetros, que pueden ser una nueva ecuación por sí misma, o simplemente un número. Creo que tienes lo mismo con las reglas. Pueden tener nuevas Reglas como parámetro, o simplemente un booleano (llamado predicado).
Espero que esto te ayude mucho, especialmente las referencias. Si quieres saber más, o si voy en la dirección equivocada, dímelo.