Amzi! Prolog User's Guide & Reference
Contents Index
Amzi! Prolog User's Guide and Reference Contents Purpose Quick Overview Quick Overview Components Relationship of Files and Components Listener/Debugger Debugger Intermixing Interpreted and Compiled Code Compiler Linker Interactive Development Environment (IDE) Stand-Alone Runtime Embedded Applications Where to Go Next? Quick Tutorial Amzi! Quick Tutorial Duck World Starting the Listener Creating a Source File Consulting a Source File Using the Listener Debugging Modules Running a Modular Application Using Projects in the IDE Compiling Linking and Running Distributing an Application Interfacing with Other Tools IDE Quick Start Eclipse IDE Quick Start Beginning Users Open a Source File Advanced Users Editor and Outliner Editor and Outliner Editor Functions Using Unicode Outliner Preferences Listener Listener Starting and Stopping the Listener IDE Command Line Entering and Editing Commands Adding and Removing Clauses assert Adding a Rule Consulting user add Removing Clauses Listing Clauses Querying the Logic Base Consulting Prolog Source Files Loading Compiled Prolog Code Listener Commands add debug pp(Term), user_pp(Term) quit replace Debugger Source Code Debugger Box Model Debugging Perspective Running the Debugger Launch Configurations Starting and Exiting Remote Debugging Display Debug Commands Breakpoints Breaking at Debug Ports Example Command-Line Debugger Box Model Starting and Exiting Display portray(GOAL) Debug Port Options Spypoints Leashing Debug Ports Logging Example Compiler Compiler Advantages Disadvantages Requirements Directives Running from the IDE Running from the Command-Line Messages Errors Complex Clauses Complex Predicates Main Predicate Linker Linker Running from the IDE Running from the Command-Line Libraries Cross Referencer and Syntax Checker Cross Referencer and Syntax Checker Running Warnings and Errors Amzi! Runtime Amzi! Runtime Running arun from the Command-Line Configuration Files Configuration Parameters Default.cfg Values Flags current_prolog_flag(FLAG, VALUE) set_prolog_flag(FLAG, VALUE) Configuration Flags Settable Flags Eclipse IDE Eclipse IDE The Prolog Perspective Prolog Projects and Building Executables Setting Project Properties Creating Projects Opening, Closing and Deleting Projects Starting the Listener and Prolog Programs Starting the Listener Launch Configurations Running Compiled Programs Starting the Source Code Debugger Windows IDE Original Amzi! Windows IDE Quick Tutorial Duck World Starting the Listener Creating a Source File Consulting a Source File Using the Listener Debugging Modules Running a Modular Application Using alis and BAT Files Using Projects Compiling Running Linking and Running Distributing an Application Interfacing with Other Tools Windows IDE Interface Interface Unicode and ASCII File Menu Edit Menu View Menu Listener Menu Build Menu Window Menu Help Projects Creating a Project Dialog Box Consulting/Loading Building Debugger Box Model Starting and Exiting Display portray(GOAL) Debug Port Options Spypoints Leashing Debug Ports Logging Example Debugging Your Programs Debugging Your Programs Initial Development for Embedded Modules Tracking Prolog Errors Logging Debugger-Like Output catch and throw Prolog Error File Writing Your Own Embedded Debugging Predicates Tracking LSAPI Errors Tracing LSAPI Calls Checking LSAPI Error Codes Examining Prolog Terms Distributing Your Programs Distributing Your Programs Redistributable Files Preprocessor Preprocessor Directives #define Prolog Directives Prolog Directives Dynamic Clauses in Compiled Code Multifile Directive Discontiguous Directive Include Directive Ensure Loaded Directive Op Directive Set Prolog Flag Latent Expressions Prolog Terms Prolog Terms Internationalization Atoms Symbol Set for Atoms Escape Characters Enabling and Disabling Escape Processing Escape Codes Using Escape Codes Strings Variables Numbers Integers Negative Numbers Decimal Numbers Structures Lists Character Lists Character Constants Comments Operators Precedence Associativity op(Precedence, Associativity, Operator) current_op(Precedence, Associativity, Operator) Predefined Prolog Operators Prolog Execution Prolog Execution Clauses Unification unify_with_occurs_check(X,Y) is_cyclic(Term) Backtracking Search Complex Goals X, Y X; Y Goal1-Goal2; Goal3 call(Goal) not(Goal) \+ Goal once(Goal) findall(Instance, Goal, List) bagof(Instance, Goal, List) setof(Instance, Goal, List) Flow-of-Control ! Cut repeat fail true for(Index, Start, End, Increment) catch(GOAL, ERROR, HANDLER) throw(TERM) halt Counters cntr_get(Counter, Value) cntr_dec(Counter, Value) cntr_inc(Counter, Value) cntr_set(Counter, Value) Modules Modules Default User Module System Module Defining Modules Adding Predicates to a Module Referring to Modules Exports Imports Metapredicates Manipulating Terms Manipulating Terms Term Typing term_type(TERM, TYPE) atomic(X) atom(X) string(X) number(X) compound(X) structure(X) list(X) is_list(X) var(X) nonvar(X) Equality of Terms X = Y X \= Y X == Y X \== Y not(not(X = Y)) Standard Order of Terms Ordering of Terms X @< Y X @> Y X @=< Y X @>= Y compare(Result, Term1, Term2) Term Creation and Decomposition functor(TERM, FUNCTOR, ARITY) arg(N, Term, Argument) Term =.. List (univ) gensym(Root, Sym) copy_term(T1, T2) Variable Identification string_query(QUERYSTRING, RESULTSTRING) varlist_query(QUERYSTRING, LENGTH, RESULTLIST) numbervars(TERM, START, END) varlist(List) varsof(Term, List) Atoms, Lists and Strings Atoms, Lists and Strings Atom Processing atom_codes(Atom, CharList) atomlist_concat(AtomList, Atom) atom_concat(Atom1, Atom2, AtomVar3) atom_length(Atom, Length) atom_uplow(AtomUpper, AtomLower) is_atom(X) name(Atom, CharList) sub_atom(Atom, Index, Length, SubAtom) List Processing is_member(Term, List) sort(List, SortedList) keysort(KeyedList, KeyedSortedList) String Processing is_string(X) nonblank_string(String) strcat(StringA, StringB, StringAB) stringlist_concat(StringList, String), stringlist_concat(StringList, Separator, String) string_atom(String, Atom) string_float(String, Float) string_icomp(String1, String2) string_integer(String, Integer) string_number(String, Number) string_length(String, Length) string_list(String, List) string_split(String, DelimitersS, List) string_term(String, Term) string_termq(StringQ, Term) is_string_term(String, Term) string_tokens(String, TokenList), string_tokens(String, TokenList, DelimitersS) string_trim(String, TrimmedString) sub_string(String, Index, Length, SubString) tilt_slashes(InAS, OutAS) Character List Processing atom_chars(Number, CharList) char(X) char_code(Atom, CharList) number_chars(Number, CharList) Numbers and Math Numbers and Math Evaluating Mathematical Expressions X is Y Mathematical Comparisons X >= Y X =< Y X > Y X < Y X =:= Y X =\= Y X ~= Y Mathematical Operators X + Y X - Y - X X * Y X / Y X ** Y X // Y X divs Y X divu Y max(X,Y) min(X,Y) X mod Y X mods Y X modu Y Bitwise Operators X /\ Y X \/ Y X << Y X >> Y \ X X xor Y Trigonometry Functions sin(X) cos(X) tan(X) asin(X) acos(X) atan(X) Mathematical Functions abs(X) ceiling(X) exp(X) float(X) floor(X) integer(X) ln(X), log(X) log10(X) real(X) round(X) sign(X) sqrt(X) Built-in Atoms seed_random(I) Number Types numeric_type(N,T) integer(N) is_fraction(N) is_integer(N) is_odd(N) is_number(N) float(N) single_float(N) double_float(N) real(N) fixed_real(N) long_real(N) Mixed Mode Expressions Mathematical Games Modulo Arithmetic Notes on Reals and Gigadigits Prime Numbers Rational Numbers Continued Fractions Prolog Logicbase Prolog Logicbase Modules current_module(MODULE) Predicates current_predicate(M:F/A) predicate_property(M:F/A, PROPERTY) Static Predicates load(FileA), load([F1, F2,...]) load(memory, NAME, SIZE, ADDRESS) unload(FileA), unload([F1, F2,...]) Dynamic Predicate Storage Options :-dynamic F/A :-indexed F(I1, I2,...) :-sorted F/A Dynamic Predicates abolish(M:F/A) asserta(TERM) assertz(TERM) assert(TERM) clause(HEAD, BODY) retract(TERM) retractall(TERM) Input and Output Input and Output General Principles Stream IDs Backtracking and I/O End of File Streams Standard Streams Stream Properties stream_property(STREAM, PROPERTY) String I/O Open and Closing Files open(FILE, MODE, ID, OPTIONS) open(FILE, MODE, ID) close(ID) Reading and Writing Prolog Terms read(TERM), read(ID, TERM) write(TERM), write(ID, TERM) writeq(Term), writeq(ID, Term) listing, listing(PRED), listing(ID, PRED) pp(TERM), pp(ID, TERM) consult(FILE), reconsult(FILE) display(Term) Reading and Writing Strings and Characters get(CODE), get(ID, CODE) get0(CODE), get0(ID, CODE) put(CODE), put(ID, CODE) read_string(STRING), read_string(ID, STRING) Special Purpose I/O Predicates at_end_of_stream(ID) flush_output, flush_output(ID) nl, nl(ID) skip(CODE), skip(ID, CODE) tab(N), tab(ID, N) respkey(CHAR) Repositioning Streams stream_property(ID, position(Position)) set_stream_position(ID, POSITION) Redirecting Streams current_input(ID) current_output(ID) set_input(ID) set_output(ID) see(ID), see(FILENAME), see(user) seen seeing(ID) tell(ID), tell(FILENAME), tell(user) told telling(ID) Binary I/O read_binary(ID, DATA_TYPE, DATA) write_binary(ID, DATA_TYPE, DATA) Logging openlog(Fname) closelog writelog(X) nllog System Predicates System Predicates command_line(ArgsL) date(MONTH, DAY, YEAR) time(HOUR, MIN, SEC) gc highwater(Heap, Local, Control, Trail) loadlsx(FilenameA) pro_heap(Top, Pos) pro_control(Top, Pos) pro_local(Top, Pos) pro_trail(Top, Pos) stack_sizes(Heap, Control, Local, Trail) system(CmdA) timer(Ticks) version(String) O.S. Extended Predicates O.S. Extended Predicates File and Directory Name Parameters chdir(DirL) chdir(DirL, Err) curdir(DirS) delfile(PathL, Err) mkdir(DirL, Err) rename(OldName, NewName, Err) rmdir(DirL, Err) findfiles(Mask, Attr, FileInfo) stat(FileName,Atime,Ctime,Mtime,Size,Mode,NLink,Uid,Gid) getdrive(Drive) setdrive(Drive) get_env_var(VARIABLE, VALUE) w_getfile(FileStr) w_msgbox(Term) w_tfmsgbox(Term) Definite Clause Grammars (DCGs) Definite Clause Grammars (DCGs) Parsing with Difference Lists Generating with Difference Lists DCG Syntax expand_term(DCGclause, PROLOGclause) Applications of DCG and Difference Lists Language Translation Bill of Materials Command Language XML DCG Terminals Parsing Files