$ swipl
Result:
Welcome to SWI-Prolog (Multi-threaded, 64 bits, Version 7.2.3)
Copyright (c) 1990-2015 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.
For help, use ?- help(Topic). or ?- apropos(Word).
Command:
?- [user].
⏎
|: p(X) :- q(X).
|: q(a).
Ctrl-D
Result:
|: true.
Command:
?- p(a).
Result:
true.
Command:
?- listing.
Result:
:- dynamic expand_answer/2.
:- multifile expand_answer/2.
expand_answer(A, B) :-
toplevel_variables:expand_answer(A, B).
:- dynamic expand_query/4.
:- multifile expand_query/4.
expand_query(A, B, C, D) :-
toplevel_variables:expand_query(A, B, C, D).
:- multifile prolog_list_goal/1.
:- dynamic prolog_event_hook/1.
:- multifile prolog_event_hook/1.
:- dynamic exception/3.
:- multifile exception/3.
:- dynamic file_search_path/2.
:- multifile file_search_path/2.
file_search_path(library, A) :-
library_directory(A).
file_search_path(swi, A) :-
system:current_prolog_flag(home, A).
file_search_path(foreign, swi(B)) :-
system:
( current_prolog_flag(arch, A),
atom_concat('lib/', A, B)
).
file_search_path(foreign, swi(A)) :-
system:
( ( current_prolog_flag(windows, true)
-> A=bin
; A=lib
)
).
file_search_path(path, C) :-
system:
( getenv('PATH', A),
( current_prolog_flag(windows, true)
-> atomic_list_concat(B, ;, A)
; atomic_list_concat(B, :, A)
),
'$member'(C, B),
'$no-null-bytes'(C)
).
file_search_path(user_profile, app_preferences('.')).
file_search_path(app_data, A) :-
'$toplevel':catch(expand_file_name('~/lib/swipl', [A]), _, fail).
file_search_path(app_preferences, A) :-
'$toplevel':catch(expand_file_name(~, [A]), _, fail).
file_search_path(autoload, library('.')).
file_search_path(pack, app_data(pack)).
file_search_path(pack, swi(pack)).
file_search_path(library, A) :-
'$pack':pack_dir(_, prolog, A).
file_search_path(foreign, A) :-
'$pack':pack_dir(_, foreign, A).
:- thread_local thread_message_hook/3.
:- dynamic thread_message_hook/3.
:- volatile thread_message_hook/3.
:- dynamic portray/1.
:- multifile portray/1.
:- dynamic prolog_file_type/2.
:- multifile prolog_file_type/2.
prolog_file_type(pl, prolog).
prolog_file_type(prolog, prolog).
prolog_file_type(qlf, prolog).
prolog_file_type(qlf, qlf).
prolog_file_type(A, executable) :-
system:current_prolog_flag(shared_object_extension, A).
:- dynamic prolog_load_file/2.
:- multifile prolog_load_file/2.
:- multifile message_property/2.
:- dynamic library_directory/1.
:- multifile library_directory/1.
library_directory(B) :-
'$parms':
( cached_library_directory(local, A=lib, A),
B=A
).
library_directory(B) :-
'$parms':
( cached_library_directory(user,
expand_file_name('~/lib/prolog', [A]),
A),
B=A
).
library_directory(B) :-
'$parms':
( cached_library_directory(system,
absolute_file_name(swi(library), A),
A),
B=A
).
library_directory(B) :-
'$parms':
( cached_library_directory(clp,
absolute_file_name(swi('library/clp'), A),
A),
B=A
).
:- dynamic resource/3.
:- multifile resource/3.
:- dynamic message_hook/3.
:- multifile message_hook/3.
true.