``A fluent holds in the state resulting from an action if and only if the action `causes' the fluent, or the fluent held before the action, and the action does not `cancel' it.''We write this general knowledge about the three predicates "holds", "causes", and "cancels" in our ontology as
Only two more axioms are needed to describe the Yale shooting world:forall a,s,p holds(p,do(s,a)) <-> causes(a,s,p) \/
[ holds(p,s) & ~cancels(a,s,p) ]
Some notes about this solution to the frame problem:forall a,s,p causes(a,s,p) <->
[ a=load & p=loaded] \/
[ a=shoot & p=dead & holds(loaded,s)]forall a,s,p cancels(a,s,p) <->
[ a=shoot & p=alive & holds(loaded,s)] \/
[ a=shoot & p=loaded & holds(loaded,s)]
Otter uses proof-by-contradiction, so with Otter we would haveT & holds(loaded,s_0) |= cancels(shoot,s_0,alive)
T & holds(loaded,s_0) & -cancels(shoot,s_0,alive) |= contradiction
Suppose the turkey is known to be alive originally, but a shot was heard and the turkey was seen dead some time later. Whodunit? This murder mystery is also solvable:T & holds(alive,s_0) |= holds(dead,do(do(do(s_0,load),wait),shoot)).
Intuitively, the frame axiom says that miracles never happen: if a fluent holds, then it must have just been caused by some action, or else it must have held immediately previously, and not been canceled.T & holds(alive,s_0) & ~holds(alive,do(do(s_0,shoot),wait))
|= holds(loaded,s_0) & cancels(shoot,s_0,alive)
The answer is P = do(do(do(s_0,load),wait),shoot)T & holds(alive,s_0) |= holds(dead,P).
Solving a planning problem requires a logical reasoning system (i.e. a knowledge base manager or inference engine) that can return existential witnesses in addition to saying (yes, no, or unknown) whether or not a certain sentence is entailed by a given knowledge base.
Unfortunately, doing planning by general-purpose logical reasoning
is just not efficient computationally. The most successful
planners today operate by translating a
first-order knowledge base into propositional 3SAT clauses, then
running a local search algorithm like WalkSat.
Given KB and A, it may be the case that KB does not entail A, and also that KB does not entail ~A. Completeness says nothing about this case, where KB leaves the truth value of A unsettled.
Definition: The entailment relation |= is semi-decidable if a complete proof algorithm exists for it. Entailment |= 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. In iother words, there exists a theorem-proving algorithm |- that is sound and complete (for the definitin of complete immediately above).
Gödel's incompleteness theorem (alternative statement): First-order logic entailment |= is not decidable.