Expressions != Sentences


A first-order logic (FOL) sentence, using the "isFood" predicate:

isFood(chocolate)

Here "isFood" is a "logic function" (not a predicate):

says(Alice, isFood(chocolate))

Logicians use different symbols for predicates (P, Q, R, ...) and functions (f, g, h, ...) to avoid this problem.

Can you use "and" (∧)with it?

"and" is and(bool, bool): bool and isFood is isFood(Object): CustomBoolean. The reasoner uses "bool" and can't tell that CustomBoolean is supposed to be the same thing.

FOL syntax disallows the situtation; this is illegal syntax:

says(Alice, isFood(chocolcate) ∧ isFood(coffee))
You can say
says(Alice, myAnd(isFood(chocolcate), isFood(coffee)))
but logical inference will not be performed. (You could provide axioms defining myAnd, solving the problem with another layer of indirection.)