Summary of Built-In Predicates of LLP /**************************************************************** DCG ****************************************************************/ 'C'(?S1, ?TERMINAL, ?S2) /**************************************************************** System ****************************************************************/ statistics statistics(runtime, [?TIME1, ?TIME2]) statistics(global_stack, [?USED, ?FREE]) statistics(local_stack, [?USED, ?FREE]) statistics(trail, [?USED, ?FREE]) statistics(memory, [?USED, ?FREE]) statistics(program, [?USED, ?FREE]) statistics(code, [?USED, ?FREE]) statistics(pdl, [?USED, ?FREE]) statistics(symbol, [?USED, ?FREE]) statistics(resource, [?USED, ?FREE]) statistics(hash, [?USED, ?FREE]) load(+FILES) unix(system(+COMMAND)) unix(system(+COMMAND, -RETURNCODE)) fcompile(+FILES) compile(+FILES) trace notrace prolog_flag(unknown, ?OLD, +NEW) prolog_flag(occurs_check, ?OLD, +NEW) /**************************************************************** Meta Logic ****************************************************************/ var(?X) nonvar(?X) atomic(?X) integer(?X) number(?X) atom(?X) ground(+TERM) +TERM =.. ?LIST ?TERM =.. +LIST functor(+TERM, ?NAME, ?ARITY) functor(?TERM, +NAME, +ARITY) arg(+ARGNO, +TERM, ?ARG) name(+CONST, ?CHARLIST) name(?CONST, +CHARLIST) atom_chars(+ATOM, ?CHARLIST) atom_chars(?ATOM, +CHARLIST) number_chars(+NUMBER, ?CHARLIST) number_chars(?NUMBER, +CHARLIST) /**************************************************************** Arithemtic Predicates ****************************************************************/ ?Y is +X Following operations for integers are available [X] same with X +(X) same with X X+Y addition -X unary minus X-Y subtraction X*Y multiplication X//Y division X mod Y remainder X<>Y right shift \(X) bit-wise not X/\Y bit-wise and X\/Y bit-wise or X#Y bit-wise exclusive or abs(X) absolute value max(X,Y) maximum value min(X,Y) minimum value +X =:= +Y +X =\= +Y +X > +Y +X =< +Y +X < +Y +X >= +Y /**************************************************************** Comparion ****************************************************************/ ?X = ?Y ?X == ?Y ?X \== ?Y ?X @< ?Y ?X @> Y ?X @=< Y ?X @>= Y compare(?Op, ?X, ?Y) sort(+LIST, ?SORTEDLIST) keysort(+LIST, ?SORTEDLIST) /**************************************************************** Misc ****************************************************************/ length(?LIST, ?LENGTH) copy_term(?TERM, ?COPYOFTERM) numbervars(?TERM, +N, ?M) unify_with_occurs_check(?X, ?Y) term_acyclic(?X) /**************************************************************** Control ****************************************************************/ \+ +P +IF -> +THEN +IF -> +THEN; +ELSE +P; +Q +P & +Q ! +P +R -<> +P +R => +P once(+G) call(+G) repeat true otherwise false fail top erase halt abort /**************************************************************** Input ****************************************************************/ get0(?X) get(?X) skip(+N) readint(?N) readline(?CHARLIST) read_token(?TOKEN) read_tokens(?TOKENLIST, ?VARLIST) read(?X) read_with_variables(?X, ?VARLIST) parse_tokens(?X, +TOKENLIST) /**************************************************************** Output ****************************************************************/ nl put(+X) tab(+N) display(+X) write(+X) writeq(+X) write_canonical(+X) /**************************************************************** Operators ****************************************************************/ current_op(?PRECEDENCE, ?TYPE, ?OP)