Sabemos por el teorema de Church que determinar la satisfacción de primer orden es indecidible en general, pero existen varias técnicas que podemos usar para determinar la satisfacción de primer orden. Lo más obvio es buscar un modelo finito. Sin embargo, hay una serie de declaraciones en la lógica de primer orden que podemos demostrar que no tienen modelos finitos. Por ejemplo, cualquier dominio en el que opera una función inyectiva y no sobreyectiva es infinito.
¿Cómo demostramos la satisfacción de las declaraciones de primer orden cuando no hay modelos finitos o se desconoce la existencia de modelos finitos? En la demostración automatizada de teoremas podemos determinar la satisfacción de varias maneras:
- Podemos negar la oración y buscar una contradicción. Si se encuentra uno, demostramos la validez de primer orden de la declaración y, por lo tanto, la satisfabilidad.
- Usamos saturación con resolución y nos quedamos sin inferencias. Más a menudo que no, tendremos una cantidad infinita de inferencias para hacer, por lo que esto no es confiable.
- Podemos usar el forzamiento, que supone la existencia de un modelo y también la consistencia de la teoría.
No conozco a nadie que implemente el forzamiento como una técnica mecanizada para la prueba automatizada de teoremas, y no parece fácil, pero me interesa si se ha hecho o se ha intentado, ya que se ha utilizado para demostrar la independencia de varias declaraciones. en teoría de conjuntos, que en sí misma no tiene modelos finitos.
¿Existen otras técnicas conocidas para buscar la satisfacción de primer orden que sean aplicables para el razonamiento automatizado o alguien ha trabajado en un algoritmo de forzado automatizado?