Re: predicate in a predicate



Keenlearner schrieb:
or Can I have a predicate in the predicate, so that I can generalized
the "live" predicate ?

live( John, in(Bali) )
live( John, with(Marry) )

You can have this in FOL. But its not a predicate in a predicate,
its a function in a predicate.

And it even makes sense in appropriate models. For example in
a term model, you could have.

live(john,in(bali)).
live(john,with(marry)).

In term models you have equality and inequality. For two
different function symbols f1 and f2 you have in a term
model:

forall x f1(x)<>f2(x) (*)

Thus the in and with can function as a selector, and
will broaden the meaning of live.

This technique is often seen in logic programming. At
the end of the day (in term models), you can
work with either one of the following forms:

live(john,bali,in)
live_in(john,bali)
live(john,in(bali))
live(in(john,bali))
in(bali,live(john))

You will get similar results. Its a matter of what
else requirements you have.

There is no such thing as compliance with FOL. FOL
is very flexible and you have a vaste design space
how to solve a problem.

Best Regards

(*) K. L. Clark. Negation as failure. In H. Gallaire and J. Minker, editors, Logic and Data Bases, pages 293{322. Plenum Press,
New York, 1978.
.


Loading