Sabemos pelo teorema da Igreja que determinar a satisfação de primeira ordem é indecidível em geral, mas existem várias técnicas que podemos usar para determinar a satisfação de primeira ordem. O mais óbvio é procurar um modelo finito. No entanto, existem várias instruções na lógica de primeira ordem que podemos demonstrar que não possuem modelos finitos. Por exemplo, qualquer domínio no qual uma função injetiva e não-adjetiva opera é infinito.
Como demonstramos satisfação para declarações de primeira ordem, onde não existem modelos finitos ou a existência de modelos finitos é desconhecida? Na prova automatizada de teoremas, podemos determinar a satisfação de várias maneiras:
- Podemos negar a sentença e procurar uma contradição. Se um for encontrado, comprovamos a validade de primeira ordem da declaração e, portanto, a satisfação.
- Usamos saturação com resolução e ficamos sem inferências. Frequentemente, teremos uma quantidade infinita de inferências a fazer, portanto isso não é confiável.
- Podemos usar o forçamento, que pressupõe a existência de um modelo e também a consistência da teoria.
Eu não conheço ninguém implementando o forçar como uma técnica mecanizada para a prova automatizada de teoremas, e isso não parece fácil, mas estou interessado se isso foi feito ou tentado, pois foi usado para provar a independência de várias declarações na teoria dos conjuntos, que por si só não tem modelos finitos.
Existem outras técnicas conhecidas para procurar a satisfação de primeira ordem aplicáveis ao raciocínio automatizado ou alguém já trabalhou em um algoritmo de forçamento automatizado?