Almost Too Obvious


Jim says that Eric is in rm308
Everything Jim says is true
---------
Eric is in rm308

First-Order Logic makes an odd syntactic distinction between predicates (boolean functions) and functions, to disallow this. The domain of discourse does not include the same "true" and "false" as we use to label sentences.

says(Jim, in(Eric, rm308))    % here "in" is a function
in(Eric, rm308)               % here "in" is a predicate

In Reification we make them be the same thing.