The only effect of a declaration
:- public :PredSpec, …, :PredSpec.
where each PredSpec is a predicate specification, is to give the SICStus cross-referencer (see The Cross-Referencer) a starting point for tracing reachable code. In some Prologs, this declaration is necessary for making compiled predicates visible. In SICStus Prolog, predicate visibility is handled by the module system. See ref-mod.