Prolog/Negação
Tipicamente, uma consulta é avaliada como falsa no caso de não estar presente nenhuma regra positiva ou fato que dê suporte ao termo proposto. Isso é chamado hipótese do mundo fechado; assume-se que tudo o que é importante saber está na base de dados, de modo que não existe um mundo exterior que pode possuir evidências desconhecidas. Em outras palavras, se um fato não é conhecido ser verdadeiro (ou falso), assume-se que ele é falso.
Uma regra como:
legal(X) :- \+ ilegal(X).
pode ser avaliada somente pela busca exaustiva de todas as coisas que são ilegais e comparando elas com X, e se nenhum fato ilegal for descoberto ser o mesmo que X, X é legal. Isso é chamado negação por falha. O operador prefixo \+/1 (muitos dialetos do Prolog possuem pré-definido o comando not/1) usado acima implementa a negação por falha em compiladores ISO Prolog.
Uma questão interessante é o que acontece se legal(X) for proposto como uma consulta:
?- legal(X).
Isto, em princípio, pegaria tudo que existe (e que não foi explicitamente declarado como ilegal) e mostraria. No entanto, esta consulta retorna No (ou seja: não sei).