####
SEMI-DECIDABILITY

Definition: The proof algorithm |- is *complete* if whenever KB |=
A then KB |- A in finite time.
Here |= means logical entailment, which is a semantic notion, while
|- means provability, which is a syntactic, i.e. algorithmic notion.
Completeness says that if A is true, then it can be proved eventually.

Given KB and A, it may be the case that KB |= A is not true and also
KB |= ~A is also not true. Completeness says nothing about this case,
where neither A nor ~A is entailed by KB, that is KB leaves the truth value
of A unsettled.

Definition: The proof algorithm |- is *refutation-complete* if
whenever KB |= A then KB union { ~A} |- false eventually, in finite time.

Theorem: Resolution is refutation-complete.

This theorem says that if KB entails A, then resolution will demonstrate
this fact eventually. Again, nothing is said about the case where
neither A nor ~A is entailed by KB.

Definition: The entailment relation |= is *semi-decidable* if a
complete proof algorithm exists for it, while it is *decidable* if
a proof algorithm exists that is complete __and also__ always terminates
in finite time.

Gödel's completeness theorem: First-order logic entailment |= is
semi-decidable.

Gödel's __in__completeness theorem: First-order logic entailment
|= is __not__ decidable.

Corollary: If A is not entailed by KB then resolution applied to KB
union {~A} may fail to terminate.

Definition: A control strategy for resolution is *complete* if
its use preserves refutation-completeness, i.e. if false can be proved,
it can be proved while respecting the strategy.

Copyright (c) by Charles Elkan, 2001.