SWI-Prolog has a mechanism for easy incorporation of community 
extensions. See the http://www.swi-prolog.org/pack/listpack landing page 
for details and available packs. This section documents the built-in 
predicates to attach packs. Predicates for creating, registering and 
installing packs are provided by the library
library(prolog_pack).
pack. The default for this search path is:
user:file_search_path(pack, app_data(pack)). user:file_search_path(pack, swi(pack)).
The predicate attach_packs/0 is called on startup of SWI-Prolog.
attach_packs(Directory,[]).
last). Using
first, new packages are added at the start.warning, which prints a warning and 
ignores the new pack. Other options are keep, which is like warning 
but operates silently and replace, which detaches the old 
pack and attaches the new.
The predicate attach_packs/2 can be used to attach packages that are bundled with an application.