Question

I'm writing an input file for OTTER that is very simple:

set(auto).

formula_list(usable).

all x y ([Nipah(x) & Encephalitis(y)] -> Causes(x,y)).
exists x y (Nipah(x) & Encephalitis(y)).

end_of_list.

I get this output for the search :

given clause #1: (wt=2) 2 [] Nipah($c2).
given clause #2: (wt=2) 2 [] Encephalitis($c1).
search stopped because sos empty

Why won't OTTER infer Causes($c2,$c1)?

EDIT: I removed the square brackets from [Nipah(x) & Encephalitis(x)] and it worked. Why does this matter?

Was it helpful?

Solution

I'd answer with a question: Why did you use square brackets in the first place?

Look into Otter manual, Section 4.3, List Notation. Square brackets are used for lists, it's syntactic sugar that is expanded into special terms. In your case, it expanded to something like

all x y ($cons(Nipah(x) & Encephalitis(y), $nil) -> Causes(x,y)).

Why won't OTTER infer Causes($c2,$c1)?

Note that the resolution calculus is not complete in the sense that every formula provable in a given theory could be inferred by the calculus. This would be highly undesirable! Instead, resolution is only refutationally complete, meaning that if a given theory is contradictory then the resolution will find a proof of the empty clause. So even if a clause C is a logical consequence of a set of clauses T, it doesn't mean that the resolution calculus can derive C from T. In your case, the fact that Causes($c2,$c1) follows from the input doesn't mean Otter has to derive it.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top