     Logtalk APIs v3.30.0, Sep 17, 2019

     Paulo Moura

     Copyright © 2019, Paulo Moura

   Generated by Sphinx 2.2.0.

Logtalk APIs
************

     Logtalk APIs v3.30.0, Sep 17, 2019

     Paulo Moura

     Copyright © 2019, Paulo Moura

 — The Detailed Node Listing —

Libraries

arbitrary

arbitrary

Public predicates

assertions

assertions

assertions(Mode)

Public predicates

assertions_messages

assignvars

assignvars

assignvarsp

Public predicates

Operators

code_metrics

cc_metric

code_metric

Public predicates

Protected predicates

code_metrics

code_metrics_messages

code_metrics_utilities

Private predicates

coupling_metric

dit_metric

doc_metric

Public predicates

halstead_metric

halstead_metric(Stroud)

noc_metric

nor_metric

size_metric

upn_metric

core

core_messages

expanding

Public predicates

forwarding

Public predicates

logtalk

Public predicates

monitoring

Public predicates

user

coroutining

coroutining

Public predicates

dates

date

datep

Public predicates

time

timep

Public predicates

dead_code_scanner

dead_code_scanner

Public predicates

dead_code_scanner_messages

debug_messages

debug_messages

Public predicates

Private predicates

debugger

debugger

Private predicates

debugger_messages

debuggerp

Public predicates

dependents

observer

Public predicates

subject

Public predicates

Private predicates

diagrams

diagram(Format)

Public predicates

Protected predicates

Private predicates

diagrams

diagrams(Format)

Public predicates

directory_dependency_diagram

directory_dependency_diagram(Format)

Private predicates

directory_diagram(Format)

Protected predicates

Private predicates

directory_load_diagram

directory_load_diagram(Format)

Private predicates

dot_graph_language

entity_diagram

entity_diagram(Format)

Public predicates

Private predicates

file_dependency_diagram

file_dependency_diagram(Format)

file_diagram(Format)

Protected predicates

Private predicates

file_load_diagram

file_load_diagram(Format)

graph_language_protocol

Public predicates

graph_language_registry

Public predicates

inheritance_diagram

inheritance_diagram(Format)

library_dependency_diagram

library_dependency_diagram(Format)

Private predicates

library_diagram(Format)

Protected predicates

Private predicates

library_load_diagram

library_load_diagram(Format)

Private predicates

modules_diagram_support

Public predicates

uses_diagram

uses_diagram(Format)

xref_diagram

xref_diagram(Format)

Public predicates

Private predicates

dictionaries

avltree

bintree

Public predicates

dictionaryp

Public predicates

rbtree

Public predicates

doclet

doclet

Public predicates

edcg

edcg

Private predicates

Operators

events

after_event_registry

before_event_registry

event_registry

event_registryp

Public predicates

monitor

Private predicates

monitorp

Public predicates

expand_library_alias_paths

expand_library_alias_paths

expecteds

either

Public predicates

expected

Public predicates

expected(Reference)

Public predicates

flags

flags

Public predicates

Protected predicates

Private predicates

flags_validator

Public predicates

gensym

gensym

Public predicates

Private predicates

heaps

heap(Order)

heapp

Public predicates

maxheap

minheap

help

help

Public predicates

hierarchies

class_hierarchy

class_hierarchyp

Public predicates

hierarchyp

Public predicates

proto_hierarchy

proto_hierarchyp

Public predicates

hook_flows

hook_pipeline(Pipeline)

hook_set(Set)

intervals

interval

intervalp

Public predicates

iso8601

iso8601

Public predicates

java

java

java(Reference)

java(Reference,ReturnValue)

java_access_protocol

Public predicates

java_hook

java_utils_protocol

Public predicates

lgtdoc

lgtdoc

Private predicates

lgtdocp

Public predicates

lgtunit

coverage_report

Private predicates

lgtunit

Public predicates

Protected predicates

Private predicates

Operators

lgtunit_messages

tap_output

Private predicates

tap_report

Private predicates

xunit_output

Private predicates

xunit_report

Private predicates

library

cloning

Public predicates

counters

Public predicates

Private predicates

streamvars

Public predicates

Operators

logging

logger

Private predicates

logging

Private predicates

loggingp

Public predicates

loops

loop

loopp

Public predicates

meta

meta

metap

Public predicates

meta_compiler

meta_compiler

Private predicates

metagol

metagol

Public predicates

Protected predicates

metagol_example_protocol

Public predicates

optionals

maybe

Public predicates

optional

Public predicates

optional(Reference)

Public predicates

os

os

os_types

osp

Public predicates

pddl_parser

pddl

Public predicates

read_file

Public predicates

ports_profiler

ports_profiler

Public predicates

Private predicates

queues

queue

queuep

Public predicates

random

backend_random

fast_random

Public predicates

Private predicates

random

Public predicates

Private predicates

randomp

Public predicates

reader

reader

Public predicates

redis

redis

Public predicates

sets

set

set(Type)

setp

Public predicates

statistics

population

sample

statistics

statisticsp

Public predicates

Private predicates

timeout

timeout

Public predicates

tutor

tutor

types

atom

Public predicates

atomic

callable

character

characterp

Public predicates

comparingp

Public predicates

compound

difflist

Public predicates

float

integer

Public predicates

list

Public predicates

list(Type)

listp

Public predicates

natural

number

Public predicates

Operators

numberlist

numberlistp

Public predicates

pairs

Public predicates

term

termp

Public predicates

type

Public predicates

varlist

varlistp

Public predicates

verdi_neruda

a_star_interpreter(W)

benchmark_generators

Public predicates

best_first

Protected predicates

bfs_interpreter

bup_interpreter

counter

Public predicates

Private predicates

databasep

Public predicates

debug_expansion(Mode)

demodb

dfs_interpreter

flatting

Protected predicates

heuristic_expansion(A)

iddfs_interpreter(Increment)

interpreterp

Public predicates

magic

Public predicates

magic_expansion(A)

rule_expansion(A)

shell

Public predicates

shell(Interpreters)

Public predicates

shell_expansion(A)

wrapper

wrapper

Public predicates

Private predicates

xml_parser

xml

Public predicates

Private predicates

zippers

zipperp

Public predicates

zlist

Public predicates

Directories

Entities

Predicates

1 Libraries
***********

To load any library, use the goal ‘logtalk_load(library_name(loader))’.
To run the library tests, use the goal
‘logtalk_load(library_name(tester))’.

1.1 ‘arbitrary’
===============

`category'

1.1.1 ‘arbitrary’
-----------------

Adds predicates for generating and shrinking random values for selected
types to the library ‘type’ object.

     `Author:' Paulo Moura
     `Version:' 2.13
     `Date:' 2019/6/10

     `Compilation flags:'
          ‘static’

     `Complements:'
          See type.
     `Uses:'
          See integer.
          list.
          random.
          type.

     `Remarks:'

        - `Logtalk specific types:' ‘entity’, ‘object’, ‘protocol’,
          ‘category’, ‘entity_identifier’, ‘object_identifier’,
          ‘protocol_identifier’, ‘category_identifier’, ‘event’,
          ‘predicate’

        - `Prolog module related types (when the backend compiler
          supports modules):' ‘module’, ‘module_identifier’,
          ‘qualified_callable’

        - `Prolog base types:' ‘term’, ‘var’, ‘nonvar’, ‘atomic’,
          ‘atom’, ‘number’, ‘integer’, ‘float’, ‘compound’, ‘callable’,
          ‘ground’

        - `Atom derived types:' ‘atom(CharSet)’, ‘non_empty_atom’,
          ‘non_empty_atom(CharSet)’, ‘boolean’, ‘character’,
          ‘character(CharSet)’, ‘char’, ‘char(CharSet)’,
          ‘operator_specifier’

        - `Number derived types:' ‘positive_number’, ‘negative_number’,
          ‘non_positive_number’, ‘non_negative_number’

        - `Float derived types:' ‘positive_float’, ‘negative_float’,
          ‘non_positive_float’, ‘non_negative_float’, ‘probability’

        - `Integer derived types:' ‘positive_integer’,
          ‘negative_integer’, ‘non_positive_integer’,
          ‘non_negative_integer’, ‘byte’, ‘character_code’,
          ‘character_code(CharSet)’, ‘code’, ‘code(CharSet)’,
          ‘operator_priority’

        - `List types (compound derived types):' ‘list’,
          ‘non_empty_list’, ‘partial_list’, ‘list_or_partial_list’,
          ‘list(Type)’, ‘list(Type,Length)’, ‘list(Type,Min,Max)’,
          ‘list(Type,Length,Min,Max)’, ‘non_empty_list(Type)’, ‘codes’,
          ‘chars’

        - `Difference list types (compound derived types):'
          ‘difference_list’, ‘difference_list(Type)’

        - `Other compound derived types:' ‘predicate_indicator’,
          ‘non_terminal_indicator’,
          ‘predicate_or_non_terminal_indicator’, ‘clause’,
          ‘clause_or_partial_clause’, ‘grammar_rule’, ‘pair’,
          ‘pair(KeyType,ValueType)’

        - `Other types:' ‘between(Type,Lower,Upper)’,
          ‘property(Type,LambdaExpression)’, ‘one_of(Type,Set)’,
          ‘var_or(Type)’, ‘ground(Type)’, ‘types(Types)’

        - `Registering new types:' Add clauses for the ‘arbitrary/1-2’
          multifile predicates and optionally for the ‘shrinker/1’ and
          ‘shrink/3’ multifile predicates.  The clauses must have a
          bound first argument to avoid introducing spurious
          choice-points.

        - `Character sets:' ‘ascii_identifier’, ‘ascii_printable’,
          ‘ascii_full’, ‘byte’, ‘unicode_bmp’, ‘unicode_full’

        - `Default character sets:' The default character set when using
          a parameterizable type that takes a character set parameter
          depends on the type.

        - `Default character sets:' Entity, predicate, and non-terminal
          identifier types plus compound and callable types default to
          an ‘ascii_identifier’ functor.  Character and character code
          types default to ‘ascii_full’.  Other types default to
          ‘ascii_printable’.

        - `Caveats:' The type argument (and any type parameterization)
          to the predicates is not type-checked (or checked for
          consistency) for performance reasons.

1.1.1.1 Public predicates
.........................

1.1.1.2 ‘arbitrary/1’
.....................

Table of defined types for which an arbitrary value can be generated.  A
new type can be registered by defining a clause for this predicate and
adding a clause for the ‘arbitrary/2’ multifile predicate.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘arbitrary(Type)’
     `Mode and number of proofs:'
          ‘arbitrary(?callable)’ - ‘zero_or_more’

__________________________________________________________________

1.1.1.3 ‘arbitrary/2’
.....................

Generates an arbitrary term of the specified type.  Fails if the type is
not supported.  A new generator can be defined by adding a clause for
this predicate and registering it via the ‘arbitrary/1’ predicate.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘arbitrary(Type,Term)’
     `Mode and number of proofs:'
          ‘arbitrary(@callable,-term)’ - ‘zero_or_one’

__________________________________________________________________

1.1.1.4 ‘shrinker/1’
....................

Table of defined types for which a shrinker is provided.  A new shrinker
can be registered by defining a clause for this predicate and adding a
definition for the ‘shrink/3’ multifile predicate.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘shrinker(Type)’
     `Mode and number of proofs:'
          ‘shrinker(?callable)’ - ‘zero_or_more’

__________________________________________________________________

1.1.1.5 ‘shrink/3’
..................

Shrinks a value to a smaller value if possible.  Must generate a finite
number of solutions.  Fails if the type is not supported.  A new
shrinker can be defined by adding a clause for this predicate and
registering it via the ‘shrinker/1’ predicate.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘shrink(Type,Large,Small)’
     `Mode and number of proofs:'
          ‘shrink(@callable,@term,-term)’ - ‘zero_or_more’

__________________________________________________________________

1.1.1.6 ‘edge_case/2’
.....................

Table of type edge cases.  Fails if the given type have no defined edge
cases.  New edge cases for existing or new types can be added by
defining a clause for this multifile predicate.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘edge_case(Type,Term)’
     `Mode and number of proofs:'
          ‘edge_case(?callable,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.1.1.7 Protected predicates
............................

(see entity ancestors)

1.1.1.8 Private predicates
..........................

(see entity ancestors)

1.1.1.9 Operators
.................

(none)

See also
........

See type.

1.2 ‘assertions’
================

`object'

1.2.1 ‘assertions’
------------------

Proxy object for simplifying the use of the assertion meta-predicates.

     `Author:' Paulo Moura
     `Version:' 2.0
     `Date:' 2014/4/3

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ assertions(_).

     `Remarks:'
          (none)

1.2.1.1 Public predicates
.........................

(see entity ancestors)

1.2.1.2 Protected predicates
............................

(see entity ancestors)

1.2.1.3 Private predicates
..........................

(see entity ancestors)

1.2.1.4 Operators
.................

(none)

`object'

1.2.2 ‘assertions(Mode)’
------------------------

A simple assertions framework.  Can be used as a hook object for either
suppressing assertions (‘production’ mode) or expanding them with file
context information (‘debug’ mode).

     `Author:' Paulo Moura
     `Version:' 2.2
     `Date:' 2019/6/17

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Uses:'
          See logtalk.

     `Remarks:'
          (none)

1.2.2.1 Public predicates
.........................

1.2.2.2 ‘assertion/1’
.....................

Checks that an assertion is true.  Uses the structured message printing
mechanism for printing the results using a silent message for assertion
success and a error message for assertion failure.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘assertion(Goal)’
     `Meta-predicate template:'
          ‘assertion(0)’
     `Mode and number of proofs:'
          ‘assertion(@callable)’ - ‘one’

__________________________________________________________________

1.2.2.3 ‘assertion/2’
.....................

Checks that an assertion is true.  Uses the structured message printing
mechanism for printing the results using a silent message for assertion
success and a error message for assertion failure.  The context argument
can be used to e.g.  pass location data.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘assertion(Context,Goal)’
     `Meta-predicate template:'
          ‘assertion(*,0)’
     `Mode and number of proofs:'
          ‘assertion(@term,@callable)’ - ‘one’

__________________________________________________________________

1.2.2.4 Protected predicates
............................

(see entity ancestors)

1.2.2.5 Private predicates
..........................

(see entity ancestors)

1.2.2.6 Operators
.................

(none)

`category'

1.2.3 ‘assertions_messages’
---------------------------

Assertions framework default message translations.

     `Author:' Paulo Moura
     `Version:' 2.2
     `Date:' 2018/2/20

     `Compilation flags:'
          ‘static’

     `Provides:'
          See logtalk;;message_prefix_stream/4.
          logtalk;;message_tokens//2.

     `Remarks:'
          (none)

1.2.3.1 Public predicates
.........................

(see entity ancestors)

1.2.3.2 Protected predicates
............................

(see entity ancestors)

1.2.3.3 Private predicates
..........................

(see entity ancestors)

1.2.3.4 Operators
.................

(none)

1.3 ‘assignvars’
================

`object'

1.3.1 ‘assignvars’
------------------

Assignable variables (supporting backtracable assignment of non-variable
terms).

     `Author:' Nobukuni Kino and Paulo Moura
     `Version:' 1.7
     `Date:' 2018/7/11

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ assignvarsp.

     `Remarks:'
          (none)

1.3.1.1 Public predicates
.........................

(see entity ancestors)

1.3.1.2 Protected predicates
............................

(see entity ancestors)

1.3.1.3 Private predicates
..........................

(see entity ancestors)

1.3.1.4 Operators
.................

(none)

`protocol'

1.3.2 ‘assignvarsp’
-------------------

Assignable variables (supporting backtracable assignment of non-variable
terms) protocol.

     `Author:' Nobukuni Kino and Paulo Moura
     `Version:' 1.01
     `Date:' 2019/6/10

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.3.2.1 Public predicates
.........................

1.3.2.2 ‘assignable/1’
......................

Makes ‘Variable’ an assignable variable.  Initial state will be empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘assignable(Variable)’
     `Mode and number of proofs:'
          ‘assignable(--assignvar)’ - ‘one’

     `Exceptions:'
          Variable is not a variable:
               ‘type_error(variable,Variable)’

__________________________________________________________________

1.3.2.3 ‘assignable/2’
......................

Makes ‘Variable’ an assignable variable and sets its initial state to
‘Value’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘assignable(Variable,Value)’
     `Mode and number of proofs:'
          ‘assignable(--assignvar,@nonvar)’ - ‘one’

     `Exceptions:'
          Variable is not a variable:
               ‘type_error(variable,Variable)’
          Value is not instantiated:
               ‘instantiation_error’

__________________________________________________________________

1.3.2.4 ‘(<=)/2’
................

Sets the state of the assignable variable ‘Variable’ to ‘Value’
(initializing the variable if needed).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Variable<=Value’
     `Mode and number of proofs:'
          ‘(?assignvar)<=(@nonvar)’ - ‘one’

     `Exceptions:'
          Value is not instantiated:
               ‘instantiation_error’

__________________________________________________________________

1.3.2.5 ‘(=>)/2’
................

Unifies ‘Value’ with the current state of the assignable variable
‘Variable’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Variable=>Value’
     `Mode and number of proofs:'
          ‘(+assignvar)=>(?nonvar)’ - ‘zero_or_one’

     `Exceptions:'
          Variable is not instantiated:
               ‘instantiation_error’

__________________________________________________________________

1.3.2.6 Protected predicates
............................

(none)

1.3.2.7 Private predicates
..........................

(none)

1.3.2.8 Operators
.................

1.3.2.9 ‘op(100,xfx,<=)’
........................

     `Scope:'
          ‘public’

1.3.2.10 ‘op(100,xfx,=>)’
.........................

     `Scope:'
          ‘public’

See also
........

See assignvars.

1.4 ‘code_metrics’
==================

`object'

1.4.1 ‘cc_metric’
-----------------

Cyclomatic complexity metric.  All defined predicates that are not
called or updated are counted as graph connected components (the
reasoning being that these predicates can be considered entry points).
The score is represented by a non-negative integer.

     `Author:' Paulo Moura
     `Version:' 0.2
     `Date:' 2018/7/18

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metrics_utilities.
          ‘public’ code_metric.
     `Provides:'
          See logtalk;;message_tokens//2.
     `Uses:'
          See list.
          logtalk.
          numberlist.

     `Remarks:'
          (none)

1.4.1.1 Public predicates
.........................

(see entity ancestors)

1.4.1.2 Protected predicates
............................

(see entity ancestors)

1.4.1.3 Private predicates
..........................

(see entity ancestors)

1.4.1.4 Operators
.................

(none)

`category'

1.4.2 ‘code_metric’
-------------------

Core predicates for computing source code metrics.

     `Author:' Ebrahim Azarisooreh and Paulo Moura
     `Version:' 0.8
     `Date:' 2018/2/18

     `Compilation flags:'
          ‘static’

     `Uses:'
          See list.
          logtalk.
          os.

     `Remarks:'
          (none)

1.4.2.1 Public predicates
.........................

1.4.2.2 ‘entity/1’
..................

Scans an entity and prints its metric score.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity(Entity)’
     `Mode and number of proofs:'
          ‘entity(+term)’ - ‘zero_or_one’

__________________________________________________________________

1.4.2.3 ‘file/1’
................

Prints metric scores for all the entities defined in a loaded source
file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file(File)’
     `Mode and number of proofs:'
          ‘file(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.4.2.4 ‘directory/1’
.....................

Scans a directory and prints metric scores for all entities defined in
its loaded source files.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Directory)’
     `Mode and number of proofs:'
          ‘directory(+atom)’ - ‘one’

__________________________________________________________________

1.4.2.5 ‘rdirectory/1’
......................

Recursive version of the ‘directory/1’ predicate.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Directory)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom)’ - ‘one’

__________________________________________________________________

1.4.2.6 ‘library/1’
...................

Prints metrics scores for all loaded entities from a given library.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library(Library)’
     `Mode and number of proofs:'
          ‘library(+atom)’ - ‘one’

__________________________________________________________________

1.4.2.7 ‘rlibrary/1’
....................

Recursive version of the ‘library/1’ predicate.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rlibrary(Library)’
     `Mode and number of proofs:'
          ‘rlibrary(+atom)’ - ‘one’

__________________________________________________________________

1.4.2.8 ‘all/0’
...............

Scans all loaded entities and prints their metric scores.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘all’ - ‘one’

__________________________________________________________________

1.4.2.9 ‘entity_score/2’
........................

Score is a term that represents the metric score associated with a
loaded entity.  Fails if the metric does not apply.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity_score(Entity,Score)’

__________________________________________________________________

1.4.2.10 ‘library_score/2’
..........................

Score is a term that represents the metric score associated with a
loaded library source files.  Fails if the metric does not apply.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library_score(Library,Score)’
     `Mode and number of proofs:'
          ‘library_score(@atom,-ground)’ - ‘zero_or_one’

__________________________________________________________________

1.4.2.11 ‘rlibrary_score/2’
...........................

Score is a term that represents the metric score associated with loaded
source files from a library and its sub-libraries.  Fails if the metric
does not apply.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rlibrary_score(Library,Score)’
     `Mode and number of proofs:'
          ‘rlibrary_score(@atom,-ground)’ - ‘zero_or_one’

__________________________________________________________________

1.4.2.12 ‘file_score/2’
.......................

Score is a term that represents the metric score associated with a
loaded source file.  Fails if the metric does not apply.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_score(File,Score)’
     `Mode and number of proofs:'
          ‘file_score(@atom,-ground)’ - ‘zero_or_one’

__________________________________________________________________

1.4.2.13 ‘directory_score/2’
............................

Score is a term that represents the metric score associated with loaded
source files from a directory.  Fails if the metric does not apply.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory_score(Directory,Score)’
     `Mode and number of proofs:'
          ‘directory_score(@atom,-ground)’ - ‘zero_or_one’

__________________________________________________________________

1.4.2.14 ‘rdirectory_score/2’
.............................

Score is a term that represents the metric score associated with loaded
source files from a directory and its sub-directories.  Fails if the
metric does not apply.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory_score(Directory,Score)’
     `Mode and number of proofs:'
          ‘rdirectory_score(@atom,-ground)’ - ‘zero_or_one’

__________________________________________________________________

1.4.2.15 ‘all_score/1’
......................

Score is a term that represents the metric score associated with all
loaded source files.  Fails if the metric does not apply.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘all_score(Score)’
     `Mode and number of proofs:'
          ‘all_score(-ground)’ - ‘zero_or_one’

__________________________________________________________________

1.4.2.16 ‘entity_score//2’
..........................

Pretty prints the entity score.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity_score(Entity,Score)’
     `Mode and number of proofs:'
          ‘entity_score(@entity_identifier,-ground)’ - ‘zero_or_one’
          ‘entity_score(@entity_identifier,+ground)’ - ‘one’

__________________________________________________________________

1.4.2.17 Protected predicates
.............................

1.4.2.18 ‘process_entity/2’
...........................

Processes an entity of the given kind.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘process_entity(Kind,Entity)’
     `Mode and number of proofs:'
          ‘process_entity(+atom,@entity_identifier)’ - ‘one’

__________________________________________________________________

1.4.2.19 ‘process_file/1’
.........................

Processes a source file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘process_file(Path)’
     `Mode and number of proofs:'
          ‘process_file(+atom)’ - ‘one’

__________________________________________________________________

1.4.2.20 ‘process_directory/1’
..............................

Processes a directory of source files.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘process_directory(Path)’
     `Mode and number of proofs:'
          ‘process_directory(+atom)’ - ‘one’

__________________________________________________________________

1.4.2.21 ‘process_rdirectory/1’
...............................

Recursively process a directory of source files.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘process_rdirectory(Path)’
     `Mode and number of proofs:'
          ‘process_rdirectory(+atom)’ - ‘one’

__________________________________________________________________

1.4.2.22 ‘process_rlibrary/1’
.............................

Recursively process a library of source files.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘process_rlibrary(Path)’
     `Mode and number of proofs:'
          ‘process_rlibrary(+atom)’ - ‘one’

__________________________________________________________________

1.4.2.23 ‘process_all/0’
........................

Processes all loaded source code.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘process_all’ - ‘one’

__________________________________________________________________

1.4.2.24 ‘sub_directory/2’
..........................

Enumerates, by backtracking, all directory sub-directories containing
loaded files.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sub_directory(Directory,SubDirectory)’
     `Mode and number of proofs:'
          ‘sub_directory(+atom,-atom)’ - ‘one’

__________________________________________________________________

1.4.2.25 ‘sub_library/2’
........................

Enumerates, by backtracking, all library sub-library paths.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sub_library(Library,SubLibraryPath)’
     `Mode and number of proofs:'
          ‘sub_library(+atom,-atom)’ - ‘one’

__________________________________________________________________

1.4.2.26 Private predicates
...........................

(see entity ancestors)

1.4.2.27 Operators
..................

(none)

`object'

1.4.3 ‘code_metrics’
--------------------

Helper object to apply all loaded code metrics.

     `Author:' Ebrahim Azarisooreh and Paulo Moura
     `Version:' 0.1
     `Date:' 2017/12/31

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metric.
     `Uses:'
          See logtalk.

     `Remarks:'
          (none)

1.4.3.1 Public predicates
.........................

(see entity ancestors)

1.4.3.2 Protected predicates
............................

(see entity ancestors)

1.4.3.3 Private predicates
..........................

(see entity ancestors)

1.4.3.4 Operators
.................

(none)

`category'

1.4.4 ‘code_metrics_messages’
-----------------------------

Message translations for the ‘code_metrics’ tool.

     `Author:' Ebrahim Azarisooreh
     `Version:' 0.5
     `Date:' 2017/12/31

     `Compilation flags:'
          ‘static’

     `Provides:'
          See logtalk;;message_prefix_stream/4.
          logtalk;;message_tokens//2.

     `Remarks:'
          (none)

1.4.4.1 Public predicates
.........................

(see entity ancestors)

1.4.4.2 Protected predicates
............................

(see entity ancestors)

1.4.4.3 Private predicates
..........................

(see entity ancestors)

1.4.4.4 Operators
.................

(none)

`category'

1.4.5 ‘code_metrics_utilities’
------------------------------

Internal predicates for analyzing source code.

     `Author:' Ebrahim Azarisooreh
     `Version:' 0.6
     `Date:' 2018/6/8

     `Compilation flags:'
          ‘static’

     `Uses:'
          See list.

     `Remarks:'

        - `Usage:' This is meant to be imported by any metric added to
          the system.

        - `Predicate Scope:' This is meant for internal use by metrics
          only.  As such, all provided predicates are private.

1.4.5.1 Public predicates
.........................

(see entity ancestors)

1.4.5.2 Protected predicates
............................

(see entity ancestors)

1.4.5.3 Private predicates
..........................

1.4.5.4 ‘ancestor/4’
....................

True if ‘Entity’ descends from ‘Ancestor’, and ‘EntityKind’ and
‘AncestorKind’ unify with their respective entity types.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘ancestor(EntityKind,Entity,AncestorKind,Ancestor)’
     `Mode and number of proofs:'
          ‘ancestor(?entity,?entity_identifier,?entity,?entity_identifier)’ - ‘zero_or_more’

__________________________________________________________________

1.4.5.5 ‘current_entity/1’
..........................

True if ‘Entity’ is a currently loaded entity.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘current_entity(Entity)’
     `Mode and number of proofs:'
          ‘current_entity(?entity_identifier)’ - ‘zero_or_more’

__________________________________________________________________

1.4.5.6 ‘declares_predicate/2’
..............................

True if ‘Entity’ declares ‘Predicate’ internally.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘declares_predicate(Entity,Predicate)’
     `Mode and number of proofs:'
          ‘declares_predicate(?entity_identifier,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.4.5.7 ‘defines_predicate/2’
.............................

True if ‘Entity’ defines an implementation of ‘Predicate’ internally.
Auxiliary predicates are excluded from results.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘defines_predicate(Entity,Predicate)’
     `Mode and number of proofs:'
          ‘defines_predicate(?entity_identifier,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.4.5.8 ‘defines_predicate/3’
.............................

Same as ‘defines_predicate/2’, except ‘Property’ is unified with a
property of the predicate.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘defines_predicate(Entity,Predicate,Property)’
     `Mode and number of proofs:'
          ‘defines_predicate(?entity_identifier,?predicate_indicator,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.4.5.9 ‘entity_calls/3’
........................

True if a predicate ‘Caller’ within ‘Entity’ makes a ‘Call’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity_calls(Entity,Caller,Call)’
     `Mode and number of proofs:'
          ‘entity_calls(?entity_identifier,?predicate_indicator,?predicate_indicator)’ - ‘zero_or_one’

__________________________________________________________________

1.4.5.10 ‘entity_kind/2’
........................

True if ‘Kind’ defines ‘Entity’ and is one of category, protocol, or
object.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity_kind(Entity,Kind)’
     `Mode and number of proofs:'
          ‘entity_kind(+entity_identifier,-entity)’ - ‘zero_or_one’

__________________________________________________________________

1.4.5.11 ‘entity_property/2’
............................

True if ‘Property’ is a valid property of ‘Entity’.  Entity can be
either a category, a protocol, or an object.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity_property(Entity,Property)’
     `Mode and number of proofs:'
          ‘entity_property(+entity_identifier,-term)’ - ‘zero_or_more’

__________________________________________________________________

1.4.5.12 ‘entity_updates/3’
...........................

True if a predicate ‘Updater’ within ‘Entity’ makes a dynamic update to
‘Update’ (by e.g.  asserta/1, retract/1, etc.)

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity_updates(Entity,Updater,Update)’
     `Mode and number of proofs:'
          ‘entity_updates(+entity_identifier,?predicate_indicator,?predicate_indicator)’ - ‘zero_or_one’

__________________________________________________________________

1.4.5.13 Operators
..................

(none)

`object'

1.4.6 ‘coupling_metric’
-----------------------

Computes entity efferent coupling, afferent coupling, and instability.

     `Author:' Ebrahim Azarisooreh and Paulo Moura
     `Version:' 0.12
     `Date:' 2018/7/17

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metrics_utilities.
          ‘public’ code_metric.
     `Uses:'
          See list.

     `Remarks:'

        - `Efferent coupling (Ce):' Number of entities that an entity
          depends on.

        - `Afferent coupling (Ca):' Number of entities that depend on an
          entity.

        - `Instability (I):' Computed as ‘Ce / (Ce + Ca)’.  Measures the
          entity resilience to change.  Ranging from 0 to 1, with 0
          indicating a maximally stable entity and 1 indicating a
          maximally unstable entity.  Ideally, an entity is either
          maximally stable or maximally unstable.

        - `Abstractness (A):' Computed as the ratio between the number
          of static predicates with scope directives without a local
          definition and the number of static predicates with scope
          directives.  Measures the rigidity of an entity.  Ranging from
          0 to 1, with 0 indicating a fully concrete entity and 1
          indicating a fully abstract entity.

        - `Entity score:' Represented as the compound term
          ‘ce_ca_i_a(Ce,Ca,I,A)’.

        - `Dependencies count:' Includes direct entity relations plus
          calls or dynamic updates to predicates in external objects or
          categories.

1.4.6.1 Public predicates
.........................

(see entity ancestors)

1.4.6.2 Protected predicates
............................

(see entity ancestors)

1.4.6.3 Private predicates
..........................

(see entity ancestors)

1.4.6.4 Operators
.................

(none)

`object'

1.4.7 ‘dit_metric’
------------------

Analyzes the depth of inheritance for objects, protocols, and
categories.

     `Author:' Ebrahim Azarisooreh
     `Version:' 0.5
     `Date:' 2018/6/9

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metrics_utilities.
          ‘public’ code_metric.
     `Uses:'
          See list.

     `Remarks:'

        - `Depth:' The depth is the maximum length of a node to the root
          entity.  Lower scores are generally better.

        - `Inheritance:' A level of inheritance defined by either one of
          specialization, instantiation, extension, importation, or
          implementation.

        - `Scoring:' The maximum path length is determined for each
          entity in question.

1.4.7.1 Public predicates
.........................

(see entity ancestors)

1.4.7.2 Protected predicates
............................

(see entity ancestors)

1.4.7.3 Private predicates
..........................

(see entity ancestors)

1.4.7.4 Operators
.................

(none)

`object'

1.4.8 ‘doc_metric’
------------------

Entity and entity predicates documentation score.

     `Author:' Paulo Moura
     `Version:' 0.11
     `Date:' 2018/7/8

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metrics_utilities.
          ‘public’ code_metric.
     `Uses:'
          See list.
          numberlist.

     `Remarks:'

        - `Score range:' Score is a integer percentage where a 100%
          score means that all expected documentation information is
          present.

        - `Score weights:' The score is split by default between 20% for
          the entity documentation and 80% for the entity predicates
          documentation, Can be customized using the predicate
          ‘entity_predicates_weights_hook/2’.

        - `Score customization:' The individual scores of entity
          ‘info/1’ pairs and predicate ‘info/2’ pairs can be customized
          using the ‘entity_info_pair_score_hook/3’ and
          ‘predicate_info_pair_score_hook/4’ predicates.

1.4.8.1 Public predicates
.........................

1.4.8.2 ‘entity_predicates_weights_hook/2’
..........................................

Relative weight between entity documentation and predicates
documentation in percentage.  The sum of the two values must be equal to
100.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘entity_predicates_weights_hook(EntityWeight,PredicatesWeight)’
     `Mode and number of proofs:'
          ‘entity_predicates_weights_hook(?integer,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.4.8.3 ‘entity_info_score_hook/2’
..................................

Maximum score for entity ‘info/1’ directives.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘entity_info_score_hook(Entity,MaximumScore)’
     `Mode and number of proofs:'
          ‘entity_info_score_hook(?term,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.4.8.4 ‘entity_info_pair_score_hook/3’
.......................................

Score for relevant entity ‘info/1’ directive pairs.  If defined, the
‘entity_info_score_hook/2’ predicate should be defined accordingly.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘entity_info_pair_score_hook(Pair,Entity,Score)’
     `Mode and number of proofs:'
          ‘entity_info_pair_score_hook(?callable,?term,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.4.8.5 ‘predicate_mode_score_hook/3’
.....................................

Maximum score for predicate ‘mode/2’ directives.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘predicate_mode_score_hook(Entity,Predicate,MaximumScore)’
     `Mode and number of proofs:'
          ‘predicate_mode_score_hook(?term,?term,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.4.8.6 ‘predicate_mode_score_hook/5’
.....................................

Score for a predicate ‘mode/2’ directive.  If defined, the
‘predicate_mode_score_hook/3’ predicate should be defined accordingly.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘predicate_mode_score_hook(Template,Solutions,Entity,Predicate,Score)’
     `Mode and number of proofs:'
          ‘predicate_mode_score_hook(?term,?term,?term,?term,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.4.8.7 ‘predicate_info_score_hook/3’
.....................................

Maximum score for predicate ‘info/2’ directives.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘predicate_info_score_hook(Entity,Predicate,MaximumScore)’
     `Mode and number of proofs:'
          ‘predicate_info_score_hook(?term,?term,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.4.8.8 ‘predicate_info_pair_score_hook/4’
..........................................

Score for a predicate ‘info/2’ directive pairs.  If defined, the
‘predicate_info_score_hook/3’ predicate should be defined accordingly.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘predicate_info_pair_score_hook(Pair,Entity,Predicate,Score)’
     `Mode and number of proofs:'
          ‘predicate_info_pair_score_hook(?callable,?term,?term,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.4.8.9 Protected predicates
............................

(see entity ancestors)

1.4.8.10 Private predicates
...........................

(see entity ancestors)

1.4.8.11 Operators
..................

(none)

`object'

1.4.9 ‘halstead_metric’
-----------------------

Computes Halstead complexity numbers for an entity using a Stroud of 18.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2018/6/8

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ halstead_metric(18).

     `Remarks:'
          (none)

1.4.9.1 Public predicates
.........................

(see entity ancestors)

1.4.9.2 Protected predicates
............................

(see entity ancestors)

1.4.9.3 Private predicates
..........................

(see entity ancestors)

1.4.9.4 Operators
.................

(none)

`object'

1.4.10 ‘halstead_metric(Stroud)’
--------------------------------

   * ‘Stroud’ - Coefficient for computing the time required to program.

Computes Halstead complexity numbers for an entity.

     `Author:' Paulo Moura
     `Version:' 0.7
     `Date:' 2018/7/18

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metrics_utilities.
          ‘public’ code_metric.
     `Uses:'
          See list.
          numberlist.
          pairs.

     `Remarks:'

        - `Definition of operators:' Predicates declared, user-defined,
          and called are interpreted as operators.  Built-in predicates
          and built-in control constructs are ignored.

        - `Definition of operands:' Predicate arguments are abstracted
          and interpreted as operands.  Note that this definition of
          operands is a significant deviation from the original
          definition, which used syntactic literals.

        - `Pn:' Number of distinct predicates (declared, defined,
          called, or updated)

        - `PAn:' Number of predicate arguments (assumed distinct)

        - `Cn:' Number of predicate calls/updates + number of clauses

        - `CAn:' Number of predicate call/update arguments + number of
          clause head arguments

        - `EV:' Entity vocabulary: ‘EV = Pn + PAn’

        - `EL:' Entity length: ‘EL = Cn + CAn’

        - `V:' Volume: ‘V = EL * log2(EV)’

        - `D:' Difficulty: ‘D = (Pn/2) * (CAn/An)’

        - `E:' Effort: ‘E = D * V’

        - `T:' Time required to program: ‘T = E/k’ seconds (‘k’ is the
          Stroud number; defaults to 18)

        - `B:' Number of delivered bugs: ‘B = V/3000’

        - `Entity score:' Represented as the compound term
          ‘pn_pan_cn_can_ev_el_v_d_e_t_b/11’.

1.4.10.1 Public predicates
..........................

(see entity ancestors)

1.4.10.2 Protected predicates
.............................

(see entity ancestors)

1.4.10.3 Private predicates
...........................

(see entity ancestors)

1.4.10.4 Operators
..................

(none)

`object'

1.4.11 ‘noc_metric’
-------------------

Number of entity clauses metric.  The score is represented using the
compound term ‘number_of_clauses(Total, User)’.

     `Author:' Ebrahim Azarisooreh and Paulo Moura
     `Version:' 0.9
     `Date:' 2018/7/16

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metrics_utilities.
          ‘public’ code_metric.
     `Provides:'
          See logtalk;;message_tokens//2.
     `Uses:'
          See list.
          logtalk.

     `Remarks:'
          (none)

1.4.11.1 Public predicates
..........................

(see entity ancestors)

1.4.11.2 Protected predicates
.............................

(see entity ancestors)

1.4.11.3 Private predicates
...........................

(see entity ancestors)

1.4.11.4 Operators
..................

(none)

`object'

1.4.12 ‘nor_metric’
-------------------

Number of entity rules metric.  The score is represented using the
compound term ‘number_of_rules(Total, User)’.

     `Author:' Paulo Moura
     `Version:' 0.1
     `Date:' 2018/7/16

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metrics_utilities.
          ‘public’ code_metric.
     `Provides:'
          See logtalk;;message_tokens//2.
     `Uses:'
          See list.
          logtalk.

     `Remarks:'
          (none)

1.4.12.1 Public predicates
..........................

(see entity ancestors)

1.4.12.2 Protected predicates
.............................

(see entity ancestors)

1.4.12.3 Private predicates
...........................

(see entity ancestors)

1.4.12.4 Operators
..................

(none)

`object'

1.4.13 ‘size_metric’
--------------------

Source code size metric.  Returned scores are upper bounds and based
solely in source file sizes (expressed in bytes).

     `Author:' Paulo Moura
     `Version:' 0.3
     `Date:' 2018/6/8

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metrics_utilities.
          ‘public’ code_metric.
     `Provides:'
          See logtalk;;message_tokens//2.
     `Uses:'
          See list.
          logtalk.
          numberlist.
          os.

     `Remarks:'
          (none)

1.4.13.1 Public predicates
..........................

(see entity ancestors)

1.4.13.2 Protected predicates
.............................

(see entity ancestors)

1.4.13.3 Private predicates
...........................

(see entity ancestors)

1.4.13.4 Operators
..................

(none)

`object'

1.4.14 ‘upn_metric’
-------------------

Number of unique predicates nodes metric.  The nodes include called and
updated predicates independently of where they are defined.  The score
is represented by a non-negative integer.

     `Author:' Paulo Moura
     `Version:' 0.2
     `Date:' 2018/7/18

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ code_metrics_utilities.
          ‘public’ code_metric.
     `Provides:'
          See logtalk;;message_tokens//2.
     `Uses:'
          See list.
          logtalk.
          numberlist.

     `Remarks:'
          (none)

1.4.14.1 Public predicates
..........................

(see entity ancestors)

1.4.14.2 Protected predicates
.............................

(see entity ancestors)

1.4.14.3 Private predicates
...........................

(see entity ancestors)

1.4.14.4 Operators
..................

(none)

1.5 ‘core’
==========

`category'

1.5.1 ‘core_messages’
---------------------

Logtalk core (compiler and runtime) default message translations.

     `Author:' Paulo Moura
     `Version:' 1.84
     `Date:' 2019/9/16

     `Compilation flags:'
          ‘static’

     `Provides:'
          See logtalk;;message_prefix_stream/4.
          logtalk;;message_tokens//2.

     `Remarks:'
          (none)

1.5.1.1 Public predicates
.........................

(see entity ancestors)

1.5.1.2 Protected predicates
............................

(see entity ancestors)

1.5.1.3 Private predicates
..........................

(see entity ancestors)

1.5.1.4 Operators
.................

(none)

`protocol'

1.5.2 ‘expanding’
-----------------

Term and goal expansion protocol.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2016/7/12

     `Compilation flags:'
          ‘static, built_in’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.5.2.1 Public predicates
.........................

1.5.2.2 ‘goal_expansion/2’
..........................

Defines a goal expansion.  Called recursively until a fixed point is
reached on goals found while compiling a source file (except for goals
wrapped using the ‘{}/1’ compiler bypass control construct).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘goal_expansion(Goal,ExpandedGoal)’
     `Mode and number of proofs:'
          ‘goal_expansion(+callable,-callable)’ - ‘zero_or_one’

__________________________________________________________________

1.5.2.3 ‘term_expansion/2’
..........................

Defines a term expansion.  Called until it succeeds on all terms read
while compiling a source file (except for terms skipped by using the
conditional compilation directives or wrapped using the ‘{}/1’ compiler
bypass control construct).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘term_expansion(Term,ExpandedTerms)’
     `Mode and number of proofs:'
          ‘term_expansion(+term,-term)’ - ‘zero_or_one’
          ‘term_expansion(+term,-list(term))’ - ‘zero_or_one’

__________________________________________________________________

1.5.2.4 Protected predicates
............................

(none)

1.5.2.5 Private predicates
..........................

(none)

1.5.2.6 Operators
.................

(none)

`protocol'

1.5.3 ‘forwarding’
------------------

Message forwarding protocol.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2013/5/4

     `Compilation flags:'
          ‘static, built_in’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.5.3.1 Public predicates
.........................

1.5.3.2 ‘forward/1’
...................

User-defined message forwarding handler, automatically called (if
defined) by the runtime for any message that the receiving object does
not understand.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘forward(Message)’
     `Mode and number of proofs:'
          ‘forward(@callable)’ - ‘zero_or_more’

__________________________________________________________________

1.5.3.3 Protected predicates
............................

(none)

1.5.3.4 Private predicates
..........................

(none)

1.5.3.5 Operators
.................

(none)

`object'

1.5.4 ‘logtalk’
---------------

Built-in object providing message printing, debugging, library, source
file, and hacking methods.

     `Author:' Paulo Moura
     `Version:' 1.15
     `Date:' 2019/4/1

     `Compilation flags:'
          ‘static, built_in, context_switching_calls, threaded’

     `Dependencies:'
          (none)

     `Remarks:'

        - `Message kinds:' Default set: ‘silent’, ‘silent(Key)’,
          ‘banner’, ‘help’, ‘comment’, ‘comment(Key)’, ‘information’,
          ‘information(Key)’, ‘warning’, ‘warning(Key)’, ‘error’,
          ‘error(Key)’, ‘debug’, ‘debug(Key)’, ‘question’, and
          ‘question(Key)’.

        - `Printing of silent messages:' By default, silent messages are
          not printed.  These messages are only useful when intercepted.

        - `Printing of banner and comment messages:' By default, banner
          and comment messages are only printed when the ‘report’ flag
          is turned on.

        - `Printing of help, information, and question messages:' These
          messages are always printed by default as they provide
          requested output.

        - `Printing of warning messages:' By default, warning messages
          are not printed when the ‘report’ flag is turned off.

        - `Printing of error messages:' These messages are always
          printed by default.

        - `Printing of debug messages:' By default, debug messages are
          only printed when the ‘debug’ flag is turned on.

        - `Meta messages:' A meta message is a message that have another
          message as argument and is typically used for debugging
          messages.  Meta messages avoid the need of defining tokenizer
          rules for every message but can be intercepted as any other
          message.

        - `@Message meta message:' By default, the message is printed as
          passed to the ‘write/1’ predicate followed by a newline.

        - `Key-Value meta message:' By default, the message is printed
          as “Key: Value” followed by a newline.  The value is printed
          as passed to the ‘writeq/1’ predicate.

        - `List meta message:' By default, the list items are printed
          indented one per line.  The items are preceded by a dash and
          printed as passed to the ‘writeq/1’ predicate.

        - `Title::List meta message:' By default, the title is printed
          followed by a newline and the indented list items, one per
          line.  The items are preceded by a dash and printed as passed
          to the ‘writeq/1’ predicate.

1.5.4.1 Public predicates
.........................

1.5.4.2 ‘print_message/3’
.........................

Prints a message of the given kind for the specified component.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘print_message(Kind,Component,Message)’
     `Mode and number of proofs:'
          ‘print_message(+nonvar,+nonvar,+nonvar)’ - ‘one’

__________________________________________________________________

1.5.4.3 ‘print_message_tokens/3’
................................

Print the messages tokens to the given stream, prefixing each line with
the specified atom.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘print_message_tokens(Stream,Prefix,Tokens)’
     `Mode and number of proofs:'
          ‘print_message_tokens(@stream_or_alias,+atom,@list(nonvar))’ - ‘one’

__________________________________________________________________

1.5.4.4 ‘print_message_token/4’
...............................

User-defined hook predicate for printing a message token
(‘at_same_line’, ‘nl’, ‘flush’, ‘Format-Arguments’,
‘term(Term,Options)’, ‘ansi(Attributes,Format,Arguments)’,
‘begin(Kind,Variable)’, and ‘end(Variable)’).

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘print_message_token(Stream,Prefix,Token,Tokens)’
     `Mode and number of proofs:'
          ‘print_message_token(@stream_or_alias,@atom,@nonvar,@list(nonvar))’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.5 ‘message_tokens//2’
...........................

User-defined hook grammar rule for converting a message into a list of
tokens (‘at_same_line’, ‘nl’, ‘flush’, ‘Format-Arguments’,
‘term(Term,Options)’, ‘ansi(Attributes,Format,Arguments)’,
‘begin(Kind,Variable)’, and ‘end(Variable)’).

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘message_tokens(Message,Component)’
     `Mode and number of proofs:'
          ‘message_tokens(+nonvar,+nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.6 ‘message_prefix_stream/4’
.................................

Message line prefix and output stream to be used when printing a message
given its kind and component.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘message_prefix_stream(Kind,Component,Prefix,Stream)’
     `Mode and number of proofs:'
          ‘message_prefix_stream(?nonvar,?nonvar,?atom,?stream_or_alias)’ - ‘zero_or_more’

__________________________________________________________________

1.5.4.7 ‘message_hook/4’
........................

User-defined hook predicate for intercepting message printing calls.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘message_hook(Message,Kind,Component,Tokens)’
     `Mode and number of proofs:'
          ‘message_hook(+nonvar,+nonvar,+nonvar,+list(nonvar))’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.8 ‘ask_question/5’
........................

Asks a question and reads the answer until the check predicate is true.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘ask_question(Kind,Component,Question,Check,Answer)’
     `Meta-predicate template:'
          ‘ask_question(*,*,*,1,*)’
     `Mode and number of proofs:'
          ‘ask_question(+nonvar,+nonvar,+nonvar,+callable,-term)’ - ‘one’

__________________________________________________________________

1.5.4.9 ‘question_hook/6’
.........................

User-defined hook predicate for intercepting question asking calls.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘question_hook(Question,Kind,Component,Tokens,Check,Answer)’
     `Meta-predicate template:'
          ‘question_hook(*,*,*,*,1,*)’
     `Mode and number of proofs:'
          ‘question_hook(+nonvar,+nonvar,+nonvar,+list(nonvar),+callable,-term)’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.10 ‘question_prompt_stream/4’
...................................

Prompt and input stream to be used when asking a question given its kind
and component.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘question_prompt_stream(Kind,Component,Prompt,Stream)’
     `Mode and number of proofs:'
          ‘question_prompt_stream(?nonvar,?nonvar,?atom,?stream_or_alias)’ - ‘zero_or_more’

__________________________________________________________________

1.5.4.11 ‘trace_event/2’
........................

Trace event handler.  The runtime calls all trace event handlers using a
failure-driven loop before calling the debug event handler.

     `Compilation flags:'
          ‘dynamic, multifile’

     `Template:'
          ‘trace_event(Event,ExecutionContext)’
     `Mode and number of proofs:'
          ‘trace_event(@callable,@execution_context)’ - ‘zero’

__________________________________________________________________

1.5.4.12 ‘debug_handler_provider/1’
...................................

Declares an object as the debug handler provider.  There should be at
most one debug handler provider loaded at any given moment.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘debug_handler_provider(Provider)’
     `Mode and number of proofs:'
          ‘debug_handler_provider(?object_identifier)’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.13 ‘debug_handler/2’
..........................

Debug event handler.  The defined events are unification events -
‘fact(Entity,Fact,Clause,File,Line)’ and
‘rule(Entity,Head,Clause,File,Line)’ - and goal events -
‘top_goal(Goal,CompiledGoal)’ and ‘goal(Goal,CompiledGoal)’.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘debug_handler(Event,ExecutionContext)’
     `Mode and number of proofs:'
          ‘debug_handler(?entity_identifier,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.5.4.14 ‘expand_library_path/2’
................................

Expands a library alias or a library path into its absolute path.  Uses
a depth bound to prevent loops.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘expand_library_path(LibraryPath,AbsolutePath)’
     `Mode and number of proofs:'
          ‘expand_library_path(+atom,?atom)’ - ‘zero_or_one’
          ‘expand_library_path(+callable,?atom)’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.15 ‘loaded_file/1’
........................

Enumerates, by backtracking, all loaded files, returning their full
paths.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘loaded_file(Path)’
     `Mode and number of proofs:'
          ‘loaded_file(?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.5.4.16 ‘loaded_file_property/2’
.................................

Enumerates, by backtracking, loaded file properties: basename/1,
directory/1, mode/1, flags/1, text_properties/1 (encoding/1 and bom/1),
target/1, modified/1, parent/1, includes/1, library/1, object/1,
protocol/1, and category/1.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘loaded_file_property(Path,Property)’
     `Mode and number of proofs:'
          ‘loaded_file_property(?atom,?compound)’ - ‘zero_or_more’

__________________________________________________________________

1.5.4.17 ‘file_type_extension/2’
................................

Enumerates, by backtracking, all defined file type extensions.  The
defined types are: ‘source’, ‘object’, ‘logtalk’, ‘prolog’, and ‘tmp’.
The source type returns both ‘logtalk’ and ‘prolog’ type extensions.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_type_extension(Type,Extension)’
     `Mode and number of proofs:'
          ‘file_type_extension(?atom,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.5.4.18 ‘compile_aux_clauses/1’
................................

Compiles a list of auxiliary clauses.  Can only be called during source
file compilation, usually from ‘term_expansion/2’ or ‘goal_expansion/2’
hook predicate definitions.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘compile_aux_clauses(Clauses)’
     `Mode and number of proofs:'
          ‘compile_aux_clauses(@list(clause))’ - ‘one’

__________________________________________________________________

1.5.4.19 ‘entity_prefix/2’
..........................

Converts between an entity identifier and the entity prefix that is used
for its compiled code.  When none of the arguments is instantiated, it
returns the identifier and the prefix of the entity under compilation,
if any.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity_prefix(Entity,Prefix)’
     `Mode and number of proofs:'
          ‘entity_prefix(?entity_identifier,?atom)’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.20 ‘compile_predicate_heads/4’
....................................

Compiles clause heads.  The heads are compiled in the context of the
entity under compilation when the entity argument is not instantiated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘compile_predicate_heads(Heads,Entity,CompiledHeads,ExecutionContext)’
     `Mode and number of proofs:'
          ‘compile_predicate_heads(@list(callable),?entity_identifier,-list(callable),@execution_context)’ - ‘zero_or_one’
          ‘compile_predicate_heads(@conjunction(callable),?entity_identifier,-conjunction(callable),@execution_context)’ - ‘zero_or_one’
          ‘compile_predicate_heads(@callable,?entity_identifier,-callable,@execution_context)’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.21 ‘compile_predicate_indicators/3’
.........................................

Compiles predicate indicators.  The predicate are compiled in the
context of the entity under compilation when the entity argument is not
instantiated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘compile_predicate_indicators(PredicateIndicators,Entity,CompiledPredicateIndicators)’
     `Mode and number of proofs:'
          ‘compile_predicate_indicators(@list(predicate_indicator),?entity_identifier,-list(predicate_indicator))’ - ‘zero_or_one’
          ‘compile_predicate_indicators(@conjunction(predicate_indicator),?entity_identifier,-conjunction(predicate_indicator))’ - ‘zero_or_one’
          ‘compile_predicate_indicators(@predicate_indicator,?entity_identifier,-predicate_indicator)’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.22 ‘decompile_predicate_heads/4’
......................................

Decompiles clause heads.  All compiled clause heads must belong to the
same entity, which must be loaded.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘decompile_predicate_heads(CompiledHeads,Entity,Type,Heads)’
     `Mode and number of proofs:'
          ‘decompile_predicate_heads(@list(callable),-entity_identifier,-atom,-list(callable))’ - ‘zero_or_one’
          ‘decompile_predicate_heads(@conjunction(callable),-entity_identifier,-atom,-conjunction(callable))’ - ‘zero_or_one’
          ‘decompile_predicate_heads(@callable,-entity_identifier,-atom,-callable)’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.23 ‘decompile_predicate_indicators/4’
...........................................

Decompiles predicate indicators.  All compiled predicate indicators must
belong to the same entity, which must be loaded.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘decompile_predicate_indicators(CompiledPredicateIndicators,Entity,Type,PredicateIndicators)’
     `Mode and number of proofs:'
          ‘decompile_predicate_indicators(@list(predicate_indicator),-entity_identifier,-atom,-list(predicate_indicator))’ - ‘zero_or_one’
          ‘decompile_predicate_indicators(@conjunction(predicate_indicator),-entity_identifier,-atom,-conjunction(predicate_indicator))’ - ‘zero_or_one’
          ‘decompile_predicate_indicators(@predicate_indicator,-entity_identifier,-atom,-predicate_indicator)’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.24 ‘execution_context/7’
..............................

Execution context term data.  Execution context terms should be
considered opaque terms subject to change without notice.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘execution_context(ExecutionContext,Entity,Sender,This,Self,MetaCallContext,CoinductionStack)’
     `Mode and number of proofs:'
          ‘execution_context(?nonvar,?entity_identifier,?object_identifier,?object_identifier,?object_identifier,@list(callable),@list(callable))’ - ‘zero_or_one’

__________________________________________________________________

1.5.4.25 Protected predicates
.............................

(none)

1.5.4.26 Private predicates
...........................

(none)

1.5.4.27 Operators
..................

(none)

`protocol'

1.5.5 ‘monitoring’
------------------

Event handlers protocol.  The handlers are automatically by the runtime
called for messages sent using the ‘::/2’ control construct from objects
compiled with the ‘events’ flag set to ‘allow’.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2018/10/14

     `Compilation flags:'
          ‘static, built_in’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.5.5.1 Public predicates
.........................

1.5.5.2 ‘before/3’
..................

Event handler for ‘before’ events.  A ‘before’ event handler may prevent
a method from being looked up or called by failing.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘before(Object,Message,Sender)’
     `Mode and number of proofs:'
          ‘before(?term,?term,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.5.5.3 ‘after/3’
.................

Event handler for ‘after’ events.  An ‘after’ event handler may prevent
a method from succeeding by failing.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘after(Object,Message,Sender)’
     `Mode and number of proofs:'
          ‘after(?term,?term,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.5.5.4 Protected predicates
............................

(none)

1.5.5.5 Private predicates
..........................

(none)

1.5.5.6 Operators
.................

(none)

`object'

1.5.6 ‘user’
------------

Pseudo-object ‘user’ representing the plain Prolog database.

     `Author:' Paulo Moura
     `Version:' 1.3
     `Date:' 2018/5/24

     `Compilation flags:'
          ‘static, built_in, context_switching_calls, dynamic_declarations, threaded’

     `Implements:'
          ‘public’ expanding.
          ‘public’ forwarding.

     `Remarks:'
          (none)

1.5.6.1 Public predicates
.........................

(see entity ancestors)

1.5.6.2 Protected predicates
............................

(see entity ancestors)

1.5.6.3 Private predicates
..........................

(see entity ancestors)

1.5.6.4 Operators
.................

(none)

1.6 ‘coroutining’
=================

`object'

1.6.1 ‘coroutining’
-------------------

Coroutining predicates.

     `Author:' Paulo Moura
     `Version:' 0.1
     `Date:' 2019/1/5

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'

        - `Supported backend Prolog systems:' ECLiPSe, SICStus Prolog,
          SWI-Prolog, and YAP.

1.6.1.1 Public predicates
.........................

1.6.1.2 ‘dif/2’
...............

Sets a constraint that is true iff the two terms are different.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘dif(Term1,Term2)’
     `Mode and number of proofs:'
          ‘dif(+term,+term)’ - ‘zero_or_one’

__________________________________________________________________

1.6.1.3 ‘freeze/2’
..................

Delays the execution of a goal until a variable is bound.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘freeze(Variable,Goal)’
     `Meta-predicate template:'
          ‘freeze(*,0)’
     `Mode and number of proofs:'
          ‘freeze(+term,+callable)’ - ‘zero_or_more’

__________________________________________________________________

1.6.1.4 ‘frozen/2’
..................

Unifies ‘Goal’ with the goal delayed by ‘Variable’.  When no goals are
frozen on ‘Variable’, ‘Goal’ is unified with true.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘frozen(Variable,Goal)’
     `Mode and number of proofs:'
          ‘frozen(@var,--callable)’ - ‘one’

__________________________________________________________________

1.6.1.5 ‘when/2’
................

Calls ‘Goal’ when ‘Condition’ becomes true.  The portable conditions
are: ‘nonvar/1’, ‘ground/1’, ‘(,)/2’, and ‘(;)/2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘when(Condition,Goal)’
     `Meta-predicate template:'
          ‘when(*,0)’
     `Mode and number of proofs:'
          ‘when(+callable,+callable)’ - ‘zero_or_more’

__________________________________________________________________

1.6.1.6 Protected predicates
............................

(none)

1.6.1.7 Private predicates
..........................

(none)

1.6.1.8 Operators
.................

(none)

1.7 ‘dates’
===========

`object'

1.7.1 ‘date’
------------

Date predicates.

     `Author:' Paulo Moura
     `Version:' 1.2
     `Date:' 2014/9/27

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ datep.
     `Uses:'
          See os.

     `Remarks:'
          (none)

1.7.1.1 Public predicates
.........................

(see entity ancestors)

1.7.1.2 Protected predicates
............................

(see entity ancestors)

1.7.1.3 Private predicates
..........................

(see entity ancestors)

1.7.1.4 Operators
.................

(none)

`protocol'

1.7.2 ‘datep’
-------------

Date protocol.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2005/3/17

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.7.2.1 Public predicates
.........................

1.7.2.2 ‘today/3’
.................

Returns current date.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘today(Year,Month,Day)’
     `Mode and number of proofs:'
          ‘today(-integer,-integer,-integer)’ - ‘one’

__________________________________________________________________

1.7.2.3 ‘leap_year/1’
.....................

True if the argument is a leap year.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leap_year(Year)’
     `Mode and number of proofs:'
          ‘leap_year(+integer)’ - ‘zero_or_one’

__________________________________________________________________

1.7.2.4 ‘name_of_day/3’
.......................

Name and short name of day.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘name_of_day(Index,Name,Short)’
     `Mode and number of proofs:'
          ‘name_of_day(?integer,?atom,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.7.2.5 ‘name_of_month/3’
.........................

Name and short name of month.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘name_of_month(Index,Name,Short)’
     `Mode and number of proofs:'
          ‘name_of_month(?integer,?atom,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.7.2.6 ‘days_in_month/3’
.........................

Number of days in a month.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘days_in_month(Month,Year,Days)’
     `Mode and number of proofs:'
          ‘days_in_month(?integer,+integer,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.7.2.7 ‘valid/3’
.................

True if the arguments represent a valid date.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘valid(Year,Month,Day)’
     `Mode and number of proofs:'
          ‘valid(@integer,@integer,@integer)’ - ‘zero_or_one’

__________________________________________________________________

1.7.2.8 Protected predicates
............................

(none)

1.7.2.9 Private predicates
..........................

(none)

1.7.2.10 Operators
..................

(none)

See also
........

See date, timep.

`object'

1.7.3 ‘time’
------------

Time predicates.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2014/9/27

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ timep.
     `Uses:'
          See os.

     `Remarks:'
          (none)

1.7.3.1 Public predicates
.........................

(see entity ancestors)

1.7.3.2 Protected predicates
............................

(see entity ancestors)

1.7.3.3 Private predicates
..........................

(see entity ancestors)

1.7.3.4 Operators
.................

(none)

See also
........

See datep.

`protocol'

1.7.4 ‘timep’
-------------

Time protocol.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2000/7/24

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.7.4.1 Public predicates
.........................

1.7.4.2 ‘now/3’
...............

Returns current time.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘now(Hours,Mins,Secs)’
     `Mode and number of proofs:'
          ‘now(-integer,-integer,-integer)’ - ‘one’

__________________________________________________________________

1.7.4.3 ‘cpu_time/1’
....................

Returns the current cpu time.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘cpu_time(Time)’
     `Mode and number of proofs:'
          ‘cpu_time(-number)’ - ‘one’

__________________________________________________________________

1.7.4.4 ‘valid/3’
.................

True if the arguments represent a valid time value.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘valid(Hours,Mins,Secs)’
     `Mode and number of proofs:'
          ‘valid(+integer,+integer,+integer)’ - ‘zero_or_one’

__________________________________________________________________

1.7.4.5 Protected predicates
............................

(none)

1.7.4.6 Private predicates
..........................

(none)

1.7.4.7 Operators
.................

(none)

See also
........

See time, datep.

1.8 ‘dead_code_scanner’
=======================

`object'

1.8.1 ‘dead_code_scanner’
-------------------------

A tool for detecting `likely' dead code in compiled Logtalk entities and
Prolog modules compiled as objects.

     `Author:' Barry Evans and Paulo Moura
     `Version:' 0.11
     `Date:' 2017/8/10

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Uses:'
          See list.
          logtalk.
          os.

     `Remarks:'

        - `Dead code:' A predicate or non-terminal that is not called
          (directly or indirectly) by any scoped predicate or
          non-terminal.  These predicates and non-terminals are not
          used, cannot be called without breaking encapsulation, and are
          thus considered dead code.

        - `Known issues:' Use of local meta-calls with goal arguments
          only know at runtime can result in false positives.  Calls
          from non-standard meta-predicates may be missed if the
          meta-calls are not optimized.

        - `Requirements:' Source files must be compiled with the
          ‘source_data’ flag turned on.  To avoid false positives do to
          meta-calls, compilation of source files with the ‘optimized’
          flag turned on is also advised.

1.8.1.1 Public predicates
.........................

1.8.1.2 ‘entity/1’
..................

Scans a loaded entity for dead code.  Fails if the entity does not
exist.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity(Entity)’
     `Mode and number of proofs:'
          ‘entity(+entity_identifier)’ - ‘zero_or_one’

__________________________________________________________________

1.8.1.3 ‘file/1’
................

Scans all entities in a loaded source file for dead code.  The file can
be given by name, basename, full path, or using library notation.  Fails
if the file is not loaded.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file(File)’
     `Mode and number of proofs:'
          ‘file(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.8.1.4 ‘directory/1’
.....................

Scans all entities in all loaded files from a given directory for dead
code.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Directory)’
     `Mode and number of proofs:'
          ‘directory(+atom)’ - ‘one’

__________________________________________________________________

1.8.1.5 ‘rdirectory/1’
......................

Scans all entities in all loaded files from a given directory and its
sub-directories for dead code.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Directory)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom)’ - ‘one’

__________________________________________________________________

1.8.1.6 ‘library/1’
...................

Scans all entities in all loaded files from a given library for dead
code.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library(Library)’
     `Mode and number of proofs:'
          ‘library(+atom)’ - ‘one’

__________________________________________________________________

1.8.1.7 ‘rlibrary/1’
....................

Scans all entities in all loaded files in a loaded library and its
sub-libraries for dead code.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rlibrary(Library)’
     `Mode and number of proofs:'
          ‘rlibrary(+atom)’ - ‘one’

__________________________________________________________________

1.8.1.8 ‘all/0’
...............

Scans all entities for dead code.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘all’ - ‘one’

__________________________________________________________________

1.8.1.9 ‘predicates/2’
......................

Returns an ordered set of local predicates (and non-terminals) that are
not used, directly or indirectly, by scoped predicates for a loaded
entity.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘predicates(Entity,Predicates)’
     `Mode and number of proofs:'
          ‘predicates(+entity_identifier,-list(predicate_indicator))’ - ‘one’

__________________________________________________________________

1.8.1.10 ‘predicate/2’
......................

Enumerates, by backtracking, local predicates (and non-terminals) that
are not used, directly or indirectly, by scoped predicates for a loaded
entity.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘predicate(Entity,Predicate)’
     `Mode and number of proofs:'
          ‘predicate(+entity_identifier,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.8.1.11 Protected predicates
.............................

(see entity ancestors)

1.8.1.12 Private predicates
...........................

(see entity ancestors)

1.8.1.13 Operators
..................

(none)

`category'

1.8.2 ‘dead_code_scanner_messages’
----------------------------------

Logtalk ‘dead_code_scanner’ tool default message translations.

     `Author:' Barry Evans and Paulo Moura
     `Version:' 0.6
     `Date:' 2017/5/5

     `Compilation flags:'
          ‘static’

     `Provides:'
          See logtalk;;message_prefix_stream/4.
          logtalk;;message_tokens//2.

     `Remarks:'
          (none)

1.8.2.1 Public predicates
.........................

(see entity ancestors)

1.8.2.2 Protected predicates
............................

(see entity ancestors)

1.8.2.3 Private predicates
..........................

(see entity ancestors)

1.8.2.4 Operators
.................

(none)

1.9 ‘debug_messages’
====================

`object'

1.9.1 ‘debug_messages’
----------------------

Supports selective enabling and disabling of ‘debug’ and ‘debug(Group)’
messages.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2019/1/16

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;message_hook/4.
     `Uses:'
          See logtalk.

     `Remarks:'

        - `Limitations:' Debug messages are suppressed by the compiler
          when the ‘optimize’ flag is turned on and thus cannot be
          enabled in this case.

1.9.1.1 Public predicates
.........................

1.9.1.2 ‘enable/1’
..................

Enables all ‘debug’ and ‘debug(Group)’ messages for the given component.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘enable(Component)’
     `Mode and number of proofs:'
          ‘enable(@term)’ - ‘one’

__________________________________________________________________

1.9.1.3 ‘disable/1’
...................

Disables all ‘debug’ and ‘debug(Group)’ messages for the given
component.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘disable(Component)’

__________________________________________________________________

1.9.1.4 ‘enabled/1’
...................

Enumerates by backtracking the components with enabled ‘debug’ and
‘debug(Group)’ messages.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘enabled(Component)’
     `Mode and number of proofs:'
          ‘enabled(?term)’ - ‘zero_or_more’

__________________________________________________________________

1.9.1.5 ‘enable/2’
..................

Enables ‘debug(Group)’ messages for the given component and group.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘enable(Component,Group)’
     `Mode and number of proofs:'
          ‘enable(@term,@term)’ - ‘one’

__________________________________________________________________

1.9.1.6 ‘disable/2’
...................

Disables ‘debug(Group)’ messages for the given component and group.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘disable(Component,Group)’
     `Mode and number of proofs:'
          ‘disable(@term,@term)’ - ‘one’
          ‘disable(@term,@term)’ - ‘one’

__________________________________________________________________

1.9.1.7 ‘enabled/2’
...................

Enumerates by backtracking the enabled ‘debug(Group)’ messages for each
component.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘enabled(Component,Group)’
     `Mode and number of proofs:'
          ‘enabled(?term,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.9.1.8 Protected predicates
............................

(see entity ancestors)

1.9.1.9 Private predicates
..........................

1.9.1.10 ‘enabled_/1’
.....................

Table of components with currently enabled ‘debug’ and ‘debug(Group)’
messages.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘enabled_(Component)’
     `Mode and number of proofs:'
          ‘enabled_(?term)’ - ‘zero_or_more’

__________________________________________________________________

1.9.1.11 ‘enabled_/2’
.....................

Table of currently enabled ‘debug(Group)’ per component.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘enabled_(Component,Group)’
     `Mode and number of proofs:'
          ‘enabled_(?term,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.9.1.12 Operators
..................

(none)

1.10 ‘debugger’
===============

`object'

1.10.1 ‘debugger’
-----------------

Command-line debugger based on an extended procedure box model
supporting execution tracing and spy points.

     `Author:' Paulo Moura
     `Version:' 4.1
     `Date:' 2019/9/9

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ debuggerp.
     `Provides:'
          See logtalk;;debug_handler_provider/1.
          See logtalk;;debug_handler/2.
     `Uses:'
          See logtalk.

     `Remarks:'
          (none)

1.10.1.1 Public predicates
..........................

(see entity ancestors)

1.10.1.2 Protected predicates
.............................

(see entity ancestors)

1.10.1.3 Private predicates
...........................

1.10.1.4 ‘debugging_/0’
.......................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.5 ‘tracing_/0’
.....................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.6 ‘skipping_/0’
......................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.7 ‘quasi_skipping_/0’
............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.8 ‘spying_line_number_/2’
................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.9 ‘spying_predicate_/2’
..............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.10 ‘spying_context_/4’
.............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.11 ‘leashing_/1’
.......................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.12 ‘invocation_number_/1’
................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.13 ‘jump_to_invocation_number_/1’
........................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.14 ‘zap_to_port_/1’
..........................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.15 ‘write_max_depth_/1’
..............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.10.1.16 Operators
...................

(none)

`category'

1.10.2 ‘debugger_messages’
--------------------------

Logtalk ‘debugger’ tool default message translations.

     `Author:' Paulo Moura
     `Version:' 2.0
     `Date:' 2017/2/27

     `Compilation flags:'
          ‘static’

     `Provides:'
          See logtalk;;message_prefix_stream/4.
          logtalk;;question_prompt_stream/4.
          logtalk;;message_tokens//2.

     `Remarks:'
          (none)

1.10.2.1 Public predicates
..........................

(see entity ancestors)

1.10.2.2 Protected predicates
.............................

(see entity ancestors)

1.10.2.3 Private predicates
...........................

(see entity ancestors)

1.10.2.4 Operators
..................

(none)

`protocol'

1.10.3 ‘debuggerp’
------------------

Debugger protocol.

     `Author:' Paulo Moura
     `Version:' 2.1
     `Date:' 2016/10/23

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'

        - `Debugger help:' Type the character ‘h’ or the character ‘?’
          at a leashed port.

        - `Predicate spy point:' Specified as a ground term
          ‘Functor/Arity’.

        - `Line number spy point:' Specified as an ‘Entity-Line’ term
          with both ‘Entity’ and ‘Line’ bound.  ‘Line’ must be the first
          source file line of an entity clause.

        - `Leash shorthands:' ‘none’ - ‘[]’, ‘loose’ -
          ‘[fact,rule,call]’, ‘half’ - ‘[fact,rule,call,redo]’, ‘tight’
          - ‘[fact,rule,call,redo,fail,exception]’, and ‘full’ -
          ‘[fact,rule,call,exit,redo,fail,exception]’.

1.10.3.1 Public predicates
..........................

1.10.3.2 ‘reset/0’
..................

Resets all debugging settings, including spy points and leashed ports,
and turns off debugging.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘reset’ - ‘one’

__________________________________________________________________

1.10.3.3 ‘debug/0’
..................

Starts debugging for all defined spy points.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘debug’ - ‘one’

__________________________________________________________________

1.10.3.4 ‘nodebug/0’
....................

Stops debugging for all defined spy points.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘nodebug’ - ‘one’

__________________________________________________________________

1.10.3.5 ‘debugging/0’
......................

Reports current debugging settings, including spy points.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘debugging’ - ‘one’

__________________________________________________________________

1.10.3.6 ‘debugging/1’
......................

Enumerates, by backtracking, all entities compiled in debug mode.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘debugging(Entity)’
     `Mode and number of proofs:'
          ‘debugging(?entity_identifier)’ - ‘zero_or_more’

__________________________________________________________________

1.10.3.7 ‘trace/0’
..................

Starts tracing all calls compiled in debug mode.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘trace’ - ‘one’

__________________________________________________________________

1.10.3.8 ‘notrace/0’
....................

Stops tracing of calls compiled in debug mode.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘notrace’ - ‘one’

__________________________________________________________________

1.10.3.9 ‘spy/1’
................

Sets a line number spy point or a predicate spy point or a list of spy
points.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘spy(SpyPoint)’
     `Mode and number of proofs:'
          ‘spy(@spy_point)’ - ‘one’
          ‘spy(@list(spy_point))’ - ‘one’

__________________________________________________________________

1.10.3.10 ‘spying/1’
....................

Enumerates, by backtracking, all defined line number and predicate spy
points.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘spying(SpyPoint)’
     `Mode and number of proofs:'
          ‘spying(?spy_point)’ - ‘zero_or_more’

__________________________________________________________________

1.10.3.11 ‘spy/4’
.................

Sets a context spy point.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘spy(Sender,This,Self,Goal)’
     `Mode and number of proofs:'
          ‘spy(@term,@term,@term,@term)’ - ‘one’

__________________________________________________________________

1.10.3.12 ‘spying/4’
....................

Enumerates, by backtracking, all defined context spy points.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘spying(Sender,This,Self,Goal)’
     `Mode and number of proofs:'
          ‘spying(?term,?term,?term,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.10.3.13 ‘nospy/1’
...................

Removes all matching line number spy points and predicate spy points.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nospy(SpyPoint)’
     `Mode and number of proofs:'
          ‘nospy(@var)’ - ‘one’
          ‘nospy(@spy_point)’ - ‘one’
          ‘nospy(@list(spy_point))’ - ‘one’

__________________________________________________________________

1.10.3.14 ‘nospy/4’
...................

Removes all matching context spy points.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nospy(Sender,This,Self,Goal)’
     `Mode and number of proofs:'
          ‘nospy(@term,@term,@term,@term)’ - ‘one’

__________________________________________________________________

1.10.3.15 ‘nospyall/0’
......................

Removes all line number, predicate, and context spy points.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘nospyall’ - ‘one’

__________________________________________________________________

1.10.3.16 ‘leash/1’
...................

Sets the debugger leash ports using an abbreviation (‘none’, ‘loose’,
‘half’, ‘tight’, or ‘full’) or a list of ports (valid ports are ‘fact’,
‘rule’, ‘call’, ‘exit’, ‘redo’, ‘fail’, and ‘exception’).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leash(Ports)’
     `Mode and number of proofs:'
          ‘leash(+atom)’ - ‘one’
          ‘leash(+list(atom))’ - ‘one’

__________________________________________________________________

1.10.3.17 ‘leashing/1’
......................

Enumerates, by backtracking, all leashed ports (valid ports are ‘fact’,
‘rule’, ‘call’, ‘exit’, ‘redo’, ‘fail’, and ‘exception’).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leashing(Port)’
     `Mode and number of proofs:'
          ‘leashing(?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.10.3.18 Protected predicates
..............................

(none)

1.10.3.19 Private predicates
............................

(none)

1.10.3.20 Operators
...................

(none)

See also
........

See debugger.

1.11 ‘dependents’
=================

`category'

1.11.1 ‘observer’
-----------------

Smalltalk dependent protocol.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2003/2/9

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.11.1.1 Public predicates
..........................

1.11.1.2 ‘update/1’
...................

Called when an observed object is updated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘update(Change)’
     `Mode and number of proofs:'
          ‘update(?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.11.1.3 Protected predicates
.............................

(none)

1.11.1.4 Private predicates
...........................

(none)

1.11.1.5 Operators
..................

(none)

See also
........

See subject.

`category'

1.11.2 ‘subject’
----------------

Smalltalk dependent handling predicates.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2003/2/9

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.11.2.1 Public predicates
..........................

1.11.2.2 ‘changed/0’
....................

Receiver changed in some way.  Notify all dependents.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘changed’ - ‘one’

__________________________________________________________________

1.11.2.3 ‘changed/1’
....................

Receiver changed as specified in the argument.  Notify all dependents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘changed(Change)’
     `Mode and number of proofs:'
          ‘changed(?nonvar)’ - ‘one’

__________________________________________________________________

1.11.2.4 ‘dependents/1’
.......................

Returns a list of all dependent objects.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘dependents(Dependents)’
     `Mode and number of proofs:'
          ‘dependents(-list)’ - ‘one’

__________________________________________________________________

1.11.2.5 ‘addDependent/1’
.........................

Adds a new dependent object.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘addDependent(Dependent)’
     `Mode and number of proofs:'
          ‘addDependent(@object)’ - ‘one’

__________________________________________________________________

1.11.2.6 ‘removeDependent/1’
............................

Removes a dependent object.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘removeDependent(Dependent)’
     `Mode and number of proofs:'
          ‘removeDependent(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.11.2.7 Protected predicates
.............................

(none)

1.11.2.8 Private predicates
...........................

1.11.2.9 ‘dependent_/1’
.......................

Table of dependent objects.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘dependent_(Dependent)’
     `Mode and number of proofs:'
          ‘dependent_(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.11.2.10 Operators
...................

(none)

See also
........

See observer.

1.12 ‘diagrams’
===============

`category'

1.12.1 ‘diagram(Format)’
------------------------

   * ‘Format’ - Graph language file format

Common predicates for generating diagrams.

     `Author:' Paulo Moura
     `Version:' 2.45
     `Date:' 2019/9/7

     `Compilation flags:'
          ‘static’

     `Provides:'
          See logtalk;;message_prefix_stream/4.
          See logtalk;;message_tokens//2.
     `Uses:'
          See graph_language_registry.
          list.
          logtalk.
          modules_diagram_support.
          os.
          pairs.

     `Remarks:'
          (none)

1.12.1.1 Public predicates
..........................

1.12.1.2 ‘libraries/3’
......................

Creates a diagram for a set of libraries using the specified options.
The ‘Project’ argument is used as a prefix for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘libraries(Project,Libraries,Options)’
     `Mode and number of proofs:'
          ‘libraries(+atom,+list(atom),+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.3 ‘libraries/2’
......................

Creates a diagram for a set of libraries using the default options.  The
‘Project’ argument is used as a prefix for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘libraries(Project,Libraries)’
     `Mode and number of proofs:'
          ‘libraries(+atom,+list(atom))’ - ‘one’

__________________________________________________________________

1.12.1.4 ‘libraries/1’
......................

Creates a diagram for a set of libraries using the default options.  The
prefix ‘libraries’ is used for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘libraries(Libraries)’
     `Mode and number of proofs:'
          ‘libraries(+list(atom))’ - ‘one’

__________________________________________________________________

1.12.1.5 ‘all_libraries/1’
..........................

Creates a diagram for all loaded libraries using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘all_libraries(Options)’
     `Mode and number of proofs:'
          ‘all_libraries(+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.6 ‘all_libraries/0’
..........................

Creates a diagram for all loaded libraries using default options.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘all_libraries’ - ‘one’

__________________________________________________________________

1.12.1.7 ‘rlibrary/2’
.....................

Creates a diagram for a library and its sub-libraries using the
specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rlibrary(Library,Options)’
     `Mode and number of proofs:'
          ‘rlibrary(+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.8 ‘rlibrary/1’
.....................

Creates a diagram for a library and its sub-libraries using default
options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rlibrary(Library)’
     `Mode and number of proofs:'
          ‘rlibrary(+atom)’ - ‘one’

__________________________________________________________________

1.12.1.9 ‘library/2’
....................

Creates a diagram for a library using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library(Library,Options)’
     `Mode and number of proofs:'
          ‘library(+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.10 ‘library/1’
.....................

Creates a diagram for a library using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library(Library)’
     `Mode and number of proofs:'
          ‘library(+atom)’ - ‘one’

__________________________________________________________________

1.12.1.11 ‘directories/3’
.........................

Creates a diagram for a set of directories using the specified options.
The ‘Project’ argument is used as a prefix for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directories(Project,Directories,Options)’
     `Mode and number of proofs:'
          ‘directories(+atom,+list(atom),+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.12 ‘directories/2’
.........................

Creates a diagram for a set of directories using the default options.
The ‘Project’ argument is used as a prefix for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directories(Project,Directories)’
     `Mode and number of proofs:'
          ‘directories(+atom,+list(atom))’ - ‘one’

__________________________________________________________________

1.12.1.13 ‘rdirectory/3’
........................

Creates a diagram for a directory and its sub-directories using the
specified options.  The ‘Project’ argument is used as a prefix for the
diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Project,Directory,Options)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.14 ‘rdirectory/2’
........................

Creates a diagram for a directory and its sub-directories using default
options.  The ‘Project’ argument is used as a prefix for the diagram
file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Project,Directory)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.12.1.15 ‘rdirectory/1’
........................

Creates a diagram for a directory and its sub-directories using default
options.  The name of the directory is used as a prefix for the diagram
file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Directory)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom)’ - ‘one’

__________________________________________________________________

1.12.1.16 ‘directory/3’
.......................

Creates a diagram for a directory using the specified options.  The
‘Project’ argument is used as a prefix for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Project,Directory,Options)’
     `Mode and number of proofs:'
          ‘directory(+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.17 ‘directory/2’
.......................

Creates a diagram for a directory using default options.  The ‘Project’
argument is used as a prefix for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Project,Directory)’
     `Mode and number of proofs:'
          ‘directory(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.12.1.18 ‘directory/1’
.......................

Creates a diagram for a directory using default options.  The name of
the directory is used as a prefix for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Directory)’
     `Mode and number of proofs:'
          ‘directory(+atom)’ - ‘one’

__________________________________________________________________

1.12.1.19 ‘files/3’
...................

Creates a diagram for a set of files using the specified options.  The
file can be specified by name, basename, full path, or using library
notation.  The ‘Project’ argument is used as a prefix for the diagram
file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘files(Project,Files,Options)’
     `Mode and number of proofs:'
          ‘files(+atom,+list(atom),+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.20 ‘files/2’
...................

Creates a diagram for a set of files using the default options.  The
file can be specified by name, basename, full path, or using library
notation.  The ‘Project’ argument is used as a prefix for the diagram
file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘files(Project,Files)’
     `Mode and number of proofs:'
          ‘files(+atom,+list(atom))’ - ‘one’

__________________________________________________________________

1.12.1.21 ‘files/1’
...................

Creates a diagram for a set of files using the default options.  The
file can be specified by name, basename, full path, or using library
notation.  The prefix ‘files’ is used for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘files(Files)’
     `Mode and number of proofs:'
          ‘files(+list(atom))’ - ‘one’

__________________________________________________________________

1.12.1.22 ‘all_files/1’
.......................

Creates a diagram for all loaded files using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘all_files(Options)’
     `Mode and number of proofs:'
          ‘all_files(+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.23 ‘all_files/0’
.......................

Creates a diagram for all loaded files using default options.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘all_files’ - ‘one’

__________________________________________________________________

1.12.1.24 ‘format_object/1’
...........................

Returns the identifier of the object implementing the graph language
currently being used.  Fails if none is specified.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘format_object(Object)’
     `Mode and number of proofs:'
          ‘format_object(-object_identifier)’ - ‘zero_or_one’

__________________________________________________________________

1.12.1.25 ‘diagram_description/1’
.................................

Returns the diagram description.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘diagram_description(Description)’
     `Mode and number of proofs:'
          ‘diagram_description(-atom)’ - ‘one’

__________________________________________________________________

1.12.1.26 ‘diagram_name_suffix/1’
.................................

Returns the diagram name suffix.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘diagram_name_suffix(Suffix)’
     `Mode and number of proofs:'
          ‘diagram_name_suffix(-atom)’ - ‘one’

__________________________________________________________________

1.12.1.27 ‘default_option/1’
............................

Enumerates by backtracking the default options used when generating a
diagram.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘default_option(DefaultOption)’
     `Mode and number of proofs:'
          ‘default_option(?compound)’ - ‘zero_or_more’

__________________________________________________________________

1.12.1.28 ‘default_options/1’
.............................

Returns a list of the default options used when generating a diagram.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘default_options(DefaultOptions)’
     `Mode and number of proofs:'
          ‘default_options(-list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.29 Protected predicates
..............................

1.12.1.30 ‘merge_options/2’
...........................

Merges the user options with the default options, returning the list of
options used when generating a diagram.  Path arguments in options are
expanded to full paths.  Also ensures that all directory paths end with
a slash.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘merge_options(UserOptions,Options)’
     `Mode and number of proofs:'
          ‘merge_options(+list(compound),-list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.31 ‘diagram_caption/3’
.............................

Creates a diagram caption from the diagram description and the subject
and its kind.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘diagram_caption(Kind,Subject,Description)’
     `Mode and number of proofs:'
          ‘diagram_caption(+atom,+callable,-atom)’ - ‘one’

__________________________________________________________________

1.12.1.32 ‘output_rlibrary/3’
.............................

Generates diagram output for a library and its sub-libraries using the
specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_rlibrary(Library,Path,Options)’
     `Mode and number of proofs:'
          ‘output_rlibrary(+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.33 ‘output_library/3’
............................

Generates diagram output for a library using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_library(Library,Path,Options)’
     `Mode and number of proofs:'
          ‘output_library(+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.34 ‘output_rdirectory/3’
...............................

Generates diagram output for a directory and its sub-directories using
the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_rdirectory(Project,Path,Options)’
     `Mode and number of proofs:'
          ‘output_rdirectory(+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.35 ‘output_externals/1’
..............................

Output external nodes using the specified options depending on the value
of the boolean option ‘externals/1’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_externals(Options)’
     `Mode and number of proofs:'
          ‘output_externals(+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.36 ‘output_files/2’
..........................

Generates diagram output for a list of files using the specified
options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_files(Files,Options)’
     `Mode and number of proofs:'
          ‘output_files(+list,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.37 ‘output_file/4’
.........................

Generates diagram output for a file using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_file(Path,Basename,Directory,Options)’
     `Mode and number of proofs:'
          ‘output_file(+atom,+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.38 ‘output_sub_diagrams/1’
.................................

Outputs sub-diagrams using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_sub_diagrams(Options)’
     `Mode and number of proofs:'
          ‘output_sub_diagrams(+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.39 ‘reset/0’
...................

Resets all temporary information used when generating a diagram.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘reset’ - ‘one’

__________________________________________________________________

1.12.1.40 ‘output_node/6’
.........................

Outputs a graph node.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_node(Identifier,Label,Caption,Contents,Kind,Options)’
     `Mode and number of proofs:'
          ‘output_node(+nonvar,+nonvar,+nonvar,+list(nonvar),+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.41 ‘node/6’
..................

Enumerates, by backtracking, all saved nodes.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘node(Identifier,Label,Caption,Contents,Kind,Options)’
     `Mode and number of proofs:'
          ‘node(?nonvar,?nonvar,?nonvar,?list(compound),?atom,?list(compound))’ - ‘zero_or_more’

__________________________________________________________________

1.12.1.42 ‘edge/5’
..................

Enumerates, by backtracking, all saved edges.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘edge(From,To,Labels,Kind,Options)’
     `Mode and number of proofs:'
          ‘edge(?nonvar,?nonvar,?list(nonvar),?atom,?list(compound))’ - ‘zero_or_more’

__________________________________________________________________

1.12.1.43 ‘output_edges/1’
..........................

Outputs all edges.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_edges(Options)’
     `Mode and number of proofs:'
          ‘output_edges(+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.44 ‘save_edge/5’
.......................

Saves a graph edge.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘save_edge(From,To,Labels,Kind,Options)’
     `Mode and number of proofs:'
          ‘save_edge(+nonvar,+nonvar,+list(nonvar),+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.45 ‘output_missing_externals/1’
......................................

Outputs missing external nodes (usually due to unloaded resources) that
are referenced from edges.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_missing_externals(Options)’
     `Mode and number of proofs:'
          ‘output_missing_externals(+list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.46 ‘not_excluded_file/3’
...............................

True when the given file is not excluded from the generated output.
Excluded files may be specified by full path or by basename and with or
without extension.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘not_excluded_file(ExcludedFiles,Path,Basename)’
     `Mode and number of proofs:'
          ‘not_excluded_file(+list(atom),+atom,+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.12.1.47 ‘output_file_path/4’
..............................

Returns the output file path.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_file_path(Name,Options,Format,Path)’
     `Mode and number of proofs:'
          ‘output_file_path(+atom,+list(atom),+object_identifier,-atom)’ - ‘one’

__________________________________________________________________

1.12.1.48 ‘locate_library/2’
............................

Locates a library given its name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘locate_library(Library,Path)’
     `Mode and number of proofs:'
          ‘locate_library(+atom,-atom)’ - ‘one’

__________________________________________________________________

1.12.1.49 ‘locate_directory/2’
..............................

Locates a directory given its name or full path.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘locate_directory(Directory,Path)’
     `Mode and number of proofs:'
          ‘locate_directory(+atom,-atom)’ - ‘one’

__________________________________________________________________

1.12.1.50 ‘locate_file/5’
.........................

Locates a file given its name, basename, full path, or library notation
representation.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘locate_file(File,Basename,Extension,Directory,Path)’
     `Mode and number of proofs:'
          ‘locate_file(+atom,+atom,+atom,+atom,-atom)’ - ‘one’

__________________________________________________________________

1.12.1.51 ‘ground_entity_identifier/3’
......................................

Converts an entity identifier to a ground term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘ground_entity_identifier(Kind,Identifier,GroundIdentifier)’
     `Mode and number of proofs:'
          ‘ground_entity_identifier(+atom,+callable,-callable)’ - ‘one’

__________________________________________________________________

1.12.1.52 ‘filter_file_extension/3’
...................................

Filters the file name extension depending on the ‘file_extensions/1’
option.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘filter_file_extension(Basename,Options,Name)’
     `Mode and number of proofs:'
          ‘filter_file_extension(+atom,+list(compound),-atom)’ - ‘one’

__________________________________________________________________

1.12.1.53 ‘add_link_options/3’
..............................

Adds ‘url/1’, ‘urls/2’, and ‘tooltip/1’ link options (for use by the
graph language) based on the specified path to the list of options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘add_link_options(Path,Options,LinkingOptions)’
     `Mode and number of proofs:'
          ‘add_link_options(+atom,+list(compound),-list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.54 ‘omit_path_prefix/3’
..............................

Removes a prefix from a path, returning the relative path, when using
the option ‘omit_path_prefixes/1’.  Used mainly for constructing
directory and file node identifiers and captions.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘omit_path_prefix(Path,Options,Relative)’
     `Mode and number of proofs:'
          ‘omit_path_prefix(+atom,+list(compound),-atom)’ - ‘one’

__________________________________________________________________

1.12.1.55 ‘add_node_zoom_option/4’
..................................

Adds node zoom options when using the zoom option.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘add_node_zoom_option(Identifier,Suffix,Options,NodeOptions)’
     `Mode and number of proofs:'
          ‘add_node_zoom_option(+atom,+atom,+list(compound),-list(compound))’ - ‘one’

__________________________________________________________________

1.12.1.56 ‘message_diagram_description/1’
.........................................

Diagram description for progress messages.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘message_diagram_description(Description)’
     `Mode and number of proofs:'
          ‘message_diagram_description(?atom)’ - ‘one’

__________________________________________________________________

1.12.1.57 Private predicates
............................

1.12.1.58 ‘node_/6’
...................

Table of saved nodes.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘node_(Identifier,Label,Caption,Contents,Kind,Options)’
     `Mode and number of proofs:'
          ‘node_(?nonvar,?nonvar,?nonvar,?list(compound),?atom,?list(compound))’ - ‘zero_or_more’

__________________________________________________________________

1.12.1.59 ‘edge_/5’
...................

Table of saved edges.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘edge_(From,To,Labels,Kind,Options)’
     `Mode and number of proofs:'
          ‘edge_(?nonvar,?nonvar,?list(nonvar),?atom,?list(compound))’ - ‘zero_or_more’

__________________________________________________________________

1.12.1.60 Operators
...................

(none)

`object'

1.12.2 ‘diagrams’
-----------------

Predicates for generating all supported diagrams for libraries,
directories, and files in one step using the DOT format.

     `Author:' Paulo Moura
     `Version:' 2.1
     `Date:' 2019/4/7

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ diagrams(dot).

     `Remarks:'
          (none)

1.12.2.1 Public predicates
..........................

(see entity ancestors)

1.12.2.2 Protected predicates
.............................

(see entity ancestors)

1.12.2.3 Private predicates
...........................

(see entity ancestors)

1.12.2.4 Operators
..................

(none)

`object'

1.12.3 ‘diagrams(Format)’
-------------------------

   * ‘Format’ - Graph language file format

Predicates for generating all supported diagrams for libraries,
directories, or files in one step using the specified format.

     `Author:' Paulo Moura
     `Version:' 2.8
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Uses:'
          See list.
          os.

     `Remarks:'

        - `Common options:' ‘title/1’, ‘date/1’, ‘output_directory/1’,
          ‘relation_labels/1’, ‘node_type_captions/1’,
          ‘exclude_files/1’, ‘exclude_libraries/1’, ‘url_prefixes/1’,
          ‘omit_path_prefix/1’, ‘entity_url_suffix_target/2’, and
          ‘layout/1’.

        - `Limitations:' Some of the provided predicates only make sense
          for some types of diagrams.  Also, fine tuning may require
          generating individual diagrams directly instead of as a batch
          using this utility object.

1.12.3.2 ‘libraries/3’
......................

Creates all supported diagrams for a set of libraries using the
specified options.  The ‘Project’ argument is used as a prefix for the
diagram file names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘libraries(Project,Libraries,Options)’
     `Mode and number of proofs:'
          ‘libraries(+atom,+list(atom),+list(compound))’ - ‘one’

__________________________________________________________________

1.12.3.3 ‘libraries/2’
......................

Creates all supported diagrams for a set of libraries using the default
options.  The ‘Project’ argument is used as a prefix for the diagram
file names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘libraries(Project,Libraries)’
     `Mode and number of proofs:'
          ‘libraries(+atom,+list(atom))’ - ‘one’

__________________________________________________________________

1.12.3.4 ‘libraries/1’
......................

Creates all supported diagrams for a set of libraries using the default
options.  The prefix ‘libraries’ is used for the diagram file names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘libraries(Libraries)’
     `Mode and number of proofs:'
          ‘libraries(+list(atom))’ - ‘one’

__________________________________________________________________

1.12.3.5 ‘all_libraries/1’
..........................

Creates all supported diagrams for all loaded libraries using the
specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘all_libraries(Options)’
     `Mode and number of proofs:'
          ‘all_libraries(+list(compound))’ - ‘one’

__________________________________________________________________

1.12.3.6 ‘all_libraries/0’
..........................

Creates all supported diagrams for all loaded libraries using default
options.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘all_libraries’ - ‘one’

__________________________________________________________________

1.12.3.7 ‘rlibrary/2’
.....................

Creates all supported diagrams for a library and its sub-libraries using
the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rlibrary(Library,Options)’
     `Mode and number of proofs:'
          ‘rlibrary(+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.3.8 ‘rlibrary/1’
.....................

Creates all supported diagrams for a library and its sub-libraries using
default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rlibrary(Library)’
     `Mode and number of proofs:'
          ‘rlibrary(+atom)’ - ‘one’

__________________________________________________________________

1.12.3.9 ‘library/2’
....................

Creates all supported diagrams for a library using the specified
options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library(Library,Options)’
     `Mode and number of proofs:'
          ‘library(+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.3.10 ‘library/1’
.....................

Creates all supported diagrams for a library using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library(Library)’
     `Mode and number of proofs:'
          ‘library(+atom)’ - ‘one’

__________________________________________________________________

1.12.3.11 ‘directories/3’
.........................

Creates all supported diagrams for a set of directories using the
specified options.  The ‘Project’ argument is used as a prefix for the
diagram file names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directories(Project,Directories,Options)’
     `Mode and number of proofs:'
          ‘directories(+atom,+list(atom),+list(compound))’ - ‘one’

__________________________________________________________________

1.12.3.12 ‘directories/2’
.........................

Creates all supported diagrams for a directory using default options.
The ‘Project’ argument is used as a prefix for the diagram file names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directories(Project,Directories)’
     `Mode and number of proofs:'
          ‘directories(+atom,+list(atom))’ - ‘one’

__________________________________________________________________

1.12.3.13 ‘rdirectory/3’
........................

Creates all supported diagrams for a directory and its sub-directories
using the specified options.  The ‘Project’ argument is used as a prefix
for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Project,Directory,Options)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.3.14 ‘rdirectory/2’
........................

Creates all supported diagrams for a directory and its sub-directories
using default options.  The ‘Project’ argument is used as a prefix for
the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Project,Directory)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.12.3.15 ‘rdirectory/1’
........................

Creates all supported diagrams for a directory and its sub-directories
using default options.  The name of the directory is used as a prefix
for the diagram file name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Directory)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom)’ - ‘one’

__________________________________________________________________

1.12.3.16 ‘directory/3’
.......................

Creates all supported diagrams for a directory using the specified
options.  The ‘Project’ argument is used as a prefix for the diagram
file names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Project,Directory,Options)’
     `Mode and number of proofs:'
          ‘directory(+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.3.17 ‘directory/2’
.......................

Creates all supported diagrams for a directory using default options.
The ‘Project’ argument is used as a prefix for the diagram file names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Project,Directory)’
     `Mode and number of proofs:'
          ‘directory(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.12.3.18 ‘directory/1’
.......................

Creates all supported diagrams for a directory using default options.
The name of the directory is used as a prefix for the diagram file
names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Directory)’
     `Mode and number of proofs:'
          ‘directory(+atom)’ - ‘one’

__________________________________________________________________

1.12.3.19 ‘files/3’
...................

Creates all supported diagrams for a set of files using the specified
options.  The file can be specified by name, basename, full path, or
using library notation.  The Project argument is used as a prefix for
the diagram file names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘files(Project,Files,Options)’
     `Mode and number of proofs:'
          ‘files(+atom,+list(atom),+list(compound))’ - ‘one’

__________________________________________________________________

1.12.3.20 ‘files/2’
...................

Creates all supported diagrams for a set of files using the default
options.  The file can be specified by name, basename, full path, or
using library notation.  The Project argument is used as a prefix for
the diagram file names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘files(Project,Files)’
     `Mode and number of proofs:'
          ‘files(+atom,+list(atom))’ - ‘one’

__________________________________________________________________

1.12.3.21 ‘files/1’
...................

Creates all supported diagrams for a set of files using the default
options.  The file can be specified by name, basename, full path, or
using library notation.  The prefix “files” is used for the diagram file
names.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘files(Files)’
     `Mode and number of proofs:'
          ‘files(+list(atom))’ - ‘one’

__________________________________________________________________

1.12.3.22 ‘all_files/1’
.......................

Creates all supported diagrams for all loaded files using the specified
options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘all_files(Options)’
     `Mode and number of proofs:'
          ‘all_files(+list(compound))’ - ‘one’

__________________________________________________________________

1.12.3.23 ‘all_files/0’
.......................

Creates all supported diagrams for all loaded files using default
options.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘all_files’ - ‘one’

__________________________________________________________________

1.12.3.24 Protected predicates
..............................

(see entity ancestors)

1.12.3.25 Private predicates
............................

(see entity ancestors)

1.12.3.26 Operators
...................

(none)

`object'

1.12.4 ‘directory_dependency_diagram’
-------------------------------------

Predicates for generating directory dependency diagrams in DOT format.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2019/4/7

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ directory_dependency_diagram(dot).

     `Remarks:'
          (none)

1.12.4.1 Public predicates
..........................

(see entity ancestors)

1.12.4.2 Protected predicates
.............................

(see entity ancestors)

1.12.4.3 Private predicates
...........................

(see entity ancestors)

1.12.4.4 Operators
..................

(none)

See also
........

See directory_load_diagram, file_load_diagram.

`object'

1.12.5 ‘directory_dependency_diagram(Format)’
---------------------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating directory dependency diagrams.  A dependency
exists when an entity in one directory makes a reference to an entity in
another directory.

     `Author:' Paulo Moura
     `Version:' 1.19
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ directory_diagram(Format).
     `Uses:'
          See file_dependency_diagram(Format).
          list.
          logtalk.
          modules_diagram_support.

     `Remarks:'
          (none)

1.12.5.1 Public predicates
..........................

(see entity ancestors)

1.12.5.2 Protected predicates
.............................

(see entity ancestors)

1.12.5.3 Private predicates
...........................

1.12.5.4 ‘sub_diagram_/2’
.........................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.5.5 Operators
..................

(none)

See also
........

See directory_load_diagram(Format),
file_load_diagram(Format), library_load_diagram(Format).

`category'

1.12.6 ‘directory_diagram(Format)’
----------------------------------

   * ‘Format’ - Graph language file format

Common predicates for generating directory diagrams.

     `Author:' Paulo Moura
     `Version:' 1.11
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static’

     `Extends:'
          ‘public’ diagram(Format).
     `Uses:'
          See list.

     `Remarks:'
          (none)

1.12.6.1 Public predicates
..........................

(see entity ancestors)

1.12.6.2 Protected predicates
.............................

1.12.6.3 ‘remember_included_directory/1’
........................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.12.6.4 ‘remember_referenced_logtalk_directory/1’
..................................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.12.6.5 ‘remember_referenced_prolog_directory/1’
.................................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.12.6.6 Private predicates
...........................

1.12.6.7 ‘included_directory_/1’
................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.6.8 ‘referenced_logtalk_directory_/1’
..........................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.6.9 ‘referenced_prolog_directory_/1’
.........................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.6.10 Operators
...................

(none)

`object'

1.12.7 ‘directory_load_diagram’
-------------------------------

Predicates for generating directory loading dependency diagrams in DOT
format.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2019/4/7

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ directory_load_diagram(dot).

     `Remarks:'
          (none)

1.12.7.1 Public predicates
..........................

(see entity ancestors)

1.12.7.2 Protected predicates
.............................

(see entity ancestors)

1.12.7.3 Private predicates
...........................

(see entity ancestors)

1.12.7.4 Operators
..................

(none)

See also
........

See directory_dependency_diagram, file_dependency_diagram.

`object'

1.12.8 ‘directory_load_diagram(Format)’
---------------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating directory loading dependency diagrams.

     `Author:' Paulo Moura
     `Version:' 1.19
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ directory_diagram(Format).
     `Uses:'
          See file_load_diagram(Format).
          list.
          logtalk.
          modules_diagram_support.

     `Remarks:'
          (none)

1.12.8.1 Public predicates
..........................

(see entity ancestors)

1.12.8.2 Protected predicates
.............................

(see entity ancestors)

1.12.8.3 Private predicates
...........................

1.12.8.4 ‘sub_diagram_/2’
.........................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.8.5 Operators
..................

(none)

See also
........

See directory_dependency_diagram(Format),
file_dependency_diagram(Format),
library_dependency_diagram(Format).

`object'

1.12.9 ‘dot_graph_language’
---------------------------

Predicates for generating graph files in the DOT language (version
2.36.0 or later).

     `Author:' Paulo Moura
     `Version:' 2.33
     `Date:' 2019/4/30

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ graph_language_protocol.
     `Provides:'
          See graph_language_registry;;language_object/2.
     `Uses:'
          See list.
          os.

     `Remarks:'
          (none)

1.12.9.1 Public predicates
..........................

(see entity ancestors)

1.12.9.2 Protected predicates
.............................

(see entity ancestors)

1.12.9.3 Private predicates
...........................

(see entity ancestors)

1.12.9.4 Operators
..................

(none)

`object'

1.12.10 ‘entity_diagram’
------------------------

Predicates for generating entity diagrams in DOT format with both
inheritance and cross-referencing relation edges.

     `Author:' Paulo Moura
     `Version:' 2.0
     `Date:' 2014/1/1

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ entity_diagram(dot).

     `Remarks:'
          (none)

1.12.10.1 Public predicates
...........................

(see entity ancestors)

1.12.10.2 Protected predicates
..............................

(see entity ancestors)

1.12.10.3 Private predicates
............................

(see entity ancestors)

1.12.10.4 Operators
...................

(none)

See also
........

See inheritance_diagram, uses_diagram,
xref_diagram.

`object'

1.12.11 ‘entity_diagram(Format)’
--------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating entity diagrams in the specified format with
both inheritance and cross-referencing relation edges.

     `Author:' Paulo Moura
     `Version:' 2.47
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ diagram(Format).
     `Uses:'
          See list.
          logtalk.
          modules_diagram_support.

     `Remarks:'
          (none)

1.12.11.1 Public predicates
...........................

1.12.11.2 ‘file/2’
..................

Creates a diagram for all entities in a loaded source file using the
specified options.  The file can be specified by name, basename, full
path, or using library notation.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file(File,Options)’
     `Mode and number of proofs:'
          ‘file(+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.11.3 ‘file/1’
..................

Creates a diagram for all entities in a loaded source file using default
options.  The file can be specified by name, basename, full path, or
using library notation.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file(File)’
     `Mode and number of proofs:'
          ‘file(+atom)’ - ‘one’

__________________________________________________________________

1.12.11.4 Protected predicates
..............................

(see entity ancestors)

1.12.11.5 Private predicates
............................

1.12.11.6 ‘included_entity_/1’
..............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.11.7 ‘included_module_/1’
..............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.11.8 ‘referenced_entity_/2’
................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.11.9 ‘referenced_module_/2’
................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.11.10 Operators
....................

(none)

See also
........

See inheritance_diagram(Format), uses_diagram(Format),
xref_diagram(Format), library_diagram(Format).

`object'

1.12.12 ‘file_dependency_diagram’
---------------------------------

Predicates for generating file contents dependency diagrams in DOT
format.  A dependency exists when an entity in one file makes a
reference to an entity in another file.

     `Author:' Paulo Moura
     `Version:' 2.01
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ file_dependency_diagram(dot).

     `Remarks:'
          (none)

1.12.12.1 Public predicates
...........................

(see entity ancestors)

1.12.12.2 Protected predicates
..............................

(see entity ancestors)

1.12.12.3 Private predicates
............................

(see entity ancestors)

1.12.12.4 Operators
...................

(none)

See also
........

See file_load_diagram, directory_load_diagram,
library_load_diagram.

`object'

1.12.13 ‘file_dependency_diagram(Format)’
-----------------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating file contents dependency diagrams.  A
dependency exists when an entity in one file makes a reference to an
entity in another file.

     `Author:' Paulo Moura
     `Version:' 2.25
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ file_diagram(Format).
     `Uses:'
          See list.
          modules_diagram_support.

     `Remarks:'
          (none)

1.12.13.1 Public predicates
...........................

(see entity ancestors)

1.12.13.2 Protected predicates
..............................

(see entity ancestors)

1.12.13.3 Private predicates
............................

(see entity ancestors)

1.12.13.4 Operators
...................

(none)

See also
........

See file_load_diagram(Format),
directory_load_diagram(Format), library_load_diagram(Format).

`category'

1.12.14 ‘file_diagram(Format)’
------------------------------

   * ‘Format’ - Graph language file format

Common predicates for generating file diagrams.

     `Author:' Paulo Moura
     `Version:' 2.12
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static’

     `Extends:'
          ‘public’ diagram(Format).
     `Uses:'
          See list.
          logtalk.
          modules_diagram_support.

     `Remarks:'
          (none)

1.12.14.1 Public predicates
...........................

(see entity ancestors)

1.12.14.2 Protected predicates
..............................

1.12.14.3 ‘remember_included_file/1’
....................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.12.14.4 ‘remember_referenced_logtalk_file/1’
..............................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.12.14.5 ‘remember_referenced_prolog_file/1’
.............................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.12.14.6 Private predicates
............................

1.12.14.7 ‘included_file_/1’
............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.14.8 ‘referenced_logtalk_file_/1’
......................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.14.9 ‘referenced_prolog_file_/1’
.....................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.14.10 Operators
....................

(none)

`object'

1.12.15 ‘file_load_diagram’
---------------------------

Predicates for generating file loading dependency diagrams in DOT
format.  A dependency exists when a file loads or includes another file.

     `Author:' Paulo Moura
     `Version:' 2.01
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ file_load_diagram(dot).

     `Remarks:'
          (none)

1.12.15.1 Public predicates
...........................

(see entity ancestors)

1.12.15.2 Protected predicates
..............................

(see entity ancestors)

1.12.15.3 Private predicates
............................

(see entity ancestors)

1.12.15.4 Operators
...................

(none)

See also
........

See file_dependency_diagram, directory_dependency_diagram,
see library_dependency_diagram.

`object'

1.12.16 ‘file_load_diagram(Format)’
-----------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating file loading dependency diagrams.  A
dependency exists when a file loads or includes another file.

     `Author:' Paulo Moura
     `Version:' 2.26
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ file_diagram(Format).
     `Uses:'
          See list.
          logtalk.
          modules_diagram_support.
          os.

     `Remarks:'
          (none)

1.12.16.1 Public predicates
...........................

(see entity ancestors)

1.12.16.2 Protected predicates
..............................

(see entity ancestors)

1.12.16.3 Private predicates
............................

(see entity ancestors)

1.12.16.4 Operators
...................

(none)

See also
........

See file_dependency_diagram(Format),
directory_dependency_diagram(Format),
library_dependency_diagram(Format).

`protocol'

1.12.17 ‘graph_language_protocol’
---------------------------------

Predicates for generating graph files.

     `Author:' Paulo Moura
     `Version:' 2.0
     `Date:' 2014/12/30

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.12.17.1 Public predicates
...........................

1.12.17.2 ‘output_file_name/2’
..............................

Constructs the diagram file basename by adding a graph language
dependent extension to the given name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘output_file_name(Name,Basename)’
     `Mode and number of proofs:'
          ‘output_file_name(+atom,-atom)’ - ‘one’

__________________________________________________________________

1.12.17.3 ‘file_header/3’
.........................

Writes the output file header using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_header(Stream,Identifier,Options)’
     `Mode and number of proofs:'
          ‘file_header(+stream_or_alias,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.17.4 ‘file_footer/3’
.........................

Writes the output file footer using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_footer(Stream,Identifier,Options)’
     `Mode and number of proofs:'
          ‘file_footer(+stream_or_alias,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.17.5 ‘graph_header/5’
..........................

Writes a graph header using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘graph_header(Stream,Identifier,Label,Kind,Options)’
     `Mode and number of proofs:'
          ‘graph_header(+stream_or_alias,+atom,+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.17.6 ‘graph_footer/5’
..........................

Writes a graph footer using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘graph_footer(Stream,Identifier,Label,Kind,Options)’
     `Mode and number of proofs:'
          ‘graph_footer(+stream_or_alias,+atom,+atom,+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.17.7 ‘node/7’
..................

Writes a node using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘node(Stream,Identifier,Label,Caption,Lines,Kind,Options)’
     `Mode and number of proofs:'
          ‘node(+stream_or_alias,+nonvar,+nonvar,+nonvar,+list(nonvar),+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.17.8 ‘edge/6’
..................

Writes an edge between two nodes using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘edge(Stream,Start,End,Labels,Kind,Options)’
     `Mode and number of proofs:'
          ‘edge(+stream_or_alias,+nonvar,+nonvar,+list(nonvar),+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.17.9 Protected predicates
..............................

(none)

1.12.17.10 Private predicates
.............................

(none)

1.12.17.11 Operators
....................

(none)

`object'

1.12.18 ‘graph_language_registry’
---------------------------------

Registry of implemented graph languages.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2014/8/18

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.12.18.1 Public predicates
...........................

1.12.18.2 ‘language_object/2’
.............................

Table of defined graph languages and their implementation objects.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘language_object(Format,Object)’
     `Mode and number of proofs:'
          ‘language_object(?atom,?object_identifier)’ - ‘zero_or_more’

__________________________________________________________________

1.12.18.3 Protected predicates
..............................

(none)

1.12.18.4 Private predicates
............................

(none)

1.12.18.5 Operators
...................

(none)

`object'

1.12.19 ‘inheritance_diagram’
-----------------------------

Predicates for generating entity diagrams in DOT format with inheritance
relation edges but no cross-referencing relation edges.

     `Author:' Paulo Moura
     `Version:' 2.0
     `Date:' 2014/1/15

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ inheritance_diagram(dot).

     `Remarks:'
          (none)

1.12.19.1 Public predicates
...........................

(see entity ancestors)

1.12.19.2 Protected predicates
..............................

(see entity ancestors)

1.12.19.3 Private predicates
............................

(see entity ancestors)

1.12.19.4 Operators
...................

(none)

See also
........

See entity_diagram, uses_diagram, xref_diagram.

`object'

1.12.20 ‘inheritance_diagram(Format)’
-------------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating entity diagrams in the specified format with
inheritance relation edges but no cross-referencing relation edges.

     `Author:' Paulo Moura
     `Version:' 2.17
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ entity_diagram(Format).

     `Remarks:'
          (none)

1.12.20.1 Public predicates
...........................

(see entity ancestors)

1.12.20.2 Protected predicates
..............................

(see entity ancestors)

1.12.20.3 Private predicates
............................

(see entity ancestors)

1.12.20.4 Operators
...................

(none)

See also
........

See entity_diagram(Format), uses_diagram(Format),
xref_diagram(Format).

`object'

1.12.21 ‘library_dependency_diagram’
------------------------------------

Predicates for generating library dependency diagrams in DOT format.

     `Author:' Paulo Moura
     `Version:' 2.01
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ library_dependency_diagram(dot).

     `Remarks:'
          (none)

1.12.21.1 Public predicates
...........................

(see entity ancestors)

1.12.21.2 Protected predicates
..............................

(see entity ancestors)

1.12.21.3 Private predicates
............................

(see entity ancestors)

1.12.21.4 Operators
...................

(none)

See also
........

See library_load_diagram, file_load_diagram,
entity_diagram.

`object'

1.12.22 ‘library_dependency_diagram(Format)’
--------------------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating library dependency diagrams.  A dependency
exists when an entity in one library makes a reference to an entity in
another library.

     `Author:' Paulo Moura
     `Version:' 2.27
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ library_diagram(Format).
     `Uses:'
          See entity_diagram(Format).
          list.
          logtalk.
          modules_diagram_support.

     `Remarks:'
          (none)

1.12.22.1 Public predicates
...........................

(see entity ancestors)

1.12.22.2 Protected predicates
..............................

(see entity ancestors)

1.12.22.3 Private predicates
............................

1.12.22.4 ‘sub_diagrams_/1’
...........................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.22.5 Operators
...................

(none)

See also
........

See library_load_diagram(Format),
directory_load_diagram(Format), file_load_diagram(Format),
see entity_diagram(Format).

`category'

1.12.23 ‘library_diagram(Format)’
---------------------------------

   * ‘Format’ - Graph language file format

Common predicates for generating library diagrams.

     `Author:' Paulo Moura
     `Version:' 2.14
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static’

     `Extends:'
          ‘public’ diagram(Format).
     `Uses:'
          See list.

     `Remarks:'
          (none)

1.12.23.1 Public predicates
...........................

(see entity ancestors)

1.12.23.2 Protected predicates
..............................

1.12.23.3 ‘add_library_documentation_url/4’
...........................................

Adds a documentation URL when using the option url_prefixes/2.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘add_library_documentation_url(Kind,Options,Library,NodeOptions)’
     `Mode and number of proofs:'
          ‘add_library_documentation_url(+atom,+list(compound),+atom,-list(compound))’ - ‘one’

__________________________________________________________________

1.12.23.4 ‘remember_included_library/2’
.......................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.12.23.5 ‘remember_referenced_logtalk_library/2’
.................................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.12.23.6 ‘remember_referenced_prolog_library/2’
................................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.12.23.7 Private predicates
............................

1.12.23.8 ‘included_library_/2’
...............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.23.9 ‘referenced_logtalk_library_/2’
.........................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.23.10 ‘referenced_prolog_library_/2’
.........................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.23.11 Operators
....................

(none)

See also
........

See inheritance_diagram(Format), uses_diagram(Format),
xref_diagram(Format), entity_diagram(Format).

`object'

1.12.24 ‘library_load_diagram’
------------------------------

Predicates for generating library loading dependency diagrams in DOT
format.

     `Author:' Paulo Moura
     `Version:' 2.01
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ library_load_diagram(dot).

     `Remarks:'
          (none)

1.12.24.1 Public predicates
...........................

(see entity ancestors)

1.12.24.2 Protected predicates
..............................

(see entity ancestors)

1.12.24.3 Private predicates
............................

(see entity ancestors)

1.12.24.4 Operators
...................

(none)

See also
........

See library_dependency_diagram, file_dependency_diagram,
see entity_diagram.

`object'

1.12.25 ‘library_load_diagram(Format)’
--------------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating library loading dependency diagrams.

     `Author:' Paulo Moura
     `Version:' 2.27
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ library_diagram(Format).
     `Uses:'
          See entity_diagram(Format).
          list.
          logtalk.
          modules_diagram_support.

     `Remarks:'
          (none)

1.12.25.1 Public predicates
...........................

(see entity ancestors)

1.12.25.2 Protected predicates
..............................

(see entity ancestors)

1.12.25.3 Private predicates
............................

1.12.25.4 ‘sub_diagrams_/1’
...........................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.25.5 Operators
...................

(none)

See also
........

See library_dependency_diagram(Format),
directory_dependency_diagram(Format),
file_dependency_diagram(Format), entity_diagram(Format).

`object'

1.12.26 ‘modules_diagram_support’
---------------------------------

Utility predicates for supporting Prolog modules in diagrams.

     `Author:' Paulo Moura
     `Version:' 0.18
     `Date:' 2019/4/30

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.12.26.1 Public predicates
...........................

1.12.26.2 ‘module_property/2’
.............................

Access to module properties, at least ‘exports/1’, ‘file/1’, and
‘file/2’ but also ‘declares/2’, ‘defines/2’, ‘calls/2’, and ‘provides/3’
when possible.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘module_property(Module,Property)’
     `Mode and number of proofs:'
          ‘module_property(?atom,?callable)’ - ‘zero_or_more’

__________________________________________________________________

1.12.26.3 ‘loaded_file_property/2’
..................................

Access to loaded source file properties, at least ‘basename/1’,
‘directory/1’ but also ‘parent/1’ when possible.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘loaded_file_property(File,Property)’
     `Mode and number of proofs:'
          ‘loaded_file_property(?atom,?callable)’ - ‘zero_or_more’

__________________________________________________________________

1.12.26.4 ‘source_file_extension/1’
...................................

Valid source file extension for Prolog source files.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘source_file_extension(Extension)’
     `Mode and number of proofs:'
          ‘source_file_extension(?atom)’ - ‘one_or_more’

__________________________________________________________________

1.12.26.5 Protected predicates
..............................

(none)

1.12.26.6 Private predicates
............................

(none)

1.12.26.7 Operators
...................

(none)

`object'

1.12.27 ‘uses_diagram’
----------------------

Predicates for generating entity diagrams in DOT format with only uses
and use_module relation edges.

     `Author:' Paulo Moura
     `Version:' 2.0
     `Date:' 2014/1/15

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ uses_diagram(dot).

     `Remarks:'
          (none)

1.12.27.1 Public predicates
...........................

(see entity ancestors)

1.12.27.2 Protected predicates
..............................

(see entity ancestors)

1.12.27.3 Private predicates
............................

(see entity ancestors)

1.12.27.4 Operators
...................

(none)

See also
........

See entity_diagram, inheritance_diagram,
xref_diagram.

`object'

1.12.28 ‘uses_diagram(Format)’
------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating entity diagrams with only uses and use_module
relation edges.

     `Author:' Paulo Moura
     `Version:' 2.18
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ entity_diagram(Format).

     `Remarks:'
          (none)

1.12.28.1 Public predicates
...........................

(see entity ancestors)

1.12.28.2 Protected predicates
..............................

(see entity ancestors)

1.12.28.3 Private predicates
............................

(see entity ancestors)

1.12.28.4 Operators
...................

(none)

See also
........

See entity_diagram(Format), inheritance_diagram(Format),
see xref_diagram(Format).

`object'

1.12.29 ‘xref_diagram’
----------------------

Predicates for generating predicate call cross-referencing diagrams in
DOT format.

     `Author:' Paulo Moura
     `Version:' 2.0
     `Date:' 2014/1/1

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ xref_diagram(dot).

     `Remarks:'
          (none)

1.12.29.1 Public predicates
...........................

(see entity ancestors)

1.12.29.2 Protected predicates
..............................

(see entity ancestors)

1.12.29.3 Private predicates
............................

(see entity ancestors)

1.12.29.4 Operators
...................

(none)

See also
........

See entity_diagram, inheritance_diagram,
uses_diagram.

`object'

1.12.30 ‘xref_diagram(Format)’
------------------------------

   * ‘Format’ - Graph language file format

Predicates for generating predicate call cross-referencing diagrams.

     `Author:' Paulo Moura
     `Version:' 2.58
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ entity_diagram(Format).
     `Uses:'
          See list.
          logtalk.
          modules_diagram_support.
          os.

     `Remarks:'
          (none)

1.12.30.1 Public predicates
...........................

1.12.30.2 ‘entity/2’
....................

Creates a diagram for a single entity using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity(Entity,Options)’
     `Mode and number of proofs:'
          ‘entity(+entity_identifier,+list(compound))’ - ‘one’

__________________________________________________________________

1.12.30.3 ‘entity/1’
....................

Creates a diagram for a single entity using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘entity(Entity)’
     `Mode and number of proofs:'
          ‘entity(+entity_identifier)’ - ‘one’

__________________________________________________________________

1.12.30.4 Protected predicates
..............................

(see entity ancestors)

1.12.30.5 Private predicates
............................

1.12.30.6 ‘included_predicate_/1’
.................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.30.7 ‘referenced_predicate_/1’
...................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.30.8 ‘external_predicate_/1’
.................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.12.30.9 Operators
...................

(none)

See also
........

See entity_diagram(Format), inheritance_diagram(Format),
see uses_diagram(Format).

1.13 ‘dictionaries’
===================

`object'

1.13.1 ‘avltree’
----------------

AVL tree implementation of the dictionary protocol.  Uses standard order
to compare keys.

     `Author:' R.A.O’Keefe, L.Damas, V.S.Costa, Glenn Burgess, Jiri Spitz, and Jan Wielemaker; Logtalk port and additional predicates by Paulo Moura
     `Version:' 1.2
     `Date:' 2019/5/17

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ dictionaryp.
     `Extends:'
          ‘public’ compound.
     `Uses:'
          See list.

     `Remarks:'
          (none)

1.13.1.1 Public predicates
..........................

(see entity ancestors)

1.13.1.2 Protected predicates
.............................

(see entity ancestors)

1.13.1.3 Private predicates
...........................

(see entity ancestors)

1.13.1.4 Operators
..................

(none)

See also
........

See bintree, rbtree.

`object'

1.13.2 ‘bintree’
----------------

Simple binary tree implementation of the dictionary protocol.  Uses
standard order to compare keys.

     `Author:' Paulo Moura and Paul Fodor
     `Version:' 2.9
     `Date:' 2019/5/17

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ dictionaryp.
     `Extends:'
          ‘public’ compound.
     `Uses:'
          See list.

     `Remarks:'
          (none)

1.13.2.1 Public predicates
..........................

1.13.2.2 ‘preorder/2’
.....................

Preorder tree traversal.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘preorder(Tree,List)’
     `Mode and number of proofs:'
          ‘preorder(@tree,-list)’ - ‘one’

__________________________________________________________________

1.13.2.3 ‘inorder/2’
....................

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘inorder(@tree,-list)’ - ‘one’

__________________________________________________________________

1.13.2.4 ‘postorder/2’
......................

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘postorder(@tree,-list)’ - ‘one’

__________________________________________________________________

1.13.2.5 Protected predicates
.............................

(see entity ancestors)

1.13.2.6 Private predicates
...........................

(see entity ancestors)

1.13.2.7 Operators
..................

(none)

See also
........

See avltree, rbtree.

`protocol'

1.13.3 ‘dictionaryp’
--------------------

Dictionary protocol.

     `Author:' Paulo Moura
     `Version:' 2.1
     `Date:' 2019/5/17

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.13.3.1 Public predicates
..........................

1.13.3.2 ‘as_dictionary/2’
..........................

Converts a list of key-value pairs to a dictionary.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘as_dictionary(Pairs,Dictionary)’
     `Mode and number of proofs:'
          ‘as_dictionary(@list(pairs),-dictionary)’ - ‘one’

__________________________________________________________________

1.13.3.3 ‘as_list/2’
....................

Converts a dictionary to a ordered list of key-value pairs.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘as_list(Dictionary,Pairs)’
     `Mode and number of proofs:'
          ‘as_list(@dictionary,-list(pairs))’ - ‘one’

__________________________________________________________________

1.13.3.4 ‘clone/3’
..................

Clones a dictionary using the same keys but with all values unbound and
returning a list of all the pairs in the new clone.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘clone(Dictionary,Clone,ClonePairs)’
     `Mode and number of proofs:'
          ‘clone(+tree,-tree,-list(pairs))’ - ‘one’

__________________________________________________________________

1.13.3.5 ‘clone/4’
..................

Clones a dictionary using the same keys but with all values unbound and
returning the list of all pairs in the dictionary and in the clone.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘clone(Dictionary,Pairs,Clone,ClonePairs)’
     `Mode and number of proofs:'
          ‘clone(+tree,-list(pairs),-tree,-list(pairs))’ - ‘one’

__________________________________________________________________

1.13.3.6 ‘insert/4’
...................

Inserts a Key-Value pair into a dictionary, returning the updated
dictionary.  When the key already exists, the associated value is
updated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘insert(OldDictionary,Key,Value,NewDictionary)’
     `Mode and number of proofs:'
          ‘insert(+dictionary,+ground,@term,-dictionary)’ - ‘one’

__________________________________________________________________

1.13.3.7 ‘delete/4’
...................

Deletes a matching Key-Value pair from a dictionary, returning the
updated dictionary.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete(OldDictionary,Key,Value,NewDictionary)’
     `Mode and number of proofs:'
          ‘delete(+dictionary,@ground,?term,-dictionary)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.8 ‘update/4’
...................

Updates the value associated with Key in a dictionary, returning the
updated dictionary.  Fails if it cannot find the key.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘update(OldDictionary,Key,NewValue,NewDictionary)’
     `Mode and number of proofs:'
          ‘update(+dictionary,@ground,+term,-dictionary)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.9 ‘update/5’
...................

Updates the value associated with Key in a dictionary, returning the
updated dictionary.  Fails if it cannot find the key or if the existing
value does not match OldValue.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘update(OldDictionary,Key,OldValue,NewValue,NewDictionary)’
     `Mode and number of proofs:'
          ‘update(+dictionary,@ground,?term,+term,-dictionary)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.10 ‘empty/1’
...................

True if the dictionary is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘empty(Dictionary)’
     `Mode and number of proofs:'
          ‘empty(@dictionary)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.11 ‘lookup/3’
....................

Lookups a matching Key-Value pair from a dictionary.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘lookup(Key,Value,Dictionary)’
     `Mode and number of proofs:'
          ‘lookup(+ground,?term,@dictionary)’ - ‘zero_or_one’
          ‘lookup(-ground,?term,@dictionary)’ - ‘zero_or_more’

__________________________________________________________________

1.13.3.12 ‘previous/4’
......................

Returns the previous pair in a dictionary given a key.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘previous(Dictionary,Key,Previous,Value)’
     `Mode and number of proofs:'
          ‘previous(+dictionary,+key,-key,-value)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.13 ‘next/4’
..................

Returns the next pair in a dictionary given a key.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘next(Dictionary,Key,Next,Value)’
     `Mode and number of proofs:'
          ‘next(+dictionary,+key,-key,-value)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.14 ‘min/3’
.................

Returns the pair with the minimum key in a dictionary.  Fails if the
dictionary is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘min(Dictionary,Key,Value)’
     `Mode and number of proofs:'
          ‘min(+dictionary,-key,-value)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.15 ‘max/3’
.................

Returns the pair with the maximum key in a dictionary.  Fails if the
dictionary is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘max(Dictionary,Key,Value)’
     `Mode and number of proofs:'
          ‘max(+dictionary,-key,-value)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.16 ‘delete_min/4’
........................

Deletes the pair with the minimum key from a dictionary, returning the
deleted pair and the updated dictionary.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_min(OldDictionary,Key,Value,NewDictionary)’
     `Mode and number of proofs:'
          ‘delete_min(+dictionary,-key,-value,-dictionary)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.17 ‘delete_max/4’
........................

Deletes the pair with the maximum key from a dictionary, returning the
deleted pair and the updated dictionary.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_max(OldDictionary,Key,Value,NewDictionary)’
     `Mode and number of proofs:'
          ‘delete_max(+dictionary,-key,-value,-dictionary)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.18 ‘keys/2’
..................

Returns a list with all the dictionary keys in ascending order.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘keys(Dictionary,Keys)’
     `Mode and number of proofs:'
          ‘keys(@dictionary,-list)’ - ‘one’

__________________________________________________________________

1.13.3.19 ‘values/2’
....................

Returns a list with all the dictionary values in ascending order of the
keys.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘values(Dictionary,Values)’
     `Mode and number of proofs:'
          ‘values(@dictionary,-list)’ - ‘one’

__________________________________________________________________

1.13.3.20 ‘map/2’
.................

Maps a closure over each dictionary key-value pair.  Fails if the mapped
closure attempts to modify the keys.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,Dictionary)’
     `Meta-predicate template:'
          ‘map(1,*)’
     `Mode and number of proofs:'
          ‘map(@callable,+dictionary)’ - ‘zero_or_more’

__________________________________________________________________

1.13.3.21 ‘map/3’
.................

Maps a closure over each dictionary key-value pair, returning the new
dictionary.  Fails if the mapped closure attempts to modify the keys.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,OldDictionary,NewDictionary)’
     `Meta-predicate template:'
          ‘map(2,*,*)’
     `Mode and number of proofs:'
          ‘map(@callable,+dictionary,-dictionary)’ - ‘zero_or_more’

__________________________________________________________________

1.13.3.22 ‘apply/4’
...................

Applies a closure to a specific key-value pair, returning the new
dictionary.  Fails if the key cannot be found or if the mapped closure
attempts to modify the key.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘apply(Closure,OldDictionary,Key,NewDictionary)’
     `Meta-predicate template:'
          ‘apply(2,*,*,*)’
     `Mode and number of proofs:'
          ‘apply(+callable,+dictionary,+key,-dictionary)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.23 ‘size/2’
..................

Number of dictionary entries.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘size(Dictionary,Size)’
     `Mode and number of proofs:'
          ‘size(@dictionary,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.13.3.24 Protected predicates
..............................

(none)

1.13.3.25 Private predicates
............................

(none)

1.13.3.26 Operators
...................

(none)

See also
........

See avltree, bintree, rbtree.

`object'

1.13.4 ‘rbtree’
---------------

Red-Black trees.  Uses standard order to compare keys.

     `Author:' Vitor Santos Costa; Logtalk port and additional predicates by Paulo Moura.
     `Version:' 1.7
     `Date:' 2019/5/17

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ dictionaryp.
     `Extends:'
          ‘public’ compound.

     `Remarks:'
          (none)

1.13.4.1 Public predicates
..........................

1.13.4.2 ‘partial_map/4’
........................

Applies a closure to the tree pairs identified by a set of keys.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘partial_map(Tree,Keys,Closure,NewTree)’
     `Meta-predicate template:'
          ‘partial_map(*,*,2,*)’
     `Mode and number of proofs:'
          ‘partial_map(+tree,+list,@closure,-tree)’ - ‘zero_or_one’

__________________________________________________________________

1.13.4.3 Protected predicates
.............................

(see entity ancestors)

1.13.4.4 Private predicates
...........................

(see entity ancestors)

1.13.4.5 Operators
..................

(none)

See also
........

See avltree, bintree.

1.14 ‘doclet’
=============

`object'

1.14.1 ‘doclet’
---------------

Utility object to help automate (re)generating documentation for a
project.

     `Author:' Paulo Moura
     `Version:' 0.5
     `Date:' 2017/1/5

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;message_tokens//2.
     `Uses:'
          See logtalk.
          os.

     `Remarks:'
          (none)

1.14.1.1 Public predicates
..........................

1.14.1.2 ‘update/0’
...................

Updates the project documentation, first by calling a sequence of goals
and second by executing a sequence of shell commands.  Fails if any goal
or shell command fails.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘update’ - ‘zero_or_one’

__________________________________________________________________

1.14.1.3 ‘doc_goal/1’
.....................

Table of goals, typically using the ‘diagrams’ and the ‘lgtdoc’ tools,
used to generate the documentation.  Goals are called in the order they
are defined and in the context of the ‘user’ pseudo-object.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘doc_goal(Goal)’
     `Mode and number of proofs:'
          ‘doc_goal(?callable)’ - ‘one_or_more’

__________________________________________________________________

1.14.1.4 ‘shell_command/1’
..........................

Table of shell commands to convert intermediate documentation files into
user-friendly documentation.  Commands are executed in the order they
are defined.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘shell_command(Command)’
     `Mode and number of proofs:'
          ‘shell_command(?atom)’ - ‘one_or_more’

__________________________________________________________________

1.14.1.5 Protected predicates
.............................

(see entity ancestors)

1.14.1.6 Private predicates
...........................

(see entity ancestors)

1.14.1.7 Operators
..................

(none)

See also
........

See lgtdocp, diagram(Format).

1.15 ‘edcg’
===========

`object'

1.15.1 ‘edcg’
-------------

Multiple hidden parameters: an extension to Prolog’s DCG notation.
Ported to Logtalk as a hook object.

     `Author:' Peter Van Roy; adapted to Logtalk by Paulo Moura.
     `Version:' 1.03
     `Date:' 2019/6/13

     `Copyright:' Copyright (C) 1992 Peter Van Roy
     `License:' MIT

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Provides:'
          See logtalk;;message_tokens//2.
     `Uses:'
          See list.
          logtalk.

     `Remarks:'

        - `Usage:' Compile source files with objects (or categories)
          defining EDCGs using the compiler option ‘hook(edcg)’.

1.15.1.1 Public predicates
..........................

(see entity ancestors)

1.15.1.2 Protected predicates
.............................

(see entity ancestors)

1.15.1.3 Private predicates
...........................

1.15.1.4 ‘pred_info/3’
......................

Declares predicates that have the listed hidden parameters.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘pred_info(Name,Arity,HiddenParameters)’
     `Mode and number of proofs:'
          ‘pred_info(?atom,?integer,?list(atom))’ - ‘zero_or_more’

__________________________________________________________________

1.15.1.5 ‘acc_info/7’
.....................

Long form for declaring accumulators.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘acc_info(Accumulator,Term,Left,Right,Joiner,LStart,RStart)’
     `Mode and number of proofs:'
          ‘acc_info(?atom,?term,?term,?term,?callable,?term,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.15.1.6 ‘acc_info/5’
.....................

Short form for declaring accumulators.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘acc_info(Accumulator,Term,Left,Right,Joiner)’
     `Mode and number of proofs:'
          ‘acc_info(?atom,?term,?term,?term,?callable)’ - ‘zero_or_more’

__________________________________________________________________

1.15.1.7 ‘pass_info/2’
......................

Long form for declaring passed arguments.  Passed arguments are
conceptually the same as accumulators with ‘=/2’ as the joiner function.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘pass_info(Argument,PStart)’
     `Mode and number of proofs:'
          ‘pass_info(?atom,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.15.1.8 ‘pass_info/1’
......................

Short form for declaring passed arguments.  Passed arguments are
conceptually the same as accumulators with ‘=/2’ as the joiner function.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘pass_info(Argument)’
     `Mode and number of proofs:'
          ‘pass_info(?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.15.1.9 Operators
..................

1.15.1.10 ‘op(1200,xfx,-->>)’
.............................

     `Scope:'
          ‘public’

1.16 ‘events’
=============

`object'

1.16.1 ‘after_event_registry’
-----------------------------

After events registry predicates.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2009/10/8

     `Compilation flags:'
          ‘static, context_switching_calls, events’

     `Implements:'
          ‘public’ event_registryp.

     `Remarks:'
          (none)

1.16.1.1 Public predicates
..........................

(see entity ancestors)

1.16.1.2 Protected predicates
.............................

(see entity ancestors)

1.16.1.3 Private predicates
...........................

(see entity ancestors)

1.16.1.4 Operators
..................

(none)

See also
........

See before_event_registry, monitorp.

`object'

1.16.2 ‘before_event_registry’
------------------------------

Before events registry predicates.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2009/10/8

     `Compilation flags:'
          ‘static, context_switching_calls, events’

     `Implements:'
          ‘public’ event_registryp.

     `Remarks:'
          (none)

1.16.2.1 Public predicates
..........................

(see entity ancestors)

1.16.2.2 Protected predicates
.............................

(see entity ancestors)

1.16.2.3 Private predicates
...........................

(see entity ancestors)

1.16.2.4 Operators
..................

(none)

See also
........

See after_event_registry, monitorp.

`object'

1.16.3 ‘event_registry’
-----------------------

Before and after events registry predicates.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2009/10/8

     `Compilation flags:'
          ‘static, context_switching_calls, events’

     `Implements:'
          ‘public’ event_registryp.

     `Remarks:'
          (none)

1.16.3.1 Public predicates
..........................

(see entity ancestors)

1.16.3.2 Protected predicates
.............................

(see entity ancestors)

1.16.3.3 Private predicates
...........................

(see entity ancestors)

1.16.3.4 Operators
..................

(none)

`protocol'

1.16.4 ‘event_registryp’
------------------------

Event registry protocol.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2009/10/8

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.16.4.1 Public predicates
..........................

1.16.4.2 ‘monitors/1’
.....................

Returns a list of all current monitors.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘monitors(Monitors)’
     `Mode and number of proofs:'
          ‘monitors(-list(object_identifier))’ - ‘one’

__________________________________________________________________

1.16.4.3 ‘monitor/1’
....................

Monitor is an object playing the role of a monitor.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘monitor(Monitor)’
     `Mode and number of proofs:'
          ‘monitor(-object_identifier)’ - ‘zero_or_more’
          ‘monitor(+object_identifier)’ - ‘zero_or_one’

__________________________________________________________________

1.16.4.4 ‘monitored/1’
......................

Returns a list of all currently monitored objects.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘monitored(Objects)’
     `Mode and number of proofs:'
          ‘monitored(-list(object_identifier))’ - ‘one’

__________________________________________________________________

1.16.4.5 ‘monitor/4’
....................

True if the arguments describe a currently defined monitored event.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘monitor(Object,Message,Sender,Monitor)’
     `Mode and number of proofs:'
          ‘monitor(?object_identifier,?nonvar,?object_identifier,?object_identifier)’ - ‘zero_or_more’

__________________________________________________________________

1.16.4.6 ‘set_monitor/4’
........................

Sets a monitor for the set of matching events.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_monitor(Object,Message,Sender,Monitor)’
     `Mode and number of proofs:'
          ‘set_monitor(?object_identifier,?nonvar,?object_identifier,+object_identifier)’ - ‘zero_or_one’

__________________________________________________________________

1.16.4.7 ‘del_monitors/4’
.........................

Deletes all matching monitored events.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘del_monitors(Object,Message,Sender,Monitor)’
     `Mode and number of proofs:'
          ‘del_monitors(?object_identifier,?nonvar,?object_identifier,?object_identifier)’ - ‘one’

__________________________________________________________________

1.16.4.8 ‘del_monitors/0’
.........................

Deletes all monitored events.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘del_monitors’ - ‘one’

__________________________________________________________________

1.16.4.9 Protected predicates
.............................

(none)

1.16.4.10 Private predicates
............................

(none)

1.16.4.11 Operators
...................

(none)

See also
........

See event_registry, monitorp.

`category'

1.16.5 ‘monitor’
----------------

Monitor predicates.

     `Author:' Paulo Moura
     `Version:' 1.3
     `Date:' 2019/3/8

     `Compilation flags:'
          ‘static, events’

     `Implements:'
          ‘public’ monitorp.

     `Remarks:'
          (none)

1.16.5.1 Public predicates
..........................

(see entity ancestors)

1.16.5.2 Protected predicates
.............................

(see entity ancestors)

1.16.5.3 Private predicates
...........................

1.16.5.4 ‘spy_point_/4’
.......................

Stores current spy points.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘spy_point_(Event,Object,Message,Sender)’
     `Mode and number of proofs:'
          ‘spy_point_(?event,?object,?callable,?object)’ - ‘zero_or_more’

__________________________________________________________________

1.16.5.5 Operators
..................

(none)

`protocol'

1.16.6 ‘monitorp’
-----------------

Monitor protocol.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2000/7/24

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.16.6.1 Public predicates
..........................

1.16.6.2 ‘monitor_activated/0’
..............................

True if monitor is currently active.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘monitor_activated’ - ‘zero_or_one’

__________________________________________________________________

1.16.6.3 ‘activate_monitor/0’
.............................

Activates all spy points and start monitoring.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘activate_monitor’ - ‘one’

__________________________________________________________________

1.16.6.4 ‘suspend_monitor/0’
............................

Suspends monitoring, deactivating all spy points.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘suspend_monitor’ - ‘one’

__________________________________________________________________

1.16.6.5 ‘reset_monitor/0’
..........................

Resets monitor, deactivating and deleting all spy points.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘reset_monitor’ - ‘one’

__________________________________________________________________

1.16.6.6 ‘spy_point/4’
......................

Current spy point.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘spy_point(Event,Object,Message,Sender)’
     `Mode and number of proofs:'
          ‘spy_point(?event,?object,?callable,?object)’ - ‘zero_or_more’

__________________________________________________________________

1.16.6.7 ‘set_spy_point/4’
..........................

Sets a spy point.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_spy_point(Event,Object,Message,Sender)’
     `Mode and number of proofs:'
          ‘set_spy_point(?event,?object,?callable,?object)’ - ‘one’

__________________________________________________________________

1.16.6.8 ‘del_spy_points/4’
...........................

Deletes all matching spy points.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘del_spy_points(Event,Object,Message,Sender)’
     `Mode and number of proofs:'
          ‘del_spy_points(@event,@object,@callable,@object)’ - ‘one’

__________________________________________________________________

1.16.6.9 Protected predicates
.............................

(none)

1.16.6.10 Private predicates
............................

(none)

1.16.6.11 Operators
...................

(none)

See also
........

See monitor, event_registryp.

1.17 ‘expand_library_alias_paths’
=================================

`object'

1.17.1 ‘expand_library_alias_paths’
-----------------------------------

Hook object for expanding library alias paths in
‘logtalk_library_path/2’ facts when compiling a source file.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2018/4/12

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Uses:'
          See logtalk.
          os.

     `Remarks:'
          (none)

1.17.1.1 Public predicates
..........................

(see entity ancestors)

1.17.1.2 Protected predicates
.............................

(see entity ancestors)

1.17.1.3 Private predicates
...........................

(see entity ancestors)

1.17.1.4 Operators
..................

(none)

1.18 ‘expecteds’
================

`object'

1.18.1 ‘either’
---------------

Types and predicates for extended type-checking of expected term
references and for handling lists of expected term references.

     `Author:' Paulo Moura
     `Version:' 0.5
     `Date:' 2019/1/24

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See type;;type/1.
          type;;check/2.
          arbitrary;;arbitrary/1.
          See arbitrary;;arbitrary/2.
     `Uses:'
          See expected.
          expected(Reference).
          random.
          type.

     `Remarks:'

        - `Type-checking support:' Defines a ‘either(ExpectedType,
          UnexpectedType)’ type for checking expected references where
          the expected and unexpected terms must be of the given types.

        - `QuickCheck support:' Defines clauses for the
          ‘type::arbitrary/1-2’ predicates to allow generating random
          values for the ‘either(ExpectedType, UnexpectedType)’ type.

1.18.1.1 Public predicates
..........................

1.18.1.2 ‘expecteds/2’
......................

Returns the terms stored in the references that hold an expected term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘expecteds(References,Expecteds)’
     `Mode and number of proofs:'
          ‘expecteds(+list(expected),-list)’ - ‘one’

__________________________________________________________________

1.18.1.3 ‘unexpecteds/2’
........................

Returns the terms stored in the references that hold an expected term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘unexpecteds(References,Unexpecteds)’
     `Mode and number of proofs:'
          ‘unexpecteds(+list(expected),-list)’ - ‘one’

__________________________________________________________________

1.18.1.4 ‘partition/3’
......................

Retrieves and partitions the terms hold by the references.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘partition(References,Expecteds,Unexpecteds)’
     `Mode and number of proofs:'
          ‘partition(+list(expected),-list,-list)’ - ‘one’

__________________________________________________________________

1.18.1.5 Protected predicates
.............................

(see entity ancestors)

1.18.1.6 Private predicates
...........................

(see entity ancestors)

1.18.1.7 Operators
..................

(none)

See also
........

See expected, expected(Reference), type,
arbitrary.

`object'

1.18.2 ‘expected’
-----------------

Constructors for expected term references.  A reference contains either
an expected term or an unexpected term.  References should be regarded
as opaque terms and always used with the ‘expected/1’ object by passing
the reference as a parameter.

     `Author:' Paulo Moura
     `Version:' 1.2
     `Date:' 2019/1/23

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See type;;type/1.
          type;;check/2.

     `Remarks:'

        - `Type-checking support:' This object also defines a type
          ‘expected’ for use with the ‘type’ library object.

1.18.2.1 Public predicates
..........................

1.18.2.2 ‘of_unexpected/2’
..........................

Constructs a reference from an unexpected term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘of_unexpected(Unexpected,Reference)’
     `Mode and number of proofs:'
          ‘of_unexpected(@term,--nonvar)’ - ‘one’

__________________________________________________________________

1.18.2.3 ‘of_expected/2’
........................

Constructs a reference from an expected term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘of_expected(Expected,Reference)’
     `Mode and number of proofs:'
          ‘of_expected(@term,--nonvar)’ - ‘one’

__________________________________________________________________

1.18.2.4 ‘from_goal/4’
......................

Constructs a reference by calling ‘Goal’ that binds and holds ‘Expected’
on success.  Otherwise returns a reference with the unexpected goal
error or failure represented by the ‘Failure’ argument.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘from_goal(Goal,Expected,Failure,Reference)’
     `Meta-predicate template:'
          ‘from_goal(0,*,*,*)’
     `Mode and number of proofs:'
          ‘from_goal(+callable,--term,@term,--nonvar)’ - ‘one’

__________________________________________________________________

1.18.2.5 ‘from_goal/3’
......................

Constructs a reference by calling ‘Goal’ that binds and uses ‘Expected’
on success.  Otherwise returns a reference with the unexpected goal
error or failure represented by the atom ‘fail’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘from_goal(Goal,Expected,Reference)’
     `Meta-predicate template:'
          ‘from_goal(0,*,*)’
     `Mode and number of proofs:'
          ‘from_goal(+callable,--term,--nonvar)’ - ‘one’

__________________________________________________________________

1.18.2.6 Protected predicates
.............................

(see entity ancestors)

1.18.2.7 Private predicates
...........................

(see entity ancestors)

1.18.2.8 Operators
..................

(none)

See also
........

See expected(Reference), type.

`object'

1.18.3 ‘expected(Reference)’
----------------------------

Expected term reference predicates.  Requires passing a reference
(constructed using the ‘expected’ object) as a parameter.

     `Author:' Paulo Moura
     `Version:' 1.2
     `Date:' 2019/1/24

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.18.3.1 Public predicates
..........................

1.18.3.2 ‘is_unexpected/0’
..........................

True if the reference holds an unexpected term.  Avoid whenever possible
by using instead the ‘if_unexpected/1’ predicate.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘is_unexpected’ - ‘zero_or_one’

__________________________________________________________________

1.18.3.3 ‘is_expected/0’
........................

True if the reference holds an expected term.  Avoid whenever possible
by using instead the ‘if_expected/1’ predicate.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘is_expected’ - ‘zero_or_one’

__________________________________________________________________

1.18.3.4 ‘if_unexpected/1’
..........................

Applies a closure when the reference holds an unexpected term using the
term as argument.  Succeeds otherwise.  Can be used to throw the
exception hold by the reference by calling it the atom ‘throw’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘if_unexpected(Closure)’
     `Meta-predicate template:'
          ‘if_unexpected(1)’
     `Mode and number of proofs:'
          ‘if_unexpected(+callable)’ - ‘zero_or_more’

__________________________________________________________________

1.18.3.5 ‘if_expected/1’
........................

Applies a closure when the reference holds an expected term using the
term as argument.  Succeeds otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘if_expected(Closure)’
     `Meta-predicate template:'
          ‘if_expected(1)’
     `Mode and number of proofs:'
          ‘if_expected(+callable)’ - ‘zero_or_more’

__________________________________________________________________

1.18.3.6 ‘unexpected/1’
.......................

Returns the unexpected term hold by the reference.  Throws an error
otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘unexpected(Unexpected)’
     `Mode and number of proofs:'
          ‘unexpected(--term)’ - ‘one_or_error’

     `Exceptions:'
          Reference holds an expected term:
               ‘existence_error(unexpected_term,Reference)’

__________________________________________________________________

1.18.3.7 ‘expected/1’
.....................

Returns the expected term hold by the reference.  Throws an error
otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘expected(Expected)’
     `Mode and number of proofs:'
          ‘expected(--term)’ - ‘one_or_error’

     `Exceptions:'
          Reference holds an unexpected term:
               ‘existence_error(expected_term,Reference)’

__________________________________________________________________

1.18.3.8 ‘map/2’
................

When the reference does not hold an unexpected term and mapping a
closure with the expected term and the new expected term as additional
arguments is successful, returns a reference with the new expected term.
Otherwise returns the same reference.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,NewReference)’
     `Meta-predicate template:'
          ‘map(2,*)’
     `Mode and number of proofs:'
          ‘map(+callable,--nonvar)’ - ‘one’

__________________________________________________________________

1.18.3.9 ‘flat_map/2’
.....................

When the reference does not hold an unexpected term and mapping a
closure with the expected term and the new reference as additional
arguments is successful, returns the new reference.  Otherwise returns
the same reference.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘flat_map(Closure,NewReference)’
     `Meta-predicate template:'
          ‘flat_map(2,*)’
     `Mode and number of proofs:'
          ‘flat_map(+callable,--nonvar)’ - ‘one’

__________________________________________________________________

1.18.3.10 ‘or_else/2’
.....................

Returns the expected term hold by the reference if it does not hold an
unexpected term or the given default term if the reference holds an
unexpected term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘or_else(Expected,Default)’
     `Mode and number of proofs:'
          ‘or_else(--term,@term)’ - ‘one’

__________________________________________________________________

1.18.3.11 ‘or_else_get/2’
.........................

Returns the expected term hold by the reference if it does not hold an
unexpected term.  Otherwise applies a closure to compute the expected
term.  Throws an error when the reference holds an unexpected term and
an expected term cannot be computed.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘or_else_get(Expected,Closure)’
     `Meta-predicate template:'
          ‘or_else_get(*,1)’
     `Mode and number of proofs:'
          ‘or_else_get(--term,+callable)’ - ‘one_or_error’

     `Exceptions:'
          Reference holds an unexpected term and an expected term cannot be computed:
               ‘existence_error(expected_term,Reference)’

__________________________________________________________________

1.18.3.12 ‘or_else_call/2’
..........................

Returns the expected term if the reference does not hold an unexpected
term.  Calls a goal deterministically otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘or_else_call(Expected,Goal)’
     `Meta-predicate template:'
          ‘or_else_call(*,0)’
     `Mode and number of proofs:'
          ‘or_else_call(--term,+callable)’ - ‘zero_or_one’

__________________________________________________________________

1.18.3.13 ‘or_else_throw/1’
...........................

Returns the expected term hold by the reference if present.  Throws the
unexpected term as an error otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘or_else_throw(Expected)’
     `Mode and number of proofs:'
          ‘or_else_throw(--term)’ - ‘one_or_error’

__________________________________________________________________

1.18.3.14 ‘or_else_fail/1’
..........................

Returns the expected term hold by the reference if it does not hold an
unexpected term.  Fails otherwise.  Usually called to skip over
references holding unexpected terms.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘or_else_fail(Expected)’
     `Mode and number of proofs:'
          ‘or_else_fail(--term)’ - ‘zero_or_one’

__________________________________________________________________

1.18.3.15 Protected predicates
..............................

(none)

1.18.3.16 Private predicates
............................

(none)

1.18.3.17 Operators
...................

(none)

See also
........

See expected.

1.19 ‘flags’
============

`category'

1.19.1 ‘flags’
--------------

Implementation of persistent object flags.

     `Author:' Theofrastos Mantadelis
     `Version:' 1.0
     `Date:' 2010/11/27

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.19.1.1 Public predicates
..........................

1.19.1.2 ‘get_flag_value/2’
...........................

Gets or tests the value of a flag.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘get_flag_value(Flag,Value)’
     `Mode and number of proofs:'
          ‘get_flag_value(+atom,?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.19.1.3 ‘set_flag_value/2’
...........................

Sets the value of a flag.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_flag_value(Flag,NewValue)’
     `Mode and number of proofs:'
          ‘set_flag_value(+atom,@nonvar)’ - ‘one’

__________________________________________________________________

1.19.1.4 ‘set_flag_value/3’
...........................

Sets the value of a flag, returning the old value.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_flag_value(Flag,OldValue,NewValue)’
     `Mode and number of proofs:'
          ‘set_flag_value(+atom,?nonvar,@nonvar)’ - ‘one’

__________________________________________________________________

1.19.1.5 ‘reset_flags/0’
........................

Resets all flags to their default values.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘reset_flags’ - ‘one’

__________________________________________________________________

1.19.1.6 ‘reset_flags/1’
........................

Resets all flags in a group to their default values.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘reset_flags(Group)’
     `Mode and number of proofs:'
          ‘reset_flags(+atom)’ - ‘one’

__________________________________________________________________

1.19.1.7 ‘flag_groups/1’
........................

Returns a list of all flag groups.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘flag_groups(Groups)’
     `Mode and number of proofs:'
          ‘flag_groups(-list(atom))’ - ‘one’

__________________________________________________________________

1.19.1.8 ‘flag_group_chk/1’
...........................

Checks if a given atom is a flag group.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘flag_group_chk(Group)’
     `Mode and number of proofs:'
          ‘flag_group_chk(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.19.1.9 ‘print_flags/0’
........................

Prints a listing of all flags.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘print_flags’ - ‘one’

__________________________________________________________________

1.19.1.10 ‘print_flags/1’
.........................

Prints a listing of all flags in a group.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘print_flags(Group)’
     `Mode and number of proofs:'
          ‘print_flags(+atom)’ - ‘one’

__________________________________________________________________

1.19.1.11 ‘defined_flag/6’
..........................

Gets or test the existing (visible) flag definitions.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘defined_flag(Flag,Group,Type,DefaultValue,Description,Access)’
     `Mode and number of proofs:'
          ‘defined_flag(?atom,?atom,?nonvar,?nonvar,?atom,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.19.1.12 ‘built_in_flag/2’
...........................

True if the argument is a built-in flag type with the specified default
value.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘built_in_flag(Type,DefaultValue)’
     `Mode and number of proofs:'
          ‘built_in_flag(?atom,?nonvar)’ - ‘zero_or_more’

__________________________________________________________________

1.19.1.13 Protected predicates
..............................

1.19.1.14 ‘unsafe_set_flag_value/2’
...................................

Sets the value of a flag without performing any validation checks.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘unsafe_set_flag_value(Flag,NewValue)’
     `Mode and number of proofs:'
          ‘unsafe_set_flag_value(+atom,@nonvar)’ - ‘one’

__________________________________________________________________

1.19.1.15 ‘define_flag/1’
.........................

Defines a new flag using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘define_flag(Flag)’
     `Mode and number of proofs:'
          ‘define_flag(+atom)’ - ‘one’

__________________________________________________________________

1.19.1.16 ‘define_flag/2’
.........................

Defines a new flag using a given set of options (for example,
[group(general), type(nonvar), default(true), description(Flag),
access(read_write)]).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘define_flag(Flag,Options)’
     `Mode and number of proofs:'
          ‘define_flag(+atom,@list)’ - ‘one’

__________________________________________________________________

1.19.1.17 Private predicates
............................

1.19.1.18 ‘defined_flag_/6’
...........................

Gets or test the existing flag definitions.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘defined_flag_(Flag,Group,Type,DefaultValue,Description,Access)’
     `Mode and number of proofs:'
          ‘defined_flag_(?atom,?atom,?nonvar,?nonvar,?atom,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.19.1.19 ‘flag_value_/2’
.........................

Table of flag values.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘flag_value_(Flag,Value)’
     `Mode and number of proofs:'
          ‘flag_value_(?atom,?nonvar)’ - ‘zero_or_more’

__________________________________________________________________

1.19.1.20 ‘validate/3’
......................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.19.1.21 ‘validate_type/1’
...........................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.19.1.22 ‘is_validator/1’
..........................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.19.1.23 Operators
...................

(none)

`protocol'

1.19.2 ‘flags_validator’
------------------------

Flag validation protocol.  Must be implemented by validator objects.

     `Author:' Theofrastos Mantadelis
     `Version:' 1.0
     `Date:' 2010/11/27

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.19.2.1 Public predicates
..........................

1.19.2.2 ‘print_flags/0’
........................

Validates the validator object itself.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘print_flags’ - ‘zero_or_one’

__________________________________________________________________

1.19.2.3 ‘validate/1’
.....................

Validates a flag value.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘validate(Value)’
     `Mode and number of proofs:'
          ‘validate(@term)’ - ‘zero_or_one’

__________________________________________________________________

1.19.2.4 Protected predicates
.............................

(none)

1.19.2.5 Private predicates
...........................

(none)

1.19.2.6 Operators
..................

(none)

1.20 ‘gensym’
=============

`object'

1.20.1 ‘gensym’
---------------

Predicates for generating unique atoms.  Object protocol based on the
‘gensym’ module of SWI-Prolog.

     `Author:' Paulo Moura
     `Version:' 1.01
     `Date:' 2011/11/9

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.20.1.1 Public predicates
..........................

1.20.1.2 ‘reset_gensym/0’
.........................

Resets the generator counter for all bases.

     `Compilation flags:'
          ‘static, synchronized’

     `Mode and number of proofs:'
          ‘reset_gensym’ - ‘one’

__________________________________________________________________

1.20.1.3 ‘reset_gensym/1’
.........................

Resets the generator counter for a given base.

     `Compilation flags:'
          ‘static, synchronized’

     `Template:'
          ‘reset_gensym(Base)’
     `Mode and number of proofs:'
          ‘reset_gensym(+atom)’ - ‘one’

__________________________________________________________________

1.20.1.4 ‘gensym/2’
...................

Returns a new unique atom with a given base (prefix).

     `Compilation flags:'
          ‘static, synchronized’

     `Template:'
          ‘gensym(Base,Unique)’
     `Mode and number of proofs:'
          ‘gensym(+atom,-atom)’ - ‘one’

__________________________________________________________________

1.20.1.5 Protected predicates
.............................

(none)

1.20.1.6 Private predicates
...........................

1.20.1.7 ‘base_/2’
..................

Table of generator bases and respective counters.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘base_(Base,Counter)’
     `Mode and number of proofs:'
          ‘base_(?atom,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.20.1.8 Operators
..................

(none)

1.21 ‘heaps’
============

`object'

1.21.1 ‘heap(Order)’
--------------------

Heap implementation, parameterized by the order to be used to compare
keys (‘<’ or ‘>’).

     `Author:' Richard O’Keefe; adapted to Logtalk by Paulo Moura and Victor Lagerkvist.
     `Version:' 1.1
     `Date:' 2019/5/18

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ heapp.
     `Extends:'
          ‘public’ compound.

     `Remarks:'
          (none)

1.21.1.1 Public predicates
..........................

(see entity ancestors)

1.21.1.2 Protected predicates
.............................

(see entity ancestors)

1.21.1.3 Private predicates
...........................

(see entity ancestors)

1.21.1.4 Operators
..................

(none)

See also
........

See minheap, maxheap.

`protocol'

1.21.2 ‘heapp’
--------------

Heap protocol.  Key-value pairs are represented as ‘Key-Value’.

     `Author:' Richard O’Keefe; adapted to Logtalk by Paulo Moura and Victor Lagerkvist.
     `Version:' 1.01
     `Date:' 2010/11/13

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.21.2.1 Public predicates
..........................

1.21.2.2 ‘insert/4’
...................

Inserts the new pair into a heap, returning the updated heap.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘insert(Key,Value,Heap,NewHeap)’
     `Mode and number of proofs:'
          ‘insert(+key,+value,+heap,-heap)’ - ‘one’

__________________________________________________________________

1.21.2.3 ‘insert_all/3’
.......................

Inserts a list of pairs into a heap, returning the updated heap.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘insert_all(List,Heap,NewHeap)’
     `Mode and number of proofs:'
          ‘insert_all(@list(pairs),+heap,-heap)’ - ‘one’

__________________________________________________________________

1.21.2.4 ‘delete/4’
...................

Deletes and returns the top pair in a heap returning the updated heap.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete(Heap,TopKey,TopValue,NewHeap)’
     `Mode and number of proofs:'
          ‘delete(+heap,?key,?value,-heap)’ - ‘zero_or_one’

__________________________________________________________________

1.21.2.5 ‘merge/3’
..................

Merges two heaps.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘merge(Heap1,Heap2,NewHeap)’
     `Mode and number of proofs:'
          ‘merge(+heap,+heap,-heap)’ - ‘one’

__________________________________________________________________

1.21.2.6 ‘empty/1’
..................

True if the heap is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘empty(Heap)’
     `Mode and number of proofs:'
          ‘empty(@heap)’ - ‘zero_or_one’

__________________________________________________________________

1.21.2.7 ‘size/2’
.................

Returns the number of heap elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘size(Heap,Size)’
     `Mode and number of proofs:'
          ‘size(+heap,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.21.2.8 ‘as_list/2’
....................

Returns the current set of pairs in the heap as a list, sorted into
ascending order of the keys.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘as_list(Heap,List)’
     `Mode and number of proofs:'
          ‘as_list(+heap,-list)’ - ‘one’

__________________________________________________________________

1.21.2.9 ‘as_heap/2’
....................

Constructs a heap from a list of pairs.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘as_heap(List,Heap)’
     `Mode and number of proofs:'
          ‘as_heap(+list,-heap)’ - ‘one’

__________________________________________________________________

1.21.2.10 ‘top/3’
.................

Returns the top pair in the heap.  Fails if the heap is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘top(Heap,TopKey,TopValue)’
     `Mode and number of proofs:'
          ‘top(+heap,?key,?value)’ - ‘zero_or_one’

__________________________________________________________________

1.21.2.11 ‘top_next/5’
......................

Returns the top pair and the next pair in the heap.  Fails if the heap
does not have at least two elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘top_next(Heap,TopKey,TopValue,NextKey,NextValue)’
     `Mode and number of proofs:'
          ‘top_next(+heap,?key,?value,?key,?value)’ - ‘zero_or_one’

__________________________________________________________________

1.21.2.12 Protected predicates
..............................

(none)

1.21.2.13 Private predicates
............................

(none)

1.21.2.14 Operators
...................

(none)

See also
........

See heap(Order).

`object'

1.21.3 ‘maxheap’
----------------

Max-heap implementation.  Uses standard order to compare keys.

     `Author:' Paulo Moura.
     `Version:' 1.0
     `Date:' 2010/2/19

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ heap(>).

     `Remarks:'
          (none)

1.21.3.1 Public predicates
..........................

(see entity ancestors)

1.21.3.2 Protected predicates
.............................

(see entity ancestors)

1.21.3.3 Private predicates
...........................

(see entity ancestors)

1.21.3.4 Operators
..................

(none)

`object'

1.21.4 ‘minheap’
----------------

Min-heap implementation.  Uses standard order to compare keys.

     `Author:' Paulo Moura.
     `Version:' 1.0
     `Date:' 2010/2/19

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ heap(<).

     `Remarks:'
          (none)

1.21.4.1 Public predicates
..........................

(see entity ancestors)

1.21.4.2 Protected predicates
.............................

(see entity ancestors)

1.21.4.3 Private predicates
...........................

(see entity ancestors)

1.21.4.4 Operators
..................

(none)

1.22 ‘help’
===========

`object'

1.22.1 ‘help’
-------------

Command-line help for Logtalk libraries, entities, plus built-in control
constructs, predicates, non-terminals, and methods.

     `Author:' Paulo Moura
     `Version:' 0.25
     `Date:' 2019/8/25

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ forwarding.
     `Uses:'
          See os.

     `Remarks:'
          (none)

1.22.1.1 Public predicates
..........................

1.22.1.2 ‘help/0’
.................

Prints instructions on how to use the help tool.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘help’ - ‘one’

__________________________________________________________________

1.22.1.3 ‘(/)/2’
................

Provides help on the ‘Functor/Arity’ built-in control construct,
directive, predicate, or method.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Functor/Arity’
     `Mode and number of proofs:'
          ‘+atom/ +integer’ - ‘zero_or_one’

__________________________________________________________________

1.22.1.4 ‘(//)/2’
.................

Provides help on the ‘Functor//Arity’ built-in non-terminal.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Functor//Arity’
     `Mode and number of proofs:'
          ‘+atom// +integer’ - ‘zero_or_one’

__________________________________________________________________

1.22.1.5 ‘completion/2’
.......................

Provides a completion pair, ‘Completion-Page’, for a given prefix.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘completion(Prefix,Completion)’
     `Mode and number of proofs:'
          ‘completion(+atom,-pair)’ - ‘zero_or_more’

__________________________________________________________________

1.22.1.6 ‘completions/2’
........................

Provides a list of completions pairs, ‘Completion-Page’, for a given
prefix.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘completions(Prefix,Completions)’
     `Mode and number of proofs:'
          ‘completions(+atom,-lists(pair))’ - ‘zero_or_more’

__________________________________________________________________

1.22.1.7 ‘built_in_directive/4’
...............................

Provides access to the HTML documenting files describing built-in
directives.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘built_in_directive(Functor,Arity,Directory,Basename)’
     `Mode and number of proofs:'
          ‘built_in_directive(?atom,?integer,-atom,-atom)’ - ‘zero_or_more’

__________________________________________________________________

1.22.1.8 ‘built_in_predicate/4’
...............................

Provides access to the HTML documenting files describing built-in
predicates.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘built_in_predicate(Functor,Arity,Directory,Basename)’
     `Mode and number of proofs:'
          ‘built_in_predicate(?atom,?integer,-atom,-atom)’ - ‘zero_or_more’

__________________________________________________________________

1.22.1.9 ‘built_in_method/4’
............................

Provides access to the HTML documenting files describing built-in
methods.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘built_in_method(Functor,Arity,Directory,Basename)’
     `Mode and number of proofs:'
          ‘built_in_method(?atom,?integer,-atom,-atom)’ - ‘zero_or_more’

__________________________________________________________________

1.22.1.10 ‘control_construct/4’
...............................

Provides access to the HTML documenting files describing built-in
control constructs.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘control_construct(Functor,Arity,Directory,Basename)’
     `Mode and number of proofs:'
          ‘control_construct(?atom,?integer,-atom,-atom)’ - ‘zero_or_more’

__________________________________________________________________

1.22.1.11 ‘built_in_non_terminal/4’
...................................

Provides access to the HTML documenting files describing built-in DCG
non-terminals.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘built_in_non_terminal(Functor,Arity,Directory,Basename)’
     `Mode and number of proofs:'
          ‘built_in_non_terminal(?atom,?integer,-atom,-atom)’ - ‘zero_or_more’

__________________________________________________________________

1.22.1.12 ‘library/0’
.....................

Provides help on the standard Logtalk library.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘library’ - ‘one’

__________________________________________________________________

1.22.1.13 ‘library/1’
.....................

Provides help on the standard Logtalk library entities, predicates, and
non-terminals.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library(Topic)’
     `Mode and number of proofs:'
          ‘library(+entity_identifier)’ - ‘zero_or_one’

__________________________________________________________________

1.22.1.14 ‘manuals/0’
.....................

Provides access to the Logtalk User and Reference manuals.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘manuals’ - ‘one’

__________________________________________________________________

1.22.1.15 Protected predicates
..............................

(see entity ancestors)

1.22.1.16 Private predicates
............................

(see entity ancestors)

1.22.1.17 Operators
...................

(none)

1.23 ‘hierarchies’
==================

`category'

1.23.1 ‘class_hierarchy’
------------------------

Class hierarchy predicates.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2006/2/20

     `Compilation flags:'
          ‘static’

     `Implements:'
          ‘public’ class_hierarchyp.

     `Remarks:'
          (none)

1.23.1.1 Public predicates
..........................

(see entity ancestors)

1.23.1.2 Protected predicates
.............................

(see entity ancestors)

1.23.1.3 Private predicates
...........................

(see entity ancestors)

1.23.1.4 Operators
..................

(none)

`protocol'

1.23.2 ‘class_hierarchyp’
-------------------------

Class hierarchy protocol.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2000/7/24

     `Compilation flags:'
          ‘static’

     `Extends:'
          ‘public’ hierarchyp.

     `Remarks:'
          (none)

1.23.2.1 Public predicates
..........................

1.23.2.2 ‘class/1’
..................

Returns, by backtracking, all object classes.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘class(Class)’
     `Mode and number of proofs:'
          ‘class(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.2.3 ‘classes/1’
....................

List of all object classes.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘classes(Classes)’
     `Mode and number of proofs:'
          ‘classes(-list)’ - ‘one’

__________________________________________________________________

1.23.2.4 ‘instance/1’
.....................

Returns, by backtracking, all class instances.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘instance(Instance)’
     `Mode and number of proofs:'
          ‘instance(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.2.5 ‘instances/1’
......................

List of all class instances.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘instances(Instances)’
     `Mode and number of proofs:'
          ‘instances(-list)’ - ‘one’

__________________________________________________________________

1.23.2.6 ‘subclass/1’
.....................

Returns, by backtracking, all class subclasses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subclass(Subclass)’
     `Mode and number of proofs:'
          ‘subclass(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.2.7 ‘subclasses/1’
.......................

List of all class subclasses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subclasses(Subclasses)’
     `Mode and number of proofs:'
          ‘subclasses(-list)’ - ‘one’

__________________________________________________________________

1.23.2.8 ‘superclass/1’
.......................

Returns, by backtracking, all class superclasses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘superclass(Superclass)’
     `Mode and number of proofs:'
          ‘superclass(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.2.9 ‘superclasses/1’
.........................

List of all class superclasses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘superclasses(Superclasses)’
     `Mode and number of proofs:'
          ‘superclasses(-list)’ - ‘one’

__________________________________________________________________

1.23.2.10 ‘leaf_instance/1’
...........................

Returns, by backtracking, all class leaf instances.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leaf_instance(Leaf)’
     `Mode and number of proofs:'
          ‘leaf_instance(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.2.11 ‘leaf_instances/1’
............................

List of all class leaf instances.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leaf_instances(Leaves)’
     `Mode and number of proofs:'
          ‘leaf_instances(-list)’ - ‘one’

__________________________________________________________________

1.23.2.12 ‘leaf_class/1’
........................

Returns, by backtracking, all class leaf subclasses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leaf_class(Leaf)’
     `Mode and number of proofs:'
          ‘leaf_class(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.2.13 ‘leaf_classes/1’
..........................

List of all class leaf leaf subclasses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leaf_classes(Leaves)’
     `Mode and number of proofs:'
          ‘leaf_classes(-list)’ - ‘one’

__________________________________________________________________

1.23.2.14 ‘descendant_instance/1’
.................................

Returns, by backtracking, all class descendant instances.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘descendant_instance(Descendant)’
     `Mode and number of proofs:'
          ‘descendant_instance(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.2.15 ‘descendant_instances/1’
..................................

List of all class descendant instances.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘descendant_instances(Descendants)’
     `Mode and number of proofs:'
          ‘descendant_instances(-list)’ - ‘one’

__________________________________________________________________

1.23.2.16 ‘descendant_class/1’
..............................

Returns, by backtracking, all class descendant subclasses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘descendant_class(Descendant)’
     `Mode and number of proofs:'
          ‘descendant_class(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.2.17 ‘descendant_classes/1’
................................

List of all class descendant subclasses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘descendant_classes(Descendants)’
     `Mode and number of proofs:'
          ‘descendant_classes(-list)’ - ‘one’

__________________________________________________________________

1.23.2.18 Protected predicates
..............................

(see entity ancestors)

1.23.2.19 Private predicates
............................

(see entity ancestors)

1.23.2.20 Operators
...................

(none)

See also
........

See class_hierarchy.

`protocol'

1.23.3 ‘hierarchyp’
-------------------

Common hierarchy protocol for prototype and class hierarchies.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2000/7/24

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.23.3.1 Public predicates
..........................

1.23.3.2 ‘ancestor/1’
.....................

Returns, by backtracking, all object ancestors.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘ancestor(Ancestor)’
     `Mode and number of proofs:'
          ‘ancestor(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.3.3 ‘ancestors/1’
......................

List of all object ancestors.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘ancestors(Ancestors)’
     `Mode and number of proofs:'
          ‘ancestors(-list)’ - ‘one’

__________________________________________________________________

1.23.3.4 ‘leaf/1’
.................

Returns, by backtracking, all object leaves.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leaf(Leaf)’
     `Mode and number of proofs:'
          ‘leaf(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.3.5 ‘leaves/1’
...................

List of all object leaves.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leaves(Leaves)’
     `Mode and number of proofs:'
          ‘leaves(-list)’ - ‘one’

__________________________________________________________________

1.23.3.6 ‘descendant/1’
.......................

Returns, by backtracking, all object descendants.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘descendant(Descendant)’
     `Mode and number of proofs:'
          ‘descendant(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.3.7 ‘descendants/1’
........................

List of all object descendants.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘descendants(Descendants)’
     `Mode and number of proofs:'
          ‘descendants(-list)’ - ‘one’

__________________________________________________________________

1.23.3.8 Protected predicates
.............................

(none)

1.23.3.9 Private predicates
...........................

(none)

1.23.3.10 Operators
...................

(none)

`category'

1.23.4 ‘proto_hierarchy’
------------------------

Prototype hierarchy predicates.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2006/2/20

     `Compilation flags:'
          ‘static’

     `Implements:'
          ‘public’ proto_hierarchyp.

     `Remarks:'
          (none)

1.23.4.1 Public predicates
..........................

(see entity ancestors)

1.23.4.2 Protected predicates
.............................

(see entity ancestors)

1.23.4.3 Private predicates
...........................

(see entity ancestors)

1.23.4.4 Operators
..................

(none)

`protocol'

1.23.5 ‘proto_hierarchyp’
-------------------------

Prototype hierarchy protocol.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2006/2/20

     `Compilation flags:'
          ‘static’

     `Extends:'
          ‘public’ hierarchyp.

     `Remarks:'
          (none)

1.23.5.1 Public predicates
..........................

1.23.5.2 ‘parent/1’
...................

Returns, by backtracking, all object parents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘parent(Parent)’
     `Mode and number of proofs:'
          ‘parent(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.5.3 ‘parents/1’
....................

List of all object parents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘parents(Parents)’
     `Mode and number of proofs:'
          ‘parents(-list)’ - ‘one’

__________________________________________________________________

1.23.5.4 ‘extension/1’
......................

Returns, by backtracking, all object direct descendants.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘extension(Extension)’
     `Mode and number of proofs:'
          ‘extension(?object)’ - ‘zero_or_more’

__________________________________________________________________

1.23.5.5 ‘extensions/1’
.......................

List of all object direct descendants.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘extensions(Extensions)’
     `Mode and number of proofs:'
          ‘extensions(-list)’ - ‘one’

__________________________________________________________________

1.23.5.6 Protected predicates
.............................

(see entity ancestors)

1.23.5.7 Private predicates
...........................

(see entity ancestors)

1.23.5.8 Operators
..................

(none)

See also
........

See proto_hierarchy.

1.24 ‘hook_flows’
=================

`object'

1.24.1 ‘hook_pipeline(Pipeline)’
--------------------------------

   * ‘Pipeline’ - List of hook objects

Use a pipeline (represented using a list) of hook objects to expand
terms and goals.  The expansion results from a hook object are passed to
the next hook object in the pipeline.

     `Author:' Paulo Moura
     `Version:' 1.02
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.

     `Remarks:'

        - `Usage:' Compile source files that should be expanded using
          the pipeline of hook objects using the compiler option
          ‘hook(hook_pipeline(Pipeline))’.

1.24.1.1 Public predicates
..........................

(see entity ancestors)

1.24.1.2 Protected predicates
.............................

(see entity ancestors)

1.24.1.3 Private predicates
...........................

(see entity ancestors)

1.24.1.4 Operators
..................

(none)

See also
........

See hook_set(Set).

`object'

1.24.2 ‘hook_set(Set)’
----------------------

   * ‘Set’ - Set (list) of hook objects

Use a set (represented using a list) of hook objects to expand terms and
goals.  The hook objects are tried in sequence until one of them
succeeds in expanding the current term (goal) into a different term
(goal).

     `Author:' Paulo Moura
     `Version:' 1.01
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.

     `Remarks:'

        - `Usage:' Compile source files that should be expanded using
          the set of hook objects using the compiler option
          ‘hook(hook_set(Set))’.

1.24.2.1 Public predicates
..........................

(see entity ancestors)

1.24.2.2 Protected predicates
.............................

(see entity ancestors)

1.24.2.3 Private predicates
...........................

(see entity ancestors)

1.24.2.4 Operators
..................

(none)

See also
........

See hook_pipeline(Pipeline).

1.25 ‘intervals’
================

`object'

1.25.1 ‘interval’
-----------------

Basic temporal interval relations.  An interval is represented by a
compound term, ‘i/2’, with two ground arguments, the start and end
points.

     `Author:' Paulo Moura
     `Version:' 1.2
     `Date:' 2019/5/21

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ intervalp.
     `Aliases:'
          ‘intervalp’ ‘before/2’ as ‘b/2’
          ‘intervalp’ ‘after/2’ as ‘bi/2’
          ‘intervalp’ ‘meets/2’ as ‘m/2’
          ‘intervalp’ ‘met_by/2’ as ‘mi/2’
          ‘intervalp’ ‘overlaps/2’ as ‘o/2’
          ‘intervalp’ ‘overlapped_by/2’ as ‘oi/2’
          ‘intervalp’ ‘starts/2’ as ‘s/2’
          ‘intervalp’ ‘started_by/2’ as ‘si/2’
          ‘intervalp’ ‘during/2’ as ‘d/2’
          ‘intervalp’ ‘contains/2’ as ‘di/2’
          ‘intervalp’ ‘contains/2’ as ‘f/2’
          ‘intervalp’ ‘finished_by/2’ as ‘fi/2’
          ‘intervalp’ ‘equal/2’ as ‘eq/2’

     `Remarks:'
          (none)

1.25.1.1 Public predicates
..........................

(see entity ancestors)

1.25.1.2 Protected predicates
.............................

(see entity ancestors)

1.25.1.3 Private predicates
...........................

(see entity ancestors)

1.25.1.4 Operators
..................

(none)

`protocol'

1.25.2 ‘intervalp’
------------------

Basic temporal interval relations protocol (based on James F. Allen
Interval Algebra work).

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2014/4/26

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.25.2.1 Public predicates
..........................

1.25.2.2 ‘new/3’
................

Constructs a new interval given start and end points.  The start point
must strictly precede the end point.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘new(Start,End,Interval)’
     `Mode and number of proofs:'
          ‘new(@ground,@ground,-interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.3 ‘valid/1’
..................

True if Interval is a valid interval.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘valid(Interval)’
     `Mode and number of proofs:'
          ‘valid(@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.4 ‘before/2’
...................

True if ‘Interval1’ takes place before ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘before(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘before(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.5 ‘after/2’
..................

True if ‘Interval1’ takes place after ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘after(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘after(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.6 ‘meets/2’
..................

True if ‘Interval1’ meets ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘meets(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘meets(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.7 ‘met_by/2’
...................

True if ‘Interval1’ is met by ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘met_by(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘met_by(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.8 ‘overlaps/2’
.....................

True if ‘Interval1’ overlaps with ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘overlaps(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘overlaps(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.9 ‘overlapped_by/2’
..........................

True if ‘Interval1’ is overlapped by ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘overlapped_by(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘overlapped_by(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.10 ‘starts/2’
....................

True if ‘Interval1’ starts ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘starts(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘starts(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.11 ‘started_by/2’
........................

True if ‘Interval1’ is started by ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘started_by(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘started_by(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.12 ‘during/2’
....................

True if ‘Interval1’ occurs during ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘during(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘during(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.13 ‘contains/2’
......................

True if ‘Interval1’ contains ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘contains(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘contains(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.14 ‘finishes/2’
......................

True if ‘Interval1’ finishes ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘finishes(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘finishes(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.15 ‘finished_by/2’
.........................

True if ‘Interval1’ is finished by ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘finished_by(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘finished_by(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.16 ‘equal/2’
...................

True if ‘Interval1’ is equal to ‘Interval2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘equal(Interval1,Interval2)’
     `Mode and number of proofs:'
          ‘equal(@interval,@interval)’ - ‘zero_or_one’

__________________________________________________________________

1.25.2.17 Protected predicates
..............................

(none)

1.25.2.18 Private predicates
............................

(none)

1.25.2.19 Operators
...................

(none)

See also
........

See interval.

1.26 ‘iso8601’
==============

`object'

1.26.1 ‘iso8601’
----------------

ISO 8601 (and European civil calendar) compliant library of date
predicates.

     `Author:' Daniel L. Dudley
     `Version:' 1.02
     `Date:' 2014/11/3

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Uses:'
          See os.

     `Remarks:'

        - `Scope:' This object currently provides a powerful, versatile
          and efficient set of date-handling predicates, which–thanks to
          Logtalk–may be used as is on a wide range of Prolog compilers.
          Besides taking time to familiarize oneself with each
          predicate, the user should take note of the following
          information.

        - `Validation of dates:' Date parts are not validated–that is
          the caller’s responsibility!  However, not being quite
          heartless yet, we do provide a predicate for this purpose.

        - `Date arithmetic:' Many of the examples illustrate a
          simplified method of doing date arithmetic.  Note, however,
          that we do not generally recommend this practice–it is all too
          easy to make mistakes.  The safest way of finding the day
          difference between two dates is to first convert the dates to
          their Julian day numbers and then subtract one from the other.
          Similarly, the safe way to add or subtract a day offset to a
          particular date is to first convert the date to its Julian day
          number, add or subtract the day offset, and then convert the
          result to its corresponding date.

        - `BC years:' ISO 8601 specifies that the Gregorian calendar be
          used, yet requires that years prior to 1 AD be handled
          arithmetically, i.e., the year we know as 1 BC is year 0, 2 BC
          is year -1, 3 BC is year -2 and so on.  We do not follow ISO
          8601 with regard to the handling of BC years.  Our date
          predicates will accept and interpret an input year 0 as 1 BC;
          however, a negative year, Year, should always be interpreted
          as ‘abs(Year) =:= Year BC’.  We believe that the average
          person will find our handling of BC years more user-friendly
          than the ISO 8601 one, but we encourage feedback from users
          with a view to a possible change in future versions.

        - `Week numbers:' It is possible for a day (date) to have a week
          number that belongs to another year.  Up to three of the first
          days of a calendar year may belong to the last week (number)
          of the prior calendar year, and up to three days of the last
          days of a calendar year may belong to the first week (number)
          of the next calendar year.  It for this reason that the Week
          parameter in ‘date/6-7’ is a compound term, namely
          ‘week(WeekNo,ActualYear)’.

        - `Computation of Gregorian Easter Sunday:' The algorithm is
          based upon the “Gaussian rule”.  Proleptic use is limited to
          years > 1582 AD, that is, after the introduction of the
          Gregorian calendar.

        - `Some Christian feast day offsets from Easter Sunday:'
          Carnival Monday: -48 days, Mardi Gras (Shrove Tuesday): -47
          days, Ash Wednesday: -46 days, Palm Sunday: -7 days, Easter
          Friday: -2 days, Easter Saturday: -1 day, Easter Monday: +1
          day, Ascension of Christ: +39 days, Whitsunday: +49 days,
          Whitmonday: +50 days, Feast of Corpus Christi: +60 days.

1.26.1.1 Public predicates
..........................

1.26.1.2 ‘date/4’
.................

Get the system date and/or its Julian Day # or convert a Julian Day #
to/from given date parts.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘date(JD,Year,Month,Day)’
               ‘JD’ - Julian day serial number
               ‘Year’ - 0 or negative if converted BC year, positive otherwise
               ‘Month’ - Normally an integer between 1 and 12 inclusive
               ‘Day’ - Normally an integer between 1 and 31 inclusive depending upon month
     `Mode and number of proofs:'
          ‘date(?integer,?integer,?integer,?integer)’ - ‘zero_or_one’

     `Examples:'
          Current date (i.e., today)
               ‘date(JD,Year,Month,Day)’
               ‘JD=2453471,Year=2005,Month=4,Day=10’
          Convert a date to its Julian day number
               ‘date(JD,2000,2,29)’
               ‘JD=2451604’
          Convert a Julian day number to its date
               ‘date(2451604,Year,Month,Day)’
               ‘Year=2000,Month=2,Day=29’
          What is the date of day # 60 in year 2000?
               ‘date(JD,2000,1,60)’
               ‘JD=2451604’
          What is the Julian of the 1st day prior to 2000-1-1?
               ‘date(JD,2000,1,0)’
               ‘JD=2451544’
          What is the Julian of the 60th day prior to 2000-1-1?
               ‘date(JD,2000,1,-59)’
               ‘JD=2451485’
          Illegal date is auto-adjusted (see also next query)
               ‘date(JD,1900,2,29)’
               ‘JD=2415080’
          This is the correct date!
               ‘date(2415080,Year,Month,Day)’
               ‘Year=1900,Month=3,Day=1’

__________________________________________________________________

1.26.1.3 ‘date/5’
.................

Ditto ‘date/4’ + get/check its day-of-week #.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘date(JD,Year,Month,Day,DoW)’
               ‘JD’ - Julian day serial number
               ‘Year’ - 0 or negative if converted BC year, positive otherwise
               ‘Month’ - Normally an integer between 1 and 12 inclusive
               ‘Day’ - Normally an integer between 1 and 31 inclusive depending upon month
               ‘DoW’ - Day of week, where Monday=1, Tuesday=2, …, Sunday=7
     `Mode and number of proofs:'
          ‘date(?integer,?integer,?integer,?integer,?integer)’ - ‘zero_or_one’

     `Examples:'
          Get the Julian and the day-of-week # of a date
               ‘date(JD,2000,2,29,DoW)’
               ‘JD=2451604,DoW=2’
          Check the validity of a given date (day-of-week is 2, not 4)
               ‘date(_,2002,3,5,4)’
               ‘no’
          Get the Julian day of a given date if it is a Sunday
               ‘date(JD,2004,2,29,7)’
               ‘JD=2453065’
          Get the date and day-of-week # of a Julian
               ‘date(2451545,Year,Month,Day,DoW)’
               ‘Year=2000,Month=1,Day=1,DoW=6’

__________________________________________________________________

1.26.1.4 ‘date/6’
.................

Ditto ‘date/5’ + get/check its week #.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘date(JD,Year,Month,Day,DoW,Week)’
               ‘JD’ - Julian day serial number
               ‘Year’ - 0 or negative if converted BC year, positive otherwise
               ‘Month’ - Normally an integer between 1 and 12 inclusive
               ‘Day’ - Normally an integer between 1 and 31 inclusive depending upon month
               ‘DoW’ - Day of week, where Monday=1, Tuesday=2, …, Sunday=7
               ‘Week’ - Compound term, ‘week(WeekNo,ActualYear)’, of a day
     `Mode and number of proofs:'
          ‘date(?integer,?integer,?integer,?integer,?integer,?compound)’ - ‘zero_or_one’

     `Examples:'
          Get the day-of-week and week number of a date
               ‘date(_,2000,1,1,DoW,Week)’
               ‘DoW=6,Week=week(52,1999)’
          Get the week number and year of this week
               ‘date(_,_,_,_,_,Week)’
               ‘Week=week(7,2004)’
          Get the Julian number and the week of a date if it is a Sunday
               ‘date(JD,2004,2,29,7,Week)’
               ‘JD=2453065,Week=week(9,2004)’
          Get the day-of-week and week of a Julian day number
               ‘date(2453066,_,_,_,DoW,Week)’
               ‘DoW=1,Week=week(10,2004)’
          Check that given date data matches
               ‘date(_,2004,3,1,1,week(10,2004))’
               ‘yes’
          What is the date of a day of week (default is 1) in given week # and year?
               ‘date(_,Year,Month,Day,DoW,week(26,2004))’
               ‘Year=2004,Month=6,Day=21,DoW=1’
          Ditto for Sunday
               ‘date(_,Year,Month,Day,7,week(1,2005))’
               ‘Year=2005,Month=1,Day=9’
          Ditto for Tuesday in following week
               ‘date(_,Year,Month,Day,9,week(1,2005))’
               ‘Year=2005,Month=1,Day=11’
          Ditto for Thursday in the prior week
               ‘date(_,Year,Month,Day,4,week(0,2005))’
               ‘Year=2004,Month=12,Day=30’
          Ditto for Tuesday two weeks prior
               ‘date(_,Year,Month,Day,2,week(-1,2005))’
               ‘Year=2004,Month=12,Day=21’
          Ditto for Saturday
               ‘date(_,Year,Month,Day,6,week(53,2004))’
               ‘Year=2005,Month=1,Day=1’
          Ditto for Monday (note automatic compensation of nonexistent week number)
               ‘date(_,Year,Month,Day,1,week(60,2004))’
               ‘Year=2005,Month=2,Day=14’

__________________________________________________________________

1.26.1.5 ‘date/7’
.................

Ditto ‘date/6’ + get/check its day-of-year #.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘date(JD,Year,Month,Day,DoW,Week,DoY)’
               ‘JD’ - Julian day serial number
               ‘Year’ - 0 or negative if converted BC year, positive otherwise
               ‘Month’ - Normally an integer between 1 and 12 inclusive
               ‘Day’ - Normally an integer between 1 and 31 inclusive depending upon month
               ‘DoW’ - Day of week, where Monday=1, Tuesday=2, …, Sunday=7
               ‘Week’ - Compound term, ‘week(WeekNo,ActualYear)’, of a day
               ‘DoY’ - Day of year (NB! calendar year, not week # year)
     `Mode and number of proofs:'
          ‘date(?integer,?integer,?integer,?integer,?integer,?compound,?integer)’ - ‘zero_or_one’

     `Examples:'
          Get the date and day-of-year of a Julian number
               ‘date(2451649,Year,Month,Day,_,_,DoY)’
               ‘Year=2000,Month=4,Day=14,DoY=105’
          Get the Julian number, week number and day-of-year of a date, confirming that it is a Sunday
               ‘date(JD,2004,2,29,7,Week,DoY)’
               ‘JD=2453065,Week=week(9,2004),DoY=60’
          Confirm that a date is, in fact, a specific day-of-year
               ‘date(_,2004,3,1,_,_,61)’
               ‘yes’
          Get the Julian number, week day and day-of-year of a date
               ‘date(JD,2004,10,18,DoW,_,DoY)’
               ‘JD=2453297,DoW=1,DoY=292’
          Get today’s day-of-year
               ‘date(_,_,_,_,_,_,DoY)’
               ‘DoY=54’
          Get all missing date data (excl. Julian number) for the 60th calendar day of 2004
               ‘date(_,2004,Month,Day,DoW,Week,60)’
               ‘Month=2,Day=29,DoW=7,Week=week(9,2004)’
          Match given date data and, if true, return the missing data (excl. Julian number)
               ‘date(_,2004,3,Day,DoW,Week,61)’
               ‘Day=1,DoW=1,Week=week(10,2004)’
          Ditto (the 61st day-of-year cannot be both day 1 and 2 of the month)
               ‘date(_,2004,_,2,_,_,61)’
               ‘no’

__________________________________________________________________

1.26.1.6 ‘date_string/3’
........................

Conversion between an ISO 8601 compliant date string and its components
(truncated and expanded date representations are currently unsupported).
Note that date components are not validated; that is the caller’s
responsibility!

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘date_string(Format,Components,String)’
               ‘Format’ - ISO 8601 format
               ‘Components’ - When bound and String is free, either a Julian number or a ‘[Year,Month,Day]’ term; it binds to the system day/date if free When free and String is bound, it binds to an integer list representing the numeric elements of String
               ‘String’ - ISO 8601 formatted string correspondent to Components
     `Mode and number of proofs:'
          ‘date_string(+atom,+integer,?atom)’ - ‘zero_or_one’
          ‘date_string(+atom,?list,?atom)’ - ‘zero_or_one’

     `Examples:'
          Date, complete, basic (section 5.2.1.1)
               ‘date_string('YYYYMMDD',[2004,2,29],String)’
               ‘String='20040229'’
          Date, complete, basic (section 5.2.1.1)
               ‘date_string('YYYYMMDD',Components,'20040229')’
               ‘Components=[2004,2,29]’
          Date, complete, extended (section 5.2.1.1)
               ‘date_string('YYYY-MM-DD',[2003,12,16],String)’
               ‘String='2003-12-16'’
          Date, complete, extended (section 5.2.1.1)
               ‘date_string('YYYY-MM-DD',Components,'2003-12-16')’
               ‘Components=[2003,12,16]’
          Date, complete, extended (section 5.2.1.1)
               ‘date_string('YYYY-MM-DD',_,String)’
               ‘String='2004-02-17'’
          Date, complete, extended (section 5.2.1.1)
               ‘date_string('YYYY-MM-DD',Components,'2004-02-17')’
               ‘Components=[2004,2,17]’
          Date, reduced, month (section 5.2.1.2 a)
               ‘date_string('YYYY-MM',[2004,9,18],String)’
               ‘String='2004-09'’
          Date, reduced, month (section 5.2.1.2 a)
               ‘date_string('YYYY-MM',Components,'2004-09')’
               ‘Components=[2004,9]’
          Date, reduced, year (section 5.2.1.2 b)
               ‘date_string('YYYY',[1900,7,24],String)’
               ‘String='1900'’
          Date, reduced, year (section 5.2.1.2 b)
               ‘date_string('YYYY',Components,'1900')’
               ‘Components=[1900]’
          Date, reduced, century (section 5.2.1.2 c)
               ‘date_string('YY',2456557,String)’
               ‘String='20'’
          Date, reduced, century (section 5.2.1.2 c)
               ‘date_string('YY',Components,'20')’
               ‘Components=[20]’
          Date, ordinal, complete (section 5.2.2.1)
               ‘date_string('YYYYDDD',[2005,3,25],String)’
               ‘String='2005084'’
          Date, ordinal, complete (section 5.2.2.1)
               ‘date_string('YYYYDDD',Components,'2005084')’
               ‘Components=[2005,84]’
          Date, ordinal, extended (section 5.2.2.1)
               ‘date_string('YYYY-DDD',[1854,12,4],String)’
               ‘String='1854-338'’
          Date, ordinal, extended (section 5.2.2.1)
               ‘date_string('YYYY-DDD',Components,'1854-338')’
               ‘Components=[1854,338]’
          Week, complete, basic (section 5.2.3.1)
               ‘date_string('YYYYWwwD',[2000,1,2],String)’
               ‘String='1999W527'’
          Week, complete, basic (section 5.2.3.1)
               ‘date_string('YYYYWwwD',Components,'1999W527')’
               ‘Components=[1999,52,7]’
          Week, complete, extended (section 5.2.3.1)
               ‘date_string('YYYY-Www-D',[2003,12,29],String)’
               ‘String='2004-W01-1'’
          Week, complete, extended (section 5.2.3.1)
               ‘date_string('YYYY-Www-D',Components,'2004-W01-1')’
               ‘Components=[2004,1,1]’
          Week, complete, extended (section 5.2.3.1)
               ‘date_string('YYYY-Www-D',2453167,String)’
               ‘String='2004-W24-4'’
          Week, complete, extended (section 5.2.3.1)
               ‘date_string('YYYY-Www-D',Components,'2004-W24-4')’
               ‘Components=[2004,24,4]’
          Week, reduced, basic (section 5.2.3.2)
               ‘date_string('YYYYWww',[2004,2,29],String)’
               ‘String='2004W09'’
          Week, reduced, basic (section 5.2.3.2)
               ‘date_string('YYYYWww',Components,'2004W09')’
               ‘Components=[2004,9]’
          Week, reduced, extended (section 5.2.3.2)
               ‘date_string('YYYY-Www',[2004,2,29],String)’
               ‘String='2004-W09'’
          Week, reduced, extended (section 5.2.3.2)
               ‘date_string('YYYY-Www',Components,'2004-W09')’
               ‘Components=[2004,9]’

__________________________________________________________________

1.26.1.7 ‘valid_date/3’
.......................

Validate a given date in the Gregorian calendar.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘valid_date(Year,Month,Day)’
     `Mode and number of proofs:'
          ‘valid_date(+integer,+integer,+integer)’ - ‘zero_or_one’

     `Examples:'
          Yes, the recent millennium was a leap year
               ‘valid_date(2000,2,29)’
               ‘yes’
          2004 was also a leap year
               ‘valid_date(2004,2,29)’
               ‘yes’
          Only 30 days in April
               ‘valid_date(2004,4,31)’
               ‘no’
          1 BC was a leap year
               ‘valid_date(-1,2,29)’
               ‘yes’

__________________________________________________________________

1.26.1.8 ‘leap_year/1’
......................

Succeed if given year is a leap year in the Gregorian calendar.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘leap_year(Year)’
               ‘Year’ - The Gregorian calendar year to investigate. If free, it binds to the system year
     `Mode and number of proofs:'
          ‘leap_year(?integer)’ - ‘zero_or_one’

     `Examples:'
          No, the prior centenary was not a leap year
               ‘leap_year(1900)’
               ‘no’
          The recent millennium
               ‘leap_year(2000)’
               ‘yes’
          This year
               ‘leap_year(Year)’
               ‘Year=2004’
          This year (equivalent to prior query)
               ‘leap_year(_)’
               ‘yes’
          Next centennial
               ‘leap_year(2100)’
               ‘no’
          Year 0, equivalent to 1 BC
               ‘leap_year(0)’
               ‘yes’
          1 BC
               ‘leap_year(-1)’
               ‘yes’
          4 BC
               ‘leap_year(-4)’
               ‘no’
          5 BC
               ‘leap_year(-5)’
               ‘yes’

__________________________________________________________________

1.26.1.9 ‘calendar_month/3’
...........................

Compute a calendar month.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘calendar_month(Year,Month,Calendar)’
               ‘Year’ - The calendar year
               ‘Month’ - The calendar month
               ‘Calendar’ - A compound term, ‘m/3’, composed of three main arguments specifying year, month, and a list of week and week day numbers (calendar body).
     `Mode and number of proofs:'
          ‘calendar_month(?integer,?integer,-compound)’ - ‘zero_or_one’

     `Examples:'
          Compute the calendar of March, 2005
               ‘calendar_month(2005,3,Calendar)’
               ‘Calendar=m(2005,3,[w(9,[0,1,2,3,4,5,6]),w(10,[7,8,9,10,11,12,13]),w(11,[14,15,16,17,18,19,20]),w(12,[21,22,23,24,25,26,27]),w(13,[28,29,30,31,0,0,0]),w(0,[0,0,0,0,0,0,0])])’

__________________________________________________________________

1.26.1.10 ‘easter_day/3’
........................

Compute a Gregorian Easter Sunday.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘easter_day(Year,Month,Day)’
               ‘Year’ - Integer specifying the year to be investigated
               ‘Month’ - Month in which Easter Sunday falls for given year
               ‘Day’ - Day of month in which Easter Sunday falls for given year
     `Mode and number of proofs:'
          ‘easter_day(?integer,-integer,-integer)’ - ‘zero_or_one’

     `Examples:'
          Compute Easter Sunday for a particular year
               ‘easter_day(2006,Month,Day)’
               ‘Month=4,Day=16’
          Compute Easter Sunday for the current year
               ‘easter_day(Year,Month,Day)’
               ‘Year=2005,Month=3,Day=27’

__________________________________________________________________

1.26.1.11 Protected predicates
..............................

(see entity ancestors)

1.26.1.12 Private predicates
............................

(see entity ancestors)

1.26.1.13 Operators
...................

(none)

1.27 ‘java’
===========

`object'

1.27.1 ‘java’
-------------

Abstract interface to JPL API utility predicates.

     `Author:' Paulo Moura
     `Version:' 1.6
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ java_utils_protocol.
     `Uses:'
          See user.

     `Remarks:'
          (none)

1.27.1.1 Public predicates
..........................

(see entity ancestors)

1.27.1.2 Protected predicates
.............................

(see entity ancestors)

1.27.1.3 Private predicates
...........................

(see entity ancestors)

1.27.1.4 Operators
..................

(none)

See also
........

See java(Reference,ReturnValue), java(Reference),
java_hook.

`object'

1.27.2 ‘java(Reference)’
------------------------

   * ‘Reference’ - Either a class name or a Java reference to an object

Minimal abstraction of the JPL API for calling Java from Logtalk using
familiar message sending syntax and a ‘forward/1’ handler to resolve
methods.

     `Author:' Paulo Moura and Sergio Castro
     `Version:' 1.01
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ java(Reference,_).

     `Remarks:'

        - `Usage:' Send to this object any valid message as listed in
          the JavaDocs for the given reference.

1.27.2.1 Public predicates
..........................

(see entity ancestors)

1.27.2.2 Protected predicates
.............................

(see entity ancestors)

1.27.2.3 Private predicates
...........................

(see entity ancestors)

1.27.2.4 Operators
..................

(none)

See also
........

See java(Reference,ReturnValue), java,
java_hook.

`object'

1.27.3 ‘java(Reference,ReturnValue)’
------------------------------------

   * ‘Reference’ - Either a class name or a Java reference to an object

   * ‘ReturnValue’ - Value returned by a method call (possibly the Java
     value void)

Minimal abstraction of the JPL API for calling Java from Logtalk using
familiar message sending syntax and a ‘forward/1’ handler to resolve
methods.

     `Author:' Paulo Moura and Sergio Castro
     `Version:' 1.3
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ forwarding.
          ‘public’ java_access_protocol.

     `Remarks:'

        - `Usage:' Send to this object any valid message as listed in
          the JavaDocs for the given reference.

1.27.3.1 Public predicates
..........................

(see entity ancestors)

1.27.3.2 Protected predicates
.............................

(see entity ancestors)

1.27.3.3 Private predicates
...........................

(see entity ancestors)

1.27.3.4 Operators
..................

(none)

See also
........

See java(Reference), java, java_hook.

`protocol'

1.27.4 ‘java_access_protocol’
-----------------------------

Protocol for a minimal abstraction for calling Java from Logtalk using
familiar message sending syntax.

     `Author:' Paulo Moura and Sergio Castro
     `Version:' 1.1
     `Date:' 2018/5/23

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.27.4.1 Public predicates
..........................

1.27.4.2 ‘get_field/2’
......................

Gets the value of a class or object field.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘get_field(Field,Value)’
     `Mode and number of proofs:'
          ‘get_field(+atom,?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.27.4.3 ‘set_field/2’
......................

Sets the value of a class or object field.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_field(Field,Value)’
     `Mode and number of proofs:'
          ‘set_field(+atom,+nonvar)’ - ‘one’

__________________________________________________________________

1.27.4.4 ‘new/2’
................

Creates a new instance using the specified parameter values.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘new(Parameters,Instance)’
     `Mode and number of proofs:'
          ‘new(+list(nonvar),-reference)’ - ‘one’

__________________________________________________________________

1.27.4.5 ‘new/1’
................

Creates a new instance using default parameter values.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘new(Instance)’
     `Mode and number of proofs:'
          ‘new(-reference)’ - ‘one’

__________________________________________________________________

1.27.4.6 ‘invoke/1’
...................

Invokes a method.  This is a more efficient compared with relying on the
forward/1 handler to resolve methods.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘invoke(Method)’
     `Mode and number of proofs:'
          ‘invoke(@nonvar)’ - ‘one’

__________________________________________________________________

1.27.4.7 ‘invoke/2’
...................

Invokes a method.  This is a more efficient compared with relying on the
forward/1 handler to resolve methods.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘invoke(Functor,Arguments)’
     `Mode and number of proofs:'
          ‘invoke(@nonvar,@list)’ - ‘one’

__________________________________________________________________

1.27.4.8 Protected predicates
.............................

(none)

1.27.4.9 Private predicates
...........................

(none)

1.27.4.10 Operators
...................

(none)

`object'

1.27.5 ‘java_hook’
------------------

Hook object to optimize messages to the ‘java/1-2’ objects that
otherwise would trigger the ‘forward/1’ handler.

     `Author:' Paulo Moura
     `Version:' 1.01
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.

     `Remarks:'

        - `Usage:' Compile source files with messages to the ‘java/1-2’
          objects using the compiler option ‘hook(java_hook)’.

1.27.5.1 Public predicates
..........................

(see entity ancestors)

1.27.5.2 Protected predicates
.............................

(see entity ancestors)

1.27.5.3 Private predicates
...........................

(see entity ancestors)

1.27.5.4 Operators
..................

(none)

See also
........

See java(Reference,ReturnValue), java(Reference).

`protocol'

1.27.6 ‘java_utils_protocol’
----------------------------

Abstract interface to Java utility predicates.

     `Author:' Paulo Moura
     `Version:' 1.5
     `Date:' 2017/10/16

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.27.6.1 Public predicates
..........................

1.27.6.2 ‘value_reference/2’
............................

Returns an opaque term that represents the Java value with the given
name.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘value_reference(Value,Reference)’
     `Mode and number of proofs:'
          ‘value_reference(?atom,--ground)’ - ‘one_or_more’

__________________________________________________________________

1.27.6.3 ‘true/1’
.................

Returns an opaque term that represents the Java value true.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘true(Reference)’
     `Mode and number of proofs:'
          ‘true(--ground)’ - ‘one’

__________________________________________________________________

1.27.6.4 ‘false/1’
..................

Returns an opaque term that represents the Java value false.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘false(Reference)’
     `Mode and number of proofs:'
          ‘false(--ground)’ - ‘one’

__________________________________________________________________

1.27.6.5 ‘void/1’
.................

Returns an opaque term that represents the Java value void.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘void(Reference)’
     `Mode and number of proofs:'
          ‘void(--ground)’ - ‘one’

__________________________________________________________________

1.27.6.6 ‘null/1’
.................

Returns an opaque term that represents the Java value null.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘null(Reference)’
     `Mode and number of proofs:'
          ‘null(--ground)’ - ‘one’

__________________________________________________________________

1.27.6.7 ‘is_true/1’
....................

True when the argument is the Java value true.  Fails if the argument is
not instantiated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_true(Reference)’
     `Mode and number of proofs:'
          ‘is_true(@term)’ - ‘zero_or_one’

__________________________________________________________________

1.27.6.8 ‘is_false/1’
.....................

True when the argument is the Java value false.  Fails if the argument
is not instantiated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_false(Reference)’
     `Mode and number of proofs:'
          ‘is_false(@term)’ - ‘zero_or_one’

__________________________________________________________________

1.27.6.9 ‘is_void/1’
....................

True when the argument is the Java value void.  Fails if the argument is
not instantiated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_void(Reference)’
     `Mode and number of proofs:'
          ‘is_void(@term)’ - ‘zero_or_one’

__________________________________________________________________

1.27.6.10 ‘is_null/1’
.....................

True when the argument is the Java value null.  Fails if the argument is
not instantiated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_null(Reference)’
     `Mode and number of proofs:'
          ‘is_null(@term)’ - ‘zero_or_one’

__________________________________________________________________

1.27.6.11 ‘is_object/1’
.......................

True when the argument is a reference to a Java object.  Fails if the
argument is not instantiated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_object(Reference)’
     `Mode and number of proofs:'
          ‘is_object(@term)’ - ‘zero_or_one’

__________________________________________________________________

1.27.6.12 ‘terms_to_array/2’
............................

Converts a list of ground Prolog terms to an array (a Java reference).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘terms_to_array(Terms,Array)’
     `Mode and number of proofs:'
          ‘terms_to_array(++list(ground),-array)’ - ‘one’

__________________________________________________________________

1.27.6.13 ‘array_to_terms/3’
............................

Converts an array (a Java reference) to a list of ground Prolog terms
returning also its length.  The array elements must be atoms, integers,
floats, or compound terms.  Fails otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘array_to_terms(Array,Terms,Length)’
     `Mode and number of proofs:'
          ‘array_to_terms(+array,-list(ground),-integer)’ - ‘one’

__________________________________________________________________

1.27.6.14 ‘array_to_terms/2’
............................

Converts an array (a Java reference) to a list of ground Prolog terms.
The array elements must be atoms, integers, floats, or ground compound
terms.  Fails otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘array_to_terms(Array,Terms)’
     `Mode and number of proofs:'
          ‘array_to_terms(+array,-list(term))’ - ‘one’

__________________________________________________________________

1.27.6.15 ‘array_list/2’
........................

Converts between an array (a Java reference) and a list.  Deprecated.
Use the terms_to_array/2 and array_to_terms/2-3 instead in new code.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘array_list(Array,List)’
     `Mode and number of proofs:'
          ‘array_list(+array,-list)’ - ‘one’
          ‘array_list(-array,+list)’ - ‘one’

__________________________________________________________________

1.27.6.16 ‘iterator_element/2’
..............................

Enumerates, by backtracking, all iterator elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘iterator_element(Iterator,Element)’
     `Mode and number of proofs:'
          ‘iterator_element(+iterator,-element)’ - ‘zero_or_more’

__________________________________________________________________

1.27.6.17 ‘decode_exception/2’
..............................

Decodes an exception into its corresponding cause.  Fails if the
exception is not a Java exception.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘decode_exception(Exception,Cause)’
     `Mode and number of proofs:'
          ‘decode_exception(+callable,-atom)’ - ‘zero_or_one’

__________________________________________________________________

1.27.6.18 ‘decode_exception/3’
..............................

Decodes an exception into its corresponding cause and a stack trace.
Fails if the exception is not a Java exception.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘decode_exception(Exception,Cause,StackTrace)’
     `Mode and number of proofs:'
          ‘decode_exception(+callable,-atom,-list(atom))’ - ‘zero_or_one’

__________________________________________________________________

1.27.6.19 Protected predicates
..............................

(none)

1.27.6.20 Private predicates
............................

(none)

1.27.6.21 Operators
...................

(none)

1.28 ‘lgtdoc’
=============

`object'

1.28.1 ‘lgtdoc’
---------------

Documenting tool.  Generates XML documenting files for loaded entities
and for library, directory, entity, and predicate indexes.

     `Author:' Paulo Moura
     `Version:' 4.17
     `Date:' 2019/6/16

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ lgtdocp.
     `Uses:'
          See logtalk.
          os.

     `Remarks:'
          (none)

1.28.1.1 Public predicates
..........................

(see entity ancestors)

1.28.1.2 Protected predicates
.............................

(see entity ancestors)

1.28.1.3 Private predicates
...........................

1.28.1.4 ‘option_/2’
....................

Table of option values.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘option_(Option,Value)’
     `Mode and number of proofs:'
          ‘option_(?atom,?nonvar)’ - ‘zero_or_more’

__________________________________________________________________

1.28.1.5 ‘library_entity_/4’
............................

Table of documented entities per library.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘library_entity_(Library,PrimarySortKey,SecondarySortKey,Entity)’
     `Mode and number of proofs:'
          ‘library_entity_(?atom,?nonvar,?nonvar,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.28.1.6 ‘directory_entity_/4’
..............................

Table of documented entities per directory.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘directory_entity_(Directory,PrimarySortKey,SecondarySortKey,Entity)’
     `Mode and number of proofs:'
          ‘directory_entity_(?atom,?nonvar,?nonvar,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.28.1.7 ‘type_entity_/4’
.........................

Table of documented entities per type.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘type_entity_(Type,PrimarySortKey,SecondarySortKey,Entity)’
     `Mode and number of proofs:'
          ‘type_entity_(?atom,?nonvar,?nonvar,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.28.1.8 ‘predicate_entity_/4’
..............................

Table of public predicates for all documented entities.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘predicate_entity_(Predicate,PrimarySortKey,SecondarySortKey,Entity)’
     `Mode and number of proofs:'
          ‘predicate_entity_(?predicate_indicator,?nonvar,?nonvar,?entity_identifier)’ - ‘zero_or_more’

__________________________________________________________________

1.28.1.9 Operators
..................

(none)

`protocol'

1.28.2 ‘lgtdocp’
----------------

Documenting tool protocol.

     `Author:' Paulo Moura
     `Version:' 3.2
     `Date:' 2017/11/4

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'

        - `Compiling files for generating XML documentation:' All source
          files must be compiled with the ‘source_data’ flag turned on.

        - `xml_spec(Specification) option:' XML documenting files
          specification format.  Possible option values are ‘dtd’ (DTD
          specification; default) and ‘xsd’ (XML Schema specification).

        - `xml_spec_reference(Reference) option:' Reference to the XML
          specification file in XML documenting files.  Possible values
          are ‘local’ (default; DTD/XSD file in same folder as XML
          files), ‘web’ (logtalk.org website DTD/XSD file), and
          ‘standalone’ (no reference to specification files).

        - `entity_xsl_file(File) option:' XSLT file to use with
          generated XML documenting files.  Default is
          ‘logtalk_entity_to_xml.xsl’, allowing the XML files to be
          viewed by opening them with a browser supporting XSLT (after
          running the ‘lgt2xml.sh’ script on the output directory).

        - `index_xsl_file(File) option:' XSLT file to use with generated
          XML documenting files.  Default is ‘logtalk_index_to_xml.xsl’,
          allowing the XML files to be viewed by opening them with a
          browser supporting XSLT (after running the ‘lgt2xml.sh’ script
          on the output directory).

        - `xml_docs_directory(Directory) option:' Directory where the
          XML documenting files will be generated.  The default value is
          ‘./xml_docs’, a sub-directory of the source files directory.

        - `bom(Boolean) option:' Defines if a BOM should be added to the
          generated XML documenting files.

        - `encoding(Encoding) option:' Encoding to be used for the
          generated XML documenting files.

        - `omit_path_prefixes(Prefixes) option:' List of path prefixes
          (atoms) to omit when writing directory paths.  The default
          value is to omit the home directory.

        - `exclude_files(List) option:' List of files to exclude when
          generating the XML documenting files.

        - `exclude_paths(List) option:' List of (relative) library paths
          to exclude when generating the XML documenting files.

        - `exclude_entities(List) option:' List of entities to exclude
          when generating the XML documenting files.

        - `Known issues:' The most appropriated options may depends on
          the XSL processor you intend to use.  Most XSL processors
          support DTDs but only some of them support XML Schemas.  Some
          processors are buggy an may not work with the default option
          values.

1.28.2.1 Public predicates
..........................

1.28.2.2 ‘rlibrary/2’
.....................

Creates XML documenting files for all entities in a library and its
sub-libraries using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rlibrary(Library,Options)’
     `Mode and number of proofs:'
          ‘rlibrary(+atom,+list)’ - ‘one’

     `Examples:'
          Generate XML documenting files for all tool entities for later conversion to Markdown files
               ‘rlibrary(tools,[xslfile('lgtmd.xsl')])’
               ‘yes’

__________________________________________________________________

1.28.2.3 ‘rlibrary/1’
.....................

Creates XML documenting files for all entities in a library and its
sub-libraries using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rlibrary(Library)’
     `Mode and number of proofs:'
          ‘rlibrary(+atom)’ - ‘one’

     `Examples:'
          Generate XML documenting files for all tool entities for direct viewing in a browser (after indexing using the ‘lgt2xml’ script)
               ‘rlibrary(tools)’
               ‘yes’

__________________________________________________________________

1.28.2.4 ‘library/2’
....................

Creates XML documenting files for all entities in a library using the
specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library(Library,Options)’
     `Mode and number of proofs:'
          ‘library(+atom,+list)’ - ‘one’

     `Examples:'
          Generate XML documenting files for all library entities for later conversion to PDF A4 files
               ‘library(library,[xslfile('logtalk_entity_to_pdf_a4.xsl')])’
               ‘yes’

__________________________________________________________________

1.28.2.5 ‘library/1’
....................

Creates XML documenting files for all entities in a library using
default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘library(Library)’
     `Mode and number of proofs:'
          ‘library(+atom)’ - ‘one’

__________________________________________________________________

1.28.2.6 ‘rdirectory/2’
.......................

Creates XML documenting files for all entities in a directory and its
sub-directories using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Directory,Options)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom,+list)’ - ‘one’

     `Examples:'
          Generate XML documenting files for all entities in the tools directory for later conversion to Markdown files
               ‘rdirectory('./tools',[xslfile('lgtmd.xsl')])’
               ‘yes’

__________________________________________________________________

1.28.2.7 ‘rdirectory/1’
.......................

Creates XML documenting files for all entities in a directory and its
sub-directories using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Directory)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom)’ - ‘one’

     `Examples:'
          Generate XML documenting files for all entities in the tools directory for direct viewing in a browser (after indexing using the ‘lgt2xml’ script)
               ‘rdirectory('./tools')’
               ‘yes’

__________________________________________________________________

1.28.2.8 ‘directory/2’
......................

Creates XML documenting files for all entities in a directory using the
specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Directory,Options)’
     `Mode and number of proofs:'
          ‘directory(+atom,+list)’ - ‘one’

     `Examples:'
          Generate XML documenting files for all the entities in the current directory for later conversion to PDF A4 files
               ‘directory('.',[xslfile('logtalk_entity_to_pdf_a4.xsl')])’
               ‘yes’

__________________________________________________________________

1.28.2.9 ‘directory/1’
......................

Creates XML documenting files for all entities in a directory using
default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Directory)’
     `Mode and number of proofs:'
          ‘directory(+atom)’ - ‘one’

__________________________________________________________________

1.28.2.10 ‘file/2’
..................

Creates XML documenting files for all entities in a loaded source file
using the specified options.  The file can be given by name, basename,
full path, or using library notation.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file(File,Options)’
     `Mode and number of proofs:'
          ‘file(+atom,+list)’ - ‘one’

__________________________________________________________________

1.28.2.11 ‘file/1’
..................

Creates XML documenting files for all entities in a loaded source file
using default options.  The file can be given by name, basename, full
path, or using library notation.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file(File)’
     `Mode and number of proofs:'
          ‘file(+atom)’ - ‘one’

__________________________________________________________________

1.28.2.12 ‘all/1’
.................

Creates XML documenting files for all loaded entities using the
specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘all(File)’
     `Mode and number of proofs:'
          ‘all(+list)’ - ‘one’

__________________________________________________________________

1.28.2.13 ‘all/0’
.................

Creates XML documenting files for all loaded entities using default
options.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘all’ - ‘one’

__________________________________________________________________

1.28.2.14 ‘option/2’
....................

Returns, by backtracking, all options and their values.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘option(Option,Value)’
     `Mode and number of proofs:'
          ‘option(?atom,?nonvar)’ - ‘zero_or_more’

__________________________________________________________________

1.28.2.15 ‘set_option/2’
........................

Sets an option value.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_option(Option,Value)’
     `Mode and number of proofs:'
          ‘set_option(+atom,+nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.28.2.16 Protected predicates
..............................

(none)

1.28.2.17 Private predicates
............................

(none)

1.28.2.18 Operators
...................

(none)

See also
........

See lgtdoc.

1.29 ‘lgtunit’
==============

`object'

1.29.1 ‘coverage_report’
------------------------

Intercepts unit test execution messages and generates a
‘coverage_report.xml’ file with a test suite code coverage results.

     `Author:' Paulo Moura
     `Version:' 1.4
     `Date:' 2019/6/4

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;message_hook/4.
     `Uses:'
          See logtalk.

     `Remarks:'

        - `Usage:' Simply load this object before running your tests
          using the goal ‘logtalk_load(lgtunit(coverage_report))’.

1.29.1.1 Public predicates
..........................

(see entity ancestors)

1.29.1.2 Protected predicates
.............................

(see entity ancestors)

1.29.1.3 Private predicates
...........................

1.29.1.4 ‘timestamp_/6’
.......................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.29.1.5 Operators
..................

(none)

`object'

1.29.2 ‘lgtunit’
----------------

A unit test framework supporting predicate clause coverage, determinism
testing, input/output testing, property-based testing, and multiple test
dialects.

     `Author:' Paulo Moura
     `Version:' 7.12
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Provides:'
          See logtalk;;trace_event/2.
     `Uses:'
          See integer.
          list.
          logtalk.
          os.
          random.
          type.
          user.

     `Remarks:'

        - `Usage:' Define test objects as extensions of the ‘lgtunit’
          object and compile their source files using the compiler
          option ‘hook(lgtunit)’.

        - `Portability:' Deterministic unit tests are currently not
          available when using Lean Prolog or Quintus Prolog as backend
          compilers.

        - `Known issues:' Parameter variables cannot currently be used
          in the definition of test options.

1.29.2.1 Public predicates
..........................

1.29.2.2 ‘cover/1’
..................

Declares entities being tested for which code coverage information
should be collected.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘cover(Entity)’
     `Mode and number of proofs:'
          ‘cover(?entity_identifier)’ - ‘zero_or_more’

__________________________________________________________________

1.29.2.3 ‘run/0’
................

Runs the unit tests, writing the results to the current output stream.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘run’ - ‘one’

__________________________________________________________________

1.29.2.4 ‘run/1’
................

Runs a unit test or a list of unit tests, writing the results to the
current output stream.  Runs the global setup and cleanup steps when
defined, failing if either step fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘run(Tests)’
     `Mode and number of proofs:'
          ‘run(+atom)’ - ‘zero_or_one’
          ‘run(+list(atom))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.5 ‘run/2’
................

Runs the unit tests, writing the results to the specified file.  Mode
can be either ‘write’ (to create a new file) or ‘append’ (to add results
to an existing file).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘run(File,Mode)’
     `Mode and number of proofs:'
          ‘run(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.29.2.6 ‘run_test_sets/1’
..........................

Runs two or more test sets as a unified set generating a single code
coverage report if one is requested.  Fails if the list does not
contains at least two test objects.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘run_test_sets(TestObjects)’
     `Mode and number of proofs:'
          ‘run_test_sets(+list(object_identifier))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.7 ‘deterministic/1’
..........................

True if the goal succeeds once without leaving choice-points.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘deterministic(Goal)’
     `Meta-predicate template:'
          ‘deterministic(0)’
     `Mode and number of proofs:'
          ‘deterministic(+callable)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.8 ‘deterministic/2’
..........................

Reified version of the ‘deterministic/1’ predicate.  True if the goal
succeeds.  Returns a boolean value (‘true’ or ‘false’) indicating if the
goal succeeded without leaving choice-points.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘deterministic(Goal,Deterministic)’
     `Meta-predicate template:'
          ‘deterministic(0,*)’
     `Mode and number of proofs:'
          ‘deterministic(+callable,--atom)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.9 ‘assertion/1’
......................

True if the assertion goal succeeds.  Throws an error using the
assertion goal as argument if the assertion goal throws an error or
fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘assertion(Assertion)’
     `Meta-predicate template:'
          ‘assertion(::)’
     `Mode and number of proofs:'
          ‘assertion(+callable)’ - ‘one’

     `Exceptions:'
          Assertion goal fails:
               ‘assertion_failure(Assertion)’
          Assertion goal throws Error:
               ‘assertion_error(Assertion,Error)’

__________________________________________________________________

1.29.2.10 ‘assertion/2’
.......................

True if the assertion goal succeeds.  Throws an error using the
description as argument if the assertion goal throws an error or fails.
The description argument helps to distinguish between different
assertions in the same test body.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘assertion(Description,Assertion)’
     `Meta-predicate template:'
          ‘assertion(*,0)’
     `Mode and number of proofs:'
          ‘assertion(+nonvar,+callable)’ - ‘one’

     `Exceptions:'
          Assertion goal fails:
               ‘assertion_failure(Description)’
          Assertion goal throws Error:
               ‘assertion_error(Description,Error)’

__________________________________________________________________

1.29.2.11 ‘quick_check/3’
.........................

Reified version of the quick_check/2 predicate.  Reports the result as
‘passed’, ‘failed(Goal)’ where ‘Goal’ is the test that failed, or
‘error(Error,Template)’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘quick_check(Template,Result,Options)’
     `Mode and number of proofs:'
          ‘quick_check(@callable,-callable,++list(compound))’ - ‘one’

__________________________________________________________________

1.29.2.12 ‘quick_check/2’
.........................

Generates and runs random tests for a given predicate given its mode
template.  Fails when a random generated test fails printing the test.
Accepts an option ‘n(NumberOfTests)’.  Default is to run 100 random
tests.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘quick_check(Template,Options)’
     `Mode and number of proofs:'
          ‘quick_check(@callable,++list(compound))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.13 ‘quick_check/1’
.........................

Generates and runs 100 random tests for a given predicate given its mode
template.  Fails when a random generated call fails printing the test.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘quick_check(Template)’
     `Mode and number of proofs:'
          ‘quick_check(@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.14 ‘benchmark/2’
.......................

Benchmarks a goal and returns the total execution time in seconds.  Uses
cpu clock.  Goals that may throw an exception should be wrapped by the
‘catch/3’ control construct.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘benchmark(Goal,Time)’
     `Meta-predicate template:'
          ‘benchmark(0,*)’
     `Mode and number of proofs:'
          ‘benchmark(+callable,-float)’ - ‘one’

__________________________________________________________________

1.29.2.15 ‘benchmark_reified/3’
...............................

Benchmarks a goal and returns the total execution time in seconds plus
its result (‘success’, ‘failure’, or ‘error(Error))’.  Uses CPU clock.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘benchmark_reified(Goal,Time,Result)’
     `Meta-predicate template:'
          ‘benchmark_reified(0,*,*)’
     `Mode and number of proofs:'
          ‘benchmark_reified(+callable,-float,-callable)’ - ‘one’

__________________________________________________________________

1.29.2.16 ‘benchmark/3’
.......................

Benchmarks a goal by repeating it the specified number of times and
returning the total execution time in seconds.  Uses CPU clock.  Goals
that may throw an exception should be wrapped by the ‘catch/3’ control
construct.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘benchmark(Goal,Repetitions,Time)’
     `Meta-predicate template:'
          ‘benchmark(0,*,*)’
     `Mode and number of proofs:'
          ‘benchmark(@callable,+positive_integer,-float)’ - ‘one’

__________________________________________________________________

1.29.2.17 ‘benchmark/4’
.......................

Benchmarks a goal by repeating it the specified number of times and
returning the total execution time in seconds using the given clock
(‘cpu’ or ‘wall’).  Goals that may throw an exception should be wrapped
by the ‘catch/3’ control construct.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘benchmark(Goal,Repetitions,Clock,Time)’
     `Meta-predicate template:'
          ‘benchmark(0,*,*,*)’
     `Mode and number of proofs:'
          ‘benchmark(@callable,+positive_integer,+atom,-float)’ - ‘one’

__________________________________________________________________

1.29.2.18 ‘variant/2’
.....................

True when the two arguments are a variant of each other.  I.e.  if is
possible to rename the term variables to make them identical.  Useful
for checking expected test results that contain variables.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘variant(Term1,Term2)’
     `Mode and number of proofs:'
          ‘variant(@term,@term)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.19 ‘approximately_equal/3’
.................................

Compares two numbers for approximate equality given an epsilon value
using the de facto standard formula ‘abs(Number1 - Number2) =<
max(abs(Number1), abs(Number2)) * Epsilon’.  Type-checked.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘approximately_equal(Number1,Number2,Epsilon)’
     `Mode and number of proofs:'
          ‘approximately_equal(+number,+number,+number)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.20 ‘essentially_equal/3’
...............................

Compares two numbers for essential equality given an epsilon value using
the de facto standard formula ‘abs(Number1 - Number2) =<
min(abs(Number1), abs(Number2)) * Epsilon’.  Type-checked.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘essentially_equal(Number1,Number2,Epsilon)’
     `Mode and number of proofs:'
          ‘essentially_equal(+number,+number,+number)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.21 ‘tolerance_equal/4’
.............................

Compares two numbers for close equality given relative and absolute
tolerances using the de facto standard formula ‘abs(Number1 - Number2)
=< max(RelativeTolerance * max(abs(Number1), abs(Number2)),
AbsoluteTolerance)’.  Type-checked.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘tolerance_equal(Number1,Number2,RelativeTolerance,AbsoluteTolerance)’
     `Mode and number of proofs:'
          ‘tolerance_equal(+number,+number,+number,+number)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.22 ‘=~= / 2’
...................

Compares two numbers (or lists of numbers) for approximate equality
using ‘100*epsilon’ for the absolute error and, if that fails, ‘99.999%’
accuracy for the relative error.  But these precision values may not be
adequate for all cases.  Type-checked.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘=~=(Number1,Number2)’
     `Mode and number of proofs:'
          ‘=~=(+number,+number)’ - ‘zero_or_one’
          ‘=~=(+list(number),+list(number))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.23 ‘epsilon/1’
.....................

Returns the value of epsilon used in the definition of the ‘(=~=)/2’
predicate.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘epsilon(Epsilon)’
     `Mode and number of proofs:'
          ‘epsilon(-float)’ - ‘one’

__________________________________________________________________

1.29.2.24 Protected predicates
..............................

1.29.2.25 ‘run_tests/0’
.......................

Runs all defined unit tests.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘run_tests’ - ‘one’

__________________________________________________________________

1.29.2.26 ‘run_tests/2’
.......................

Runs a list of defined tests.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘run_tests(Tests,File)’
     `Mode and number of proofs:'
          ‘run_tests(+list(callable),+atom)’ - ‘one’

__________________________________________________________________

1.29.2.27 ‘run_test_set/0’
..........................

Runs a test set as part of running two or more test sets as a unified
set.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘run_test_set’ - ‘one’

__________________________________________________________________

1.29.2.28 ‘run_quick_check_tests/2’
...................................

Runs a list of defined tests using the given options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘run_quick_check_tests(Template,Options)’
     `Mode and number of proofs:'
          ‘run_quick_check_tests(@callable,+list)’ - ‘one_or_error’

__________________________________________________________________

1.29.2.29 ‘condition/0’
.......................

Verifies conditions for running the tests.  Defaults to the goal ‘true’.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘condition’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.30 ‘setup/0’
...................

Setup environment before running the test set.  Defaults to the goal
‘true’.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘setup’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.31 ‘cleanup/0’
.....................

Cleanup environment after running the test set.  Defaults to the goal
‘true’.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘cleanup’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.32 ‘make/1’
..................

Make target for automatically running the test set when calling the
‘logtalk_make/1’ built-in predicate.  No default.  Possible values are
‘all’ and ‘check’.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘make(?atom)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.33 ‘note/1’
..................

Note to be printed after the test results.  Defaults to the empty atom.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘note(?atom)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.34 ‘suppress_text_output/0’
..................................

Suppresses text output.  Useful to avoid irrelevant text output from
predicates being tested to clutter the test logs.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘suppress_text_output’ - ‘one’

__________________________________________________________________

1.29.2.35 ‘suppress_binary_output/0’
....................................

Suppresses binary output.  Useful to avoid irrelevant binary output from
predicates being tested to clutter the test logs.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘suppress_binary_output’ - ‘one’

__________________________________________________________________

1.29.2.36 ‘set_text_input/3’
............................

Creates a temporary file with the given text contents and opens it for
reading referenced by the given alias and using the additional options.
If no ‘eof_action/1’ option is specified, its value will be the default
used by the backend compiler.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_text_input(Alias,Contents,Options)’
     `Mode and number of proofs:'
          ‘set_text_input(+atom,+atom,+list(stream_option))’ - ‘one’

__________________________________________________________________

1.29.2.37 ‘set_text_input/2’
............................

Creates a temporary file with the given text contents and opens it for
reading referenced by the given alias and using the default end-of-file
action for the used backend compiler.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_text_input(Alias,Contents)’
     `Mode and number of proofs:'
          ‘set_text_input(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.29.2.38 ‘set_text_input/1’
............................

Creates a temporary file with the given text contents, opens it for
reading using the default end-of-file action for the used backend
compiler, and sets the current input stream to the file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_text_input(Contents)’
     `Mode and number of proofs:'
          ‘set_text_input(+atom)’ - ‘one’

__________________________________________________________________

1.29.2.39 ‘check_text_input/2’
..............................

Checks that the temporary file (referenced with the given alias) being
written have the expected text contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_text_input(Alias,Contents)’
     `Mode and number of proofs:'
          ‘check_text_input(+atom,+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.40 ‘check_text_input/1’
..............................

Checks that the temporary file being written have the expected text
contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_text_input(Contents)’
     `Mode and number of proofs:'
          ‘check_text_input(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.41 ‘text_input_assertion/3’
..................................

Returns an assertion for checking that the temporary file (referenced
with the given alias) being written have the expected text contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘text_input_assertion(Alias,Contents,Assertion)’
     `Mode and number of proofs:'
          ‘text_input_assertion(+atom,+atom,--callable)’ - ‘one’

__________________________________________________________________

1.29.2.42 ‘text_input_assertion/2’
..................................

Returns an assertion for checking that the temporary file being written
have the expected text contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘text_input_assertion(Contents,Assertion)’
     `Mode and number of proofs:'
          ‘text_input_assertion(+atom,--callable)’ - ‘one’

__________________________________________________________________

1.29.2.43 ‘clean_text_input/0’
..............................

Cleans the temporary file used when testing text input.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘clean_text_input’ - ‘one’

__________________________________________________________________

1.29.2.44 ‘set_binary_input/3’
..............................

Creates a temporary file with the given binary contents and opens it for
reading referenced by the given alias and using the additional options.
If no ‘eof_action/1’ option is specified, its value will be the default
used by the backend compiler.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_binary_input(Alias,Bytes,Options)’
     `Mode and number of proofs:'
          ‘set_binary_input(+atom,+list(byte),+list(stream_option))’ - ‘one’

__________________________________________________________________

1.29.2.45 ‘set_binary_input/2’
..............................

Creates a temporary file with the given binary contents and opens it for
reading referenced by the given alias and using the default end-of-file
action for the used backend compiler.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_binary_input(Alias,Bytes)’
     `Mode and number of proofs:'
          ‘set_binary_input(+atom,+list(byte))’ - ‘one’

__________________________________________________________________

1.29.2.46 ‘set_binary_input/1’
..............................

Creates a temporary file with the given binary contents, opens it for
reading using the default end-of-file action for the used backend
compiler, and sets the current input stream to the file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_binary_input(Bytes)’
     `Mode and number of proofs:'
          ‘set_binary_input(+list(byte))’ - ‘one’

__________________________________________________________________

1.29.2.47 ‘check_binary_input/2’
................................

Checks that the temporary file (referenced with the given alias) have
the expected binary contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_binary_input(Alias,Bytes)’
     `Mode and number of proofs:'
          ‘check_binary_input(+atom,+list(byte))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.48 ‘check_binary_input/1’
................................

Checks that the temporary file have the expected binary contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_binary_input(Bytes)’
     `Mode and number of proofs:'
          ‘check_binary_input(+list(byte))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.49 ‘binary_input_assertion/3’
....................................

Returns an assertion for checking that the temporary file (referenced
with the given alias) have the expected binary contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘binary_input_assertion(Alias,Bytes,Assertion)’
     `Mode and number of proofs:'
          ‘binary_input_assertion(+atom,+list(byte),--callable)’ - ‘one’

__________________________________________________________________

1.29.2.50 ‘binary_input_assertion/2’
....................................

Returns an assertion for checking that the temporary file have the
expected binary contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘binary_input_assertion(Bytes,Assertion)’
     `Mode and number of proofs:'
          ‘binary_input_assertion(+list(byte),--callable)’ - ‘one’

__________________________________________________________________

1.29.2.51 ‘clean_binary_input/0’
................................

Cleans the temporary file used when testing binary input.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘clean_binary_input’ - ‘one’

__________________________________________________________________

1.29.2.52 ‘set_text_output/2’
.............................

Creates a temporary file with the given text contents and referenced
with the given alias.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_text_output(Alias,Contents)’
     `Mode and number of proofs:'
          ‘set_text_output(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.29.2.53 ‘set_text_output/1’
.............................

Creates a temporary file with the given text contents and sets the
current output stream to the file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_text_output(Contents)’
     `Mode and number of proofs:'
          ‘set_text_output(+atom)’ - ‘one’

__________________________________________________________________

1.29.2.54 ‘check_text_output/2’
...............................

Checks that the temporary file (referenced with the given alias) being
written have the expected text contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_text_output(Alias,Contents)’
     `Mode and number of proofs:'
          ‘check_text_output(+atom,+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.55 ‘check_text_output/1’
...............................

Checks that the temporary file being written have the expected text
contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_text_output(Contents)’
     `Mode and number of proofs:'
          ‘check_text_output(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.56 ‘text_output_assertion/3’
...................................

Returns an assertion for checking that the temporary file (referenced
with the given alias) being written have the expected text contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘text_output_assertion(Alias,Contents,Assertion)’
     `Mode and number of proofs:'
          ‘text_output_assertion(+atom,+atom,--callable)’ - ‘one’

__________________________________________________________________

1.29.2.57 ‘text_output_assertion/2’
...................................

Returns an assertion for checking that the temporary file being written
have the expected text contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘text_output_assertion(Contents,Assertion)’
     `Mode and number of proofs:'
          ‘text_output_assertion(+atom,--callable)’ - ‘one’

__________________________________________________________________

1.29.2.58 ‘clean_text_output/0’
...............................

Cleans the temporary file used when testing text output.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘clean_text_output’ - ‘one’

__________________________________________________________________

1.29.2.59 ‘set_binary_output/2’
...............................

Creates a temporary file with the given binary contents and referenced
with the given alias.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_binary_output(Alias,Bytes)’
     `Mode and number of proofs:'
          ‘set_binary_output(+atom,+list(byte))’ - ‘one’

__________________________________________________________________

1.29.2.60 ‘set_binary_output/1’
...............................

Creates a temporary file with the given binary contents and sets the
current output stream to the file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_binary_output(Bytes)’
     `Mode and number of proofs:'
          ‘set_binary_output(+list(byte))’ - ‘one’

__________________________________________________________________

1.29.2.61 ‘check_binary_output/2’
.................................

Checks that the temporary file (referenced with the given alias) have
the expected binary contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_binary_output(Alias,Bytes)’
     `Mode and number of proofs:'
          ‘check_binary_output(+atom,+list(byte))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.62 ‘check_binary_output/1’
.................................

Checks that the temporary file have the expected binary contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_binary_output(Bytes)’
     `Mode and number of proofs:'
          ‘check_binary_output(+list(byte))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.63 ‘binary_output_assertion/3’
.....................................

Returns an assertion for checking that the temporary file (referenced
with the given alias) have the expected binary contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘binary_output_assertion(Alias,Bytes,Assertion)’
     `Mode and number of proofs:'
          ‘binary_output_assertion(+atom,+list(byte),--callable)’ - ‘one’

__________________________________________________________________

1.29.2.64 ‘binary_output_assertion/2’
.....................................

Returns an assertion for checking that the temporary file have the
expected binary contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘binary_output_assertion(Bytes,Assertion)’
     `Mode and number of proofs:'
          ‘binary_output_assertion(+list(byte),--callable)’ - ‘one’

__________________________________________________________________

1.29.2.65 ‘clean_binary_output/0’
.................................

Cleans the temporary file used when testing binary output.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘clean_binary_output’ - ‘one’

__________________________________________________________________

1.29.2.66 ‘create_text_file/2’
..............................

Creates a text file with the given contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘create_text_file(File,Contents)’
     `Mode and number of proofs:'
          ‘create_text_file(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.29.2.67 ‘create_binary_file/2’
................................

Creates a binary file with the given contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘create_binary_file(File,Bytes)’
     `Mode and number of proofs:'
          ‘create_binary_file(+atom,+list(byte))’ - ‘one’

__________________________________________________________________

1.29.2.68 ‘check_text_file/2’
.............................

Checks that the contents of a text file match the expected contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_text_file(File,Contents)’
     `Mode and number of proofs:'
          ‘check_text_file(+atom,+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.69 ‘check_binary_file/2’
...............................

Checks the contents of a binary file match the expected contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check_binary_file(File,Bytes)’
     `Mode and number of proofs:'
          ‘check_binary_file(+atom,+list(byte))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.70 ‘clean_file/1’
........................

Closes any existing stream associated with the file and deletes the file
if it exists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘clean_file(File)’
     `Mode and number of proofs:'
          ‘clean_file(+atom)’ - ‘one’

__________________________________________________________________

1.29.2.71 ‘closed_input_stream/2’
.................................

Opens a temporary file with the given options for reading, closes it,
and returns its stream handle.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘closed_input_stream(Stream,Options)’
     `Mode and number of proofs:'
          ‘closed_input_stream(-stream,+list(stream_option))’ - ‘one’

__________________________________________________________________

1.29.2.72 ‘closed_output_stream/2’
..................................

Opens a temporary file with the given options for writing, closes it,
and returns its stream handle.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘closed_output_stream(Stream,Options)’
     `Mode and number of proofs:'
          ‘closed_output_stream(-stream,+list(stream_option))’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.73 ‘stream_position/1’
.............................

Returns a syntactically valid stream position.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘stream_position(Position)’
     `Mode and number of proofs:'
          ‘stream_position(-stream_position)’ - ‘one’

__________________________________________________________________

1.29.2.74 Private predicates
............................

1.29.2.75 ‘running_test_sets_/0’
................................

Internal flag used when running two or more test sets as a unified set.

     `Compilation flags:'
          ‘dynamic’

     `Mode and number of proofs:'
          ‘running_test_sets_’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.76 ‘test/3’
..................

Specifies a unit test.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘test(Identifier,Variables,Outcome)’
     `Mode and number of proofs:'
          ‘test(?atom,?list(variable),?nonvar)’ - ‘zero_or_more’

__________________________________________________________________

1.29.2.77 ‘auxiliary_predicate_counter_/1’
..........................................

Counter for generating unique auxiliary predicate names.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘auxiliary_predicate_counter_(Counter)’
     `Mode and number of proofs:'
          ‘auxiliary_predicate_counter_(?integer)’ - ‘one_or_more’

__________________________________________________________________

1.29.2.78 ‘test_/2’
...................

Table of defined tests.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘test_(Identifier,Test)’
     `Mode and number of proofs:'
          ‘test_(?atom,?compound)’ - ‘zero_or_more’

__________________________________________________________________

1.29.2.79 ‘skipped_/1’
......................

Counter for skipped tests.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘skipped_(Counter)’
     `Mode and number of proofs:'
          ‘skipped_(?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.80 ‘passed_/1’
.....................

Counter for passed tests.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘passed_(Counter)’
     `Mode and number of proofs:'
          ‘passed_(?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.81 ‘failed_/1’
.....................

Counter for failed tests.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘failed_(Counter)’
     `Mode and number of proofs:'
          ‘failed_(?callable)’ - ‘zero_or_one’

__________________________________________________________________

1.29.2.82 ‘fired_/3’
....................

Fired clauses when running the unit tests.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘fired_(Entity,Predicate,Clause)’
     `Mode and number of proofs:'
          ‘fired_(?entity_identifier,?predicate_indicator,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.29.2.83 ‘covered_/4’
......................

Auxiliary predicate for collecting statistics on clause coverage.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘covered_(Entity,Predicate,Covered,Total)’
     `Mode and number of proofs:'
          ‘covered_(?entity_identifier,?callable,?integer,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.29.2.84 Operators
...................

1.29.2.85 ‘op(700,xfx,=~=)’
...........................

     `Scope:'
          ‘public’

`category'

1.29.3 ‘lgtunit_messages’
-------------------------

Logtalk unit test framework default message translations.

     `Author:' Paulo Moura
     `Version:' 2.5
     `Date:' 2019/3/23

     `Compilation flags:'
          ‘static’

     `Provides:'
          See logtalk;;message_prefix_stream/4.
          logtalk;;message_tokens//2.

     `Remarks:'
          (none)

1.29.3.1 Public predicates
..........................

(see entity ancestors)

1.29.3.2 Protected predicates
.............................

(see entity ancestors)

1.29.3.3 Private predicates
...........................

(see entity ancestors)

1.29.3.4 Operators
..................

(none)

`object'

1.29.4 ‘tap_output’
-------------------

Intercepts unit test execution messages and outputs a report using the
TAP format to the current output stream.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2019/6/4

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;message_hook/4.

     `Remarks:'

        - `Usage:' Simply load this object before running your tests
          using the goal ‘logtalk_load(lgtunit(tap_output))’.

1.29.4.1 Public predicates
..........................

(see entity ancestors)

1.29.4.2 Protected predicates
.............................

(see entity ancestors)

1.29.4.3 Private predicates
...........................

1.29.4.4 ‘generating_/0’
........................

Flag to detect report in progress when processing two or more test sets
as a unified set.

     `Compilation flags:'
          ‘dynamic’

     `Mode and number of proofs:'
          ‘generating_’ - ‘zero_or_one’

__________________________________________________________________

1.29.4.5 ‘partial_/1’
.....................

Cache of total of tests per test set.

     `Compilation flags:'
          ‘dynamic’

     `Mode and number of proofs:'
          ‘partial_(?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.29.4.6 Operators
..................

(none)

`object'

1.29.5 ‘tap_report’
-------------------

Intercepts unit test execution messages and generates a ‘tap_report.txt’
file using the TAP output format in the same directory as the tests
object file.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2019/6/4

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;message_hook/4.
     `Uses:'
          See logtalk.

     `Remarks:'

        - `Usage:' Simply load this object before running your tests
          using the goal ‘logtalk_load(lgtunit(tap_report))’.

1.29.5.1 Public predicates
..........................

(see entity ancestors)

1.29.5.2 Protected predicates
.............................

(see entity ancestors)

1.29.5.3 Private predicates
...........................

1.29.5.4 ‘partial_/1’
.....................

Cache of total of tests per test set.

     `Compilation flags:'
          ‘dynamic’

     `Mode and number of proofs:'
          ‘partial_(?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.29.5.5 Operators
..................

(none)

`object'

1.29.6 ‘xunit_output’
---------------------

Intercepts unit test execution messages and outputs a report using the
xUnit XML format to the current output stream.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2019/6/4

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;message_hook/4.
     `Uses:'
          See logtalk.

     `Remarks:'

        - `Usage:' Simply load this object before running your tests
          using the goal ‘logtalk_load(lgtunit(xunit_output))’.

1.29.6.1 Public predicates
..........................

(see entity ancestors)

1.29.6.2 Protected predicates
.............................

(see entity ancestors)

1.29.6.3 Private predicates
...........................

1.29.6.4 ‘message_cache_/1’
...........................

Table of messages emitted by the lgtunit tool when running tests.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘message_cache_(Message)’
     `Mode and number of proofs:'
          ‘message_cache_(?callable)’ - ‘zero_or_more’

__________________________________________________________________

1.29.6.5 Operators
..................

(none)

`object'

1.29.7 ‘xunit_report’
---------------------

Intercepts unit test execution messages and generates a
‘xunit_report.xml’ file using the xUnit XML format in the same directory
as the tests object file.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2019/6/4

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;message_hook/4.
     `Uses:'
          See logtalk.

     `Remarks:'

        - `Usage:' Simply load this object before running your tests
          using the goal ‘logtalk_load(lgtunit(xunit_report))’.

1.29.7.1 Public predicates
..........................

(see entity ancestors)

1.29.7.2 Protected predicates
.............................

(see entity ancestors)

1.29.7.3 Private predicates
...........................

1.29.7.4 ‘message_cache_/1’
...........................

Table of messages emitted by the lgtunit tool when running tests.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘message_cache_(Message)’
     `Mode and number of proofs:'
          ‘message_cache_(?callable)’ - ‘zero_or_more’

__________________________________________________________________

1.29.7.5 Operators
..................

(none)

1.30 ‘library’
==============

`protocol'

1.30.1 ‘cloning’
----------------

Object cloning protocol.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2010/9/14

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.30.1.1 Public predicates
..........................

1.30.1.2 ‘clone/1’
..................

Clones an object, returning the identifier of the new object if none is
given.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘clone(Clone)’
     `Mode and number of proofs:'
          ‘clone(?object)’ - ‘zero_or_one’

__________________________________________________________________

1.30.1.3 Protected predicates
.............................

(none)

1.30.1.4 Private predicates
...........................

(none)

1.30.1.5 Operators
..................

(none)

`category'

1.30.2 ‘counters’
-----------------

Named integer counters.  Counter names can be any nonvar term.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2011/1/3

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.30.2.1 Public predicates
..........................

1.30.2.2 ‘counter/2’
....................

True if ‘Counter’ is a counter with value ‘Value’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘counter(Counter,Value)’
     `Mode and number of proofs:'
          ‘counter(?nonvar,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.30.2.3 ‘increment_counter/1’
..............................

Increments the named counter.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘increment_counter(Counter)’
     `Mode and number of proofs:'
          ‘increment_counter(+nonvar)’ - ‘one’

__________________________________________________________________

1.30.2.4 ‘decrement_counter/1’
..............................

Decrements the named counter.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘decrement_counter(Counter)’
     `Mode and number of proofs:'
          ‘decrement_counter(+nonvar)’ - ‘one’

__________________________________________________________________

1.30.2.5 ‘reset_counter/1’
..........................

Resets the named counter to zero.  Creates the counter if it does not
exist.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘reset_counter(Counter)’
     `Mode and number of proofs:'
          ‘reset_counter(+nonvar)’ - ‘one’

__________________________________________________________________

1.30.2.6 ‘reset_counters/0’
...........................

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘reset_counters’ - ‘one’

__________________________________________________________________

1.30.2.7 Protected predicates
.............................

(none)

1.30.2.8 Private predicates
...........................

1.30.2.9 ‘counter_/2’
.....................

Table of named counters.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘counter_(Counter,Value)’
     `Mode and number of proofs:'
          ‘counter_(?nonvar,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.30.2.10 Operators
...................

(none)

`object'

1.30.3 ‘streamvars’
-------------------

Stream variables (supporting logical, backtracable, adding and
retrieving of terms).

     `Author:' Nobukuni Kino and Paulo Moura
     `Version:' 1.3
     `Date:' 2019/6/15

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.30.3.1 Public predicates
..........................

1.30.3.2 ‘new/1’
................

Makes ‘Variable’ a stream variable.  Initial state will be empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘new(Variable)’
     `Mode and number of proofs:'
          ‘new(--streamvar)’ - ‘one’

     `Exceptions:'
          Variable is not a variable:
               ‘type_error(variable,Variable)’

__________________________________________________________________

1.30.3.3 ‘new/2’
................

Makes ‘Variable’ a stream variable and sets its initial state to
‘Value’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘new(Variable,Value)’
     `Mode and number of proofs:'
          ‘new(--streamvar,@nonvar)’ - ‘one’

     `Exceptions:'
          Variable is not a variable:
               ‘type_error(variable,Variable)’

__________________________________________________________________

1.30.3.4 ‘(<=)/2’
.................

Sets the state of the stream variable ‘Variable’ to ‘Value’
(initializing the variable if needed).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Variable<=Value’
     `Mode and number of proofs:'
          ‘(?streamvar)<=(@nonvar)’ - ‘one’

__________________________________________________________________

1.30.3.5 ‘(=>)/2’
.................

Unifies ‘Value’ with the current state of the stream variable
‘Variable’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Variable=>Value’
     `Mode and number of proofs:'
          ‘(+streamvar)=>(?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.30.3.6 Protected predicates
.............................

(none)

1.30.3.7 Private predicates
...........................

(none)

1.30.3.8 Operators
..................

1.30.3.9 ‘op(100,xfx,<=)’
.........................

     `Scope:'
          ‘public’

1.30.3.10 ‘op(100,xfx,=>)’
..........................

     `Scope:'
          ‘public’

1.31 ‘logging’
==============

`object'

1.31.1 ‘logger’
---------------

Global logger object for logging events to files.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2011/1/6

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ loggingp.

     `Remarks:'
          (none)

1.31.1.1 Public predicates
..........................

(see entity ancestors)

1.31.1.2 Protected predicates
.............................

(see entity ancestors)

1.31.1.3 Private predicates
...........................

1.31.1.4 ‘log_file_/2’
......................

Table of log files.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘log_file_(Alias,File)’
     `Mode and number of proofs:'
          ‘log_file_(?atom,?nonvar)’ - ‘zero_or_more’

__________________________________________________________________

1.31.1.5 ‘logging_to_file_/2’
.............................

Table of logging file status for log files.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘logging_to_file_(Alias,Status)’
     `Mode and number of proofs:'
          ‘logging_to_file_(?atom,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.31.1.6 Operators
..................

(none)

`category'

1.31.2 ‘logging’
----------------

Logging events to files category.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2011/1/6

     `Compilation flags:'
          ‘static’

     `Implements:'
          ‘public’ loggingp.

     `Remarks:'
          (none)

1.31.2.1 Public predicates
..........................

(see entity ancestors)

1.31.2.2 Protected predicates
.............................

(see entity ancestors)

1.31.2.3 Private predicates
...........................

1.31.2.4 ‘log_file_/2’
......................

Table of log files.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘log_file_(Alias,File)’
     `Mode and number of proofs:'
          ‘log_file_(?atom,?nonvar)’ - ‘zero_or_more’

__________________________________________________________________

1.31.2.5 ‘logging_to_file_/2’
.............................

Table of logging file status for log files.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘logging_to_file_(Alias,Status)’
     `Mode and number of proofs:'
          ‘logging_to_file_(?atom,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.31.2.6 Operators
..................

(none)

`protocol'

1.31.3 ‘loggingp’
-----------------

Logging events to files protocol.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2011/1/6

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.31.3.1 Public predicates
..........................

1.31.3.2 ‘log_file/2’
.....................

Access to the table of log files.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘log_file(Alias,File)’
     `Mode and number of proofs:'
          ‘log_file(?atom,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.31.3.3 ‘define_log_file/2’
............................

Defines a log file with alias Alias and file name File.  If the log file
already exists, its contents are kept.  Logging is enabled by default.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘define_log_file(Alias,File)’
     `Mode and number of proofs:'
          ‘define_log_file(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.31.3.4 ‘init_log_file/2’
..........................

Initializes a new log file with alias Alias and file name File.  If the
log file already exists, its contents are erased.  Logging is enabled by
default.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘init_log_file(Alias,File)’
     `Mode and number of proofs:'
          ‘init_log_file(+atom,+atom)’ - ‘one’

__________________________________________________________________

1.31.3.5 ‘log_event/2’
......................

Logs an event Event to a log file with alias Alias.  Fails if a log file
with alias Alias is not defined.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘log_event(Alias,Event)’
     `Mode and number of proofs:'
          ‘log_event(+atom,+nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.31.3.6 ‘logging/1’
....................

True if logging to file with alias Alias is enabled.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘logging(Alias)’
     `Mode and number of proofs:'
          ‘logging(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.31.3.7 ‘enable_logging/1’
...........................

Enables logging to file with alias Alias.  Fails if a log file with
alias Alias is not defined.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘enable_logging(Alias)’
     `Mode and number of proofs:'
          ‘enable_logging(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.31.3.8 ‘disable_logging/1’
............................

Disables logging to file with alias Alias.  Fails if a log file with
alias Alias is not defined.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘disable_logging(Alias)’
     `Mode and number of proofs:'
          ‘disable_logging(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.31.3.9 Protected predicates
.............................

(none)

1.31.3.10 Private predicates
............................

(none)

1.31.3.11 Operators
...................

(none)

See also
........

See logging.

1.32 ‘loops’
============

`object'

1.32.1 ‘loop’
-------------

Loop control structures predicates.

     `Author:' Paulo Moura
     `Version:' 1.4
     `Date:' 2017/3/20

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ loopp.

     `Remarks:'
          (none)

1.32.1.1 Public predicates
..........................

(see entity ancestors)

1.32.1.2 Protected predicates
.............................

(see entity ancestors)

1.32.1.3 Private predicates
...........................

(see entity ancestors)

1.32.1.4 Operators
..................

(none)

`protocol'

1.32.2 ‘loopp’
--------------

Loop control constructs protocol.

     `Author:' Paulo Moura
     `Version:' 1.3
     `Date:' 2017/3/20

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.32.2.1 Public predicates
..........................

1.32.2.2 ‘whiledo/2’
....................

While Condition is true do Action.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘whiledo(Condition,Action)’
     `Meta-predicate template:'
          ‘whiledo(0,0)’
     `Mode and number of proofs:'
          ‘whiledo(+callable,@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.3 ‘dowhile/2’
....................

Do Action while Condition is true.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘dowhile(Action,Condition)’
     `Meta-predicate template:'
          ‘dowhile(0,0)’
     `Mode and number of proofs:'
          ‘dowhile(@callable,+callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.4 ‘foreach/3’
....................

For each element Element in List call Goal.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘foreach(Element,List,Goal)’
     `Meta-predicate template:'
          ‘foreach(*,*,0)’
     `Mode and number of proofs:'
          ‘foreach(@var,+list(term),@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.5 ‘foreach/4’
....................

For each element Element in List at position Index call Goal.  Index
starts at 1.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘foreach(Element,Index,List,Goal)’
     `Meta-predicate template:'
          ‘foreach(*,*,*,0)’
     `Mode and number of proofs:'
          ‘foreach(@var,@var,+list(term),@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.6 ‘forto/3’
..................

Call Goal counting up from First to Last.  Increment is 1.  For
convenience and clarity, First and Last can be arithmetic expressions.
This predicate fails iff the Goal fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘forto(First,Last,Goal)’
     `Meta-predicate template:'
          ‘forto(*,*,0)’
     `Mode and number of proofs:'
          ‘forto(+number,+number,@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.7 ‘forto/4’
..................

Call Goal counting up from First to Last and instantiating Count to each
successive value.  Increment is 1.  For convenience and clarity, First
and Last can be arithmetic expressions.  This predicate fails iff the
Goal fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘forto(Count,First,Last,Goal)’
     `Meta-predicate template:'
          ‘forto(*,*,*,0)’
     `Mode and number of proofs:'
          ‘forto(@var,+number,+number,@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.8 ‘forto/5’
..................

Call Goal counting up from First to Last and instantiating Count to each
successive value.  For convenience and clarity, First, Last, and
Increment can be arithmetic expressions (uses Increment absolute value).
This predicate fails iff the Goal fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘forto(Count,First,Last,Increment,Goal)’
     `Meta-predicate template:'
          ‘forto(*,*,*,*,0)’
     `Mode and number of proofs:'
          ‘forto(@var,+number,+number,+number,@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.9 ‘fordownto/3’
......................

Call Goal counting down from First to Last.  Decrement is 1.  For
convenience and clarity, First and Last can be arithmetic expressions.
This predicate fails iff the Goal fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘fordownto(First,Last,Goal)’
     `Meta-predicate template:'
          ‘fordownto(*,*,0)’
     `Mode and number of proofs:'
          ‘fordownto(+number,+number,@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.10 ‘fordownto/4’
.......................

Call Goal counting down from First to Last and instantiating Count to
each successive value.  Decrement is 1.  For convenience and clarity,
First and Last can be arithmetic expressions.  This predicate fails iff
the Goal fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘fordownto(Count,First,Last,Goal)’
     `Meta-predicate template:'
          ‘fordownto(*,*,*,0)’
     `Mode and number of proofs:'
          ‘fordownto(@var,+number,+number,@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.11 ‘fordownto/5’
.......................

Call Goal counting down from First to Last and instantiating Count to
each successive value.  For convenience and clarity, First, Last, and
Decrement can be arithmetic expressions (uses Decrement absolute value).
This predicate fails iff the Goal fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘fordownto(Count,First,Last,Decrement,Goal)’
     `Meta-predicate template:'
          ‘fordownto(*,*,*,*,0)’
     `Mode and number of proofs:'
          ‘fordownto(@var,+number,+number,+number,@callable)’ - ‘zero_or_one’

__________________________________________________________________

1.32.2.12 Protected predicates
..............................

(none)

1.32.2.13 Private predicates
............................

(none)

1.32.2.14 Operators
...................

(none)

See also
........

See loop.

1.33 ‘meta’
===========

`object'

1.33.1 ‘meta’
-------------

Some useful meta-predicates.

     `Author:' Paulo Moura
     `Version:' 5.2
     `Date:' 2016/10/6

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ metap.
     `Aliases:'
          ‘metap’ ‘map/2’ as ‘succeeds/2’
          ‘metap’ ‘map/2’ as ‘maplist/2’
          ‘metap’ ‘map/3’ as ‘maplist/3’
          ‘metap’ ‘map/4’ as ‘maplist/4’
          ‘metap’ ‘map/5’ as ‘maplist/5’
          ‘metap’ ‘map/6’ as ‘maplist/6’
          ‘metap’ ‘map/7’ as ‘maplist/7’
          ‘metap’ ‘map/8’ as ‘maplist/8’
          ‘metap’ ‘include/3’ as ‘filter/3’
          ‘metap’ ‘fold_left/4’ as ‘foldl/4’
          ‘metap’ ‘fold_left_1/3’ as ‘foldl1/3’
          ‘metap’ ‘fold_right/4’ as ‘foldr/4’
          ‘metap’ ‘fold_right_1/3’ as ‘foldr1/3’
          ‘metap’ ‘scan_left/4’ as ‘scanl/4’
          ‘metap’ ‘scan_left_1/3’ as ‘scanl1/3’
          ‘metap’ ‘scan_right/4’ as ‘scanr/4’
          ‘metap’ ‘scan_right_1/3’ as ‘scanr1/3’

     `Remarks:'
          (none)

1.33.1.1 Public predicates
..........................

(see entity ancestors)

1.33.1.2 Protected predicates
.............................

(see entity ancestors)

1.33.1.3 Private predicates
...........................

(see entity ancestors)

1.33.1.4 Operators
..................

(none)

See also
........

See meta_compiler.

`protocol'

1.33.2 ‘metap’
--------------

Useful meta-predicates protocol.

     `Author:' Paulo Moura
     `Version:' 6.1
     `Date:' 2015/12/23

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.33.2.1 Public predicates
..........................

1.33.2.2 ‘include/3’
....................

Returns a list of all list elements that satisfy a predicate.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘include(Closure,List,Included)’
     `Meta-predicate template:'
          ‘include(1,*,*)’
     `Mode and number of proofs:'
          ‘include(+callable,+list,-list)’ - ‘one’

__________________________________________________________________

1.33.2.3 ‘exclude/3’
....................

Returns a list of all list elements that fail to satisfy a predicate.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘exclude(Closure,List,Excluded)’
     `Meta-predicate template:'
          ‘exclude(1,*,*)’
     `Mode and number of proofs:'
          ‘exclude(+callable,+list,-list)’ - ‘one’

__________________________________________________________________

1.33.2.4 ‘findall_member/4’
...........................

Finds all members of a list that satisfy a given test.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘findall_member(Member,List,Test,Result)’
     `Meta-predicate template:'
          ‘findall_member(*,*,0,*)’
     `Mode and number of proofs:'
          ‘findall_member(@term,+list,@callable,-list)’ - ‘one’

__________________________________________________________________

1.33.2.5 ‘findall_member/5’
...........................

Finds all members of a list that satisfy a given test appending the
given tail to the result.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘findall_member(Member,List,Test,Result,Tail)’
     `Meta-predicate template:'
          ‘findall_member(*,*,0,*,*)’
     `Mode and number of proofs:'
          ‘findall_member(@term,+list,@callable,-list,+list)’ - ‘one’

__________________________________________________________________

1.33.2.6 ‘partition/4’
......................

Partition a list of elements in two lists using a predicate.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘partition(Closure,List,Included,Excluded)’
     `Meta-predicate template:'
          ‘partition(1,*,*,*)’
     `Mode and number of proofs:'
          ‘partition(+callable,+list,-list,-list)’ - ‘one’

__________________________________________________________________

1.33.2.7 ‘partition/6’
......................

Partitions a list in lists with values less, equal, and greater than a
given value using a comparison predicate with the same argument order as
‘compare/3’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘partition(Closure,List,Value,Less,Equal,Greater)’
     `Meta-predicate template:'
          ‘partition(3,*,*,*,*,*)’
     `Mode and number of proofs:'
          ‘partition(+callable,+list,@term,-list,-list,-list)’ - ‘one’

__________________________________________________________________

1.33.2.8 ‘fold_left/4’
......................

List folding (left associative).  Closure is extended with three
arguments: accumulator, list element, and updated accumulator.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘fold_left(Closure,Accumulator,List,Result)’
     `Meta-predicate template:'
          ‘fold_left(3,*,*,*)’
     `Mode and number of proofs:'
          ‘fold_left(+callable,?term,+list,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.9 ‘fold_left_1/3’
........................

List folding (left associative).  Closure is extended with three
arguments: accumulator, list element, and updated accumulator.  The
initial value of the accumulator is the list first element.  Fails for
empty lists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘fold_left_1(Closure,List,Result)’
     `Meta-predicate template:'
          ‘fold_left_1(3,*,*)’
     `Mode and number of proofs:'
          ‘fold_left_1(+callable,+list,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.10 ‘scan_left/4’
.......................

List scanning (left associative).  Closure is extended with three
arguments: accumulator, list element, and updated accumulator.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘scan_left(Closure,Accumulator,List,Results)’
     `Meta-predicate template:'
          ‘scan_left(3,*,*,*)’
     `Mode and number of proofs:'
          ‘scan_left(+callable,?term,+list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.11 ‘scan_left_1/3’
.........................

List scanning (left associative).  Closure is extended with three
arguments: accumulator, list element, and updated accumulator.  The
accumulator is initialized with the list first element.  Fails for empty
lists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘scan_left_1(Closure,List,Results)’
     `Meta-predicate template:'
          ‘scan_left_1(3,*,*)’
     `Mode and number of proofs:'
          ‘scan_left_1(+callable,+list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.12 ‘fold_right/4’
........................

List folding (right associative).  Closure is extended with three
arguments: list element, accumulator, and updated accumulator.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘fold_right(Closure,Accumulator,List,Result)’
     `Meta-predicate template:'
          ‘fold_right(3,*,*,*)’
     `Mode and number of proofs:'
          ‘fold_right(+callable,?term,+list,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.13 ‘fold_right_1/3’
..........................

List folding (right associative).  Closure is extended with three
arguments: list element, accumulator, and updated accumulator.  The
initial value of the accumulator is the list first element.  Fails for
empty lists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘fold_right_1(Closure,List,Result)’
     `Meta-predicate template:'
          ‘fold_right_1(3,*,*)’
     `Mode and number of proofs:'
          ‘fold_right_1(+callable,+list,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.14 ‘scan_right/4’
........................

List scanning (right associative).  Closure is extended with three
arguments: list element, accumulator, and updated accumulator.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘scan_right(Closure,Accumulator,List,Results)’
     `Meta-predicate template:'
          ‘scan_right(3,*,*,*)’
     `Mode and number of proofs:'
          ‘scan_right(+callable,?term,+list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.15 ‘scan_right_1/3’
..........................

List scanning (right associative).  Closure is extended with three
arguments: list element, accumulator, and updated accumulator.  The
accumulator is initialized with the list first element.  Fails for empty
lists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘scan_right_1(Closure,List,Results)’
     `Meta-predicate template:'
          ‘scan_right_1(3,*,*)’
     `Mode and number of proofs:'
          ‘scan_right_1(+callable,+list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.16 ‘map/2’
.................

True if the predicate succeeds for each list element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,List)’
     `Meta-predicate template:'
          ‘map(1,*)’
     `Mode and number of proofs:'
          ‘map(+callable,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.17 ‘map/3’
.................

List mapping predicate taken arguments from two lists of elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,List1,List2)’
     `Meta-predicate template:'
          ‘map(2,*,*)’
     `Mode and number of proofs:'
          ‘map(+callable,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.18 ‘map/4’
.................

List mapping predicate taken arguments from three lists of elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,List1,List2,List3)’
     `Meta-predicate template:'
          ‘map(3,*,*,*)’
     `Mode and number of proofs:'
          ‘map(+callable,?list,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.19 ‘map/5’
.................

List mapping predicate taken arguments from four lists of elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,List1,List2,List3,List4)’
     `Meta-predicate template:'
          ‘map(4,*,*,*,*)’
     `Mode and number of proofs:'
          ‘map(+callable,?list,?list,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.20 ‘map/6’
.................

List mapping predicate taken arguments from five lists of elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,List1,List2,List3,List4,List5)’
     `Meta-predicate template:'
          ‘map(5,*,*,*,*,*)’
     `Mode and number of proofs:'
          ‘map(+callable,?list,?list,?list,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.21 ‘map/7’
.................

List mapping predicate taken arguments from six lists of elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,List1,List2,List3,List4,List5,List6)’
     `Meta-predicate template:'
          ‘map(6,*,*,*,*,*,*)’
     `Mode and number of proofs:'
          ‘map(+callable,?list,?list,?list,?list,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.22 ‘map/8’
.................

List mapping predicate taken arguments from seven lists of elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,List1,List2,List3,List4,List5,List6,List7)’
     `Meta-predicate template:'
          ‘map(7,*,*,*,*,*,*,*)’
     `Mode and number of proofs:'
          ‘map(+callable,?list,?list,?list,?list,?list,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.23 ‘map_reduce/5’
........................

Map a list and apply a fold left (reduce) to the resulting list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map_reduce(Map,Reduce,Accumulator,List,Result)’
     `Meta-predicate template:'
          ‘map_reduce(2,3,*,*,*)’
     `Mode and number of proofs:'
          ‘map_reduce(+callable,+callable,+term,?list,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.33.2.24 Protected predicates
..............................

(none)

1.33.2.25 Private predicates
............................

(none)

1.33.2.26 Operators
...................

(none)

See also
........

See meta.

1.34 ‘meta_compiler’
====================

`object'

1.34.1 ‘meta_compiler’
----------------------

Compiler for the ‘meta’ object meta-predicates.  Generates auxiliary
predicates in order to avoid meta-call overheads.

     `Author:' Paulo Moura
     `Version:' 0.13
     `Date:' 2019/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Uses:'
          See gensym.
          list.
          logtalk.

     `Remarks:'

        - `Usage:' Compile source files with calls to the ‘meta’ object
          meta-predicates using the compiler option
          ‘hook(meta_compiler)’.

1.34.1.1 Public predicates
..........................

(see entity ancestors)

1.34.1.2 Protected predicates
.............................

(see entity ancestors)

1.34.1.3 Private predicates
...........................

1.34.1.4 ‘generated_predicate/1’
................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.34.1.5 Operators
..................

(none)

See also
........

See meta.

1.35 ‘metagol’
==============

`object'

1.35.1 ‘metagol’
----------------

Inductive logic programming (ILP) system based on meta-interpretive
learning.

     `Author:' Metagol authors; adapted to Logtalk by Paulo Moura.
     `Version:' 0.24
     `Date:' 2019/5/8

     `Copyright:' Copyright 2016 Metagol authors; Copyright 2018-2019 Paulo Moura
     `License:' BSD 3-Clause License

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Provides:'
          See logtalk;;message_tokens//2.
          See logtalk;;message_prefix_stream/4.
     `Uses:'
          See coroutining.
          integer.
          list.
          logtalk.
          meta.
          pairs.
          timeout.

     `Remarks:'
          (none)

1.35.1.1 Public predicates
..........................

1.35.1.2 ‘learn/3’
..................

Learns from a set of positive examples and a set of negative examples
and returns the learned program.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘learn(PositiveExamples,NegativeExamples,Program)’
     `Mode and number of proofs:'
          ‘learn(@list(example),@list(example),-list(term))’ - ‘zero_or_more’

__________________________________________________________________

1.35.1.3 ‘learn/2’
..................

Learns from a set of positive examples and a set of negative examples
and pretty prints the learned program.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘learn(PositiveExamples,NegativeExamples)’
     `Mode and number of proofs:'
          ‘learn(@list(example),@list(example))’ - ‘zero_or_more’

__________________________________________________________________

1.35.1.4 ‘learn_seq/2’
......................

Learns from a sequence of examples represented as a list of
PositiveExamples/NegativeExamples elements and returns the learned
program.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘learn_seq(Examples,Program)’
     `Mode and number of proofs:'
          ‘learn_seq(@list(example),-list(clause))’ - ‘zero_or_one’

__________________________________________________________________

1.35.1.5 ‘learn_with_timeout/4’
...............................

Learns from a set of positive examples and a set of negative examples
and returns the learned program.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘learn_with_timeout(PositiveExamples,NegativeExamples,Program,Timeout)’
     `Mode and number of proofs:'
          ‘learn_with_timeout(@list(example),@list(example),-list(term),+number)’ - ‘zero_or_one’

__________________________________________________________________

1.35.1.6 ‘program_to_clauses/2’
...............................

Converts a learned program into a list of clauses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘program_to_clauses(Program,Clauses)’
     `Mode and number of proofs:'
          ‘program_to_clauses(@list(term),-list(clause))’ - ‘one’

__________________________________________________________________

1.35.1.7 ‘pprint/1’
...................

Pretty prints a learned program.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘pprint(Program)’
     `Mode and number of proofs:'
          ‘pprint(@list(term))’ - ‘one’

__________________________________________________________________

1.35.1.8 ‘metarule/6’
.....................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.35.1.9 ‘head_pred/1’
......................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.35.1.10 ‘body_pred/1’
.......................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.11 ‘ibk/3’
.................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.35.1.12 ‘func_test/3’
.......................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.35.1.13 ‘functional/0’
........................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.14 ‘min_clauses/1’
.........................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.15 ‘max_clauses/1’
.........................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.16 ‘max_inv_preds/1’
...........................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.17 ‘metarule_next_id/1’
..............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.18 ‘timeout/1’
.....................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.19 Protected predicates
..............................

1.35.1.20 ‘pprint_clause/1’
...........................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.35.1.21 ‘pprint_clauses/1’
............................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.35.1.22 ‘compiled_pred_call/2’
................................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.23 ‘body_pred_call/2’
............................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.24 ‘type/3’
..................

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.35.1.25 Private predicates
............................

(see entity ancestors)

1.35.1.26 Operators
...................

(none)

`protocol'

1.35.2 ‘metagol_example_protocol’
---------------------------------

Convenient learning predicates for use in examples and unit tests.

     `Author:' Paulo Moura.
     `Version:' 0.1
     `Date:' 2019/5/7

     `License:' BSD 3-Clause License

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.35.2.1 Public predicates
..........................

1.35.2.2 ‘learn/1’
..................

Learns and returns set of clauses.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘learn(Clauses)’
     `Mode and number of proofs:'
          ‘learn(-list(clause))’ - ‘zero_or_more’

__________________________________________________________________

1.35.2.3 ‘learn/0’
..................

Learns and prints a set of clauses.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘learn’ - ‘zero_or_more’

__________________________________________________________________

1.35.2.4 Protected predicates
.............................

(none)

1.35.2.5 Private predicates
...........................

(none)

1.35.2.6 Operators
..................

(none)

1.36 ‘optionals’
================

`object'

1.36.1 ‘maybe’
--------------

Types and predicates for type-checking and handling optional term
references.  Inspired by Haskell.

     `Author:' Paulo Moura
     `Version:' 0.5
     `Date:' 2019/1/24

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See type;;type/1.
          type;;check/2.
          arbitrary;;arbitrary/1.
          See arbitrary;;arbitrary/2.
     `Uses:'
          See optional.
          optional(Reference).
          random.
          type.

     `Remarks:'

        - `Type-checking support:' Defines type ‘maybe(Type)’ for
          checking optional term references where the optional term must
          be of the given type.

        - `QuickCheck support:' Defines clauses for the
          ‘arbitrary::arbitrary/1-2’ predicates to allow generating
          random values for the maybe(Type) type.

1.36.1.1 Public predicates
..........................

1.36.1.2 ‘cat/2’
................

Returns the terms stored in the non-empty references.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘cat(References,Values)’
     `Mode and number of proofs:'
          ‘cat(+list(optional),-list)’ - ‘one’

__________________________________________________________________

1.36.1.3 Protected predicates
.............................

(see entity ancestors)

1.36.1.4 Private predicates
...........................

(see entity ancestors)

1.36.1.5 Operators
..................

(none)

See also
........

See optional, optional(Reference), type,
arbitrary.

`object'

1.36.2 ‘optional’
-----------------

Constructors for optional term references.  A reference is either empty
or holds a term.  References should be regarded as opaque terms and
always used with the ‘optional/1’ object by passing the reference as a
parameter.

     `Author:' Paulo Moura
     `Version:' 1.4
     `Date:' 2019/1/23

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See type;;type/1.
          type;;check/2.

     `Remarks:'

        - `Type-checking support:' This object also defines a type
          ‘optional’ for use with the ‘type’ library object.

1.36.2.1 Public predicates
..........................

1.36.2.2 ‘empty/1’
..................

Constructs an empty reference.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘empty(Reference)’
     `Mode and number of proofs:'
          ‘empty(--nonvar)’ - ‘one’

__________________________________________________________________

1.36.2.3 ‘of/2’
...............

Constructs a reference holding a term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘of(Term,Reference)’
     `Mode and number of proofs:'
          ‘of(@term,--nonvar)’ - ‘one’

__________________________________________________________________

1.36.2.4 ‘from_goal/3’
......................

Constructs a reference by calling ‘Goal’ that binds and holds ‘Term’ on
success.  Returns an empty reference if the goal fails or throws an
error.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘from_goal(Goal,Term,Reference)’
     `Meta-predicate template:'
          ‘from_goal(0,*,*)’
     `Mode and number of proofs:'
          ‘from_goal(+callable,--term,--nonvar)’ - ‘one’

__________________________________________________________________

1.36.2.5 Protected predicates
.............................

(see entity ancestors)

1.36.2.6 Private predicates
...........................

(see entity ancestors)

1.36.2.7 Operators
..................

(none)

See also
........

See optional(Reference), type.

`object'

1.36.3 ‘optional(Reference)’
----------------------------

Optional reference predicates.  Requires passing a reference constructed
using the ‘optional’ object as a parameter.

     `Author:' Paulo Moura
     `Version:' 1.5
     `Date:' 2019/1/24

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.36.3.1 Public predicates
..........................

1.36.3.2 ‘is_empty/0’
.....................

True if the reference is empty.  Avoid whenever possible by using
instead the ‘if_empty/1’ predicate.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘is_empty’ - ‘zero_or_one’

__________________________________________________________________

1.36.3.3 ‘is_present/0’
.......................

True if the reference holds a term.  Avoid whenever possible by using
instead the ‘if_present/1’ predicate.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘is_present’ - ‘zero_or_one’

__________________________________________________________________

1.36.3.4 ‘if_empty/1’
.....................

Calls a goal if the reference is empty.  Succeeds otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘if_empty(Goal)’
     `Meta-predicate template:'
          ‘if_empty(0)’
     `Mode and number of proofs:'
          ‘if_empty(+callable)’ - ‘zero_or_more’

__________________________________________________________________

1.36.3.5 ‘if_present/1’
.......................

Applies a closure if the reference holds a term using the term as
additional argument.  Succeeds otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘if_present(Closure)’
     `Meta-predicate template:'
          ‘if_present(1)’
     `Mode and number of proofs:'
          ‘if_present(+callable)’ - ‘zero_or_more’

__________________________________________________________________

1.36.3.6 ‘filter/2’
...................

Returns the reference when it is non-empty and the term it holds
satisfies a closure.  Otherwise returns an empty reference.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘filter(Closure,Reference)’
     `Meta-predicate template:'
          ‘filter(1,*)’
     `Mode and number of proofs:'
          ‘filter(+callable,--nonvar)’ - ‘one’

__________________________________________________________________

1.36.3.7 ‘map/2’
................

When the reference is non-empty and mapping a closure with the term it
holds and the new term as additional arguments is successful, returns a
reference with the new term.  Otherwise returns an empty reference.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,NewReference)’
     `Meta-predicate template:'
          ‘map(2,*)’
     `Mode and number of proofs:'
          ‘map(+callable,--nonvar)’ - ‘one’

__________________________________________________________________

1.36.3.8 ‘flat_map/2’
.....................

When the reference is non-empty and mapping a closure with the optional
tern and the new reference as additional arguments is successful,
returns the new reference.  Otherwise returns an empty reference.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘flat_map(Closure,NewReference)’
     `Meta-predicate template:'
          ‘flat_map(2,*)’
     `Mode and number of proofs:'
          ‘flat_map(+callable,--nonvar)’ - ‘one’

__________________________________________________________________

1.36.3.9 ‘get/1’
................

Returns the term hold by the reference if not empty.  Throws an error
otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘get(Term)’
     `Mode and number of proofs:'
          ‘get(--term)’ - ‘one_or_error’

     `Exceptions:'
          Optional is empty:
               ‘existence_error(optional_term,Reference)’

__________________________________________________________________

1.36.3.10 ‘or_else/2’
.....................

Returns the term hold by the reference if not empty or the given default
term if the reference is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘or_else(Term,Default)’
     `Mode and number of proofs:'
          ‘or_else(--term,@term)’ - ‘one’

__________________________________________________________________

1.36.3.11 ‘or_else_get/2’
.........................

Returns the term hold by the reference if not empty.  Applies a closure
to compute the term otherwise.  Throws an error when the reference is
empty and the term cannot be computed.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘or_else_get(Term,Closure)’
     `Meta-predicate template:'
          ‘or_else_get(*,1)’
     `Mode and number of proofs:'
          ‘or_else_get(--term,+callable)’ - ‘one_or_error’

     `Exceptions:'
          Reference is empty and the term cannot be computed:
               ‘existence_error(optional_term,Reference)’

__________________________________________________________________

1.36.3.12 ‘or_else_call/2’
..........................

Returns the term hold by the reference if not empty or calls a goal
deterministically if the reference is empty.  Can be used e.g.  to
generate an exception for empty optionals.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘or_else_call(Term,Goal)’
     `Meta-predicate template:'
          ‘or_else_call(*,0)’
     `Mode and number of proofs:'
          ‘or_else_call(--term,+callable)’ - ‘zero_or_one’

__________________________________________________________________

1.36.3.13 ‘or_else_fail/1’
..........................

Returns the term hold by the reference if not empty.  Fails otherwise.
Usually called to skip over empty references.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘or_else_fail(Term)’
     `Mode and number of proofs:'
          ‘or_else_fail(--term)’ - ‘zero_or_one’

__________________________________________________________________

1.36.3.14 Protected predicates
..............................

(none)

1.36.3.15 Private predicates
............................

(none)

1.36.3.16 Operators
...................

(none)

See also
........

See optional.

1.37 ‘os’
=========

`object'

1.37.1 ‘os’
-----------

Portable operating-system access predicates.

     `Author:' Paulo Moura
     `Version:' 1.53
     `Date:' 2019/5/7

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ osp.
     `Uses:'
          See list.
     `Aliases:'
          ‘osp’ ‘absolute_file_name/2’ as ‘expand_path/2’

     `Remarks:'

        - `File path expansion:' To ensure portability, all file paths
          are expanded before being handed to the backend Prolog system.

        - `Missing implementations:' A few predicates (e.g.
          ‘wall_time/1’) cannot be implemented in some backend Prolog
          systems.

1.37.1.1 Public predicates
..........................

(see entity ancestors)

1.37.1.2 Protected predicates
.............................

(see entity ancestors)

1.37.1.3 Private predicates
...........................

(see entity ancestors)

1.37.1.4 Operators
..................

(none)

See also
........

See os_types.

`category'

1.37.2 ‘os_types’
-----------------

A set of operating-system related types.

     `Author:' Paulo Moura
     `Version:' 1.2
     `Date:' 2018/2/28

     `Compilation flags:'
          ‘static’

     `Provides:'
          See type;;type/1.
          See type;;check/2.
     `Uses:'
          See list.
          os.

     `Remarks:'

        - `Provided types:' This category adds ‘file’,
          ‘file(Extensions)’, ‘directory’, and ‘environment_variable’
          types for type-checking when using the ‘type’ library object.

        - `Type file:' For checking if a term is an atom and an existing
          file.

        - `Type file(Extensions):' For checking if a term is an atom and
          an existing file with one of the listed extensions (specified
          as ‘.ext’).

        - `Type directory:' For checking if a term is an atom and an
          existing directory.

        - `Type environment_variable:' For checking if a term is an atom
          and an existing environment variable.

1.37.2.1 Public predicates
..........................

(see entity ancestors)

1.37.2.2 Protected predicates
.............................

(see entity ancestors)

1.37.2.3 Private predicates
...........................

(see entity ancestors)

1.37.2.4 Operators
..................

(none)

See also
........

See osp, os, type.

`protocol'

1.37.3 ‘osp’
------------

Portable operating-system access protocol.

     `Author:' Paulo Moura
     `Version:' 1.24
     `Date:' 2019/5/7

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.37.3.1 Public predicates
..........................

1.37.3.2 ‘pid/1’
................

Returns the process identifier of the running process.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘pid(PID)’
     `Mode and number of proofs:'
          ‘pid(-integer)’ - ‘one’

__________________________________________________________________

1.37.3.3 ‘shell/2’
..................

Runs an operating-system shell command and returns its exit status.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘shell(Command,Status)’
     `Mode and number of proofs:'
          ‘shell(+atom,-integer)’ - ‘one’

__________________________________________________________________

1.37.3.4 ‘shell/1’
..................

Runs an operating-system shell command.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘shell(Command)’
     `Mode and number of proofs:'
          ‘shell(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.37.3.5 ‘absolute_file_name/2’
...............................

Expands a file name to an absolute file path.  An environment variable
at the beginning of the file name is also expanded.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘absolute_file_name(File,Path)’
     `Mode and number of proofs:'
          ‘absolute_file_name(+atom,-atom)’ - ‘one’

__________________________________________________________________

1.37.3.6 ‘decompose_file_name/3’
................................

Decomposes a file name into its directory (which always ends with a
slash; ‘./’ is returned if absent) and its basename (that can be the
empty atom).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘decompose_file_name(File,Directory,Basename)’
     `Mode and number of proofs:'
          ‘decompose_file_name(+atom,?atom,?atom)’ - ‘one’

__________________________________________________________________

1.37.3.7 ‘decompose_file_name/4’
................................

Decomposes a file name into its directory (which always ends with a
slash; ‘./’ is returned if absent), name (that can be the empty atom),
and extension (which starts with a ‘.’ when defined; the empty atom
otherwise).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘decompose_file_name(File,Directory,Name,Extension)’
     `Mode and number of proofs:'
          ‘decompose_file_name(+atom,?atom,?atom,?atom)’ - ‘one’

__________________________________________________________________

1.37.3.8 ‘make_directory/1’
...........................

Makes a new directory.  Succeeds if the directory already exists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘make_directory(Directory)’
     `Mode and number of proofs:'
          ‘make_directory(+atom)’ - ‘one’

__________________________________________________________________

1.37.3.9 ‘make_directory_path/1’
................................

Makes a new directory creating all the intermediate directories if
necessary.  Succeeds if the directory already exists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘make_directory_path(Directory)’
     `Mode and number of proofs:'
          ‘make_directory_path(+atom)’ - ‘one’

__________________________________________________________________

1.37.3.10 ‘delete_directory/1’
..............................

Deletes an empty directory.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_directory(Directory)’
     `Mode and number of proofs:'
          ‘delete_directory(+atom)’ - ‘one’

__________________________________________________________________

1.37.3.11 ‘change_directory/1’
..............................

Changes current working directory.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘change_directory(Directory)’
     `Mode and number of proofs:'
          ‘change_directory(+atom)’ - ‘one’

__________________________________________________________________

1.37.3.12 ‘working_directory/1’
...............................

Current working directory.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘working_directory(Directory)’
     `Mode and number of proofs:'
          ‘working_directory(?atom)’ - ‘zero_or_one’

__________________________________________________________________

1.37.3.13 ‘directory_files/2’
.............................

Returns a list of all files (including directories, regular files, and
hidden directories and files) in a directory.  File paths are relative
to the directory.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory_files(Directory,Files)’
     `Mode and number of proofs:'
          ‘directory_files(+atom,-list(atom))’ - ‘one’

__________________________________________________________________

1.37.3.14 ‘directory_files/3’
.............................

Returns a filtered list of files.  Filters: paths/1 - relative/absolute,
type/1 - all/regular/directory, extensions/1 - list, prefixes/1 - list,
suffixes/1 - list, dot_files/1 - boolean.  Invalid options ignored.
Defaults equivalent to directory_files/2.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory_files(Directory,Files,Options)’
     `Mode and number of proofs:'
          ‘directory_files(+atom,-list(atom),+list(compound))’ - ‘one’

__________________________________________________________________

1.37.3.15 ‘directory_exists/1’
..............................

True if the specified directory exists (irrespective of directory
permissions).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory_exists(Directory)’
     `Mode and number of proofs:'
          ‘directory_exists(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.37.3.16 ‘file_exists/1’
.........................

True if the specified file exists and is a regular file (irrespective of
file permissions).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_exists(File)’
     `Mode and number of proofs:'
          ‘file_exists(+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.37.3.17 ‘file_modification_time/2’
....................................

File modification time (which can be used for comparison).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_modification_time(File,Time)’
     `Mode and number of proofs:'
          ‘file_modification_time(+atom,-integer)’ - ‘zero_or_one’

__________________________________________________________________

1.37.3.18 ‘file_size/2’
.......................

File size (in bytes).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_size(File,Size)’
     `Mode and number of proofs:'
          ‘file_size(+atom,-integer)’ - ‘zero_or_one’

__________________________________________________________________

1.37.3.19 ‘file_permission/2’
.............................

True if the specified file has the specified permission (‘read’,
‘write’, or ‘execute’).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_permission(File,Permission)’
     `Mode and number of proofs:'
          ‘file_permission(+atom,?atom)’ - ‘zero_or_one’

__________________________________________________________________

1.37.3.20 ‘rename_file/2’
.........................

Renames a file or a directory.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rename_file(Old,New)’
     `Mode and number of proofs:'
          ‘rename_file(+atom,+atom)’ - ‘zero_or_one’

__________________________________________________________________

1.37.3.21 ‘delete_file/1’
.........................

Deletes a file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_file(File)’
     `Mode and number of proofs:'
          ‘delete_file(+atom)’ - ‘one’

__________________________________________________________________

1.37.3.22 ‘environment_variable/2’
..................................

Returns an environment variable value.  Fails if the variable does not
exists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘environment_variable(Variable,Value)’
     `Mode and number of proofs:'
          ‘environment_variable(+atom,?atom)’ - ‘zero_or_one’

__________________________________________________________________

1.37.3.23 ‘time_stamp/1’
........................

Returns a system-dependent time stamp, which can be used for sorting,
but should be regarded otherwise as an opaque term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘time_stamp(Time)’
     `Mode and number of proofs:'
          ‘time_stamp(-ground)’ - ‘one’

__________________________________________________________________

1.37.3.24 ‘date_time/7’
.......................

Returns the current date and time.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘date_time(Year,Month,Day,Hours,Minutes,Seconds,Milliseconds)’
     `Mode and number of proofs:'
          ‘date_time(-integer,-integer,-integer,-integer,-integer,-integer,-integer)’ - ‘one’

__________________________________________________________________

1.37.3.25 ‘cpu_time/1’
......................

System cpu time in seconds.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘cpu_time(Seconds)’
     `Mode and number of proofs:'
          ‘cpu_time(-number)’ - ‘one’

__________________________________________________________________

1.37.3.26 ‘wall_time/1’
.......................

Wall time in seconds.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘wall_time(Seconds)’
     `Mode and number of proofs:'
          ‘wall_time(-number)’ - ‘one’

__________________________________________________________________

1.37.3.27 ‘operating_system_type/1’
...................................

Operating system type.  Possible values are ‘unix’, ‘windows’, and
‘unknown’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘operating_system_type(Type)’
     `Mode and number of proofs:'
          ‘operating_system_type(?atom)’ - ‘one’

__________________________________________________________________

1.37.3.28 ‘command_line_arguments/1’
....................................

Returns a list with the command line arguments that occur after ‘--’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘command_line_arguments(Arguments)’
     `Mode and number of proofs:'
          ‘command_line_arguments(-list(atom))’ - ‘one’

__________________________________________________________________

1.37.3.29 ‘sleep/1’
...................

Suspends execution the given number of seconds.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sleep(Seconds)’
     `Mode and number of proofs:'
          ‘sleep(+number)’ - ‘one’

__________________________________________________________________

1.37.3.30 Protected predicates
..............................

(none)

1.37.3.31 Private predicates
............................

(none)

1.37.3.32 Operators
...................

(none)

See also
........

See os, os_types.

1.38 ‘pddl_parser’
==================

`object'

1.38.1 ‘pddl’
-------------

Simple parser of PDDL 3.0 files.

     `Author:' Robert Sasak, Charles University in Prague. Adapted to Logtalk by Paulo Moura.
     `Version:' 1.2
     `Date:' 2019/3/8

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ read_file.

     `Remarks:'
          (none)

1.38.1.1 Public predicates
..........................

1.38.1.2 ‘parse_domain/3’
.........................

Parses a PDDL 3.0 domain file, returning a compound term representing
its contents and rest of the file.  Useful when domain and problem are
in one file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘parse_domain(File,Output,RestOfFile)’
     `Mode and number of proofs:'
          ‘parse_domain(+atom,-compound,-list(atom))’ - ‘one’

__________________________________________________________________

1.38.1.3 ‘parse_domain/2’
.........................

Parses a PDDL 3.0 domain file, returning a compound term representing
its contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘parse_domain(File,Output)’
     `Mode and number of proofs:'
          ‘parse_domain(+atom,-compound)’ - ‘one’

__________________________________________________________________

1.38.1.4 ‘parse_problem/2’
..........................

Parses a PDDL 3.0 problem file, returning a compound term representing
its contents.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘parse_problem(File,Output)’
     `Mode and number of proofs:'
          ‘parse_problem(+atom,-compound)’ - ‘one’

__________________________________________________________________

1.38.1.5 ‘parse_problem/3’
..........................

Parses a PDDL 3.0 problem file, returning a compound term representing
its contents and rest of the file.  Useful when domain and problem are
in one file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘parse_problem(File,Output,RestOfFile)’
     `Mode and number of proofs:'
          ‘parse_problem(+atom,-compound,-list(atom))’ - ‘one’

__________________________________________________________________

1.38.1.6 Protected predicates
.............................

(see entity ancestors)

1.38.1.7 Private predicates
...........................

(see entity ancestors)

1.38.1.8 Operators
..................

(none)

`category'

1.38.2 ‘read_file’
------------------

Utility predicates for parsing a file as a list of atoms.

     `Author:' Robert Sasak, Charles University in Prague. Adapted to Logtalk by Paulo Moura.
     `Version:' 1.0
     `Date:' 2011/8/4

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.38.2.1 Public predicates
..........................

1.38.2.2 ‘read_file/2’
......................

Reads a file character by character, parsing it into a list of atoms.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘read_file(File,List)’
     `Mode and number of proofs:'
          ‘read_file(+atom,-list(atom))’ - ‘one’

__________________________________________________________________

1.38.2.3 Protected predicates
.............................

(none)

1.38.2.4 Private predicates
...........................

(none)

1.38.2.5 Operators
..................

(none)

1.39 ‘ports_profiler’
=====================

`object'

1.39.1 ‘ports_profiler’
-----------------------

Predicate execution box model port profiler.

     `Author:' Paulo Moura
     `Version:' 1.3
     `Date:' 2019/2/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;debug_handler_provider/1.
          See logtalk;;debug_handler/2.
     `Uses:'
          See logtalk.

     `Remarks:'
          (none)

1.39.1.1 Public predicates
..........................

1.39.1.2 ‘data/0’
.................

Prints a table with all port profiling data.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘data’ - ‘one’

__________________________________________________________________

1.39.1.3 ‘data/1’
.................

Prints a table with all port profiling data for the specified entity.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘data(Entity)’
     `Mode and number of proofs:'
          ‘data(+entity_identifier)’ - ‘one’

__________________________________________________________________

1.39.1.4 ‘reset/0’
..................

Resets all port profiling data.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘reset’ - ‘one’

__________________________________________________________________

1.39.1.5 ‘reset/1’
..................

Resets all port profiling data for the specified entity.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘reset(Entity)’
     `Mode and number of proofs:'
          ‘reset(+entity_identifier)’ - ‘one’

__________________________________________________________________

1.39.1.6 ‘port/5’
.................

Enumerates, by backtracking, all collected port profiling data.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘port(Port,Entity,Functor,Arity,Count)’
     `Mode and number of proofs:'
          ‘port(?atom,?entity_identifier,?atom,?integer,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.39.1.7 Protected predicates
.............................

(see entity ancestors)

1.39.1.8 Private predicates
...........................

1.39.1.9 ‘port_/5’
..................

Internal table of collected port profiling data.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘port_(Port,Entity,Functor,Arity,Count)’
     `Mode and number of proofs:'
          ‘port_(?atom,?entity_identifier,?atom,?integer,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.39.1.10 Operators
...................

(none)

1.40 ‘queues’
=============

`object'

1.40.1 ‘queue’
--------------

Queue predicates implemented using difference lists.

     `Author:' Paulo Moura
     `Version:' 1.2
     `Date:' 2019/5/23

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ queuep.
     `Extends:'
          ‘public’ compound.

     `Remarks:'
          (none)

1.40.1.1 Public predicates
..........................

(see entity ancestors)

1.40.1.2 Protected predicates
.............................

(see entity ancestors)

1.40.1.3 Private predicates
...........................

(see entity ancestors)

1.40.1.4 Operators
..................

(none)

`protocol'

1.40.2 ‘queuep’
---------------

Queue protocol.

     `Author:' Paulo Moura
     `Version:' 1.2
     `Date:' 2019/5/23

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.40.2.1 Public predicates
..........................

1.40.2.2 ‘empty/1’
..................

True if the queue is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘empty(Queue)’
     `Mode and number of proofs:'
          ‘empty(@queue)’ - ‘zero_or_one’

__________________________________________________________________

1.40.2.3 ‘head/2’
.................

Unifies Head with the first element of the queue.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘head(Queue,Head)’
     `Mode and number of proofs:'
          ‘head(+queue,?term)’ - ‘zero_or_one’

__________________________________________________________________

1.40.2.4 ‘join/3’
.................

Adds the new element at the end of the queue.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘join(Element,Queue,NewQueue)’
     `Mode and number of proofs:'
          ‘join(@term,+queue,-queue)’ - ‘zero_or_one’

__________________________________________________________________

1.40.2.5 ‘join_all/3’
.....................

Adds the new elements at the end of the queue.  The elements are added
in the same order that they appear in the list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘join_all(List,Queue,NewQueue)’
     `Mode and number of proofs:'
          ‘join_all(+list,+queue,-queue)’ - ‘zero_or_one’

__________________________________________________________________

1.40.2.6 ‘jump/3’
.................

Adds the new element at the front of the queue.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘jump(Element,Queue,NewQueue)’
     `Mode and number of proofs:'
          ‘jump(@term,+queue,-queue)’ - ‘zero_or_one’

__________________________________________________________________

1.40.2.7 ‘jump_all/3’
.....................

Adds the new elements at the front of the queue.  The elements are added
in the same order that they appear in the list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘jump_all(Elements,Queue,NewQueue)’
     `Mode and number of proofs:'
          ‘jump_all(+list,+queue,-queue)’ - ‘zero_or_one’

__________________________________________________________________

1.40.2.8 ‘length/2’
...................

Queue length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘length(Queue,Length)’
     `Mode and number of proofs:'
          ‘length(+heap,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.40.2.9 ‘serve/3’
..................

Removes the first element of the queue for service.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘serve(Queue,Head,NewQueue)’
     `Mode and number of proofs:'
          ‘serve(+queue,?term,-queue)’ - ‘zero_or_one’

__________________________________________________________________

1.40.2.10 ‘as_list/2’
.....................

Converts a queue to a list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘as_list(Queue,List)’
     `Mode and number of proofs:'
          ‘as_list(+queue,-list)’ - ‘one’

__________________________________________________________________

1.40.2.11 Protected predicates
..............................

(none)

1.40.2.12 Private predicates
............................

(none)

1.40.2.13 Operators
...................

(none)

See also
........

See queue.

1.41 ‘random’
=============

`object'

1.41.1 ‘backend_random’
-----------------------

Random number generator predicates using the backend Prolog compiler
built-in random generator.

     `Author:' Paulo Moura
     `Version:' 1.5
     `Date:' 2019/3/7

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ randomp.
     `Uses:'
          See list.

     `Remarks:'

        - `Implementation:' The backend Prolog compiler built-in random
          generator is only used for the basic ‘random/1’, ‘get_seed/1’,
          and ‘set_seed/1’ predicates.

        - `Portability:' B-Prolog, CxProlog, ECLiPSe, JIProlog, Lean
          Prolog, Qu-Prolog, Quintus Prolog do not provide
          implementations for the ‘get_seed/1’ and ‘set_seed/1’
          predicates and calling these predicates simply succeed without
          performing any action.

1.41.1.1 Public predicates
..........................

(see entity ancestors)

1.41.1.2 Protected predicates
.............................

(see entity ancestors)

1.41.1.3 Private predicates
...........................

(see entity ancestors)

1.41.1.4 Operators
..................

(none)

See also
........

See random, fast_random.

`object'

1.41.2 ‘fast_random’
--------------------

Fast portable random number generator predicates.  Core predicates
originally written by Richard O’Keefe.  Based on algorithm AS 183 from
Applied Statistics.

     `Author:' Paulo Moura
     `Version:' 2.5
     `Date:' 2018/8/14

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ randomp.
     `Uses:'
          See list.

     `Remarks:'

        - `Single random number generator:' This object provides a
          faster version of the ‘random’ library object but does not
          support being extended to define multiple random number
          generators.

1.41.2.1 Public predicates
..........................

1.41.2.2 ‘reset_seed/0’
.......................

Resets the random generator seed to its default value.  Use ‘get_seed/1’
and ‘set_seed/1’ instead if you need reproducibility.

     `Compilation flags:'
          ‘static, synchronized’

     `Mode and number of proofs:'
          ‘reset_seed’ - ‘one’

__________________________________________________________________

1.41.2.3 ‘randomize/1’
......................

Randomizes the random generator using a positive integer to compute a
new seed.

     `Compilation flags:'
          ‘static, synchronized’

     `Template:'
          ‘randomize(Seed)’
     `Mode and number of proofs:'
          ‘randomize(+positive_integer)’ - ‘one’

__________________________________________________________________

1.41.2.4 Protected predicates
.............................

(see entity ancestors)

1.41.2.5 Private predicates
...........................

1.41.2.6 ‘seed_/3’
..................

Stores the current random generator seed values.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘seed_(S0,S1,S2)’
     `Mode and number of proofs:'
          ‘seed_(-integer,-integer,-integer)’ - ‘one’

__________________________________________________________________

1.41.2.7 Operators
..................

(none)

See also
........

See random, backend_random.

`object'

1.41.3 ‘random’
---------------

Portable random number generator predicates.  Core predicates originally
written by Richard O’Keefe.  Based on algorithm AS 183 from Applied
Statistics.

     `Author:' Paulo Moura
     `Version:' 2.5
     `Date:' 2018/8/14

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ randomp.
     `Uses:'
          See list.

     `Remarks:'

        - `Multiple random number generators:' To define multiple random
          number generators, simply extend this object.  The derived
          objects must send to self the ‘reset_seed/0’ message.

1.41.3.1 Public predicates
..........................

1.41.3.2 ‘reset_seed/0’
.......................

Resets the random generator seed to its default value.  Use ‘get_seed/1’
and ‘set_seed/1’ instead if you need reproducibility.

     `Compilation flags:'
          ‘static, synchronized’

     `Mode and number of proofs:'
          ‘reset_seed’ - ‘one’

__________________________________________________________________

1.41.3.3 ‘randomize/1’
......................

Randomizes the random generator using a positive integer to compute a
new seed.

     `Compilation flags:'
          ‘static, synchronized’

     `Template:'
          ‘randomize(Seed)’
     `Mode and number of proofs:'
          ‘randomize(+positive_integer)’ - ‘one’

__________________________________________________________________

1.41.3.4 Protected predicates
.............................

(see entity ancestors)

1.41.3.5 Private predicates
...........................

1.41.3.6 ‘seed_/3’
..................

Stores the current random generator seed values.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘seed_(S0,S1,S2)’
     `Mode and number of proofs:'
          ‘seed_(-integer,-integer,-integer)’ - ‘one’

__________________________________________________________________

1.41.3.7 Operators
..................

(none)

See also
........

See fast_random, backend_random.

`protocol'

1.41.4 ‘randomp’
----------------

Random number generator protocol.

     `Author:' Paulo Moura
     `Version:' 2.4
     `Date:' 2018/8/14

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.41.4.1 Public predicates
..........................

1.41.4.2 ‘random/1’
...................

Returns a new random float value in the interval ‘[0.0, 1.0[’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘random(Random)’
     `Mode and number of proofs:'
          ‘random(-float)’ - ‘one’

__________________________________________________________________

1.41.4.3 ‘between/3’
....................

Returns a new random integer in the interval ‘[Lower, Upper]’.  Fails if
‘Lower’ or ‘Upper’ are not integers or if ‘Lower > Upper’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘between(Lower,Upper,Random)’
     `Mode and number of proofs:'
          ‘between(+integer,+integer,-integer)’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.4 ‘member/2’
...................

Returns a random member of a list.  Fails if the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘member(Random,List)’
     `Mode and number of proofs:'
          ‘member(-term,+list(term))’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.5 ‘select/3’
...................

Returns a random member of a list and the rest of the list.  Fails if
the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘select(Random,List,Rest)’
     `Mode and number of proofs:'
          ‘select(-term,+list(term),-list(term))’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.6 ‘permutation/2’
........................

Returns a random permutation of a list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘permutation(List,Permutation)’
     `Mode and number of proofs:'
          ‘permutation(+list,-list)’ - ‘one’

__________________________________________________________________

1.41.4.7 ‘sequence/4’
.....................

Returns list of random integers of given length in random order in
interval ‘[Lower, Upper]’.  Fails if ‘Length’, ‘Lower’, or ‘Upper’ are
not integers or if ‘Lower > Upper’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sequence(Length,Lower,Upper,List)’
     `Mode and number of proofs:'
          ‘sequence(+integer,+integer,+integer,-list(integer))’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.8 ‘set/4’
................

Returns ordered set of random integers of given size in interval
‘[Lower, Upper]’.  Fails if ‘Length’, ‘Lower’, or ‘Upper’ are not
integers, if ‘Lower > Upper’, or if ‘Length > Upper - Lower + 1’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set(Length,Lower,Upper,Set)’
     `Mode and number of proofs:'
          ‘set(+integer,+integer,+integer,-list(integer))’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.9 ‘random/3’
...................

Returns a new random value in the interval ‘[Lower, Upper[’.  Fails if
‘Lower > Upper’.  Deprecated.  Use ‘between/3’ for integers.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘random(Lower,Upper,Random)’
     `Mode and number of proofs:'
          ‘random(+integer,+integer,-integer)’ - ‘zero_or_one’
          ‘random(+float,+float,-float)’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.10 ‘randseq/4’
.....................

Returns list of random values of given length in random order in
interval ‘[Lower, Upper[’.  Fails if ‘Lower > Upper’ or if the arguments
are neither integers or floats.  Deprecated.  Use ‘sequence/4’ for
integers.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘randseq(Length,Lower,Upper,List)’
     `Mode and number of proofs:'
          ‘randseq(+integer,+integer,+integer,-list(integer))’ - ‘zero_or_one’
          ‘randseq(+integer,+float,+float,-list(float))’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.11 ‘randset/4’
.....................

Returns ordered set of random values of given size in interval ‘[Lower,
Upper[’.  Fails if the arguments are neither integers or floats, ‘Lower
> Upper’, or ‘Length > Upper - Lower’ when arguments are integers.
Deprecated.  Use ‘set/4’ for integers.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘randset(Length,Lower,Upper,Set)’
     `Mode and number of proofs:'
          ‘randset(+integer,+integer,+integer,-list(integer))’ - ‘zero_or_one’
          ‘randset(+integer,+float,+float,-list(float))’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.12 ‘get_seed/1’
......................

Gets the current random generator seed.  Seed should be regarded as an
opaque ground term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘get_seed(Seed)’
     `Mode and number of proofs:'
          ‘get_seed(-ground)’ - ‘one’

__________________________________________________________________

1.41.4.13 ‘set_seed/1’
......................

Sets the random generator seed to a given value returned by calling the
‘get_seed/1’ predicate.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘set_seed(Seed)’
     `Mode and number of proofs:'
          ‘set_seed(+ground)’ - ‘one’

__________________________________________________________________

1.41.4.14 ‘maybe/0’
...................

Succeeds or fails with equal probability.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘maybe’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.15 ‘maybe/1’
...................

Succeeds with probability ‘Probability’ or fails with probability ‘1 -
Probability’.  Fails if ‘Probability’ is not a float or is outside the
interval ‘[0.0, 1.0]’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘maybe(Probability)’
     `Mode and number of proofs:'
          ‘maybe(+probability)’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.16 ‘maybe/2’
...................

Succeeds with probability ‘K/N’ where ‘K’ and ‘N’ are integers
satisfying the equation ‘0 =< K =< N’.  Fails otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘maybe(K,N)’
     `Mode and number of proofs:'
          ‘maybe(+non_negative_integer,+non_negative_integer)’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.17 ‘maybe_call/1’
........................

Calls a goal or fails without calling it with equal probability.  When
the goal is called, it determines if this predicate succeeds once or
fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘maybe_call(Goal)’
     `Meta-predicate template:'
          ‘maybe_call(0)’
     `Mode and number of proofs:'
          ‘maybe_call(+callable)’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.18 ‘maybe_call/2’
........................

Calls a goal or fails without calling it with probability Probability.
When the goal is called, it determines if this predicate succeeds once
or fails.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘maybe_call(Probability,Goal)’
     `Meta-predicate template:'
          ‘maybe_call(*,0)’
     `Mode and number of proofs:'
          ‘maybe_call(+probability,+callable)’ - ‘zero_or_one’

__________________________________________________________________

1.41.4.19 Protected predicates
..............................

(none)

1.41.4.20 Private predicates
............................

(none)

1.41.4.21 Operators
...................

(none)

See also
........

See random, backend_random, fast_random.

1.42 ‘reader’
=============

`object'

1.42.1 ‘reader’
---------------

Predicates for reading text file and text stream contents to lists of
terms, characters, or character codes.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2019/2/26

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.42.1.1 Public predicates
..........................

1.42.1.2 ‘file_to_codes/2’
..........................

Reads a text file into a list of character codes.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_to_codes(File,Codes)’
     `Mode and number of proofs:'
          ‘file_to_codes(+atom,-list(character_code))’ - ‘one’

__________________________________________________________________

1.42.1.3 ‘file_to_codes/3’
..........................

Reads a text file into a list of character codes.  The list is
terminated by the given tail.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_to_codes(File,Codes,Tail)’
     `Mode and number of proofs:'
          ‘file_to_codes(+atom,-list(character_code),@term)’ - ‘one’

__________________________________________________________________

1.42.1.4 ‘file_to_chars/2’
..........................

Reads a text file into a list of characters.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_to_chars(File,Chars)’
     `Mode and number of proofs:'
          ‘file_to_chars(+atom,-list(character))’ - ‘one’

__________________________________________________________________

1.42.1.5 ‘file_to_chars/3’
..........................

Reads a text file into a list of characters.  The list is terminated by
the given tail.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_to_chars(File,Chars,Tail)’
     `Mode and number of proofs:'
          ‘file_to_chars(+atom,-list(character),@term)’ - ‘one’

__________________________________________________________________

1.42.1.6 ‘file_to_terms/2’
..........................

Reads a text file into a list of terms.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_to_terms(File,Terms)’
     `Mode and number of proofs:'
          ‘file_to_terms(+atom,-list(term))’ - ‘one’

__________________________________________________________________

1.42.1.7 ‘file_to_terms/3’
..........................

Reads a text file into a list of terms.  The list is terminated by the
given tail.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file_to_terms(File,Terms,Tail)’
     `Mode and number of proofs:'
          ‘file_to_terms(+atom,-list(term),@term)’ - ‘one’

__________________________________________________________________

1.42.1.8 ‘stream_to_codes/2’
............................

Reads a text stream into a list of character codes.  Does not close the
stream.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘stream_to_codes(Stream,Codes)’
     `Mode and number of proofs:'
          ‘stream_to_codes(+stream_or_alias,-list(character_code))’ - ‘one’

__________________________________________________________________

1.42.1.9 ‘stream_to_codes/3’
............................

Reads a text stream into a list of character codes.  Does not close the
stream.  The list is terminated by the given tail.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘stream_to_codes(Stream,Codes,Tail)’
     `Mode and number of proofs:'
          ‘stream_to_codes(+stream_or_alias,-list(character_code),@term)’ - ‘one’

__________________________________________________________________

1.42.1.10 ‘stream_to_chars/2’
.............................

Reads a text stream into a list of characters.  Does not close the
stream.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘stream_to_chars(Stream,Chars)’
     `Mode and number of proofs:'
          ‘stream_to_chars(+stream_or_alias,-list(char))’ - ‘one’

__________________________________________________________________

1.42.1.11 ‘stream_to_chars/3’
.............................

Reads a text stream into a list of characters.  Does not close the
stream.  The list is terminated by the given tail.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘stream_to_chars(Stream,Chars,Tail)’
     `Mode and number of proofs:'
          ‘stream_to_chars(+stream_or_alias,-list(char),@term)’ - ‘one’

__________________________________________________________________

1.42.1.12 ‘stream_to_terms/2’
.............................

Reads a text stream into a list of terms.  Does not close the stream.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘stream_to_terms(Stream,Terms)’
     `Mode and number of proofs:'
          ‘stream_to_terms(+stream_or_alias,-list(term))’ - ‘one’

__________________________________________________________________

1.42.1.13 ‘stream_to_terms/3’
.............................

Reads a text stream into a list of terms.  Does not close the stream.
The list is terminated by the given tail.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘stream_to_terms(Stream,Terms,Tail)’
     `Mode and number of proofs:'
          ‘stream_to_terms(+stream_or_alias,-list(term),@term)’ - ‘one’

__________________________________________________________________

1.42.1.14 ‘line_to_codes/2’
...........................

Reads a line from a text stream into a list of codes.  Discards the
end-of-line codes.  Unifies ‘Codes’ with ‘end_of_file’ at the end of the
file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘line_to_codes(Stream,Codes)’
     `Mode and number of proofs:'
          ‘line_to_codes(+stream_or_alias,-list(character_code))’ - ‘zero_or_one’

__________________________________________________________________

1.42.1.15 ‘line_to_codes/3’
...........................

Reads a line from a text stream into a list of codes.  Keeps the
end-of-line marker normalized to the line feed control character.  The
list is terminated by the given tail, which is unified with the empty
list at the end of the file.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘line_to_codes(Stream,Codes,Tail)’
     `Mode and number of proofs:'
          ‘line_to_codes(+stream_or_alias,-list(character_code),?term)’ - ‘zero_or_one’

__________________________________________________________________

1.42.1.16 Protected predicates
..............................

(none)

1.42.1.17 Private predicates
............................

(none)

1.42.1.18 Operators
...................

(none)

1.43 ‘redis’
============

`object'

1.43.1 ‘redis’
--------------

Redis client.  Inspired by Sean Charles GNU Prolog Redis client.

     `Author:' Paulo Moura
     `Version:' 0.3
     `Date:' 2017/6/29

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;message_tokens//2.
     `Uses:'
          See list.
          logtalk.

     `Remarks:'

        - `Command representation:' Use the Redis command name as the
          functor of a compound term where the arguments are the command
          arguments.

        - `Valid arguments:' Atoms, integers, and floats.  Always use
          atoms instead of double-quoted “strings”.  This helps
          portability by not depending on the value of the
          ‘double_quotes’ flag.

1.43.1.1 Public predicates
..........................

1.43.1.2 ‘connect/1’
....................

Connect to a Redis server running on localhost using the default 6379
port.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘connect(Connection)’
     `Mode and number of proofs:'
          ‘connect(--ground)’ - ‘one’

__________________________________________________________________

1.43.1.3 ‘connect/3’
....................

Connect to a Redis server running on the given host and port.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘connect(Host,Port,Connection)’
     `Mode and number of proofs:'
          ‘connect(+atom,+integer,--ground)’ - ‘one’

__________________________________________________________________

1.43.1.4 ‘disconnect/1’
.......................

Disconnect from a Redis server.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘disconnect(Connection)’
     `Mode and number of proofs:'
          ‘disconnect(++ground)’ - ‘one’

__________________________________________________________________

1.43.1.5 ‘send/3’
.................

Sends a request to the a Redis server and returns its reply

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘send(Connection,Request,Reply)’
     `Mode and number of proofs:'
          ‘send(++ground,++callable,--callable)’ - ‘one’

__________________________________________________________________

1.43.1.6 ‘console/1’
....................

Sends a request to a Redis server running on localhost at the default
6379 port and prints the reply.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘console(Request)’
     `Mode and number of proofs:'
          ‘console(++callable)’ - ‘one’

__________________________________________________________________

1.43.1.7 Protected predicates
.............................

(see entity ancestors)

1.43.1.8 Private predicates
...........................

(see entity ancestors)

1.43.1.9 Operators
..................

(none)

1.44 ‘sets’
===========

`object'

1.44.1 ‘set’
------------

Set predicates implemented using ordered lists.  Uses ‘==/2’ for element
comparison and standard term ordering.

     `Author:' Richard O’Keefe (main predicates); adapted to Logtalk by Paulo Moura.
     `Version:' 1.12
     `Date:' 2019/5/23

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ setp.
     `Extends:'
          ‘public’ compound.
     `Aliases:'
          ‘setp’ ‘size/2’ as ‘length/2’

     `Remarks:'
          (none)

1.44.1.1 Public predicates
..........................

(see entity ancestors)

1.44.1.2 Protected predicates
.............................

(see entity ancestors)

1.44.1.3 Private predicates
...........................

(see entity ancestors)

1.44.1.4 Operators
..................

(none)

See also
........

See set(Type).

`object'

1.44.2 ‘set(Type)’
------------------

Set predicates with elements constrained to a single type.

     `Author:' Paulo Moura
     `Version:' 1.23
     `Date:' 2018/7/11

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ set.

     `Remarks:'
          (none)

1.44.2.1 Public predicates
..........................

(see entity ancestors)

1.44.2.2 Protected predicates
.............................

(see entity ancestors)

1.44.2.3 Private predicates
...........................

(see entity ancestors)

1.44.2.4 Operators
..................

(none)

`protocol'

1.44.3 ‘setp’
-------------

Set protocol.

     `Author:' Paulo Moura
     `Version:' 1.6
     `Date:' 2019/5/23

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.44.3.1 Public predicates
..........................

1.44.3.2 ‘as_set/2’
...................

Returns a set with all unique elements from the given list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘as_set(List,Set)’
     `Mode and number of proofs:'
          ‘as_set(@list,-set)’ - ‘one’

__________________________________________________________________

1.44.3.3 ‘as_list/2’
....................

Returns a list with all elements of the given set.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘as_list(Set,List)’
     `Mode and number of proofs:'
          ‘as_list(@set,-list)’ - ‘one’

__________________________________________________________________

1.44.3.4 ‘delete/3’
...................

Deletes an element from a set returning the set of remaining elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete(Set,Element,Remaining)’
     `Mode and number of proofs:'
          ‘delete(+set,@term,?set)’ - ‘one’

__________________________________________________________________

1.44.3.5 ‘disjoint/2’
.....................

True if the two sets have no element in common.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘disjoint(Set1,Set2)’
     `Mode and number of proofs:'
          ‘disjoint(+set,+set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.6 ‘equal/2’
..................

True if the two sets are equal.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘equal(Set1,Set2)’
     `Mode and number of proofs:'
          ‘equal(+set,+set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.7 ‘empty/1’
..................

True if the set is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘empty(Set)’
     `Mode and number of proofs:'
          ‘empty(+set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.8 ‘insert/3’
...................

Inserts an element in a set, returning the resulting set.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘insert(In,Element,Out)’
     `Mode and number of proofs:'
          ‘insert(+set,+term,?set)’ - ‘one’

__________________________________________________________________

1.44.3.9 ‘insert_all/3’
.......................

Inserts a list of elements in a set, returning the resulting set.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘insert_all(List,In,Out)’
     `Mode and number of proofs:'
          ‘insert_all(+list,+set,?set)’ - ‘one’

__________________________________________________________________

1.44.3.10 ‘intersect/2’
.......................

True if the two sets have at least one element in common.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘intersect(Set1,Set2)’
     `Mode and number of proofs:'
          ‘intersect(+set,+set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.11 ‘intersection/3’
..........................

Returns the intersection of ‘Set1’ and ‘Set2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘intersection(Set1,Set2,Intersection)’
     `Mode and number of proofs:'
          ‘intersection(+set,+set,?set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.12 ‘intersection/4’
..........................

True if ‘Intersection’ is the intersection of ‘Set1’ and ‘Set2’ and
‘Difference’ is the difference between ‘Set2’ and ‘Set1’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘intersection(Set1,Set2,Intersection,Difference)’
     `Mode and number of proofs:'
          ‘intersection(+set,+set,?set,?set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.13 ‘size/2’
..................

Number of set elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘size(Set,Size)’
     `Mode and number of proofs:'
          ‘size(+set,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.14 ‘member/2’
....................

‘Element’ is a member of set ‘Set’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘member(Element,Set)’
     `Mode and number of proofs:'
          ‘member(+term,+set)’ - ‘zero_or_one’
          ‘member(-term,+set)’ - ‘zero_or_more’

__________________________________________________________________

1.44.3.15 ‘memberchk/2’
.......................

Checks if a term is a member of a set.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘memberchk(Element,Set)’
     `Mode and number of proofs:'
          ‘memberchk(+term,+set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.16 ‘powerset/2’
......................

Returns the power set of a set, represented as a list of sets.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘powerset(Set,Powerset)’
     `Mode and number of proofs:'
          ‘powerset(+set,-list)’ - ‘one’

__________________________________________________________________

1.44.3.17 ‘product/3’
.....................

Returns the cartesian product of two sets.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘product(Set1,Set2,Product)’
     `Mode and number of proofs:'
          ‘product(+set,+set,-set)’ - ‘one’

__________________________________________________________________

1.44.3.18 ‘select/3’
....................

Selects an element from a set, returning the set of remaining elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘select(Element,Set,Remaining)’
     `Mode and number of proofs:'
          ‘select(?term,+set,?set)’ - ‘zero_or_more’

__________________________________________________________________

1.44.3.19 ‘selectchk/3’
.......................

Checks that an element can be selected from a set, returning the set of
remaining elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘selectchk(Element,Set,Remaining)’
     `Mode and number of proofs:'
          ‘selectchk(?term,+set,?set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.20 ‘subset/2’
....................

True if ‘Subset’ is a subset of ‘Set’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subset(Subset,Set)’
     `Mode and number of proofs:'
          ‘subset(+set,+set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.21 ‘subtract/3’
......................

True when ‘Difference’ contains all and only the elements of ‘Set1’
which are not also in ‘Set2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subtract(Set1,Set2,Difference)’
     `Mode and number of proofs:'
          ‘subtract(+set,+set,?set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.22 ‘symdiff/3’
.....................

True if ‘Difference’ is the symmetric difference of ‘Set1’ and ‘Set2’,
containing all elements that are not in the sets intersection.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘symdiff(Set1,Set2,Difference)’
     `Mode and number of proofs:'
          ‘symdiff(+set,+set,?set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.23 ‘union/3’
...................

True if ‘Union’ is the union of ‘Set1’ and ‘Set2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘union(Set1,Set2,Union)’
     `Mode and number of proofs:'
          ‘union(+set,+set,?set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.24 ‘union/4’
...................

True if ‘Union’ is the union of ‘Set1’ and ‘Set2’ and ‘Difference’ is
the difference between ‘Set2’ and ‘Set1’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘union(Set1,Set2,Union,Difference)’
     `Mode and number of proofs:'
          ‘union(+set,+set,?set,?set)’ - ‘zero_or_one’

__________________________________________________________________

1.44.3.25 Protected predicates
..............................

(none)

1.44.3.26 Private predicates
............................

(none)

1.44.3.27 Operators
...................

(none)

See also
........

See set, set(Type).

1.45 ‘statistics’
=================

`object'

1.45.1 ‘population’
-------------------

Statistical population represented as a list of numbers.

     `Author:' Paulo Moura
     `Version:' 1.2
     `Date:' 2013/4/19

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ statistics.

     `Remarks:'
          (none)

1.45.1.1 Public predicates
..........................

(see entity ancestors)

1.45.1.2 Protected predicates
.............................

(see entity ancestors)

1.45.1.3 Private predicates
...........................

(see entity ancestors)

1.45.1.4 Operators
..................

(none)

See also
........

See sample.

`object'

1.45.2 ‘sample’
---------------

Statistical sample represented as a list of numbers.

     `Author:' Paulo Moura
     `Version:' 1.3
     `Date:' 2013/4/19

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ statistics.

     `Remarks:'
          (none)

1.45.2.1 Public predicates
..........................

(see entity ancestors)

1.45.2.2 Protected predicates
.............................

(see entity ancestors)

1.45.2.3 Private predicates
...........................

(see entity ancestors)

1.45.2.4 Operators
..................

(none)

See also
........

See population.

`category'

1.45.3 ‘statistics’
-------------------

Statistical calculations over a list of numbers.

     `Author:' Paulo Moura
     `Version:' 1.5
     `Date:' 2019/5/23

     `Compilation flags:'
          ‘static’

     `Implements:'
          ‘public’ statisticsp.

     `Remarks:'
          (none)

1.45.3.1 Public predicates
..........................

(see entity ancestors)

1.45.3.2 Protected predicates
.............................

(see entity ancestors)

1.45.3.3 Private predicates
...........................

(see entity ancestors)

1.45.3.4 Operators
..................

(none)

`protocol'

1.45.4 ‘statisticsp’
--------------------

Statistical calculations over a list of numbers protocol.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2017/10/3

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.45.4.1 Public predicates
..........................

1.45.4.2 ‘product/2’
....................

Calculates the product of all list numbers.  Fails if the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘product(List,Product)’
     `Mode and number of proofs:'
          ‘product(+list(number),-number)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.3 ‘sum/2’
................

Calculates the sum of all list numbers.  Fails if the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sum(List,Sum)’
     `Mode and number of proofs:'
          ‘sum(+list(number),-number)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.4 ‘max/2’
................

Determines the list maximum value in a list of numbers.  Fails if the
list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘max(List,Maximum)’
     `Mode and number of proofs:'
          ‘max(+list,-number)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.5 ‘min/2’
................

Determines the minimum value in a list of numbers.  Fails if the list is
empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘min(List,Minimum)’
     `Mode and number of proofs:'
          ‘min(+list,-number)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.6 ‘range/2’
..................

Range is the length of the smallest interval which contains all the
numbers in List.  Fails if the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘range(List,Range)’
     `Mode and number of proofs:'
          ‘range(+list,-number)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.7 ‘arithmetic_mean/2’
............................

Calculates the arithmetic mean of a list of numbers.  Fails if the list
is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘arithmetic_mean(List,Mean)’
     `Mode and number of proofs:'
          ‘arithmetic_mean(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.8 ‘geometric_mean/2’
...........................

Calculates the geometric mean of a list of numbers.  Fails if the list
is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘geometric_mean(List,Mean)’
     `Mode and number of proofs:'
          ‘geometric_mean(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.9 ‘harmonic_mean/2’
..........................

Calculates the harmonic mean of a list of numbers.  Fails if the list is
empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘harmonic_mean(List,Mean)’
     `Mode and number of proofs:'
          ‘harmonic_mean(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.10 ‘median/2’
....................

Calculates the median of a list of numbers.  Fails if the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘median(List,Median)’
     `Mode and number of proofs:'
          ‘median(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.11 ‘average_deviation/3’
...............................

Calculates the average absolute deviation of a list of numbers given a
central tendency (e.g.  mean, median, or mode).  Fails if the list is
empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘average_deviation(List,CentralTendency,Deviation)’
     `Mode and number of proofs:'
          ‘average_deviation(+list(number),+float,-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.12 ‘mean_deviation/2’
............................

Calculates the mean absolute deviation of a list of numbers.  Fails if
the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘mean_deviation(List,Deviation)’
     `Mode and number of proofs:'
          ‘mean_deviation(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.13 ‘median_deviation/2’
..............................

Calculates the median absolute deviation of a list of numbers.  Fails if
the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘median_deviation(List,Deviation)’
     `Mode and number of proofs:'
          ‘median_deviation(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.14 ‘standard_deviation/2’
................................

Calculates the standard deviation of a list of numbers.  Fails if the
list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘standard_deviation(List,Deviation)’
     `Mode and number of proofs:'
          ‘standard_deviation(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.15 ‘coefficient_of_variation/2’
......................................

Calculates the coefficient of variation of a list of numbers.  Fails if
the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘coefficient_of_variation(List,Coefficient)’
     `Mode and number of proofs:'
          ‘coefficient_of_variation(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.16 ‘relative_standard_deviation/2’
.........................................

Calculates the relative standard deviation of a list of numbers.  Fails
if the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘relative_standard_deviation(List,Percentage)’
     `Mode and number of proofs:'
          ‘relative_standard_deviation(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.17 ‘skewness/2’
......................

Calculates the (moment) skewness of a list of numbers.  Fails if the
list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘skewness(List,Skewness)’
     `Mode and number of proofs:'
          ‘skewness(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.18 ‘kurtosis/2’
......................

Calculates the (excess) kurtosis of a list of numbers.  Fails if the
list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘kurtosis(List,Kurtosis)’
     `Mode and number of proofs:'
          ‘kurtosis(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.19 ‘variance/2’
......................

Calculates the unbiased variance of a list of numbers.  Fails if the
list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘variance(List,Variance)’
     `Mode and number of proofs:'
          ‘variance(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.20 ‘z_normalization/2’
.............................

Normalizes a list of number such that for the resulting list the mean of
is close to zero and the standard deviation is close to 1.  Fails if the
list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘z_normalization(List,NormalizedList)’
     `Mode and number of proofs:'
          ‘z_normalization(+list(number),-list(float))’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.21 ‘valid/1’
...................

Term is a closed list of numbers.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘valid(Term)’
     `Mode and number of proofs:'
          ‘valid(@nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.45.4.22 Protected predicates
..............................

(none)

1.45.4.23 Private predicates
............................

1.45.4.24 ‘arithmetic_mean/5’
.............................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.45.4.25 ‘squares_and_cubes/6’
...............................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.45.4.26 ‘squares_and_hypers/6’
................................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.45.4.27 ‘variance/6’
......................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.45.4.28 Operators
...................

(none)

See also
........

See statistics, sample, population.

1.46 ‘timeout’
==============

`object'

1.46.1 ‘timeout’
----------------

Call goal with a time limit predicates.

     `Author:' Paulo Moura
     `Version:' 0.3
     `Date:' 2019/5/7

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'

        - `Supported backend Prolog systems:' B-Prolog, ECLiPSe, SICStus
          Prolog, SWI-Prolog, and YAP.

1.46.1.1 Public predicates
..........................

1.46.1.2 ‘call_with_timeout/2’
..............................

Calls a goal deterministically with the given time limit (expressed in
seconds).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘call_with_timeout(Goal,Timeout)’
     `Meta-predicate template:'
          ‘call_with_timeout(0,*)’
     `Mode and number of proofs:'
          ‘call_with_timeout(+callable,+positive_number)’ - ‘zero_or_one’

     `Exceptions:'
          Goal does not complete in the allowed time:
               ‘timeout(Goal)’

__________________________________________________________________

1.46.1.3 Protected predicates
.............................

(none)

1.46.1.4 Private predicates
...........................

(none)

1.46.1.5 Operators
..................

(none)

1.47 ‘tutor’
============

`object'

1.47.1 ‘tutor’
--------------

This object adds explanations and suggestions to selected compiler
warning and error messages.

     `Author:' Paulo Moura
     `Version:' 0.27
     `Date:' 2019/9/17

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Provides:'
          See logtalk;;message_hook/4.
     `Uses:'
          See list.
          logtalk.

     `Remarks:'

        - `Usage:' Simply load this object at startup using the goal
          ‘logtalk_load(tutor(loader))’.

1.47.1.1 Public predicates
..........................

(see entity ancestors)

1.47.1.2 Protected predicates
.............................

(see entity ancestors)

1.47.1.3 Private predicates
...........................

(see entity ancestors)

1.47.1.4 Operators
..................

(none)

1.48 ‘types’
============

`object'

1.48.1 ‘atom’
-------------

Atom data type predicates.

     `Author:' Paulo Moura
     `Version:' 1.7
     `Date:' 2019/1/8

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ atomic.

     `Remarks:'
          (none)

1.48.1.1 Public predicates
..........................

1.48.1.2 ‘replace_sub_atom/4’
.............................

Replaces all occurrences of ‘Old’ by ‘New’ in ‘Input’ returning
‘Output’.  Returns ‘Input’ if ‘Old’ is the empty atom.  Fails when
‘Output’ does not unify with the resulting atom.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘replace_sub_atom(Old,New,Input,Output)’
     `Mode and number of proofs:'
          ‘replace_sub_atom(+atom,+atom,+atom,?atom)’ - ‘zero_or_one’

__________________________________________________________________

1.48.1.3 ‘split/3’
..................

Splits an atom at a given delimiter into a list of sub-atoms.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘split(Atom,Delimiter,SubAtoms)’
     `Mode and number of proofs:'
          ‘split(+atom,+atom,-list(atom))’ - ‘one’

__________________________________________________________________

1.48.1.4 Protected predicates
.............................

(see entity ancestors)

1.48.1.5 Private predicates
...........................

(see entity ancestors)

1.48.1.6 Operators
..................

(none)

`object'

1.48.2 ‘atomic’
---------------

Atomic data type predicates.

     `Author:' Paulo Moura
     `Version:' 1.3
     `Date:' 2018/7/11

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ term.

     `Remarks:'
          (none)

1.48.2.1 Public predicates
..........................

(see entity ancestors)

1.48.2.2 Protected predicates
.............................

(see entity ancestors)

1.48.2.3 Private predicates
...........................

(see entity ancestors)

1.48.2.4 Operators
..................

(none)

`object'

1.48.3 ‘callable’
-----------------

Callable term type predicates.

     `Author:' Paulo Moura
     `Version:' 1.4
     `Date:' 2018/7/11

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ term.

     `Remarks:'
          (none)

1.48.3.1 Public predicates
..........................

(see entity ancestors)

1.48.3.2 Protected predicates
.............................

(see entity ancestors)

1.48.3.3 Private predicates
...........................

(see entity ancestors)

1.48.3.4 Operators
..................

(none)

`object'

1.48.4 ‘character’
------------------

Character predicates (most of them assume an ASCII representation).

     `Author:' Paulo Moura
     `Version:' 1.9
     `Date:' 2019/6/29

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ characterp.
     `Extends:'
          ‘public’ atom.

     `Remarks:'
          (none)

1.48.4.1 Public predicates
..........................

(see entity ancestors)

1.48.4.2 Protected predicates
.............................

(see entity ancestors)

1.48.4.3 Private predicates
...........................

(see entity ancestors)

1.48.4.4 Operators
..................

(none)

`protocol'

1.48.5 ‘characterp’
-------------------

Character protocol.

     `Author:' Paulo Moura
     `Version:' 1.3
     `Date:' 2019/6/29

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.48.5.1 Public predicates
..........................

1.48.5.2 ‘is_ascii/1’
.....................

True if the argument is an ASCII character.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_ascii(Char)’
     `Mode and number of proofs:'
          ‘is_ascii(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.3 ‘is_alphanumeric/1’
............................

True if the argument is an alphanumeric character.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_alphanumeric(Char)’
     `Mode and number of proofs:'
          ‘is_alphanumeric(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.4 ‘is_alpha/1’
.....................

True if the argument is a letter or an underscore.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_alpha(Char)’
     `Mode and number of proofs:'
          ‘is_alpha(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.5 ‘is_letter/1’
......................

True if the argument is a letter.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_letter(Char)’
     `Mode and number of proofs:'
          ‘is_letter(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.6 ‘is_bin_digit/1’
.........................

True if the argument is a binary digit.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_bin_digit(Char)’
     `Mode and number of proofs:'
          ‘is_bin_digit(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.7 ‘is_octal_digit/1’
...........................

True if the argument is an octal digit.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_octal_digit(Char)’
     `Mode and number of proofs:'
          ‘is_octal_digit(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.8 ‘is_dec_digit/1’
.........................

True if the argument is a decimal digit.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_dec_digit(Char)’
     `Mode and number of proofs:'
          ‘is_dec_digit(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.9 ‘is_hex_digit/1’
.........................

True if the argument is an hexadecimal digit.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_hex_digit(Char)’
     `Mode and number of proofs:'
          ‘is_hex_digit(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.10 ‘is_lower_case/1’
...........................

True if the argument is a lower case letter.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_lower_case(Char)’
     `Mode and number of proofs:'
          ‘is_lower_case(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.11 ‘is_upper_case/1’
...........................

True if the argument is a upper case letter.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_upper_case(Char)’
     `Mode and number of proofs:'
          ‘is_upper_case(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.12 ‘is_vowel/1’
......................

True if the argument is a vowel.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_vowel(Char)’
     `Mode and number of proofs:'
          ‘is_vowel(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.13 ‘is_white_space/1’
............................

True if the argument is a white space character (a space or a tab)
inside a line of characters.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_white_space(Char)’
     `Mode and number of proofs:'
          ‘is_white_space(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.14 ‘is_layout/1’
.......................

True if the argument is a layout character.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_layout(Char)’
     `Mode and number of proofs:'
          ‘is_layout(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.15 ‘is_quote/1’
......................

True if the argument is a quote character.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_quote(Char)’
     `Mode and number of proofs:'
          ‘is_quote(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.16 ‘is_punctuation/1’
............................

True if the argument is a sentence punctuation character.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_punctuation(Char)’
     `Mode and number of proofs:'
          ‘is_punctuation(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.17 ‘is_period/1’
.......................

True if the argument is a character that ends a sentence.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_period(Char)’
     `Mode and number of proofs:'
          ‘is_period(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.18 ‘is_control/1’
........................

True if the argument is an ASCII control character.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_control(Char)’
     `Mode and number of proofs:'
          ‘is_control(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.19 ‘is_newline/1’
........................

True if the argument is the ASCII newline character.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_newline(Char)’
     `Mode and number of proofs:'
          ‘is_newline(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.20 ‘is_end_of_line/1’
............................

True if the argument is the ASCII end-of-line character (either a
carriage return or a line feed).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘is_end_of_line(Char)’
     `Mode and number of proofs:'
          ‘is_end_of_line(+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.21 ‘parenthesis/2’
.........................

Recognizes and converts between open and close parenthesis.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘parenthesis(Char1,Char2)’
     `Mode and number of proofs:'
          ‘parenthesis(?char,?char)’ - ‘zero_or_more’
          ‘parenthesis(+char,?char)’ - ‘zero_or_one’
          ‘parenthesis(?char,+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.22 ‘lower_upper/2’
.........................

Recognizes and converts between lower and upper case letters.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘lower_upper(Char1,Char2)’
     `Mode and number of proofs:'
          ‘lower_upper(?char,?char)’ - ‘zero_or_more’
          ‘lower_upper(+char,?char)’ - ‘zero_or_one’
          ‘lower_upper(?char,+char)’ - ‘zero_or_one’

__________________________________________________________________

1.48.5.23 Protected predicates
..............................

(none)

1.48.5.24 Private predicates
............................

(none)

1.48.5.25 Operators
...................

(none)

See also
........

See character.

`protocol'

1.48.6 ‘comparingp’
-------------------

Comparing protocol using overloading of standard operators.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2000/7/24

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.48.6.1 Public predicates
..........................

1.48.6.2 ‘(<)/2’
................

True if ‘Term1’ is less than ‘Term2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Term1<Term2’
     `Mode and number of proofs:'
          ‘+term< +term’ - ‘zero_or_one’

__________________________________________________________________

1.48.6.3 ‘(=<)/2’
.................

True if ‘Term1’ is less or equal than ‘Term2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Term1=<Term2’
     `Mode and number of proofs:'
          ‘+term=< +term’ - ‘zero_or_one’

__________________________________________________________________

1.48.6.4 ‘(>)/2’
................

True if ‘Term1’ is greater than ‘Term2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Term1>Term2’
     `Mode and number of proofs:'
          ‘+term> +term’ - ‘zero_or_one’

__________________________________________________________________

1.48.6.5 ‘(>=)/2’
.................

True if ‘Term1’ is equal or grater than ‘Term2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Term1>=Term2’
     `Mode and number of proofs:'
          ‘+term>= +term’ - ‘zero_or_one’

__________________________________________________________________

1.48.6.6 ‘(=:=)/2’
..................

True if ‘Term1’ is equal to ‘Term2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Term1=:=Term2’
     `Mode and number of proofs:'
          ‘+term=:= +term’ - ‘zero_or_one’

__________________________________________________________________

1.48.6.7 ‘(=\=)/2’
..................

True if ‘Term1’ is not equal to ‘Term2’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘Term1=\=Term2’
     `Mode and number of proofs:'
          ‘+term=\= +term’ - ‘zero_or_one’

__________________________________________________________________

1.48.6.8 Protected predicates
.............................

(none)

1.48.6.9 Private predicates
...........................

(none)

1.48.6.10 Operators
...................

(none)

`object'

1.48.7 ‘compound’
-----------------

Compound data type.

     `Author:' Paulo Moura
     `Version:' 1.3
     `Date:' 2018/7/11

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ term.

     `Remarks:'
          (none)

1.48.7.1 Public predicates
..........................

(see entity ancestors)

1.48.7.2 Protected predicates
.............................

(see entity ancestors)

1.48.7.3 Private predicates
...........................

(see entity ancestors)

1.48.7.4 Operators
..................

(none)

`object'

1.48.8 ‘difflist’
-----------------

Difference list predicates.

     `Author:' Paulo Moura
     `Version:' 1.17
     `Date:' 2019/3/15

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ listp.
     `Extends:'
          ‘public’ compound.
     `Uses:'
          See list.

     `Remarks:'
          (none)

1.48.8.1 Public predicates
..........................

1.48.8.2 ‘add/3’
................

Adds a term to the end of a difference list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘add(Term,DiffList,NewDiffList)’
     `Mode and number of proofs:'
          ‘add(@term,+difference_list,-difference_list)’ - ‘one’

__________________________________________________________________

1.48.8.3 ‘as_list/2’
....................

Converts a difference list to a normal list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘as_list(DiffList,List)’
     `Mode and number of proofs:'
          ‘as_list(+difference_list,-list)’ - ‘one’

__________________________________________________________________

1.48.8.4 Protected predicates
.............................

(see entity ancestors)

1.48.8.5 Private predicates
...........................

(see entity ancestors)

1.48.8.6 Operators
..................

(none)

See also
........

See list, list(Type), numberlist,
varlist.

`object'

1.48.9 ‘float’
--------------

Floating point numbers data type predicates.

     `Author:' Paulo Moura
     `Version:' 1.5
     `Date:' 2018/7/15

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ number.

     `Remarks:'
          (none)

1.48.9.1 Public predicates
..........................

(see entity ancestors)

1.48.9.2 Protected predicates
.............................

(see entity ancestors)

1.48.9.3 Private predicates
...........................

(see entity ancestors)

1.48.9.4 Operators
..................

(none)

`object'

1.48.10 ‘integer’
-----------------

Integer data type predicates.

     `Author:' Paulo Moura
     `Version:' 1.54
     `Date:' 2019/6/4

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ number.

     `Remarks:'

        - `Portability notes:' This object will use the backend Prolog
          system ‘between/3’, ‘plus/3’, and ‘succ/2’ built-in predicates
          when available.

1.48.10.1 Public predicates
...........................

1.48.10.2 ‘between/3’
.....................

Returns integers in the interval defined by the two first arguments.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘between(Lower,Upper,Integer)’
     `Mode and number of proofs:'
          ‘between(+integer,+integer,+integer)’ - ‘zero_or_one’
          ‘between(+integer,+integer,-integer)’ - ‘zero_or_more’

__________________________________________________________________

1.48.10.3 ‘plus/3’
..................

Reversible integer sum.  At least two of the arguments must be
instantiated to integers.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘plus(I,J,Sum)’
     `Mode and number of proofs:'
          ‘plus(+integer,+integer,?integer)’ - ‘zero_or_one’
          ‘plus(+integer,?integer,+integer)’ - ‘zero_or_one’
          ‘plus(?integer,+integer,+integer)’ - ‘zero_or_one’

__________________________________________________________________

1.48.10.4 ‘succ/2’
..................

Successor of a natural number.  At least one of the arguments must be
instantiated to a natural number.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘succ(I,J)’
     `Mode and number of proofs:'
          ‘succ(+integer,?integer)’ - ‘zero_or_one’
          ‘succ(?integer,+integer)’ - ‘zero_or_one’

__________________________________________________________________

1.48.10.5 ‘sequence/3’
......................

Generates a list with the sequence of all integers in the interval
‘[Inf,Sup]’, assuming ‘Inf =< Sup’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sequence(Inf,Sup,List)’
     `Mode and number of proofs:'
          ‘sequence(+integer,+integer,-list(integer))’ - ‘zero_or_one’

__________________________________________________________________

1.48.10.6 Protected predicates
..............................

(see entity ancestors)

1.48.10.7 Private predicates
............................

(see entity ancestors)

1.48.10.8 Operators
...................

(none)

`object'

1.48.11 ‘list’
--------------

List predicates.

     `Author:' Paulo Moura
     `Version:' 2.21
     `Date:' 2019/6/4

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ listp.
     `Extends:'
          ‘public’ compound.

     `Remarks:'

        - `Portability notes:' This object will use the backend Prolog
          system length/2, msort/2, and sort/4 built-in predicates when
          available.

1.48.11.1 Public predicates
...........................

1.48.11.2 ‘as_difflist/2’
.........................

Converts a list to a difference list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘as_difflist(List,Diffist)’
     `Mode and number of proofs:'
          ‘as_difflist(+list,-difference_list)’ - ‘one’

__________________________________________________________________

1.48.11.3 Protected predicates
..............................

(see entity ancestors)

1.48.11.4 Private predicates
............................

(see entity ancestors)

1.48.11.5 Operators
...................

(none)

See also
........

See list(Type), numberlist, varlist,
difflist.

`object'

1.48.12 ‘list(Type)’
--------------------

List predicates with elements constrained to a single type.

     `Author:' Paulo Moura
     `Version:' 1.22
     `Date:' 2018/7/11

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ list.

     `Remarks:'
          (none)

1.48.12.1 Public predicates
...........................

(see entity ancestors)

1.48.12.2 Protected predicates
..............................

(see entity ancestors)

1.48.12.3 Private predicates
............................

(see entity ancestors)

1.48.12.4 Operators
...................

(none)

See also
........

See list, numberlist, varlist, difflist.

`protocol'

1.48.13 ‘listp’
---------------

List protocol.

     `Author:' Paulo Moura
     `Version:' 1.15
     `Date:' 2019/1/3

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.48.13.1 Public predicates
...........................

1.48.13.2 ‘append/2’
....................

Appends all lists in a list of lists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘append(Lists,Concatenation)’
     `Mode and number of proofs:'
          ‘append(+list(list),?list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.3 ‘append/3’
....................

Appends two lists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘append(List1,List2,List)’
     `Mode and number of proofs:'
          ‘append(?list,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.4 ‘delete/3’
....................

Deletes from a list all occurrences of an element returning the list of
remaining elements.  Uses ‘==/2’ for element comparison.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete(List,Element,Remaining)’
     `Mode and number of proofs:'
          ‘delete(@list,@term,?list)’ - ‘one’

__________________________________________________________________

1.48.13.5 ‘delete_matches/3’
............................

Deletes all matching elements from a list, returning the list of
remaining elements.  Uses ‘=/2’ for element comparison.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_matches(List,Element,Remaining)’
     `Mode and number of proofs:'
          ‘delete_matches(@list,@term,?list)’ - ‘one’

__________________________________________________________________

1.48.13.6 ‘empty/1’
...................

True if the argument is an empty list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘empty(List)’
     `Mode and number of proofs:'
          ‘empty(@list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.7 ‘flatten/2’
.....................

Flattens a list of lists into a list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘flatten(List,Flatted)’
     `Mode and number of proofs:'
          ‘flatten(+list,-list)’ - ‘one’

__________________________________________________________________

1.48.13.8 ‘hamming_distance/3’
..............................

Calculates the Hamming distance between two lists (using equality to
compare list elements).  Fails if the two lists are not of the same
length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘hamming_distance(List1,List2,Distance)’
     `Mode and number of proofs:'
          ‘hamming_distance(+list,+list,-integer)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.9 ‘keysort/2’
.....................

Sorts a list of key-value pairs in ascending order.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘keysort(List,Sorted)’
     `Mode and number of proofs:'
          ‘keysort(+list(pair),-list(pair))’ - ‘one’

__________________________________________________________________

1.48.13.10 ‘last/2’
...................

List last element (if it exists).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘last(List,Last)’
     `Mode and number of proofs:'
          ‘last(?list,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.11 ‘length/2’
.....................

List length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘length(List,Length)’
     `Mode and number of proofs:'
          ‘length(?list,?integer)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.12 ‘max/2’
..................

Determines the list maximum value using standard order.  Fails if the
list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘max(List,Maximum)’
     `Mode and number of proofs:'
          ‘max(+list,-term)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.13 ‘member/2’
.....................

Element is a list member.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘member(Element,List)’
     `Mode and number of proofs:'
          ‘member(?term,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.14 ‘memberchk/2’
........................

Checks if a term is a member of a list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘memberchk(Element,List)’
     `Mode and number of proofs:'
          ‘memberchk(?term,?list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.15 ‘min/2’
..................

Determines the minimum value in a list using standard order.  Fails if
the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘min(List,Minimum)’
     `Mode and number of proofs:'
          ‘min(+list,-term)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.16 ‘msort/2’
....................

Sorts a list in ascending order (duplicated elements are not removed).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘msort(List,Sorted)’
     `Mode and number of proofs:'
          ‘msort(+list,-list)’ - ‘one’

__________________________________________________________________

1.48.13.17 ‘msort/3’
....................

Sorts a list using a user-specified comparison predicate modeled on the
standard compare/3 predicate (duplicated elements are not removed).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘msort(Closure,List,Sorted)’
     `Meta-predicate template:'
          ‘msort(3,*,*)’
     `Mode and number of proofs:'
          ‘msort(+callable,+list,-list)’ - ‘one’

__________________________________________________________________

1.48.13.18 ‘nextto/3’
.....................

‘X’ and ‘Y’ are consecutive elements in List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nextto(X,Y,List)’
     `Mode and number of proofs:'
          ‘nextto(?term,?term,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.19 ‘nth0/3’
...................

Nth element of a list (counting from zero).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nth0(Nth,List,Element)’
     `Mode and number of proofs:'
          ‘nth0(?integer,?list,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.20 ‘nth0/4’
...................

Nth element of a list (counting from zero).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nth0(Nth,List,Element,Residue)’
     `Mode and number of proofs:'
          ‘nth0(?integer,?list,?term,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.21 ‘nth1/3’
...................

Nth element of a list (counting from one).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nth1(Nth,List,Element)’
     `Mode and number of proofs:'
          ‘nth1(?integer,?list,?term)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.22 ‘nth1/4’
...................

Nth element of a list (counting from one).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nth1(Nth,List,Element,Residue)’
     `Mode and number of proofs:'
          ‘nth1(?integer,?list,?term,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.23 ‘partition/5’
........................

Partitions a list in lists with values less, equal, and greater than a
given value (using standard order).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘partition(List,Value,Less,Equal,Greater)’
     `Mode and number of proofs:'
          ‘partition(+list,+number,-list,-list,-list)’ - ‘one’

__________________________________________________________________

1.48.13.24 ‘permutation/2’
..........................

The two lists are a permutation of the same list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘permutation(List,Permutation)’
     `Mode and number of proofs:'
          ‘permutation(?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.25 ‘prefix/2’
.....................

Prefix is a prefix of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘prefix(Prefix,List)’
     `Mode and number of proofs:'
          ‘prefix(?list,+list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.26 ‘prefix/3’
.....................

Prefix is a prefix of length Length of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘prefix(Prefix,Length,List)’
     `Mode and number of proofs:'
          ‘prefix(?list,+integer,+list)’ - ‘zero_or_one’
          ‘prefix(?list,-integer,+list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.27 ‘proper_prefix/2’
............................

Prefix is a proper prefix of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘proper_prefix(Prefix,List)’
     `Mode and number of proofs:'
          ‘proper_prefix(?list,+list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.28 ‘proper_prefix/3’
............................

Prefix is a proper prefix of length Length of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘proper_prefix(Prefix,Length,List)’
     `Mode and number of proofs:'
          ‘proper_prefix(?list,+integer,+list)’ - ‘zero_or_one’
          ‘proper_prefix(?list,-integer,+list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.29 ‘remove_duplicates/2’
................................

Removes duplicated list elements using equality (‘==/2’) for comparison
and keeping the left-most element when repeated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘remove_duplicates(List,Set)’

__________________________________________________________________

1.48.13.30 ‘reverse/2’
......................

Reverses a list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘reverse(List,Reversed)’
     `Mode and number of proofs:'
          ‘reverse(+list,-list)’ - ‘one’
          ‘reverse(+list,?list)’ - ‘zero_or_one’
          ‘reverse(?list,+list)’ - ‘zero_or_one’
          ‘reverse(-list,-list)’ - ‘one_or_more’

__________________________________________________________________

1.48.13.31 ‘same_length/2’
..........................

The two lists have the same length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘same_length(List1,List2)’
     `Mode and number of proofs:'
          ‘same_length(+list,?list)’ - ‘zero_or_one’
          ‘same_length(?list,+list)’ - ‘zero_or_one’
          ‘same_length(-list,-list)’ - ‘one_or_more’

__________________________________________________________________

1.48.13.32 ‘same_length/3’
..........................

The two lists have the same length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘same_length(List1,List2,Length)’
     `Mode and number of proofs:'
          ‘same_length(+list,?list,?integer)’ - ‘zero_or_one’
          ‘same_length(?list,+list,?integer)’ - ‘zero_or_one’
          ‘same_length(-list,-list,-integer)’ - ‘one_or_more’

__________________________________________________________________

1.48.13.33 ‘select/3’
.....................

Selects an element from a list, returning the list of remaining
elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘select(Element,List,Remaining)’
     `Mode and number of proofs:'
          ‘select(?term,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.34 ‘selectchk/3’
........................

Checks that an element can be selected from a list, returning the list
of remaining elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘selectchk(Element,List,Remaining)’
     `Mode and number of proofs:'
          ‘selectchk(?term,?list,?list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.35 ‘select/4’
.....................

Selects an element from a list, replacing it by a new element and
returning the resulting list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘select(Old,OldList,New,NewList)’
     `Mode and number of proofs:'
          ‘select(?term,?list,?term,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.36 ‘selectchk/4’
........................

Checks that an element from a list can be replaced by a new element,
returning the resulting list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘selectchk(Old,OldList,New,NewList)’
     `Mode and number of proofs:'
          ‘selectchk(?term,?list,?term,?list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.37 ‘sort/2’
...................

Sorts a list in ascending order (duplicated elements are removed).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sort(List,Sorted)’
     `Mode and number of proofs:'
          ‘sort(+list,-list)’ - ‘one’

__________________________________________________________________

1.48.13.38 ‘sort/3’
...................

Sorts a list using a user-specified comparison predicate modeled on the
standard ‘compare/3’ predicate (duplicated elements are removed).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sort(Closure,List,Sorted)’
     `Meta-predicate template:'
          ‘sort(3,*,*)’
     `Mode and number of proofs:'
          ‘sort(+callable,+list,-list)’ - ‘one’

__________________________________________________________________

1.48.13.39 ‘sort/4’
...................

Sorts a list using the given key and order.  @< and @> orders remove
duplicates while @=< and @>= orders keep them.  @< and @=< specify
ascending order while @> and @>= specify descending order.  When the key
is zero, the whole term is used for comparisons.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sort(Key,Order,List,Sorted)’
     `Mode and number of proofs:'
          ‘sort(+non_negative_integer,+atom,+list,-list)’ - ‘one’

__________________________________________________________________

1.48.13.40 ‘split/4’
....................

Splits a list into sublists of a given length.  Also returns a list with
the remaining elements.  Fails if the length is zero or negative.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘split(List,Length,Sublists,Remaining)’
     `Mode and number of proofs:'
          ‘split(+list,+integer,-list(list),-list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.41 ‘sublist/2’
......................

The first list is a sublist of the second.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sublist(Sublist,List)’
     `Mode and number of proofs:'
          ‘sublist(?list,+list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.42 ‘subsequence/3’
..........................

‘List’ is an interleaving of ‘Subsequence’ and ‘Remaining’.  Element
order is preserved.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subsequence(List,Subsequence,Remaining)’
     `Mode and number of proofs:'
          ‘subsequence(?list,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.43 ‘subsequence/4’
..........................

Generates subsequences of a given length from a list.  Also returns the
remaining elements.  Element order is preserved.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subsequence(List,Length,Subsequence,Remaining)’
     `Mode and number of proofs:'
          ‘subsequence(+list,+integer,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.44 ‘substitute/4’
.........................

Substitutes all occurrences of ‘Old’ in ‘List’ by ‘New’, returning
‘NewList’.  Uses term equality for element comparison.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘substitute(Old,List,New,NewList)’
     `Mode and number of proofs:'
          ‘substitute(@term,@list,@term,-list)’ - ‘one’

__________________________________________________________________

1.48.13.45 ‘subtract/3’
.......................

Removes all elements in the second list from the first list, returning
the list of remaining elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subtract(List,Elements,Remaining)’
     `Mode and number of proofs:'
          ‘subtract(+list,+list,-list)’ - ‘one’

__________________________________________________________________

1.48.13.46 ‘suffix/2’
.....................

Suffix is a suffix of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘suffix(Suffix,List)’
     `Mode and number of proofs:'
          ‘suffix(?list,+list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.47 ‘suffix/3’
.....................

Suffix is a suffix of length Length of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘suffix(Suffix,Length,List)’
     `Mode and number of proofs:'
          ‘suffix(?list,+integer,+list)’ - ‘zero_or_one’
          ‘suffix(?list,-integer,+list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.48 ‘proper_suffix/2’
............................

Suffix is a proper suffix of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘proper_suffix(Suffix,List)’
     `Mode and number of proofs:'
          ‘proper_suffix(?list,+list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.49 ‘proper_suffix/3’
............................

Suffix is a proper suffix of length Length of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘proper_suffix(Suffix,Length,List)’
     `Mode and number of proofs:'
          ‘proper_suffix(?list,+integer,+list)’ - ‘zero_or_one’
          ‘proper_suffix(?list,-integer,+list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.13.50 ‘take/3’
...................

Takes the first ‘N’ elements of a list.  Fails if the list have fewer
than ‘N’ elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘take(N,List,Elements)’
     `Mode and number of proofs:'
          ‘take(+integer,+list,-list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.51 ‘drop/3’
...................

Drops the first ‘N’ elements of a list.  Fails if the list have fewer
than ‘N’ elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘drop(N,List,Remaining)’
     `Mode and number of proofs:'
          ‘drop(+integer,+list,-list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.13.52 Protected predicates
...............................

(none)

1.48.13.53 Private predicates
.............................

(none)

1.48.13.54 Operators
....................

(none)

See also
........

See list, list(Type), numberlistp,
varlistp.

`object'

1.48.14 ‘natural’
-----------------

Natural numbers data type predicates.

     `Author:' Paulo Moura
     `Version:' 1.1
     `Date:' 2009/3/6

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ integer.

     `Remarks:'
          (none)

1.48.14.1 Public predicates
...........................

(see entity ancestors)

1.48.14.2 Protected predicates
..............................

(see entity ancestors)

1.48.14.3 Private predicates
............................

(see entity ancestors)

1.48.14.4 Operators
...................

(none)

`object'

1.48.15 ‘number’
----------------

Number data type predicates.

     `Author:' Paulo Moura
     `Version:' 1.6
     `Date:' 2019/3/7

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Extends:'
          ‘public’ atomic.

     `Remarks:'
          (none)

1.48.15.1 Public predicates
...........................

1.48.15.2 ‘approximately_equal/3’
.................................

Compares two numbers for approximate equality given an epsilon value
using the de facto standard formula abs(Number1 - Number2) =<
max(abs(Number1), abs(Number2)) * Epsilon.  No type-checking.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘approximately_equal(Number1,Number2,Epsilon)’
     `Mode and number of proofs:'
          ‘approximately_equal(+number,+number,+number)’ - ‘zero_or_one’

__________________________________________________________________

1.48.15.3 ‘essentially_equal/3’
...............................

Compares two numbers for essential equality given an epsilon value using
the de facto standard formula abs(Number1 - Number2) =<
min(abs(Number1), abs(Number2)) * Epsilon.  No type-checking.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘essentially_equal(Number1,Number2,Epsilon)’
     `Mode and number of proofs:'
          ‘essentially_equal(+number,+number,+number)’ - ‘zero_or_one’

__________________________________________________________________

1.48.15.4 ‘tolerance_equal/4’
.............................

Compares two numbers for close equality given relative and absolute
tolerances using the de facto standard formula abs(Number1 - Number2) =<
max(RelativeTolerance * max(abs(Number1), abs(Number2)),
AbsoluteTolerance).  No type-checking.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘tolerance_equal(Number1,Number2,RelativeTolerance,AbsoluteTolerance)’
     `Mode and number of proofs:'
          ‘tolerance_equal(+number,+number,+number,+number)’ - ‘zero_or_one’

__________________________________________________________________

1.48.15.5 ‘=~= / 2’
...................

Compares two floats (or lists of floats) for approximate equality using
100*epsilon for the absolute error and, if that fails, 99.999% accuracy
for the relative error.  Note that these precision values may not be
adequate for all cases.  No type-checking.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘=~=(Float1,Float2)’
     `Mode and number of proofs:'
          ‘=~=(+number,+number)’ - ‘zero_or_one’
          ‘=~=(+list(number),+list(number))’ - ‘zero_or_one’

__________________________________________________________________

1.48.15.6 Protected predicates
..............................

(see entity ancestors)

1.48.15.7 Private predicates
............................

(see entity ancestors)

1.48.15.8 Operators
...................

1.48.15.9 ‘op(700,xfx,=~=)’
...........................

     `Scope:'
          ‘public’

`object'

1.48.16 ‘numberlist’
--------------------

List of numbers predicates.

     `Author:' Paulo Moura
     `Version:' 1.9
     `Date:' 2018/7/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ numberlistp.
     `Extends:'
          ‘public’ list.

     `Remarks:'
          (none)

1.48.16.1 Public predicates
...........................

(see entity ancestors)

1.48.16.2 Protected predicates
..............................

(see entity ancestors)

1.48.16.3 Private predicates
............................

(see entity ancestors)

1.48.16.4 Operators
...................

(none)

See also
........

See list, list(Type), varlist,
difflist.

`protocol'

1.48.17 ‘numberlistp’
---------------------

List of numbers protocol.

     `Author:' Paulo Moura
     `Version:' 1.6
     `Date:' 2019/3/2

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.48.17.1 Public predicates
...........................

1.48.17.2 ‘max/2’
.................

Determines the list maximum value using arithmetic order.  Fails if the
list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘max(List,Maximum)’
     `Mode and number of proofs:'
          ‘max(+list(number),-number)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.3 ‘min/2’
.................

Determines the minimum value in a list using arithmetic order.  Fails if
the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘min(List,Minimum)’
     `Mode and number of proofs:'
          ‘min(+list(number),-number)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.4 ‘product/2’
.....................

Calculates the product of all list numbers.  Fails if the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘product(List,Product)’
     `Mode and number of proofs:'
          ‘product(+list(number),-number)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.5 ‘sum/2’
.................

Calculates the sum of all list numbers.  Returns the integer zero if the
list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sum(List,Sum)’
     `Mode and number of proofs:'
          ‘sum(+list(number),-number)’ - ‘one’

__________________________________________________________________

1.48.17.6 ‘average/2’
.....................

Calculates the average (i.e.  arithmetic mean) of a list of numbers.
Fails if the list is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘average(List,Average)’
     `Mode and number of proofs:'
          ‘average(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.7 ‘euclidean_norm/2’
............................

Calculates the Euclidean norm of a list of numbers.  Fails if the list
is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘euclidean_norm(List,Norm)’
     `Mode and number of proofs:'
          ‘euclidean_norm(+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.8 ‘chebyshev_norm/2’
............................

Calculates the Chebyshev norm of a list of numbers.  Fails if the list
is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘chebyshev_norm(List,Norm)’
     `Mode and number of proofs:'
          ‘chebyshev_norm(+list(integer),-integer)’ - ‘zero_or_one’
          ‘chebyshev_norm(+list(float),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.9 ‘manhattan_norm/2’
............................

Calculates the Manhattan norm of a list of numbers.  Fails if the list
is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘manhattan_norm(List,Norm)’
     `Mode and number of proofs:'
          ‘manhattan_norm(+list(integer),-integer)’ - ‘zero_or_one’
          ‘manhattan_norm(+list(float),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.10 ‘euclidean_distance/3’
.................................

Calculates the Euclidean distance between two lists of numbers.  Fails
if the two lists are empty or not of the same length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘euclidean_distance(List1,List2,Distance)’
     `Mode and number of proofs:'
          ‘euclidean_distance(+list(number),+list(number),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.11 ‘chebyshev_distance/3’
.................................

Calculates the Chebyshev distance between two lists of numbers.  Fails
if the two lists are empty or not of the same length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘chebyshev_distance(List1,List2,Distance)’
     `Mode and number of proofs:'
          ‘chebyshev_distance(+list(integer),+list(integer),-integer)’ - ‘zero_or_one’
          ‘chebyshev_distance(+list(float),+list(float),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.12 ‘manhattan_distance/3’
.................................

Calculates the Manhattan distance between two lists of numbers.  Fails
if the two lists are empty or not of the same length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘manhattan_distance(List1,List2,Distance)’
     `Mode and number of proofs:'
          ‘manhattan_distance(+list(integer),+list(integer),-integer)’ - ‘zero_or_one’
          ‘manhattan_distance(+list(float),+list(float),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.13 ‘scalar_product/3’
.............................

Calculates the scalar product of two lists of numbers.  Fails if the two
lists are empty or not of the same length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘scalar_product(List1,List2,Product)’
     `Mode and number of proofs:'
          ‘scalar_product(+list(integer),+list(integer),-integer)’ - ‘zero_or_one’
          ‘scalar_product(+list(float),+list(float),-float)’ - ‘zero_or_one’

__________________________________________________________________

1.48.17.14 ‘normalize_range/2’
..............................

Normalizes a list of numbers into the 0.0-1.0 range.  Caller must handle
arithmetic exceptions if the input list if not normalizable.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘normalize_range(List,NormalizedList)’
     `Mode and number of proofs:'
          ‘normalize_range(+list(number),-list(float))’ - ‘one’

__________________________________________________________________

1.48.17.15 ‘normalize_range/4’
..............................

Normalizes a list of numbers into the given range.  Caller must handle
arithmetic exceptions if the input list if not normalizable.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘normalize_range(List,Minimum,Maximum,NormalizedList)’
     `Mode and number of proofs:'
          ‘normalize_range(+list(number),+number,+number,-list(float))’ - ‘one’

__________________________________________________________________

1.48.17.16 ‘normalize_unit/2’
.............................

Normalizes a list of numbers returning its unit vector (i.e.  a list
with Euclidean norm equal to one).  Caller must handle arithmetic
exceptions if the input list if not normalizable.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘normalize_unit(List,NormalizedList)’
     `Mode and number of proofs:'
          ‘normalize_unit(+list(number),-list(float))’ - ‘one’

__________________________________________________________________

1.48.17.17 ‘normalize_scalar/2’
...............................

Normalizes a list of numbers such that the sum of all numbers is equal
to one.  Caller must handle arithmetic exceptions if the input list if
not normalizable.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘normalize_scalar(List,NormalizedList)’
     `Mode and number of proofs:'
          ‘normalize_scalar(+list(number),-list(float))’ - ‘one’

__________________________________________________________________

1.48.17.18 ‘rescale/3’
......................

Rescales all numbers in a list by the given factor.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rescale(List,Factor,RescaledList)’
     `Mode and number of proofs:'
          ‘rescale(+list(integer),+integer,-list(integer))’ - ‘one’
          ‘rescale(+list(number),+float,-list(float))’ - ‘one’

__________________________________________________________________

1.48.17.19 Protected predicates
...............................

(none)

1.48.17.20 Private predicates
.............................

(none)

1.48.17.21 Operators
....................

(none)

See also
........

See numberlist, listp, varlistp.

`object'

1.48.18 ‘pairs’
---------------

Useful predicates over lists of pairs (key-value terms).

     `Author:' Paulo Moura
     `Version:' 1.5
     `Date:' 2019/3/8

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.48.18.1 Public predicates
...........................

1.48.18.2 ‘keys_values/3’
.........................

Converts between a list of pairs and lists of keys and values.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘keys_values(Pairs,Keys,Values)’
     `Mode and number of proofs:'
          ‘keys_values(+list(pair),-list,-list)’ - ‘one’
          ‘keys_values(-list(pair),+list,+list)’ - ‘one’

__________________________________________________________________

1.48.18.3 ‘keys/2’
..................

Extracts a list of keys from a list of pairs.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘keys(Pairs,Keys)’
     `Mode and number of proofs:'
          ‘keys(+list(pair),-list)’ - ‘one’

__________________________________________________________________

1.48.18.4 ‘values/2’
....................

Extracts a list of values from a list of pairs.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘values(Pairs,Values)’
     `Mode and number of proofs:'
          ‘values(+list(pair),-list)’ - ‘one’

__________________________________________________________________

1.48.18.5 ‘transpose/2’
.......................

Transposes a list of pairs by swapping each pair key and value.  The
relative order of the list elements is kept.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘transpose(Pairs,TransposedPairs)’
     `Mode and number of proofs:'
          ‘transpose(+list(pair),-list(pair))’ - ‘one’

__________________________________________________________________

1.48.18.6 ‘group_by_key/2’
..........................

Groups pairs by key by constructing new pairs by grouping all values for
a given key in a list.  Keys are compared using equality.  The relative
order of the values for the same key is kept.  The resulting list of
pairs is sorted by key.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘group_by_key(Pairs,Groups)’
     `Mode and number of proofs:'
          ‘group_by_key(+list(pair),-list(pair))’ - ‘one’

__________________________________________________________________

1.48.18.7 ‘map/3’
.................

Maps a list into pairs using a closure that applies to each list element
to compute its key.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map(Closure,List,Pairs)’
     `Meta-predicate template:'
          ‘map(2,*,*)’
     `Mode and number of proofs:'
          ‘map(@callable,+list,-list(pair))’ - ‘one’

__________________________________________________________________

1.48.18.8 Protected predicates
..............................

(none)

1.48.18.9 Private predicates
............................

(none)

1.48.18.10 Operators
....................

(none)

`object'

1.48.19 ‘term’
--------------

Prolog term utility predicates.

     `Author:' Paulo Moura
     `Version:' 1.8
     `Date:' 2018/6/18

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ termp.
     `Aliases:'
          ‘termp’ ‘variables/2’ as ‘vars/2’

     `Remarks:'
          (none)

1.48.19.1 Public predicates
...........................

(see entity ancestors)

1.48.19.2 Protected predicates
..............................

(see entity ancestors)

1.48.19.3 Private predicates
............................

(see entity ancestors)

1.48.19.4 Operators
...................

(none)

`protocol'

1.48.20 ‘termp’
---------------

Prolog term utility predicates protocol.

     `Author:' Paulo Moura
     `Version:' 1.31
     `Date:' 2010/6/9

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.48.20.1 Public predicates
...........................

1.48.20.2 ‘depth/2’
...................

True if the depth of ‘Term’ is ‘Depth’.  The depth of atomic terms is
zero; the depth of a compound term is one plus the maximum depth of its
sub-terms.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘depth(Term,Depth)’
     `Mode and number of proofs:'
          ‘depth(@term,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.48.20.3 ‘ground/1’
....................

True if the argument is ground.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘ground(Term)’
     `Mode and number of proofs:'
          ‘ground(@term)’ - ‘zero_or_one’

__________________________________________________________________

1.48.20.4 ‘new/1’
.................

Creates a new term instance (if meaningful).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘new(Term)’
     `Mode and number of proofs:'
          ‘new(-nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.48.20.5 ‘occurs/2’
....................

True if the variable occurs in the term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘occurs(Variable,Term)’
     `Mode and number of proofs:'
          ‘occurs(@var,@term)’ - ‘zero_or_one’

__________________________________________________________________

1.48.20.6 ‘subsumes/2’
......................

The first term subsumes the second term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subsumes(General,Specific)’
     `Mode and number of proofs:'
          ‘subsumes(?term,@term)’ - ‘zero_or_one’

__________________________________________________________________

1.48.20.7 ‘subterm/2’
.....................

The first term is a subterm of the second term.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subterm(Subterm,Term)’
     `Mode and number of proofs:'
          ‘subterm(?term,+term)’ - ‘zero_or_more’

__________________________________________________________________

1.48.20.8 ‘valid/1’
...................

Term is valid.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘valid(Term)’
     `Mode and number of proofs:'
          ‘valid(@nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.48.20.9 ‘check/1’
...................

Checks if a term is valid.  Throws an exception if the term is not
valid.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check(Term)’
     `Mode and number of proofs:'
          ‘check(@nonvar)’ - ‘one’

__________________________________________________________________

1.48.20.10 ‘variant/2’
......................

Each term is a variant of the other (i.e.  they are structurally
equivalent).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘variant(Term1,Term2)’
     `Mode and number of proofs:'
          ‘variant(@term,@term)’ - ‘zero_or_one’

__________________________________________________________________

1.48.20.11 ‘variables/2’
........................

Returns a list of all term variables (ordered as found when doing a
depth-first, left-to-right traversal of ‘Term’).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘variables(Term,List)’
     `Mode and number of proofs:'
          ‘variables(@term,-list)’ - ‘one’

__________________________________________________________________

1.48.20.12 ‘singletons/2’
.........................

Returns a list of all term singleton variables (ordered as found when
doing a depth-first, left-to-right traversal of ‘Term’).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘singletons(Term,Singletons)’
     `Mode and number of proofs:'
          ‘singletons(@term,-list)’ - ‘one’

__________________________________________________________________

1.48.20.13 Protected predicates
...............................

(none)

1.48.20.14 Private predicates
.............................

(none)

1.48.20.15 Operators
....................

(none)

See also
........

See term.

`object'

1.48.21 ‘type’
--------------

Type checking predicates.  User extensible.  New types can be defined by
adding clauses for the ‘type/1’ and ‘check/2’ multifile predicates.

     `Author:' Paulo Moura
     `Version:' 1.27
     `Date:' 2019/7/27

     `Compilation flags:'
          ‘static, context_switching_calls, complements(restrict)’

     `Uses:'
          See list.

     `Remarks:'

        - `Logtalk specific types:' ‘entity’, ‘object’, ‘protocol’,
          ‘category’, ‘entity_identifier’, ‘object_identifier’,
          ‘protocol_identifier’, ‘category_identifier’, ‘event’,
          ‘predicate’

        - `Prolog module related types (when the backend compiler
          supports modules):' ‘module’, ‘module_identifier’,
          ‘qualified_callable’

        - `Prolog base types:' ‘term’, ‘var’, ‘nonvar’, ‘atomic’,
          ‘atom’, ‘number’, ‘integer’, ‘float’, ‘compound’, ‘callable’,
          ‘ground’

        - `Atom derived types:' ‘atom(CharSet)’, ‘atom(CharSet,Length)’,
          ‘non_empty_atom’, ‘non_empty_atom(CharSet)’, ‘boolean’,
          ‘character’, ‘character(CharSet)’, ‘char’, ‘char(CharSet)’,
          ‘operator_specifier’

        - `Number derived types:' ‘positive_number’, ‘negative_number’,
          ‘non_positive_number’, ‘non_negative_number’

        - `Float derived types:' ‘positive_float’, ‘negative_float’,
          ‘non_positive_float’, ‘non_negative_float, probability’

        - `Integer derived types:' ‘positive_integer’,
          ‘negative_integer’, ‘non_positive_integer’,
          ‘non_negative_integer’, ‘byte’, ‘character_code’,
          ‘character_code(CharSet)’, ‘code’, ‘code(CharSet)’,
          ‘operator_priority’

        - `List types (compound derived types):' ‘list’,
          ‘non_empty_list’, ‘partial_list’, ‘list_or_partial_list’,
          ‘list(Type)’, ‘list(Type,Length)’, ‘list(Type,Min,Max)’,
          ‘list(Type,Length,Min,Max)’, ‘non_empty_list(Type)’, ‘codes’,
          ‘chars’

        - `Difference list types (compound derived types):'
          ‘difference_list’, ‘difference_list(Type)’

        - `Other compound derived types:' ‘predicate_indicator’,
          ‘non_terminal_indicator’,
          ‘predicate_or_non_terminal_indicator’, ‘clause’,
          ‘clause_or_partial_clause’, ‘grammar_rule’, ‘pair’,
          ‘pair(KeyType,ValueType)’, ‘cyclic’, ‘acyclic’

        - `Stream types:' ‘stream’, ‘stream_or_alias’,
          ‘stream(Property)’, ‘stream_or_alias(Property)’

        - `Other types:' ‘between(Type,Lower,Upper)’,
          ‘property(Type,LambdaExpression)’, ‘one_of(Type,Set)’,
          ‘var_or(Type)’, ‘ground(Type)’, ‘types(Types)’, ‘type’

        - `predicate type notes:' This type is used to check for an
          object public predicate specified as Object::Functor/Arity.

        - `boolean type notes:' The two value of this type are the atoms
          true and false.

        - `Stream types notes:' In the case of the ‘stream(Property)’
          and ‘stream_or_alias(Property)’ types, Property must be a
          valid stream property.

        - `order type notes:' The three possible values of this type are
          the single character atoms ‘<’, ‘=’, and ‘>’.

        - `character_code type notes:' This type takes into account
          Unicode support by the backend compiler.  When Unicode is
          supported, it distinguishes between BMP and full support.
          When Unicode is not supported, it assumes a byte
          representation for characters.

        - `between(Type, Lower, Upper) type notes:' The type argument
          allows distinguishing between numbers and other types.  It
          also allows choosing between mixed integer/float comparisons
          and strict float or integer comparisons.  The term is
          type-checked before testing for interval membership.

        - `property(Type, Lambda) type notes:' Verifies that ‘Term’
          satisfies a property described using a lambda expression of
          the form ‘[Parameter]>>Goal’.  The lambda expression is
          applied in the context of ‘user’.  The term is type-checked
          before calling the goal.

        - `one_of(Type, Set) type notes:' For checking if a given term
          is an element of a set.  The set is represented using a list.
          The term is type-checked before testing for set membership.

        - `var_or(Type) notes:' Allows checking if a term is either a
          variable or a valid value of the given type.

        - `ground(Type) notes:' Allows checking if a term is ground and
          a valid value of the given type.

        - `types(Types) notes:' Allows checking if a term is a valid
          value for one of the types in a list of types.

        - `type notes:' Allows checking if a term is a valid type.

        - `qualified_callable notes:' Allows checking if a term is a
          possibly module-qualified callable term.  When the term is
          qualified, it also checks that the qualification modules are
          type correct.  When the term is not qualified, its semantics
          are the same as the callable type.

        - `Design choices:' The main predicates are ‘valid/2’ and
          ‘check/3’.  These are defined using the predicate ‘check/2’.
          Defining clauses for ‘check/2’ instead of ‘valid/2’ gives the
          user full control of exception terms without requiring an
          additional predicate.

        - `Error context:' The built-in execution-context method
          ‘context/1’ can be used to provide the calling context for
          errors when using the predicate ‘check/3’.

        - `Registering new types:' New types can be registered by
          defining clauses for the ‘type/1’ and ‘check/2’ multifile
          predicates.  Clauses for both predicates must have a bound
          first argument to avoid introducing spurious choice-points
          when type-checking terms.

        - `Meta-types:' Meta-types are types that have one or more
          sub-types.  E.g.  ‘var_or(Type)’.  The sub-types of a
          meta-type can be enumerated by defining a clause for the
          ‘meta_type/3’ multifile predicate.

        - `Character sets:' When testing character or character code
          based terms (e.g.  atom), it is possible to choose a character
          set (‘ascii_identifier’, ‘ascii_printable’, ‘ascii_full’,
          ‘byte’, ‘unicode_bmp’, or ‘unicode_full’) using the
          parameterizable types.

        - `Caveats:' The type argument (and any type parameterization)
          to the predicates is not type-checked (or checked for
          consistency) for performance reasons.

1.48.21.1 Public predicates
...........................

1.48.21.2 ‘type/1’
..................

Table of defined types.  A new type can be registered by defining a
clause for this predicate and adding a clause for the ‘check/2’
multifile predicate.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘type(Type)’
     `Mode and number of proofs:'
          ‘type(?callable)’ - ‘zero_or_more’

__________________________________________________________________

1.48.21.3 ‘meta_type/3’
.......................

Table of defined meta-types.  A registered type that is a meta-type can
be described by defining a clause for this predicate to enumerate its
sub-types and optional values in case of a single sub-type.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘meta_type(MetaType,SubTypes,Values)’
     `Mode and number of proofs:'
          ‘meta_type(?callable,-list,-list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.21.4 ‘valid/2’
...................

True if the given term is of the specified type.  Fails otherwise.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘valid(Type,Term)’
     `Mode and number of proofs:'
          ‘valid(@callable,@term)’ - ‘zero_or_one’

__________________________________________________________________

1.48.21.5 ‘check/3’
...................

True if the given term is of the specified type.  Throws an error
otherwise using the format ‘error(Error, Context)’.  For the possible
values of ‘Error’ see the ‘check/2’ predicate.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check(Type,Term,Context)’
     `Mode and number of proofs:'
          ‘check(@callable,@term,@term)’ - ‘one_or_error’

__________________________________________________________________

1.48.21.6 ‘check/2’
...................

True if the given term is of the specified type.  Throws an error
otherwise.  A new type can be added by defining a clause for this
predicate and registering it by adding a clause for the ‘type/1’
multifile predicate.

     `Compilation flags:'
          ‘static, multifile’

     `Template:'
          ‘check(Type,Term)’
     `Mode and number of proofs:'
          ‘check(@callable,@term)’ - ‘one_or_error’

     `Exceptions:'
          ‘Term’ is not bound as required:
               ‘instantiation_error’
          ‘Term’ is bound but not of the specified type:
               ‘type_error(Type, Term)’
          ‘Term’ is the of the correct type but not in the specified domain:
               ‘domain_error(Domain, Term)’
          ‘Term’ is the of the correct type and domain but the resource it represents does not exist:
               ‘existence_error(Type, Term)’

__________________________________________________________________

1.48.21.7 Protected predicates
..............................

(see entity ancestors)

1.48.21.8 Private predicates
............................

(see entity ancestors)

1.48.21.9 Operators
...................

(none)

See also
........

See arbitrary, os_types, either, maybe.

`object'

1.48.22 ‘varlist’
-----------------

List of variables predicates.

     `Author:' Paulo Moura
     `Version:' 1.11
     `Date:' 2019/3/12

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ varlistp.

     `Remarks:'
          (none)

1.48.22.1 Public predicates
...........................

(see entity ancestors)

1.48.22.2 Protected predicates
..............................

(see entity ancestors)

1.48.22.3 Private predicates
............................

(see entity ancestors)

1.48.22.4 Operators
...................

(none)

See also
........

See list, list(Type), numberlist,
difflist.

`protocol'

1.48.23 ‘varlistp’
------------------

List of variables protocol.

     `Author:' Paulo Moura
     `Version:' 1.2
     `Date:' 2019/1/3

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.48.23.2 ‘append/3’
....................

Appends two lists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘append(List1,List2,List)’
     `Mode and number of proofs:'
          ‘append(?list,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.3 ‘delete/3’
....................

Deletes from a list all occurrences of an element returning the list of
remaining elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete(List,Element,Remaining)’
     `Mode and number of proofs:'
          ‘delete(@list,@term,?list)’ - ‘one’

__________________________________________________________________

1.48.23.4 ‘empty/1’
...................

True if the argument is an empty list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘empty(List)’
     `Mode and number of proofs:'
          ‘empty(@list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.23.5 ‘flatten/2’
.....................

Flattens a list of lists into a list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘flatten(List,Flatted)’
     `Mode and number of proofs:'
          ‘flatten(@list,-list)’ - ‘one’

__________________________________________________________________

1.48.23.6 ‘last/2’
..................

List last element (if it exists).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘last(List,Last)’
     `Mode and number of proofs:'
          ‘last(@list,@var)’ - ‘zero_or_one’

__________________________________________________________________

1.48.23.7 ‘length/2’
....................

List length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘length(List,Length)’
     `Mode and number of proofs:'
          ‘length(@list,?integer)’ - ‘zero_or_one’

__________________________________________________________________

1.48.23.8 ‘memberchk/2’
.......................

Checks if a variable is a member of a list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘memberchk(Element,List)’
     `Mode and number of proofs:'
          ‘memberchk(@var,@list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.23.9 ‘nextto/3’
....................

‘X’ and ‘Y’ are consecutive elements in List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nextto(X,Y,List)’
     `Mode and number of proofs:'
          ‘nextto(@var,@var,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.10 ‘nth0/3’
...................

Nth element of a list (counting from zero).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nth0(Nth,List,Element)’
     `Mode and number of proofs:'
          ‘nth0(?integer,+list,@var)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.11 ‘nth0/4’
...................

Nth element of a list (counting from zero).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nth0(Nth,List,Element,Residue)’
     `Mode and number of proofs:'
          ‘nth0(?integer,+list,@var,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.12 ‘nth1/3’
...................

Nth element of a list (counting from one).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nth1(Nth,List,Element)’
     `Mode and number of proofs:'
          ‘nth1(?integer,+list,@var)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.13 ‘nth1/4’
...................

Nth element of a list (counting from zero).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘nth1(Nth,List,Element,Residue)’
     `Mode and number of proofs:'
          ‘nth1(?integer,+list,@var,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.14 ‘permutation/2’
..........................

The two lists are a permutation of the same list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘permutation(List,Permutation)’
     `Mode and number of proofs:'
          ‘permutation(@list,@list)’ - ‘zero_or_one’

__________________________________________________________________

1.48.23.15 ‘prefix/2’
.....................

Prefix is a prefix of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘prefix(Prefix,List)’
     `Mode and number of proofs:'
          ‘prefix(?list,@list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.16 ‘remove_duplicates/2’
................................

Removes duplicated variables and keeping the left-most variable when
repeated.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘remove_duplicates(List,Set)’

__________________________________________________________________

1.48.23.17 ‘reverse/2’
......................

Reverses a list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘reverse(List,Reversed)’
     `Mode and number of proofs:'
          ‘reverse(+list,-list)’ - ‘one’
          ‘reverse(@list,?list)’ - ‘zero_or_one’
          ‘reverse(?list,@list)’ - ‘zero_or_one’
          ‘reverse(-list,-list)’ - ‘one_or_more’

__________________________________________________________________

1.48.23.18 ‘same_length/2’
..........................

The two lists have the same length.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘same_length(List1,List2)’
     `Mode and number of proofs:'
          ‘same_length(@list,?list)’ - ‘zero_or_one’
          ‘same_length(?list,@list)’ - ‘zero_or_one’
          ‘same_length(-list,-list)’ - ‘one_or_more’

__________________________________________________________________

1.48.23.19 ‘select/3’
.....................

Selects an element from a list, returning the list of remaining
elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘select(Element,List,Remaining)’
     `Mode and number of proofs:'
          ‘select(@var,?list,?list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.20 ‘sublist/2’
......................

The first list is a sublist of the second.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘sublist(Sublist,List)’
     `Mode and number of proofs:'
          ‘sublist(?list,@list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.21 ‘subtract/3’
.......................

Removes all elements in the second list from the first list, returning
the list of remaining elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subtract(List,Elements,Remaining)’
     `Mode and number of proofs:'
          ‘subtract(@list,@list,-list)’ - ‘one’

__________________________________________________________________

1.48.23.22 ‘suffix/2’
.....................

Suffix is a suffix of List.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘suffix(Suffix,List)’
     `Mode and number of proofs:'
          ‘suffix(?list,@list)’ - ‘zero_or_more’

__________________________________________________________________

1.48.23.23 ‘valid/1’
....................

Term is a valid list of variables.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘valid(Term)’
     `Mode and number of proofs:'
          ‘valid(@nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.48.23.24 ‘check/1’
....................

Checks if a term is a valid list of variables.  Throws an exception if
the term is not valid.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘check(Term)’
     `Mode and number of proofs:'
          ‘check(@nonvar)’ - ‘one’

__________________________________________________________________

1.48.23.25 Protected predicates
...............................

(none)

1.48.23.26 Private predicates
.............................

(none)

1.48.23.27 Operators
....................

(none)

See also
........

See varlist, listp, numberlistp.

1.49 ‘verdi_neruda’
===================

`object'

1.49.1 ‘a_star_interpreter(W)’
------------------------------

A* interpreter for general logic programs.  The parameter W is used to
fine tune the behavior.  W = 0 gives us a breadth-first search and W = 1
gives us a greedy best-first search.  The default value for W is 0.5.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Imports:'
          ‘public’ best_first.

     `Remarks:'
          (none)

1.49.1.1 Public predicates
..........................

(see entity ancestors)

1.49.1.2 Protected predicates
.............................

(see entity ancestors)

1.49.1.3 Private predicates
...........................

(see entity ancestors)

1.49.1.4 Operators
..................

(none)

`object'

1.49.2 ‘benchmark_generators’
-----------------------------

Generates random data structures for use in benchmarks.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Uses:'
          See random.

     `Remarks:'
          (none)

1.49.2.1 Public predicates
..........................

1.49.2.2 ‘random_tree/1’
........................

Generates a random tree.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘random_tree(Tree)’
     `Mode and number of proofs:'
          ‘random_tree(-tree)’ - ‘one’

__________________________________________________________________

1.49.2.3 Protected predicates
.............................

(see entity ancestors)

1.49.2.4 Private predicates
...........................

(see entity ancestors)

1.49.2.5 Operators
..................

(none)

`category'

1.49.3 ‘best_first’
-------------------

Best-first framework for general logic programs.

     `Author:' Victor Lagerkvist
     `Version:' 1.1
     `Date:' 2019/3/8

     `Compilation flags:'
          ‘static’

     `Implements:'
          ‘public’ interpreterp.
     `Uses:'
          See counter.
          minheap.

     `Remarks:'
          (none)

1.49.3.1 Public predicates
..........................

(see entity ancestors)

1.49.3.2 Protected predicates
.............................

1.49.3.3 ‘f/4’
..............

.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘f(Length1,Length2,Depth,Cost)’
     `Mode and number of proofs:'
          ‘f(+float,+float,+float,-float)’ - ‘zero_or_more’

__________________________________________________________________

1.49.3.4 Private predicates
...........................

(see entity ancestors)

1.49.3.5 Operators
..................

(none)

`object'

1.49.4 ‘bfs_interpreter’
------------------------

Breadth-first interpreter for general logic programs.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ interpreterp.
     `Uses:'
          See counter.
          queue.

     `Remarks:'
          (none)

1.49.4.1 Public predicates
..........................

(see entity ancestors)

1.49.4.2 Protected predicates
.............................

(see entity ancestors)

1.49.4.3 Private predicates
...........................

(see entity ancestors)

1.49.4.4 Operators
..................

(none)

`object'

1.49.5 ‘bup_interpreter’
------------------------

Semi-naive bottom-up interpreter for general (stratified) logic
programs.  Magic transformation is realized through an expansion hook.

     `Author:' Ulf Nilsson. Ported to Logtalk and augmented with negation by Victor Lagerkvist.
     `Version:' 1.1
     `Date:' 2018/5/7

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ interpreterp.
     `Uses:'
          See counter.
          list.
          magic.
          term.

     `Remarks:'
          (none)

1.49.5.1 Public predicates
..........................

(see entity ancestors)

1.49.5.2 Protected predicates
.............................

(see entity ancestors)

1.49.5.3 Private predicates
...........................

(see entity ancestors)

1.49.5.4 Operators
..................

(none)

`object'

1.49.6 ‘counter’
----------------

Counter implemented with asserta/retract.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.49.6.1 Public predicates
..........................

1.49.6.2 ‘increment/0’
......................

Increment the counter by 1.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘increment’ - ‘one’

__________________________________________________________________

1.49.6.3 ‘increase/1’
.....................

Increments the counter by the specified amount.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘increase(+number)’ - ‘one’

     `argname:'
          [I]

__________________________________________________________________

1.49.6.4 ‘set/1’
................

Sets the counter to the specified amount.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘set(+number)’ - ‘one’

     `argname:'
          [N]

__________________________________________________________________

1.49.6.5 ‘value/1’
..................

Gets the current value of the counter.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘value(?number)’ - ‘one’

     `argname:'
          [N]

__________________________________________________________________

1.49.6.6 ‘reset/0’
..................

Resets the counter to zero.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘reset’ - ‘one’

__________________________________________________________________

1.49.6.7 Protected predicates
.............................

(none)

1.49.6.8 Private predicates
...........................

1.49.6.9 ‘c/1’
..............

     `Compilation flags:'
          ‘dynamic’

__________________________________________________________________

1.49.6.10 Operators
...................

(none)

`protocol'

1.49.7 ‘databasep’
------------------

Database protocol.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.49.7.1 Public predicates
..........................

1.49.7.2 ‘rule/4’
.................

Clauses for this predicate are automatically generated using
term-expansion.  The third argument contains the length of Body.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rule(Head,Body,Length,Tail)’
     `Mode and number of proofs:'
          ‘rule(?callable,?callable,-,-)’ - ‘zero_or_more’

__________________________________________________________________

1.49.7.3 ‘rule/3’
.................

Clauses for this predicate are automatically generated using
term-expansion.  The third argument denotes the tail of the Body.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rule(Head,Body,Tail)’
     `Mode and number of proofs:'
          ‘rule(?callable,?callable,-)’ - ‘zero_or_more’

__________________________________________________________________

1.49.7.4 ‘rule/2’
.................

Clauses for this predicate are automatically generated using
term-expansion.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rule(Head,Body)’
     `Mode and number of proofs:'
          ‘rule(?callable,-list(callable))’ - ‘zero_or_more’

__________________________________________________________________

1.49.7.5 ‘bench_goal/1’
.......................

Table of benchmark goals.  They are used from shell.lgt to make
benchmarking easier.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘bench_goal(Goal)’
     `Mode and number of proofs:'
          ‘bench_goal(?callable)’ - ‘zero_or_more’

__________________________________________________________________

1.49.7.6 Protected predicates
.............................

(none)

1.49.7.7 Private predicates
...........................

(none)

1.49.7.8 Operators
..................

(none)

`object'

1.49.8 ‘debug_expansion(Mode)’
------------------------------

Expands debug/1 calls.  The parameter Mode can be either the atom
“debug” or “production”.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2010/4/15

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.

     `Remarks:'
          (none)

1.49.8.1 Public predicates
..........................

(see entity ancestors)

1.49.8.2 Protected predicates
.............................

(see entity ancestors)

1.49.8.3 Private predicates
...........................

(see entity ancestors)

1.49.8.4 Operators
..................

(none)

`object'

1.49.9 ‘demodb’
---------------

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ databasep.

     `Remarks:'
          (none)

1.49.9.1 Public predicates
..........................

(see entity ancestors)

1.49.9.2 Protected predicates
.............................

(see entity ancestors)

1.49.9.3 Private predicates
...........................

(see entity ancestors)

1.49.9.4 Operators
..................

(none)

`object'

1.49.10 ‘dfs_interpreter’
-------------------------

Depth-first interpreter for general logic programs.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ interpreterp.
     `Uses:'
          See counter.

     `Remarks:'
          (none)

1.49.10.1 Public predicates
...........................

(see entity ancestors)

1.49.10.2 Protected predicates
..............................

(see entity ancestors)

1.49.10.3 Private predicates
............................

(see entity ancestors)

1.49.10.4 Operators
...................

(none)

`category'

1.49.11 ‘flatting’
------------------

Flattens conjunction of goals with the form f & g into a list [f,g].

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static’

     `source:' Based on source code from The Craft of Prolog, by Richard O’Keefe

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.49.11.1 Public predicates
...........................

(none)

1.49.11.2 Protected predicates
..............................

1.49.11.3 ‘flatten_goals//1’
............................

Flattens a conjunction of goals.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘flatten_goals(Conjunction)’
     `Mode and number of proofs:'
          ‘flatten_goals(+callable)’ - ‘one’

__________________________________________________________________

1.49.11.4 Private predicates
............................

(none)

1.49.11.5 Operators
...................

(none)

`object'

1.49.12 ‘heuristic_expansion(A)’
--------------------------------

Expands rules of the form p <- f & g to rule(p, [f,g|Tail], Length,
Tail).

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Extends:'
          ‘public’ rule_expansion(A).
     `Uses:'
          See list.

     `Remarks:'
          (none)

1.49.12.1 Public predicates
...........................

(see entity ancestors)

1.49.12.2 Protected predicates
..............................

(see entity ancestors)

1.49.12.3 Private predicates
............................

(see entity ancestors)

1.49.12.4 Operators
...................

(none)

`object'

1.49.13 ‘iddfs_interpreter(Increment)’
--------------------------------------

Iterative deepening depth-first interpreter for general logic programs.
Based on source code from The Craft of Prolog, by Richard O’Keefe.  The
default value for the increment is 1.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ interpreterp.
     `Uses:'
          See counter.
          dfs_interpreter.

     `Remarks:'
          (none)

1.49.13.1 Public predicates
...........................

(see entity ancestors)

1.49.13.2 Protected predicates
..............................

(see entity ancestors)

1.49.13.3 Private predicates
............................

(see entity ancestors)

1.49.13.4 Operators
...................

(none)

`protocol'

1.49.14 ‘interpreterp’
----------------------

Protocol for an interpreter.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.49.14.1 Public predicates
...........................

1.49.14.2 ‘prove/2’
...................

True if goal is provable in the specified database.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘prove(Goal,DB)’
     `Mode and number of proofs:'
          ‘prove(+goal,+database)’ - ‘zero_or_more’

__________________________________________________________________

1.49.14.3 ‘prove/3’
...................

True if goal is provable within the given depth-limit in the specified
database.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘prove(Goal,Limit,DB)’
     `Mode and number of proofs:'
          ‘prove(+goal,+limit,+database)’ - ‘zero_or_more’

__________________________________________________________________

1.49.14.4 Protected predicates
..............................

(none)

1.49.14.5 Private predicates
............................

(none)

1.49.14.6 Operators
...................

(none)

`object'

1.49.15 ‘magic’
---------------

Object encapsulating magic methods.

     `Author:' Ulf Nilsson. Ported to Logtalk and augmented with stratified negation by Victor Lagerkvist.
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Uses:'
          See list.

     `Remarks:'
          (none)

1.49.15.1 Public predicates
...........................

1.49.15.2 ‘magicise/4’
......................

Transform (Head :- Body) into a magic clause (NewHead :- NewBody).

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘magicise(Head,Body,NewHead,NewBody)’
     `Mode and number of proofs:'
          ‘magicise(+term,+list,-term,-list)’ - ‘zero_or_one’

__________________________________________________________________

1.49.15.3 ‘magic/2’
...................

Prefix the predicate symbol of Old with magic.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘magic(Old,New)’
     `Mode and number of proofs:'
          ‘magic(+callable,-callable)’ - ‘zero_or_one’

__________________________________________________________________

1.49.15.4 Protected predicates
..............................

(see entity ancestors)

1.49.15.5 Private predicates
............................

(see entity ancestors)

1.49.15.6 Operators
...................

(none)

`object'

1.49.16 ‘magic_expansion(A)’
----------------------------

Expands rules of the form p <- f & g to the more manageable rule(p,
[f,g]) and performs magic transformation of clauses.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Imports:'
          ‘public’ flatting.
     `Extends:'
          ‘public’ debug_expansion(A).
     `Uses:'
          See list.
          magic.

     `Remarks:'
          (none)

1.49.16.1 Public predicates
...........................

(see entity ancestors)

1.49.16.2 Protected predicates
..............................

(see entity ancestors)

1.49.16.3 Private predicates
............................

(see entity ancestors)

1.49.16.4 Operators
...................

(none)

`object'

1.49.17 ‘rule_expansion(A)’
---------------------------

Expands rules of the form p <- f & g to the more manageable rule(p,
[f,g]).

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Imports:'
          ‘public’ flatting.
     `Extends:'
          ‘public’ debug_expansion(A).

     `Remarks:'
          (none)

1.49.17.1 Public predicates
...........................

(see entity ancestors)

1.49.17.2 Protected predicates
..............................

(see entity ancestors)

1.49.17.3 Private predicates
............................

(see entity ancestors)

1.49.17.4 Operators
...................

(none)

`object'

1.49.18 ‘shell’
---------------

User frontend to start the application.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2019/3/20

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Uses:'
          See shell(Interpreters).

     `Remarks:'
          (none)

1.49.18.1 Public predicates
...........................

1.49.18.2 ‘welcome/0’
.....................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.49.18.3 ‘start/0’
...................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.49.18.4 Protected predicates
..............................

(see entity ancestors)

1.49.18.5 Private predicates
............................

(see entity ancestors)

1.49.18.6 Operators
...................

(none)

`object'

1.49.19 ‘shell(Interpreters)’
-----------------------------

Prolog shell for the interpreters.

     `Author:' Victor Lagerkvist and Paulo Moura
     `Version:' 1.1
     `Date:' 2019/3/20

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Uses:'
          See counter.
          list.
          meta.
          pairs.

     `Remarks:'
          (none)

1.49.19.1 Public predicates
...........................

1.49.19.2 ‘init/0’
..................

     `Compilation flags:'
          ‘static’

__________________________________________________________________

1.49.19.3 Protected predicates
..............................

(see entity ancestors)

1.49.19.4 Private predicates
............................

(see entity ancestors)

1.49.19.5 Operators
...................

(none)

`object'

1.49.20 ‘shell_expansion(A)’
----------------------------

Expansion object for the shell.

     `Author:' Victor Lagerkvist
     `Version:' 1.0
     `Date:' 2010/6/13

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Extends:'
          ‘public’ rule_expansion(A).

     `Remarks:'
          (none)

1.49.20.1 Public predicates
...........................

(see entity ancestors)

1.49.20.2 Protected predicates
..............................

(see entity ancestors)

1.49.20.3 Private predicates
............................

(see entity ancestors)

1.49.20.4 Operators
...................

(none)

1.50 ‘wrapper’
==============

`object'

1.50.1 ‘wrapper’
----------------

Adviser tool for porting and wrapping plain Prolog applications.

     `Author:' Paulo Moura
     `Version:' 0.11
     `Date:' 2019/3/8

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ expanding.
     `Provides:'
          See logtalk;;message_hook/4.
          logtalk;;message_prefix_stream/4.
          See logtalk;;message_tokens//2.
     `Uses:'
          See logtalk.
          os.

     `Remarks:'

        - `prolog_extensions(Extensions) option:' list of file name
          extensions used to recognize Prolog source files (default is
          ‘['.pl','.pro','.prolog']’)

        - `logtalk_extension(Extension) option:' Logtalk file name
          extension to be used for the generated wrapper files (default
          is ‘'.lgt'’)

        - `exclude_files(Files) option:' list of Prolog source files
          names to exclude (default is ‘[]’)

        - `exclude_directories(Files) option:' list of sub-directory
          names to exclude (default is ‘[]’)

        - `include_wrapped_files(Boolean):' generate ‘include/1’
          directives for the wrapped Prolog source files (default is
          ‘true’)

1.50.1.1 Public predicates
..........................

1.50.1.2 ‘rdirectory/2’
.......................

Advises the user on missing directives for converting all plain Prolog
files in a directory and its sub-directories to Logtalk objects using
the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Directory,Options)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.50.1.3 ‘rdirectory/1’
.......................

Advises the user on missing directives for converting all plain Prolog
files in a directory and its sub-directories to Logtalk objects using
default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rdirectory(Directory)’
     `Mode and number of proofs:'
          ‘rdirectory(+atom)’ - ‘one’

__________________________________________________________________

1.50.1.4 ‘directory/2’
......................

Advises the user on missing directives for converting all plain Prolog
files in a directory to Logtalk objects using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Directory,Options)’
     `Mode and number of proofs:'
          ‘directory(+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.50.1.5 ‘directory/1’
......................

Advises the user on missing directives for converting all plain Prolog
files in a directory to Logtalk objects using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directory(Directory)’
     `Mode and number of proofs:'
          ‘directory(+atom)’ - ‘one’

__________________________________________________________________

1.50.1.6 ‘directories/2’
........................

Advises the user on missing directives for converting all Prolog files
in a set of directories to Logtalk objects using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directories(Directories,Options)’
     `Mode and number of proofs:'
          ‘directories(+list(atom),+list(compound))’ - ‘one’

__________________________________________________________________

1.50.1.7 ‘directories/1’
........................

Advises the user on missing directives for converting all Prolog files
in a set of directories to Logtalk objects using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘directories(Directories)’
     `Mode and number of proofs:'
          ‘directories(+list(atom))’ - ‘one’

__________________________________________________________________

1.50.1.8 ‘files/2’
..................

Advises the user on missing directives for converting a list of plain
Prolog files to Logtalk objects using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘files(Files,Options)’
     `Mode and number of proofs:'
          ‘files(+list(atom),+list(compound))’ - ‘one’

__________________________________________________________________

1.50.1.9 ‘files/1’
..................

Advises the user on missing directives for converting a list of plain
Prolog files to Logtalk objects using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘files(Files)’
     `Mode and number of proofs:'
          ‘files(+list(atom))’ - ‘one’

__________________________________________________________________

1.50.1.10 ‘file/2’
..................

Advises the user on missing directives for converting a plain Prolog
file to Logtalk objects using the specified options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file(File,Options)’
     `Mode and number of proofs:'
          ‘file(+atom,+list(compound))’ - ‘one’

__________________________________________________________________

1.50.1.11 ‘file/1’
..................

Advises the user on missing directives for converting a plain Prolog
file to Logtalk objects using default options.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘file(File)’
     `Mode and number of proofs:'
          ‘file(+atom)’ - ‘one’

__________________________________________________________________

1.50.1.12 ‘save/1’
..................

Saves the generated wrapper objects (plus a loader file per directory)
for all advised files using the specified options.  The wrapper objects
are saved to the same directories that contain the wrapped Prolog files.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘save(Options)’
     `Mode and number of proofs:'
          ‘save(+list(compound))’ - ‘one’

__________________________________________________________________

1.50.1.13 ‘save/0’
..................

Saves the generated wrapper objects (plus a loader file per directory)
for all advised files using default options.  The wrapper objects are
saved to the same directories that contain the wrapped Prolog files.

     `Compilation flags:'
          ‘static’

     `Mode and number of proofs:'
          ‘save’ - ‘one’

__________________________________________________________________

1.50.1.14 ‘default_option/1’
............................

Enumerates by backtracking the default options used when generating the
wrapper objects.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘default_option(DefaultOption)’
     `Mode and number of proofs:'
          ‘default_option(?compound)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.15 ‘default_options/1’
.............................

Returns a list of the default options used when generating the wrapper
objects.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘default_options(DefaultOptions)’
     `Mode and number of proofs:'
          ‘default_options(-list(compound))’ - ‘one’

__________________________________________________________________

1.50.1.16 Protected predicates
..............................

(see entity ancestors)

1.50.1.17 Private predicates
............................

1.50.1.18 ‘merge_options/2’
...........................

Merges the user options with the default options, returning the list of
options used when generating the wrapper objects.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘merge_options(UserOptions,Options)’
     `Mode and number of proofs:'
          ‘merge_options(+list(compound),-list(compound))’ - ‘one’

__________________________________________________________________

1.50.1.19 ‘predicate_called_but_not_defined_/2’
...............................................

Table of called object predicates that are not locally defined.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘predicate_called_but_not_defined_(Object,Predicate)’
     `Mode and number of proofs:'
          ‘predicate_called_but_not_defined_(?atom,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.20 ‘object_predicate_called_/3’
......................................

Table of called object predicates.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘object_predicate_called_(Object,Other,Predicate)’
     `Mode and number of proofs:'
          ‘object_predicate_called_(?atom,?atom,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.21 ‘module_predicate_called_/3’
......................................

Table of called module predicates.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘module_predicate_called_(Object,Module,Predicate)’
     `Mode and number of proofs:'
          ‘module_predicate_called_(?atom,?atom,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.22 ‘unknown_predicate_called_/2’
.......................................

Table of predicates called but not defined.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘unknown_predicate_called_(Object,Predicate)’
     `Mode and number of proofs:'
          ‘unknown_predicate_called_(?atom,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.23 ‘missing_predicate_directive_/3’
..........................................

Table of missing predicate directives.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘missing_predicate_directive_(Object,Directive,Predicate)’
     `Mode and number of proofs:'
          ‘missing_predicate_directive_(?atom,?predicate_indicator,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.24 ‘non_standard_predicate_call_/2’
..........................................

Table of called non-standard predicates.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘non_standard_predicate_call_(Object,Predicate)’
     `Mode and number of proofs:'
          ‘non_standard_predicate_call_(?atom,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.25 ‘dynamic_directive_/3’
................................

Table of declared dynamic predicates.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘dynamic_directive_(Object,Line,Predicate)’
     `Mode and number of proofs:'
          ‘dynamic_directive_(?atom,?integer,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.26 ‘multifile_directive_/3’
..................................

Table of declared multifile predicates.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘multifile_directive_(Object,Line,Predicate)’
     `Mode and number of proofs:'
          ‘multifile_directive_(?atom,?integer,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.27 ‘add_directive_before_entity_/2’
..........................................

Table of directives to be added before the entity opening directive.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘add_directive_before_entity_(Object,Directive)’
     `Mode and number of proofs:'
          ‘add_directive_before_entity_(?atom,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.28 ‘add_directive_/2’
............................

Table of directives to be added.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘add_directive_(Object,Directive)’
     `Mode and number of proofs:'
          ‘add_directive_(?atom,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.29 ‘add_directive_/3’
............................

Table of directives to be added to complement existing directives.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘add_directive_(Object,Directive,NewDirective)’
     `Mode and number of proofs:'
          ‘add_directive_(?atom,?predicate_indicator,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.30 ‘remove_directive_/2’
...............................

Table of directives to be removed.

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘remove_directive_(Object,Directive)’
     `Mode and number of proofs:'
          ‘remove_directive_(?atom,?predicate_indicator)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.31 ‘file_being_advised_/4’
.................................

Table of files being advised are respective directories and names
(basename without extension).

     `Compilation flags:'
          ‘dynamic’

     `Template:'
          ‘file_being_advised_(File,Path,Directory,Name)’
     `Mode and number of proofs:'
          ‘file_being_advised_(?atom,?atom,?atom,?atom)’ - ‘zero_or_more’

__________________________________________________________________

1.50.1.32 Operators
...................

(none)

1.51 ‘xml_parser’
=================

`object'

1.51.1 ‘xml’
------------

Bi-directional XML parser.

     `Author:' John Fletcher; adapted to Logtalk by Paulo Moura.
     `Version:' 3.7
     `Date:' 2019/3/8

     `Copyright:' Copyright (C) 2001-2005 Binding Time Limited, Copyright (C) 2005-2013 John Fletcher
     `License:' This program is offered free of charge, as unsupported source code. You may use it, copy it, distribute it, modify it or sell it without restriction, but entirely at your own risk.

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Uses:'
          See list.
          term.

     `Remarks:'

        - `On-line documentation:'
          ‘https://binding-time.co.uk/index.php/Parsing_XML_with_Prolog’

        - `Compliance:' This XML parser supports a subset of XML
          suitable for XML Data and Worldwide Web applications.  It is
          neither as strict nor as comprehensive as the XML 1.0
          Specification mandates.

        - `Compliance-strictness:' It is not as strict, because, while
          the specification must eliminate ambiguities, not all errors
          need to be regarded as faults, and some reasonable examples of
          real XML usage would have to be rejected if they were.

        - `Compliance-comprehensive:' It is not as comprehensive,
          because, where the XML specification makes provision for more
          or less complete DTDs to be provided as part of a document,
          xml.pl actions the local definition of ENTITIES only.  Other
          DTD extensions are treated as commentary.

        - `Bi-directional conversions:' The conversions are not
          completely symmetrical, in that weaker XML is accepted than
          can be generated.  Specifically, in-bound (Chars -> Document)
          parsing does not require strictly well-formed XML. If Chars
          does not represent well-formed XML, Document is instantiated
          to the term ‘malformed(<attributes>,<content>)’.

1.51.1.1 Public predicates
..........................

1.51.1.2 ‘parse/2’
..................

Parses ‘Chars’ to/from a data structure of the form
‘xml(<atts>,<content>)’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘parse(Chars,Document)’
     `Mode and number of proofs:'
          ‘parse(+nonvar,?nonvar)’ - ‘zero_or_one’
          ‘parse(?nonvar,+nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.3 ‘parse/3’
..................

Parses ‘Chars’ to/from a data structure of the form
‘xml(<atts>,<content>)’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘parse(Controls,Chars,Document)’
     `Mode and number of proofs:'
          ‘parse(+nonvar,+nonvar,?nonvar)’ - ‘zero_or_one’
          ‘parse(+nonvar,?nonvar,+nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.4 ‘subterm/2’
....................

Unifies ‘Subterm’ with a sub-term of ‘XMLTerm’.  Note that ‘XMLTerm’ is
a sub-term of itself.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘subterm(XMLTerm,Subterm)’
     `Mode and number of proofs:'
          ‘subterm(+nonvar,?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.5 ‘pp/1’
...............

Pretty prints a XML document on the current output stream.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘pp(XMLDocument)’
     `Mode and number of proofs:'
          ‘pp(+nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.6 Protected predicates
.............................

(see entity ancestors)

1.51.1.7 Private predicates
...........................

1.51.1.8 ‘xml_to_document/3’
............................

Translates the list of character codes ‘XML’ into the Prolog term
‘Document’.  ‘Controls’ is a list of terms controlling the treatment of
layout characters and character entities.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘xml_to_document(Controls,XML,Document)’
     `Mode and number of proofs:'
          ‘xml_to_document(+nonvar,+nonvar,?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.9 ‘empty_map/1’
......................

True if ‘Map’ is a null map.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘empty_map(Map)’
     `Mode and number of proofs:'
          ‘empty_map(?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.10 ‘map_member/3’
........................

True if ‘Map’ is a ordered map structure which records the pair
‘Key-Data’.  ‘Key’ must be ground.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map_member(Key,Map,Data)’
     `Mode and number of proofs:'
          ‘map_member(+nonvar,+nonvar,?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.11 ‘map_store/4’
.......................

True if ‘Map0’ is an ordered map structure, ‘Key’ must be ground, and
‘Map1’ is identical to ‘Map0’ except that the pair ‘Key-Data’ is
recorded by ‘Map1’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘map_store(Map0,Key,Data,Map1)’
     `Mode and number of proofs:'
          ‘map_store(+nonvar,+nonvar,+nonvar,?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.12 ‘pp_string/1’
.......................

Prints ‘String’ onto the current output stream.  If ‘String’ contains
only 7-bit chars it is printed in shorthand quoted format, otherwise it
is written as a list.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘pp_string(String)’
     `Mode and number of proofs:'
          ‘pp_string(+nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.13 ‘fault/5’
...................

Identifies ‘SubTerm’ as a sub-term of ‘Term’ which cannot be serialized
after ‘Indentation’.  ‘Message’ is an atom naming the type of error;
‘Path’ is a string encoding a list of ‘SubTerm’’s ancestor elements in
the form ‘<tag>{(id)}*’ where ‘<tag>’ is the element tag and ‘<id>’ is
the value of any attribute _named_ ‘id’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘fault(Term,Indentation,SubTerm,Path,Message)’
     `Mode and number of proofs:'
          ‘fault(+nonvar,+nonvar,?nonvar,?nonvar,?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.14 ‘exception/4’
.......................

Hook to raise an exception to be raised in respect of a fault in the XML
Term ‘Document’.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘exception(Message,Document,Culprit,Path)’
     `Mode and number of proofs:'
          ‘exception(+atom,+nonvar,+nonvar,+nonvar)’ - ‘one’

__________________________________________________________________

1.51.1.15 ‘document_generation//2’
..................................

DCG generating Document as a list of character codes.  ‘Format’ is
true|false defining whether layouts, to provide indentation, should be
added between the element content of the resultant “string”.  Note that
formatting is disabled for elements that are interspersed with
‘pcdata/1’ terms, such as XHTML’s ‘inline’ elements.  Also, ‘Format’ is
over-ridden, for an individual element, by an explicit
‘'xml:space'="preserve"’ attribute.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘document_generation(Format,Document)’
     `Mode and number of proofs:'
          ‘document_generation(+nonvar,+nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.16 ‘pcdata_7bit//1’
..........................

Represents the ASCII character set in its simplest format, using the
character entities ‘&amp;’, ‘&quot;’, ‘&lt;’, and ‘&gt;’ which are
common to both XML and HTML. The numeric entity ‘&#39;’ is used in place
of ‘&apos;’ because browsers don’t recognize it in HTML.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘pcdata_7bit(Char)’
     `Mode and number of proofs:'
          ‘pcdata_7bit(?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.17 ‘character_data_format/3’
...................................

Holds when ‘Format0’ and ‘Format1’ are the statuses of XML formatting
before and after ‘Chars’ - which may be null.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘character_data_format(Chars,Format0,Format1)’
     `Mode and number of proofs:'
          ‘character_data_format(+nonvar,+nonvar,?nonvar)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.18 ‘cdata_generation//1’
...............................

Holds when ‘Format0’ and ‘Format1’ are the statuses of XML formatting
before and after ‘Chars’ - which may be null.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘cdata_generation(Chars)’
     `Mode and number of proofs:'
          ‘cdata_generation(+list)’ - ‘zero_or_one’

__________________________________________________________________

1.51.1.19 Operators
...................

(none)

1.52 ‘zippers’
==============

`protocol'

1.52.1 ‘zipperp’
----------------

Zipper protocol.

     `Author:' Paulo Moura
     `Version:' 1.0
     `Date:' 2019/1/20

     `Compilation flags:'
          ‘static’

     `Dependencies:'
          (none)

     `Remarks:'
          (none)

1.52.1.1 Public predicates
..........................

1.52.1.2 ‘zip/2’
................

Adds a zipper to a compound term holding a sequence of elements.  Fails
if the sequence is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘zip(Sequence,Zipper)’
     `Mode and number of proofs:'
          ‘zip(+sequence,--zipper)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.3 ‘zip/3’
................

Adds a zipper to a compound term holding a sequence of elements.  Also
returns the first element.  Fails if the sequence is empty.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘zip(Sequence,Zipper,First)’
     `Mode and number of proofs:'
          ‘zip(+sequence,--zipper,--term)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.4 ‘unzip/2’
..................

Removes a zipper from a sequence.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘unzip(Zipper,Sequence)’
     `Mode and number of proofs:'
          ‘unzip(@zipper,--sequence)’ - ‘one’

__________________________________________________________________

1.52.1.5 ‘current/2’
....................

Current element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘current(Zipper,Current)’
     `Mode and number of proofs:'
          ‘current(+zipper,?term)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.6 ‘next/2’
.................

Moves to the next element.  Fails if already at the last elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘next(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘next(+zipper,--zipper)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.7 ‘next/3’
.................

Moves to and returns the next element.  Fails if already at the last
elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘next(Zipper,NewZipper,Next)’
     `Mode and number of proofs:'
          ‘next(+zipper,--zipper,-term)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.8 ‘previous/2’
.....................

Moves to the previous element.  Fails if already at the first elements.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘previous(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘previous(+zipper,--zipper)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.9 ‘previous/3’
.....................

Moves to and returns the previous element.  Fails if already at the
first element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘previous(Zipper,NewZipper,Previous)’
     `Mode and number of proofs:'
          ‘previous(+zipper,--zipper,-term)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.10 ‘rewind/2’
....................

Rewinds the zipper so that the first element becomes the current
element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rewind(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘rewind(+zipper,--zipper)’ - ‘one’

__________________________________________________________________

1.52.1.11 ‘rewind/3’
....................

Rewinds the zipper so that the first element becomes the current
element.  Also returns the first element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘rewind(Zipper,NewZipper,First)’
     `Mode and number of proofs:'
          ‘rewind(+zipper,--zipper,?term)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.12 ‘forward/2’
.....................

Forward the zipper so that the last element becomes the current element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘forward(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘forward(+zipper,--zipper)’ - ‘one’

__________________________________________________________________

1.52.1.13 ‘forward/3’
.....................

Forward the zipper so that the last element becomes the current element.
Also returns the last element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘forward(Zipper,NewZipper,Last)’
     `Mode and number of proofs:'
          ‘forward(+zipper,--zipper,?term)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.14 ‘apply/2’
...................

Applies a closure to the current element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘apply(Closure,Zipper)’
     `Meta-predicate template:'
          ‘apply(1,*)’
     `Mode and number of proofs:'
          ‘apply(+callable,+zipper)’ - ‘zero_or_more’

__________________________________________________________________

1.52.1.15 ‘insert_before/3’
...........................

Inserts an element before the current one.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘insert_before(Zipper,Element,NewZipper)’
     `Mode and number of proofs:'
          ‘insert_before(+zipper,?term,--zipper)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.16 ‘insert_after/3’
..........................

Inserts an element after the current one.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘insert_after(Zipper,Element,NewZipper)’
     `Mode and number of proofs:'
          ‘insert_after(+zipper,?term,--zipper)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.17 ‘replace/3’
.....................

Replaces the current element with a new element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘replace(Zipper,NewCurrent,NewZipper)’
     `Mode and number of proofs:'
          ‘replace(+zipper,?term,--zipper)’ - ‘one’

__________________________________________________________________

1.52.1.18 ‘delete_and_previous/2’
.................................

Deletes the current element and moves to the previous element.  Fails if
no previous element exists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_and_previous(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘delete_and_previous(+zipper,--zipper)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.19 ‘delete_and_next/2’
.............................

Deletes the current element and moves to the next element.  Fails if no
next element exists.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_and_next(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘delete_and_next(+zipper,--zipper)’ - ‘zero_or_one’

__________________________________________________________________

1.52.1.20 ‘delete_and_unzip/2’
..............................

Deletes the current element and removes the zipper returning the
resulting sequence.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_and_unzip(Zipper,Sequence)’
     `Mode and number of proofs:'
          ‘delete_and_unzip(+zipper,--sequence)’ - ‘one’

__________________________________________________________________

1.52.1.21 ‘delete_all_before/2’
...............................

Deletes all elements before the current element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_all_before(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘delete_all_before(+zipper,--zipper)’ - ‘one’

__________________________________________________________________

1.52.1.22 ‘delete_all_before_and_unzip/2’
.........................................

Deletes all elements before the current element and removes the zipper
returning the resulting sequence.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_all_before_and_unzip(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘delete_all_before_and_unzip(+zipper,--sequence)’ - ‘one’

__________________________________________________________________

1.52.1.23 ‘delete_all_after/2’
..............................

Deletes all elements after the current element.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_all_after(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘delete_all_after(+zipper,--zipper)’ - ‘one’

__________________________________________________________________

1.52.1.24 ‘delete_all_after_and_unzip/2’
........................................

Deletes all elements after the current element and removes the zipper
returning the resulting sequence.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘delete_all_after_and_unzip(Zipper,NewZipper)’
     `Mode and number of proofs:'
          ‘delete_all_after_and_unzip(+zipper,--sequence)’ - ‘one’

__________________________________________________________________

1.52.1.25 Protected predicates
..............................

(none)

1.52.1.26 Private predicates
............................

(none)

1.52.1.27 Operators
...................

(none)

See also
........

See zlist.

`object'

1.52.2 ‘zlist’
--------------

Zipper list predicates.  Zippers should be regarded as opaque terms.

     `Author:' Paulo Moura
     `Version:' 1.01
     `Date:' 2019/3/12

     `Compilation flags:'
          ‘static, context_switching_calls’

     `Implements:'
          ‘public’ zipperp.

     `Remarks:'
          (none)

1.52.2.1 Public predicates
..........................

1.52.2.2 ‘zip_at_index/4’
.........................

Adds a zipper to a list opened at the given index and also returns the
element at the index.  Fails if the list is empty or the index (starting
at 1) does not exist.

     `Compilation flags:'
          ‘static’

     `Template:'
          ‘zip_at_index(Index,List,Zipper,Element)’
     `Mode and number of proofs:'
          ‘zip_at_index(+natural,+list,--zipper,--term)’ - ‘zero_or_one’

__________________________________________________________________

1.52.2.3 Protected predicates
.............................

(see entity ancestors)

1.52.2.4 Private predicates
...........................

(see entity ancestors)

1.52.2.5 Operators
..................

(none)

2 Directories
*************

To load an entity, always load the library that includes it using the
goal ‘logtalk_load(library_name(loader))’ instead of using its path.
The library loader file ensures that all the required dependencies are
also loaded.

2.1 ‘contributions/flags/’
==========================

2.2 ‘contributions/iso8601/’
============================

2.3 ‘contributions/pddl_parser/’
================================

2.4 ‘contributions/verdi_neruda/’
=================================

2.5 ‘contributions/xml_parser/’
===============================

2.6 ‘core/’
===========

2.7 ‘library/’
==============

2.8 ‘library/arbitrary/’
========================

2.9 ‘library/assignvars/’
=========================

2.10 ‘library/coroutining/’
===========================

2.11 ‘library/dates/’
=====================

2.12 ‘library/dependents/’
==========================

2.13 ‘library/dictionaries/’
============================

2.14 ‘library/edcg/’
====================

2.15 ‘library/events/’
======================

2.16 ‘library/expand_library_alias_paths/’
==========================================

2.17 ‘library/expecteds/’
=========================

2.18 ‘library/gensym/’
======================

2.19 ‘library/heaps/’
=====================

2.20 ‘library/hierarchies/’
===========================

2.21 ‘library/hook_flows/’
==========================

2.22 ‘library/intervals/’
=========================

2.23 ‘library/java/’
====================

2.24 ‘library/logging/’
=======================

2.25 ‘library/loops/’
=====================

2.26 ‘library/meta/’
====================

2.27 ‘library/meta_compiler/’
=============================

2.28 ‘library/optionals/’
=========================

2.29 ‘library/os/’
==================

2.30 ‘library/queues/’
======================

2.31 ‘library/random/’
======================

2.32 ‘library/reader/’
======================

2.33 ‘library/redis/’
=====================

2.34 ‘library/sets/’
====================

2.35 ‘library/statistics/’
==========================

2.36 ‘library/timeout/’
=======================

2.37 ‘library/types/’
=====================

2.38 ‘library/zippers/’
=======================

2.39 ‘ports/metagol/’
=====================

2.40 ‘tools/assertions/’
========================

2.41 ‘tools/code_metrics/’
==========================

2.42 ‘tools/dead_code_scanner/’
===============================

2.43 ‘tools/debug_messages/’
============================

2.44 ‘tools/debugger/’
======================

2.45 ‘tools/diagrams/’
======================

2.46 ‘tools/doclet/’
====================

2.47 ‘tools/help/’
==================

2.48 ‘tools/lgtdoc/’
====================

2.49 ‘tools/lgtunit/’
=====================

2.50 ‘tools/ports_profiler/’
============================

2.51 ‘tools/tutor/’
===================

2.52 ‘tools/wrapper/’
=====================

3 Entities
**********

To load an entity, always load the library that includes it using the
goal ‘logtalk_load(library_name(loader))’ instead of loading just the
entity.  The library loader file ensures that all the required
dependencies are also loaded.

3.1 Categories
==============

3.2 Objects
===========

3.3 Protocols
=============

4 Predicates
************

This index lists all entities `declaring' a given predicate.  To load an
entity providing the predicate that you want to call, always load the
library that includes it using the goal
‘logtalk_load(library_name(loader))’ instead of loading just the entity.
The library loader file ensures that all the required dependencies are
also loaded.

4.1 ‘(/)/2’
===========

   * help.

4.2 ‘(//)/2’
============

   * help.

4.3 ‘(<)/2’
===========

   * comparingp.

4.4 ‘(<=)/2’
============

   * assignvarsp.

   * streamvars.

4.5 ‘(=:=)/2’
=============

   * comparingp.

4.6 ‘(=<)/2’
============

   * comparingp.

4.7 ‘(=>)/2’
============

   * assignvarsp.

   * streamvars.

4.8 ‘(=\=)/2’
=============

   * comparingp.

4.9 ‘=~= / 2’
=============

   * lgtunit.

   * number.

4.10 ‘(>)/2’
============

   * comparingp.

4.11 ‘(>=)/2’
=============

   * comparingp.

4.12 ‘absolute_file_name/2’
===========================

   * osp.

4.13 ‘activate_monitor/0’
=========================

   * monitorp.

4.14 ‘add/3’
============

   * difflist.

4.15 ‘addDependent/1’
=====================

   * subject.

4.16 ‘after/2’
==============

   * intervalp.

4.17 ‘after/3’
==============

   * monitoring.

4.18 ‘all/0’
============

   * code_metric.

   * dead_code_scanner.

   * lgtdocp.

4.19 ‘all/1’
============

   * lgtdocp.

4.20 ‘all_files/0’
==================

   * diagram(Format).

   * diagrams(Format).

4.21 ‘all_files/1’
==================

   * diagram(Format).

   * diagrams(Format).

4.22 ‘all_libraries/0’
======================

   * diagram(Format).

   * diagrams(Format).

4.23 ‘all_libraries/1’
======================

   * diagram(Format).

   * diagrams(Format).

4.24 ‘all_score/1’
==================

   * code_metric.

4.25 ‘ancestor/1’
=================

   * hierarchyp.

4.26 ‘ancestors/1’
==================

   * hierarchyp.

4.27 ‘append/2’
===============

   * listp.

4.28 ‘append/3’
===============

   * listp.

   * varlistp.

4.29 ‘apply/2’
==============

   * zipperp.

4.30 ‘apply/4’
==============

   * dictionaryp.

4.31 ‘approximately_equal/3’
============================

   * lgtunit.

   * number.

4.32 ‘arbitrary/1’
==================

   * arbitrary.

4.33 ‘arbitrary/2’
==================

   * arbitrary.

4.34 ‘arithmetic_mean/2’
========================

   * statisticsp.

4.35 ‘array_list/2’
===================

   * java_utils_protocol.

4.36 ‘array_to_terms/2’
=======================

   * java_utils_protocol.

4.37 ‘array_to_terms/3’
=======================

   * java_utils_protocol.

4.38 ‘as_dictionary/2’
======================

   * dictionaryp.

4.39 ‘as_difflist/2’
====================

   * list.

4.40 ‘as_heap/2’
================

   * heapp.

4.41 ‘as_list/2’
================

   * dictionaryp.

   * difflist.

   * heapp.

   * queuep.

   * setp.

4.42 ‘as_set/2’
===============

   * setp.

4.43 ‘ask_question/5’
=====================

   * logtalk.

4.44 ‘assertion/1’
==================

   * assertions(Mode).

   * lgtunit.

4.45 ‘assertion/2’
==================

   * assertions(Mode).

   * lgtunit.

4.46 ‘assignable/1’
===================

   * assignvarsp.

4.47 ‘assignable/2’
===================

   * assignvarsp.

4.48 ‘average/2’
================

   * numberlistp.

4.49 ‘average_deviation/3’
==========================

   * statisticsp.

4.50 ‘before/2’
===============

   * intervalp.

4.51 ‘before/3’
===============

   * monitoring.

4.52 ‘bench_goal/1’
===================

   * databasep.

4.53 ‘benchmark/2’
==================

   * lgtunit.

4.54 ‘benchmark/3’
==================

   * lgtunit.

4.55 ‘benchmark/4’
==================

   * lgtunit.

4.56 ‘benchmark_reified/3’
==========================

   * lgtunit.

4.57 ‘between/3’
================

   * integer.

   * randomp.

4.58 ‘body_pred/1’
==================

   * metagol.

4.59 ‘built_in_directive/4’
===========================

   * help.

4.60 ‘built_in_flag/2’
======================

   * flags.

4.61 ‘built_in_method/4’
========================

   * help.

4.62 ‘built_in_non_terminal/4’
==============================

   * help.

4.63 ‘built_in_predicate/4’
===========================

   * help.

4.64 ‘calendar_month/3’
=======================

   * iso8601.

4.65 ‘call_with_timeout/2’
==========================

   * timeout.

4.66 ‘cat/2’
============

   * maybe.

4.67 ‘change_directory/1’
=========================

   * osp.

4.68 ‘changed/0’
================

   * subject.

4.69 ‘changed/1’
================

   * subject.

4.70 ‘chebyshev_distance/3’
===========================

   * numberlistp.

4.71 ‘chebyshev_norm/2’
=======================

   * numberlistp.

4.72 ‘check/1’
==============

   * termp.

   * varlistp.

4.73 ‘check/2’
==============

   * type.

4.74 ‘check/3’
==============

   * type.

4.75 ‘class/1’
==============

   * class_hierarchyp.

4.76 ‘classes/1’
================

   * class_hierarchyp.

4.77 ‘clone/1’
==============

   * cloning.

4.78 ‘clone/3’
==============

   * dictionaryp.

4.79 ‘clone/4’
==============

   * dictionaryp.

4.80 ‘coefficient_of_variation/2’
=================================

   * statisticsp.

4.81 ‘command_line_arguments/1’
===============================

   * osp.

4.82 ‘compile_aux_clauses/1’
============================

   * logtalk.

4.83 ‘compile_predicate_heads/4’
================================

   * logtalk.

4.84 ‘compile_predicate_indicators/3’
=====================================

   * logtalk.

4.85 ‘completion/2’
===================

   * help.

4.86 ‘completions/2’
====================

   * help.

4.87 ‘connect/1’
================

   * redis.

4.88 ‘connect/3’
================

   * redis.

4.89 ‘console/1’
================

   * redis.

4.90 ‘contains/2’
=================

   * intervalp.

4.91 ‘control_construct/4’
==========================

   * help.

4.92 ‘counter/2’
================

   * counters.

4.93 ‘cover/1’
==============

   * lgtunit.

4.94 ‘cpu_time/1’
=================

   * osp.

   * timep.

4.95 ‘current/2’
================

   * zipperp.

4.96 ‘data/0’
=============

   * ports_profiler.

4.97 ‘data/1’
=============

   * ports_profiler.

4.98 ‘date/4’
=============

   * iso8601.

4.99 ‘date/5’
=============

   * iso8601.

4.100 ‘date/6’
==============

   * iso8601.

4.101 ‘date/7’
==============

   * iso8601.

4.102 ‘date_string/3’
=====================

   * iso8601.

4.103 ‘date_time/7’
===================

   * osp.

4.104 ‘days_in_month/3’
=======================

   * datep.

4.105 ‘debug/0’
===============

   * debuggerp.

4.106 ‘debug_handler/2’
=======================

   * logtalk.

4.107 ‘debug_handler_provider/1’
================================

   * logtalk.

4.108 ‘debugging/0’
===================

   * debuggerp.

4.109 ‘debugging/1’
===================

   * debuggerp.

4.110 ‘decode_exception/2’
==========================

   * java_utils_protocol.

4.111 ‘decode_exception/3’
==========================

   * java_utils_protocol.

4.112 ‘decompile_predicate_heads/4’
===================================

   * logtalk.

4.113 ‘decompile_predicate_indicators/4’
========================================

   * logtalk.

4.114 ‘decompose_file_name/3’
=============================

   * osp.

4.115 ‘decompose_file_name/4’
=============================

   * osp.

4.116 ‘decrement_counter/1’
===========================

   * counters.

4.117 ‘default_option/1’
========================

   * diagram(Format).

   * wrapper.

4.118 ‘default_options/1’
=========================

   * diagram(Format).

   * wrapper.

4.119 ‘define_log_file/2’
=========================

   * loggingp.

4.120 ‘defined_flag/6’
======================

   * flags.

4.121 ‘del_monitors/0’
======================

   * event_registryp.

4.122 ‘del_monitors/4’
======================

   * event_registryp.

4.123 ‘del_spy_points/4’
========================

   * monitorp.

4.124 ‘delete/3’
================

   * listp.

   * setp.

   * varlistp.

4.125 ‘delete/4’
================

   * dictionaryp.

   * heapp.

4.126 ‘delete_all_after/2’
==========================

   * zipperp.

4.127 ‘delete_all_after_and_unzip/2’
====================================

   * zipperp.

4.128 ‘delete_all_before/2’
===========================

   * zipperp.

4.129 ‘delete_all_before_and_unzip/2’
=====================================

   * zipperp.

4.130 ‘delete_and_next/2’
=========================

   * zipperp.

4.131 ‘delete_and_previous/2’
=============================

   * zipperp.

4.132 ‘delete_and_unzip/2’
==========================

   * zipperp.

4.133 ‘delete_directory/1’
==========================

   * osp.

4.134 ‘delete_file/1’
=====================

   * osp.

4.135 ‘delete_matches/3’
========================

   * listp.

4.136 ‘delete_max/4’
====================

   * dictionaryp.

4.137 ‘delete_min/4’
====================

   * dictionaryp.

4.138 ‘dependents/1’
====================

   * subject.

4.139 ‘depth/2’
===============

   * termp.

4.140 ‘descendant/1’
====================

   * hierarchyp.

4.141 ‘descendant_class/1’
==========================

   * class_hierarchyp.

4.142 ‘descendant_classes/1’
============================

   * class_hierarchyp.

4.143 ‘descendant_instance/1’
=============================

   * class_hierarchyp.

4.144 ‘descendant_instances/1’
==============================

   * class_hierarchyp.

4.145 ‘descendants/1’
=====================

   * hierarchyp.

4.146 ‘deterministic/1’
=======================

   * lgtunit.

4.147 ‘deterministic/2’
=======================

   * lgtunit.

4.148 ‘diagram_description/1’
=============================

   * diagram(Format).

4.149 ‘diagram_name_suffix/1’
=============================

   * diagram(Format).

4.150 ‘dif/2’
=============

   * coroutining.

4.151 ‘directories/1’
=====================

   * wrapper.

4.152 ‘directories/2’
=====================

   * diagram(Format).

   * diagrams(Format).

   * wrapper.

4.153 ‘directories/3’
=====================

   * diagram(Format).

   * diagrams(Format).

4.154 ‘directory/1’
===================

   * code_metric.

   * dead_code_scanner.

   * diagram(Format).

   * diagrams(Format).

   * lgtdocp.

   * wrapper.

4.155 ‘directory/2’
===================

   * diagram(Format).

   * diagrams(Format).

   * lgtdocp.

   * wrapper.

4.156 ‘directory/3’
===================

   * diagram(Format).

   * diagrams(Format).

4.157 ‘directory_exists/1’
==========================

   * osp.

4.158 ‘directory_files/2’
=========================

   * osp.

4.159 ‘directory_files/3’
=========================

   * osp.

4.160 ‘directory_score/2’
=========================

   * code_metric.

4.161 ‘disable/1’
=================

   * debug_messages.

4.162 ‘disable/2’
=================

   * debug_messages.

4.163 ‘disable_logging/1’
=========================

   * loggingp.

4.164 ‘disconnect/1’
====================

   * redis.

4.165 ‘disjoint/2’
==================

   * setp.

4.166 ‘doc_goal/1’
==================

   * doclet.

4.167 ‘dowhile/2’
=================

   * loopp.

4.168 ‘drop/3’
==============

   * listp.

4.169 ‘during/2’
================

   * intervalp.

4.170 ‘easter_day/3’
====================

   * iso8601.

4.171 ‘edge/6’
==============

   * graph_language_protocol.

4.172 ‘edge_case/2’
===================

   * arbitrary.

4.173 ‘empty/1’
===============

   * dictionaryp.

   * heapp.

   * listp.

   * optional.

   * queuep.

   * setp.

   * varlistp.

4.174 ‘enable/1’
================

   * debug_messages.

4.175 ‘enable/2’
================

   * debug_messages.

4.176 ‘enable_logging/1’
========================

   * loggingp.

4.177 ‘enabled/1’
=================

   * debug_messages.

4.178 ‘enabled/2’
=================

   * debug_messages.

4.179 ‘entity/1’
================

   * code_metric.

   * dead_code_scanner.

   * xref_diagram(Format).

4.180 ‘entity/2’
================

   * xref_diagram(Format).

4.181 ‘entity_info_pair_score_hook/3’
=====================================

   * doc_metric.

4.182 ‘entity_info_score_hook/2’
================================

   * doc_metric.

4.183 ‘entity_predicates_weights_hook/2’
========================================

   * doc_metric.

4.184 ‘entity_prefix/2’
=======================

   * logtalk.

4.185 ‘entity_score/2’
======================

   * code_metric.

4.186 ‘entity_score//2’
=======================

   * code_metric.

4.187 ‘environment_variable/2’
==============================

   * osp.

4.188 ‘epsilon/1’
=================

   * lgtunit.

4.189 ‘equal/2’
===============

   * intervalp.

   * setp.

4.190 ‘essentially_equal/3’
===========================

   * lgtunit.

   * number.

4.191 ‘euclidean_distance/3’
============================

   * numberlistp.

4.192 ‘euclidean_norm/2’
========================

   * numberlistp.

4.193 ‘exclude/3’
=================

   * metap.

4.194 ‘execution_context/7’
===========================

   * logtalk.

4.195 ‘expand_library_path/2’
=============================

   * logtalk.

4.196 ‘expected/1’
==================

   * expected(Reference).

4.197 ‘expecteds/2’
===================

   * either.

4.198 ‘extension/1’
===================

   * proto_hierarchyp.

4.199 ‘extensions/1’
====================

   * proto_hierarchyp.

4.200 ‘false/1’
===============

   * java_utils_protocol.

4.201 ‘file/1’
==============

   * code_metric.

   * dead_code_scanner.

   * entity_diagram(Format).

   * lgtdocp.

   * wrapper.

4.202 ‘file/2’
==============

   * entity_diagram(Format).

   * lgtdocp.

   * wrapper.

4.203 ‘file_exists/1’
=====================

   * osp.

4.204 ‘file_footer/3’
=====================

   * graph_language_protocol.

4.205 ‘file_header/3’
=====================

   * graph_language_protocol.

4.206 ‘file_modification_time/2’
================================

   * osp.

4.207 ‘file_permission/2’
=========================

   * osp.

4.208 ‘file_score/2’
====================

   * code_metric.

4.209 ‘file_size/2’
===================

   * osp.

4.210 ‘file_to_chars/2’
=======================

   * reader.

4.211 ‘file_to_chars/3’
=======================

   * reader.

4.212 ‘file_to_codes/2’
=======================

   * reader.

4.213 ‘file_to_codes/3’
=======================

   * reader.

4.214 ‘file_to_terms/2’
=======================

   * reader.

4.215 ‘file_to_terms/3’
=======================

   * reader.

4.216 ‘file_type_extension/2’
=============================

   * logtalk.

4.217 ‘files/1’
===============

   * diagram(Format).

   * diagrams(Format).

   * wrapper.

4.218 ‘files/2’
===============

   * diagram(Format).

   * diagrams(Format).

   * wrapper.

4.219 ‘files/3’
===============

   * diagram(Format).

   * diagrams(Format).

4.220 ‘filter/2’
================

   * optional(Reference).

4.221 ‘findall_member/4’
========================

   * metap.

4.222 ‘findall_member/5’
========================

   * metap.

4.223 ‘finished_by/2’
=====================

   * intervalp.

4.224 ‘finishes/2’
==================

   * intervalp.

4.225 ‘flag_group_chk/1’
========================

   * flags.

4.226 ‘flag_groups/1’
=====================

   * flags.

4.227 ‘flat_map/2’
==================

   * expected(Reference).

   * optional(Reference).

4.228 ‘flatten/2’
=================

   * listp.

   * varlistp.

4.229 ‘fold_left/4’
===================

   * metap.

4.230 ‘fold_left_1/3’
=====================

   * metap.

4.231 ‘fold_right/4’
====================

   * metap.

4.232 ‘fold_right_1/3’
======================

   * metap.

4.233 ‘fordownto/3’
===================

   * loopp.

4.234 ‘fordownto/4’
===================

   * loopp.

4.235 ‘fordownto/5’
===================

   * loopp.

4.236 ‘foreach/3’
=================

   * loopp.

4.237 ‘foreach/4’
=================

   * loopp.

4.238 ‘format_object/1’
=======================

   * diagram(Format).

4.239 ‘forto/3’
===============

   * loopp.

4.240 ‘forto/4’
===============

   * loopp.

4.241 ‘forto/5’
===============

   * loopp.

4.242 ‘forward/1’
=================

   * forwarding.

4.243 ‘forward/2’
=================

   * zipperp.

4.244 ‘forward/3’
=================

   * zipperp.

4.245 ‘freeze/2’
================

   * coroutining.

4.246 ‘from_goal/3’
===================

   * expected.

   * optional.

4.247 ‘from_goal/4’
===================

   * expected.

4.248 ‘frozen/2’
================

   * coroutining.

4.249 ‘func_test/3’
===================

   * metagol.

4.250 ‘functional/0’
====================

   * metagol.

4.251 ‘gensym/2’
================

   * gensym.

4.252 ‘geometric_mean/2’
========================

   * statisticsp.

4.253 ‘get/1’
=============

   * optional(Reference).

4.254 ‘get_field/2’
===================

   * java_access_protocol.

4.255 ‘get_flag_value/2’
========================

   * flags.

4.256 ‘get_seed/1’
==================

   * randomp.

4.257 ‘goal_expansion/2’
========================

   * expanding.

4.258 ‘graph_footer/5’
======================

   * graph_language_protocol.

4.259 ‘graph_header/5’
======================

   * graph_language_protocol.

4.260 ‘ground/1’
================

   * termp.

4.261 ‘group_by_key/2’
======================

   * pairs.

4.262 ‘hamming_distance/3’
==========================

   * listp.

4.263 ‘harmonic_mean/2’
=======================

   * statisticsp.

4.264 ‘head/2’
==============

   * queuep.

4.265 ‘head_pred/1’
===================

   * metagol.

4.266 ‘help/0’
==============

   * help.

4.267 ‘ibk/3’
=============

   * metagol.

4.268 ‘if_empty/1’
==================

   * optional(Reference).

4.269 ‘if_expected/1’
=====================

   * expected(Reference).

4.270 ‘if_present/1’
====================

   * optional(Reference).

4.271 ‘if_unexpected/1’
=======================

   * expected(Reference).

4.272 ‘include/3’
=================

   * metap.

4.273 ‘increase/1’
==================

   * counter.

4.274 ‘increment/0’
===================

   * counter.

4.275 ‘increment_counter/1’
===========================

   * counters.

4.276 ‘init/0’
==============

   * shell(Interpreters).

4.277 ‘init_log_file/2’
=======================

   * loggingp.

4.278 ‘inorder/2’
=================

   * bintree.

4.279 ‘insert/3’
================

   * setp.

4.280 ‘insert/4’
================

   * dictionaryp.

   * heapp.

4.281 ‘insert_after/3’
======================

   * zipperp.

4.282 ‘insert_all/3’
====================

   * heapp.

   * setp.

4.283 ‘insert_before/3’
=======================

   * zipperp.

4.284 ‘instance/1’
==================

   * class_hierarchyp.

4.285 ‘instances/1’
===================

   * class_hierarchyp.

4.286 ‘intersect/2’
===================

   * setp.

4.287 ‘intersection/3’
======================

   * setp.

4.288 ‘intersection/4’
======================

   * setp.

4.289 ‘invoke/1’
================

   * java_access_protocol.

4.290 ‘invoke/2’
================

   * java_access_protocol.

4.291 ‘is_alpha/1’
==================

   * characterp.

4.292 ‘is_alphanumeric/1’
=========================

   * characterp.

4.293 ‘is_ascii/1’
==================

   * characterp.

4.294 ‘is_bin_digit/1’
======================

   * characterp.

4.295 ‘is_control/1’
====================

   * characterp.

4.296 ‘is_dec_digit/1’
======================

   * characterp.

4.297 ‘is_empty/0’
==================

   * optional(Reference).

4.298 ‘is_end_of_line/1’
========================

   * characterp.

4.299 ‘is_expected/0’
=====================

   * expected(Reference).

4.300 ‘is_false/1’
==================

   * java_utils_protocol.

4.301 ‘is_hex_digit/1’
======================

   * characterp.

4.302 ‘is_layout/1’
===================

   * characterp.

4.303 ‘is_letter/1’
===================

   * characterp.

4.304 ‘is_lower_case/1’
=======================

   * characterp.

4.305 ‘is_newline/1’
====================

   * characterp.

4.306 ‘is_null/1’
=================

   * java_utils_protocol.

4.307 ‘is_object/1’
===================

   * java_utils_protocol.

4.308 ‘is_octal_digit/1’
========================

   * characterp.

4.309 ‘is_period/1’
===================

   * characterp.

4.310 ‘is_present/0’
====================

   * optional(Reference).

4.311 ‘is_punctuation/1’
========================

   * characterp.

4.312 ‘is_quote/1’
==================

   * characterp.

4.313 ‘is_true/1’
=================

   * java_utils_protocol.

4.314 ‘is_unexpected/0’
=======================

   * expected(Reference).

4.315 ‘is_upper_case/1’
=======================

   * characterp.

4.316 ‘is_void/1’
=================

   * java_utils_protocol.

4.317 ‘is_vowel/1’
==================

   * characterp.

4.318 ‘is_white_space/1’
========================

   * characterp.

4.319 ‘iterator_element/2’
==========================

   * java_utils_protocol.

4.320 ‘join/3’
==============

   * queuep.

4.321 ‘join_all/3’
==================

   * queuep.

4.322 ‘jump/3’
==============

   * queuep.

4.323 ‘jump_all/3’
==================

   * queuep.

4.324 ‘keys/2’
==============

   * dictionaryp.

   * pairs.

4.325 ‘keys_values/3’
=====================

   * pairs.

4.326 ‘keysort/2’
=================

   * listp.

4.327 ‘kurtosis/2’
==================

   * statisticsp.

4.328 ‘language_object/2’
=========================

   * graph_language_registry.

4.329 ‘last/2’
==============

   * listp.

   * varlistp.

4.330 ‘leaf/1’
==============

   * hierarchyp.

4.331 ‘leaf_class/1’
====================

   * class_hierarchyp.

4.332 ‘leaf_classes/1’
======================

   * class_hierarchyp.

4.333 ‘leaf_instance/1’
=======================

   * class_hierarchyp.

4.334 ‘leaf_instances/1’
========================

   * class_hierarchyp.

4.335 ‘leap_year/1’
===================

   * datep.

   * iso8601.

4.336 ‘learn/0’
===============

   * metagol_example_protocol.

4.337 ‘learn/1’
===============

   * metagol_example_protocol.

4.338 ‘learn/2’
===============

   * metagol.

4.339 ‘learn/3’
===============

   * metagol.

4.340 ‘learn_seq/2’
===================

   * metagol.

4.341 ‘learn_with_timeout/4’
============================

   * metagol.

4.342 ‘leash/1’
===============

   * debuggerp.

4.343 ‘leashing/1’
==================

   * debuggerp.

4.344 ‘leaves/1’
================

   * hierarchyp.

4.345 ‘length/2’
================

   * listp.

   * queuep.

   * varlistp.

4.346 ‘libraries/1’
===================

   * diagram(Format).

   * diagrams(Format).

4.347 ‘libraries/2’
===================

   * diagram(Format).

   * diagrams(Format).

4.348 ‘libraries/3’
===================

   * diagram(Format).

   * diagrams(Format).

4.349 ‘library/0’
=================

   * help.

4.350 ‘library/1’
=================

   * code_metric.

   * dead_code_scanner.

   * diagram(Format).

   * diagrams(Format).

   * help.

   * lgtdocp.

4.351 ‘library/2’
=================

   * diagram(Format).

   * diagrams(Format).

   * lgtdocp.

4.352 ‘library_score/2’
=======================

   * code_metric.

4.353 ‘line_to_codes/2’
=======================

   * reader.

4.354 ‘line_to_codes/3’
=======================

   * reader.

4.355 ‘loaded_file/1’
=====================

   * logtalk.

4.356 ‘loaded_file_property/2’
==============================

   * logtalk.

   * modules_diagram_support.

4.357 ‘log_event/2’
===================

   * loggingp.

4.358 ‘log_file/2’
==================

   * loggingp.

4.359 ‘logging/1’
=================

   * loggingp.

4.360 ‘lookup/3’
================

   * dictionaryp.

4.361 ‘lower_upper/2’
=====================

   * characterp.

4.362 ‘magic/2’
===============

   * magic.

4.363 ‘magicise/4’
==================

   * magic.

4.364 ‘make_directory/1’
========================

   * osp.

4.365 ‘make_directory_path/1’
=============================

   * osp.

4.366 ‘manhattan_distance/3’
============================

   * numberlistp.

4.367 ‘manhattan_norm/2’
========================

   * numberlistp.

4.368 ‘manuals/0’
=================

   * help.

4.369 ‘map/2’
=============

   * dictionaryp.

   * expected(Reference).

   * metap.

   * optional(Reference).

4.370 ‘map/3’
=============

   * dictionaryp.

   * metap.

   * pairs.

4.371 ‘map/4’
=============

   * metap.

4.372 ‘map/5’
=============

   * metap.

4.373 ‘map/6’
=============

   * metap.

4.374 ‘map/7’
=============

   * metap.

4.375 ‘map/8’
=============

   * metap.

4.376 ‘map_reduce/5’
====================

   * metap.

4.377 ‘max/2’
=============

   * listp.

   * numberlistp.

   * statisticsp.

4.378 ‘max/3’
=============

   * dictionaryp.

4.379 ‘max_clauses/1’
=====================

   * metagol.

4.380 ‘max_inv_preds/1’
=======================

   * metagol.

4.381 ‘maybe/0’
===============

   * randomp.

4.382 ‘maybe/1’
===============

   * randomp.

4.383 ‘maybe/2’
===============

   * randomp.

4.384 ‘maybe_call/1’
====================

   * randomp.

4.385 ‘maybe_call/2’
====================

   * randomp.

4.386 ‘mean_deviation/2’
========================

   * statisticsp.

4.387 ‘median/2’
================

   * statisticsp.

4.388 ‘median_deviation/2’
==========================

   * statisticsp.

4.389 ‘meets/2’
===============

   * intervalp.

4.390 ‘member/2’
================

   * listp.

   * randomp.

   * setp.

4.391 ‘memberchk/2’
===================

   * listp.

   * setp.

   * varlistp.

4.392 ‘merge/3’
===============

   * heapp.

4.393 ‘message_hook/4’
======================

   * logtalk.

4.394 ‘message_prefix_stream/4’
===============================

   * logtalk.

4.395 ‘message_tokens//2’
=========================

   * logtalk.

4.396 ‘met_by/2’
================

   * intervalp.

4.397 ‘meta_type/3’
===================

   * type.

4.398 ‘metarule/6’
==================

   * metagol.

4.399 ‘metarule_next_id/1’
==========================

   * metagol.

4.400 ‘min/2’
=============

   * listp.

   * numberlistp.

   * statisticsp.

4.401 ‘min/3’
=============

   * dictionaryp.

4.402 ‘min_clauses/1’
=====================

   * metagol.

4.403 ‘module_property/2’
=========================

   * modules_diagram_support.

4.404 ‘monitor/1’
=================

   * event_registryp.

4.405 ‘monitor/4’
=================

   * event_registryp.

4.406 ‘monitor_activated/0’
===========================

   * monitorp.

4.407 ‘monitored/1’
===================

   * event_registryp.

4.408 ‘monitors/1’
==================

   * event_registryp.

4.409 ‘msort/2’
===============

   * listp.

4.410 ‘msort/3’
===============

   * listp.

4.411 ‘name_of_day/3’
=====================

   * datep.

4.412 ‘name_of_month/3’
=======================

   * datep.

4.413 ‘new/1’
=============

   * java_access_protocol.

   * streamvars.

   * termp.

4.414 ‘new/2’
=============

   * java_access_protocol.

   * streamvars.

4.415 ‘new/3’
=============

   * intervalp.

4.416 ‘next/2’
==============

   * zipperp.

4.417 ‘next/3’
==============

   * zipperp.

4.418 ‘next/4’
==============

   * dictionaryp.

4.419 ‘nextto/3’
================

   * listp.

   * varlistp.

4.420 ‘node/7’
==============

   * graph_language_protocol.

4.421 ‘nodebug/0’
=================

   * debuggerp.

4.422 ‘normalize_range/2’
=========================

   * numberlistp.

4.423 ‘normalize_range/4’
=========================

   * numberlistp.

4.424 ‘normalize_scalar/2’
==========================

   * numberlistp.

4.425 ‘normalize_unit/2’
========================

   * numberlistp.

4.426 ‘nospy/1’
===============

   * debuggerp.

4.427 ‘nospy/4’
===============

   * debuggerp.

4.428 ‘nospyall/0’
==================

   * debuggerp.

4.429 ‘notrace/0’
=================

   * debuggerp.

4.430 ‘now/3’
=============

   * timep.

4.431 ‘nth0/3’
==============

   * listp.

   * varlistp.

4.432 ‘nth0/4’
==============

   * listp.

   * varlistp.

4.433 ‘nth1/3’
==============

   * listp.

   * varlistp.

4.434 ‘nth1/4’
==============

   * listp.

   * varlistp.

4.435 ‘null/1’
==============

   * java_utils_protocol.

4.436 ‘occurs/2’
================

   * termp.

4.437 ‘of/2’
============

   * optional.

4.438 ‘of_expected/2’
=====================

   * expected.

4.439 ‘of_unexpected/2’
=======================

   * expected.

4.440 ‘operating_system_type/1’
===============================

   * osp.

4.441 ‘option/2’
================

   * lgtdocp.

4.442 ‘or_else/2’
=================

   * expected(Reference).

   * optional(Reference).

4.443 ‘or_else_call/2’
======================

   * expected(Reference).

   * optional(Reference).

4.444 ‘or_else_fail/1’
======================

   * expected(Reference).

   * optional(Reference).

4.445 ‘or_else_get/2’
=====================

   * expected(Reference).

   * optional(Reference).

4.446 ‘or_else_throw/1’
=======================

   * expected(Reference).

4.447 ‘output_file_name/2’
==========================

   * graph_language_protocol.

4.448 ‘overlapped_by/2’
=======================

   * intervalp.

4.449 ‘overlaps/2’
==================

   * intervalp.

4.450 ‘parent/1’
================

   * proto_hierarchyp.

4.451 ‘parenthesis/2’
=====================

   * characterp.

4.452 ‘parents/1’
=================

   * proto_hierarchyp.

4.453 ‘parse/2’
===============

   * xml.

4.454 ‘parse/3’
===============

   * xml.

4.455 ‘parse_domain/2’
======================

   * pddl.

4.456 ‘parse_domain/3’
======================

   * pddl.

4.457 ‘parse_problem/2’
=======================

   * pddl.

4.458 ‘parse_problem/3’
=======================

   * pddl.

4.459 ‘partial_map/4’
=====================

   * rbtree.

4.460 ‘partition/3’
===================

   * either.

4.461 ‘partition/4’
===================

   * metap.

4.462 ‘partition/5’
===================

   * listp.

4.463 ‘partition/6’
===================

   * metap.

4.464 ‘permutation/2’
=====================

   * listp.

   * randomp.

   * varlistp.

4.465 ‘pid/1’
=============

   * osp.

4.466 ‘plus/3’
==============

   * integer.

4.467 ‘port/5’
==============

   * ports_profiler.

4.468 ‘postorder/2’
===================

   * bintree.

4.469 ‘powerset/2’
==================

   * setp.

4.470 ‘pp/1’
============

   * xml.

4.471 ‘pprint/1’
================

   * metagol.

4.472 ‘predicate/2’
===================

   * dead_code_scanner.

4.473 ‘predicate_info_pair_score_hook/4’
========================================

   * doc_metric.

4.474 ‘predicate_info_score_hook/3’
===================================

   * doc_metric.

4.475 ‘predicate_mode_score_hook/3’
===================================

   * doc_metric.

4.476 ‘predicate_mode_score_hook/5’
===================================

   * doc_metric.

4.477 ‘predicates/2’
====================

   * dead_code_scanner.

4.478 ‘prefix/2’
================

   * listp.

   * varlistp.

4.479 ‘prefix/3’
================

   * listp.

4.480 ‘preorder/2’
==================

   * bintree.

4.481 ‘previous/2’
==================

   * zipperp.

4.482 ‘previous/3’
==================

   * zipperp.

4.483 ‘previous/4’
==================

   * dictionaryp.

4.484 ‘print_flags/0’
=====================

   * flags.

   * flags_validator.

4.485 ‘print_flags/1’
=====================

   * flags.

4.486 ‘print_message/3’
=======================

   * logtalk.

4.487 ‘print_message_token/4’
=============================

   * logtalk.

4.488 ‘print_message_tokens/3’
==============================

   * logtalk.

4.489 ‘product/2’
=================

   * numberlistp.

   * statisticsp.

4.490 ‘product/3’
=================

   * setp.

4.491 ‘program_to_clauses/2’
============================

   * metagol.

4.492 ‘proper_prefix/2’
=======================

   * listp.

4.493 ‘proper_prefix/3’
=======================

   * listp.

4.494 ‘proper_suffix/2’
=======================

   * listp.

4.495 ‘proper_suffix/3’
=======================

   * listp.

4.496 ‘prove/2’
===============

   * interpreterp.

4.497 ‘prove/3’
===============

   * interpreterp.

4.498 ‘question_hook/6’
=======================

   * logtalk.

4.499 ‘question_prompt_stream/4’
================================

   * logtalk.

4.500 ‘quick_check/1’
=====================

   * lgtunit.

4.501 ‘quick_check/2’
=====================

   * lgtunit.

4.502 ‘quick_check/3’
=====================

   * lgtunit.

4.503 ‘random/1’
================

   * randomp.

4.504 ‘random/3’
================

   * randomp.

4.505 ‘random_tree/1’
=====================

   * benchmark_generators.

4.506 ‘randomize/1’
===================

   * fast_random.

   * random.

4.507 ‘randseq/4’
=================

   * randomp.

4.508 ‘randset/4’
=================

   * randomp.

4.509 ‘range/2’
===============

   * statisticsp.

4.510 ‘rdirectory/1’
====================

   * code_metric.

   * dead_code_scanner.

   * diagram(Format).

   * diagrams(Format).

   * lgtdocp.

   * wrapper.

4.511 ‘rdirectory/2’
====================

   * diagram(Format).

   * diagrams(Format).

   * lgtdocp.

   * wrapper.

4.512 ‘rdirectory/3’
====================

   * diagram(Format).

   * diagrams(Format).

4.513 ‘rdirectory_score/2’
==========================

   * code_metric.

4.514 ‘read_file/2’
===================

   * read_file.

4.515 ‘relative_standard_deviation/2’
=====================================

   * statisticsp.

4.516 ‘removeDependent/1’
=========================

   * subject.

4.517 ‘remove_duplicates/2’
===========================

   * listp.

   * varlistp.

4.518 ‘rename_file/2’
=====================

   * osp.

4.519 ‘replace/3’
=================

   * zipperp.

4.520 ‘replace_sub_atom/4’
==========================

   * atom.

4.521 ‘rescale/3’
=================

   * numberlistp.

4.522 ‘reset/0’
===============

   * counter.

   * debuggerp.

   * ports_profiler.

4.523 ‘reset/1’
===============

   * ports_profiler.

4.524 ‘reset_counter/1’
=======================

   * counters.

4.525 ‘reset_counters/0’
========================

   * counters.

4.526 ‘reset_flags/0’
=====================

   * flags.

4.527 ‘reset_flags/1’
=====================

   * flags.

4.528 ‘reset_gensym/0’
======================

   * gensym.

4.529 ‘reset_gensym/1’
======================

   * gensym.

4.530 ‘reset_monitor/0’
=======================

   * monitorp.

4.531 ‘reset_seed/0’
====================

   * fast_random.

   * random.

4.532 ‘reverse/2’
=================

   * listp.

   * varlistp.

4.533 ‘rewind/2’
================

   * zipperp.

4.534 ‘rewind/3’
================

   * zipperp.

4.535 ‘rlibrary/1’
==================

   * code_metric.

   * dead_code_scanner.

   * diagram(Format).

   * diagrams(Format).

   * lgtdocp.

4.536 ‘rlibrary/2’
==================

   * diagram(Format).

   * diagrams(Format).

   * lgtdocp.

4.537 ‘rlibrary_score/2’
========================

   * code_metric.

4.538 ‘rule/2’
==============

   * databasep.

4.539 ‘rule/3’
==============

   * databasep.

4.540 ‘rule/4’
==============

   * databasep.

4.541 ‘run/0’
=============

   * lgtunit.

4.542 ‘run/1’
=============

   * lgtunit.

4.543 ‘run/2’
=============

   * lgtunit.

4.544 ‘run_test_sets/1’
=======================

   * lgtunit.

4.545 ‘same_length/2’
=====================

   * listp.

   * varlistp.

4.546 ‘same_length/3’
=====================

   * listp.

4.547 ‘save/0’
==============

   * wrapper.

4.548 ‘save/1’
==============

   * wrapper.

4.549 ‘scalar_product/3’
========================

   * numberlistp.

4.550 ‘scan_left/4’
===================

   * metap.

4.551 ‘scan_left_1/3’
=====================

   * metap.

4.552 ‘scan_right/4’
====================

   * metap.

4.553 ‘scan_right_1/3’
======================

   * metap.

4.554 ‘select/3’
================

   * listp.

   * randomp.

   * setp.

   * varlistp.

4.555 ‘select/4’
================

   * listp.

4.556 ‘selectchk/3’
===================

   * listp.

   * setp.

4.557 ‘selectchk/4’
===================

   * listp.

4.558 ‘send/3’
==============

   * redis.

4.559 ‘sequence/3’
==================

   * integer.

4.560 ‘sequence/4’
==================

   * randomp.

4.561 ‘serve/3’
===============

   * queuep.

4.562 ‘set/1’
=============

   * counter.

4.563 ‘set/4’
=============

   * randomp.

4.564 ‘set_field/2’
===================

   * java_access_protocol.

4.565 ‘set_flag_value/2’
========================

   * flags.

4.566 ‘set_flag_value/3’
========================

   * flags.

4.567 ‘set_monitor/4’
=====================

   * event_registryp.

4.568 ‘set_option/2’
====================

   * lgtdocp.

4.569 ‘set_seed/1’
==================

   * randomp.

4.570 ‘set_spy_point/4’
=======================

   * monitorp.

4.571 ‘shell/1’
===============

   * osp.

4.572 ‘shell/2’
===============

   * osp.

4.573 ‘shell_command/1’
=======================

   * doclet.

4.574 ‘shrink/3’
================

   * arbitrary.

4.575 ‘shrinker/1’
==================

   * arbitrary.

4.576 ‘singletons/2’
====================

   * termp.

4.577 ‘size/2’
==============

   * dictionaryp.

   * heapp.

   * setp.

4.578 ‘skewness/2’
==================

   * statisticsp.

4.579 ‘sleep/1’
===============

   * osp.

4.580 ‘sort/2’
==============

   * listp.

4.581 ‘sort/3’
==============

   * listp.

4.582 ‘sort/4’
==============

   * listp.

4.583 ‘source_file_extension/1’
===============================

   * modules_diagram_support.

4.584 ‘split/3’
===============

   * atom.

4.585 ‘split/4’
===============

   * listp.

4.586 ‘spy/1’
=============

   * debuggerp.

4.587 ‘spy/4’
=============

   * debuggerp.

4.588 ‘spy_point/4’
===================

   * monitorp.

4.589 ‘spying/1’
================

   * debuggerp.

4.590 ‘spying/4’
================

   * debuggerp.

4.591 ‘standard_deviation/2’
============================

   * statisticsp.

4.592 ‘start/0’
===============

   * shell.

4.593 ‘started_by/2’
====================

   * intervalp.

4.594 ‘starts/2’
================

   * intervalp.

4.595 ‘stream_to_chars/2’
=========================

   * reader.

4.596 ‘stream_to_chars/3’
=========================

   * reader.

4.597 ‘stream_to_codes/2’
=========================

   * reader.

4.598 ‘stream_to_codes/3’
=========================

   * reader.

4.599 ‘stream_to_terms/2’
=========================

   * reader.

4.600 ‘stream_to_terms/3’
=========================

   * reader.

4.601 ‘subclass/1’
==================

   * class_hierarchyp.

4.602 ‘subclasses/1’
====================

   * class_hierarchyp.

4.603 ‘sublist/2’
=================

   * listp.

   * varlistp.

4.604 ‘subsequence/3’
=====================

   * listp.

4.605 ‘subsequence/4’
=====================

   * listp.

4.606 ‘subset/2’
================

   * setp.

4.607 ‘substitute/4’
====================

   * listp.

4.608 ‘subsumes/2’
==================

   * termp.

4.609 ‘subterm/2’
=================

   * termp.

   * xml.

4.610 ‘subtract/3’
==================

   * listp.

   * setp.

   * varlistp.

4.611 ‘succ/2’
==============

   * integer.

4.612 ‘suffix/2’
================

   * listp.

   * varlistp.

4.613 ‘suffix/3’
================

   * listp.

4.614 ‘sum/2’
=============

   * numberlistp.

   * statisticsp.

4.615 ‘superclass/1’
====================

   * class_hierarchyp.

4.616 ‘superclasses/1’
======================

   * class_hierarchyp.

4.617 ‘suspend_monitor/0’
=========================

   * monitorp.

4.618 ‘symdiff/3’
=================

   * setp.

4.619 ‘take/3’
==============

   * listp.

4.620 ‘term_expansion/2’
========================

   * expanding.

4.621 ‘terms_to_array/2’
========================

   * java_utils_protocol.

4.622 ‘time_stamp/1’
====================

   * osp.

4.623 ‘timeout/1’
=================

   * metagol.

4.624 ‘today/3’
===============

   * datep.

4.625 ‘tolerance_equal/4’
=========================

   * lgtunit.

   * number.

4.626 ‘top/3’
=============

   * heapp.

4.627 ‘top_next/5’
==================

   * heapp.

4.628 ‘trace/0’
===============

   * debuggerp.

4.629 ‘trace_event/2’
=====================

   * logtalk.

4.630 ‘transpose/2’
===================

   * pairs.

4.631 ‘true/1’
==============

   * java_utils_protocol.

4.632 ‘type/1’
==============

   * type.

4.633 ‘unexpected/1’
====================

   * expected(Reference).

4.634 ‘unexpecteds/2’
=====================

   * either.

4.635 ‘union/3’
===============

   * setp.

4.636 ‘union/4’
===============

   * setp.

4.637 ‘unzip/2’
===============

   * zipperp.

4.638 ‘update/0’
================

   * doclet.

4.639 ‘update/1’
================

   * observer.

4.640 ‘update/4’
================

   * dictionaryp.

4.641 ‘update/5’
================

   * dictionaryp.

4.642 ‘valid/1’
===============

   * intervalp.

   * statisticsp.

   * termp.

   * varlistp.

4.643 ‘valid/2’
===============

   * type.

4.644 ‘valid/3’
===============

   * datep.

   * timep.

4.645 ‘valid_date/3’
====================

   * iso8601.

4.646 ‘validate/1’
==================

   * flags_validator.

4.647 ‘value/1’
===============

   * counter.

4.648 ‘value_reference/2’
=========================

   * java_utils_protocol.

4.649 ‘values/2’
================

   * dictionaryp.

   * pairs.

4.650 ‘variables/2’
===================

   * termp.

4.651 ‘variance/2’
==================

   * statisticsp.

4.652 ‘variant/2’
=================

   * lgtunit.

   * termp.

4.653 ‘void/1’
==============

   * java_utils_protocol.

4.654 ‘wall_time/1’
===================

   * osp.

4.655 ‘welcome/0’
=================

   * shell.

4.656 ‘when/2’
==============

   * coroutining.

4.657 ‘whiledo/2’
=================

   * loopp.

4.658 ‘working_directory/1’
===========================

   * osp.

4.659 ‘z_normalization/2’
=========================

   * statisticsp.

4.660 ‘zip/2’
=============

   * zipperp.

4.661 ‘zip/3’
=============

   * zipperp.

4.662 ‘zip_at_index/4’
======================

   * zlist.

Indices and tables
******************

   * genindex

   * search

Generated on Tue Sep 17 14:59:52 WEST 2019