:- multifile user:file_search_path/2. % :- dynamic user:file_search_path/2. % :- ensure_loaded( library(lists) ). % :- ensure_loaded( library(ordsets) ). % :- ensure_loaded( library(ugraphs) ). fsp_if( AbsDir ) :- % write( absdir(AbsDir) ), nl, ( user:file_search_path(interpreter,_Exists) -> % no need to redefine it true ; assert( user:file_search_path(interpreter,AbsDir) ) ). fsp_pfd :- user:file_search_path( interpreter, Ipr ), ( user:file_search_path(pfd,_Exists) -> true ; atom_concat( Ipr, '/../pfds', RelPfd ), absolute_file_name( RelPfd, Pfd ), assert( user:file_search_path(pfd,Pfd) ) ). loads_pfd( swi(_Ver) ) :- % aberdeen settings. % ( current_prolog_flag( windows, true ) -> % Pfd = 'C:/My Documents/nicos/pfd' % ; % Pfd = '/windows/home/nicos/pfd' % ), LdOpts = [if(changed),silent(true)], load_files( [ interpreter('system/swi/std'), interpreter('system/swi/sicstus_ugraphs'), interpreter('system/swi/sicstus_ordsets'), interpreter('system/swi/sicstus_lists'), interpreter('system/clpfd_ops') ] , LdOpts ), loads_pfd_common( LdOpts ). % ensure_loaded( interpreter('system/swi/maplist') ), % /4 this is not heavily used see if can be deleted loads_pfd( yap(_Ver) ) :- set_prolog_flag(unknown,error), set_prolog_flag(single_var_warnings,on), set_prolog_flag(redefine_warnings,on), set_prolog_flag(informational_messages,off), use_module( library(lists) ), use_module( library(ordsets) ), use_module( library(ugraphs) ), ensure_loaded( 'system/yap/ord_intersection_4' ), ensure_loaded( 'system/clpfd_ops' ), reconsult( [ operators, 'system/sicstus/flatten.pl', 'system/sicstus/maplist', 'system/yap/std', % 'system/yap/nth1', 'directives', 'active', 'auxil', 'identicals', 'constraint_to_store', 'data', 'demo', 'enforce_unconditional', 'graph_operations', 'methods', 'probe', 'multi_conditional_probe', 'rationals', 'store_operations', 'error', 'write_pfd', 'spy_message', % 'system/yap/reachable', 'system/yap/ord_intersection', probabilistic_method, preprocess ] ). loads_pfd( sicstus(_Ver) ) :- ensure_loaded( interpreter('system/sicstus/portray_no_compile') ), ensure_loaded( library(lists) ), ensure_loaded( library(ordsets) ), % ..., ord_member/2, ord_add_elem/3. ensure_loaded( library(ugraphs) ), ensure_loaded( library(clpfd) ), % Pfd = '$HOME/pfd', % assert( file_search_path( interpreter, Pfd) ), ensure_loaded( interpreter('system/sicstus/flatten') ), ensure_loaded( interpreter('system/sicstus/maplist') ), ensure_loaded( interpreter('system/sicstus/std') ), ensure_loaded( interpreter('system/sicstus/nth1') ), loads_pfd_common( [] ). /* loads_pfd_swi_files( Files, LdOpts ) :- % This is temporary. Bug reported. user:file_search_path( interpreter, Alias ), maplist( loads_pfd_swi_file(Alias,LdOpts), Files ). loads_pfd_swi_file( Alias, LdOpts, interpreter(File) ) :- directory_file_path( Alias, File, Path ), load_files( [Path], LdOpts ). */ % interpreter code. loads_pfd_common( Opts ) :- fsp_pfd, load_files( [operators,identicals], Opts ), load_files( % Files = [ interpreter(directives), interpreter(active), interpreter(auxil), interpreter(constraint_to_store), interpreter(data), interpreter(demo), interpreter(enforce_unconditional), interpreter(graph_operations), interpreter(methods), interpreter(probe), interpreter(multi_conditional_probe), interpreter(rationals), interpreter(store_operations), interpreter(error), % only for debugging systems interpreter(write_pfd), interpreter(spy_message), % special context, keep last. interpreter(probabilistic_method), interpreter(preprocess) ], Opts ). % loads_pfd_swi_files( Files, Opts ). % can we move this out ??? should be faster in that case % % % ensure_loaded( interpreter(valuations) ), % % ensure_loaded( interpreter(vertical) ), % % ensure_loaded( interpreter(vertical_array) ), % ensure_loaded( interpreter(vertical_tree) ), % the following is true for swi, test on sicstus. % :- initialization( bb_put(pfd_not_interactive,false) ). :- ensure_loaded( pl ), ensure_loaded( dbg ), set_dbg( off ), % ensure_loaded( operators ), prolog_load_context( directory, AbsDir ), ( pl(yap(_Any)) -> true ; fsp_if( AbsDir ) ), pl( Prolog ), loads_pfd( Prolog ). :- bb_put(pfd_not_interactive,false).