...Instructs the cross-referencer that the predicate can be called. It has
no semantics.94This declaration is
compatible with SICStus. In YAP, public/1
instructs the compiler to keep the source. As the source is always
available in SWI-Prolog, our current interpretation also enhances the
compatibility with YAP. The public declaration can be
queried using predicate_property/2.
not export the predicate (see module/1
The public directive is used for (1) direct calls into the module from,
e.g., foreign code, (2) direct calls into the module from other modules,
or (3) flag a predicate as being called if the call is generated by
meta-calling constructs that are not analysed by the cross-referencer.