Search code examples
prologpredicatesiso-prolog

What is the meaning of predicate "simple/1" in Prolog (SWI-Prolog)


I run into problem while reading a book. I see a program use predicate "simple" ( I guess simple/1 ). I don't know what is the meaning of this predicate, I can't find it with ?-help(simple) in the console. But when I tried with some queries in console, it worked something like:

5 ?- simple(p(x)).
false.

6 ?- simple(mia).
true.

7 ?- simple(Mia).
true.

8 ?- simple(f(Mia)).
false.

I guess it is some sort of predicate to determine if the argument was Terms(or Variables) or Complex Terms.


Solution

  • The swi-prolog manual has the following definition:

    simple(@Term) is semidet Term is atomic or a variable.

    the definition is in the quintus prolog compatibility library; in the quintus prolog documentation the definition is:

    simple(+Term)

    Term is currently instantiated to either an atom, a number, a database or a variable.

    in any case, simple/1 is true if the argument is a simple term (not sure what the quintus manuals means by database; possibly a handler for an ODBC connection i guess)