This documentation corresponds to version 1.22 (2022/9/28, 17:41:23 CET).

Copyright © 1997-2011 Francisco Bueno, Daniel Cabeza, Manuel Carro, Manuel Hermenegildo, P. López, and Germán Puebla

This document may be freely read, stored, reproduced, disseminated, translated or quoted by any means and on any medium provided the following conditions are met:

 1. Every reader or user of this document acknowledges that is aware that no guarantee is given regarding its contents, on any account, and specifically concerning veracity, accuracy and fitness for any purpose.

 2. No modification is made other than cosmetic, change of representation format, translation, correction of obvious syntactic errors, or as permitted by the clauses below.

 3. Comments and other additions may be inserted, provided they clearly appear as such; translations or fragments must clearly refer to an original complete version, preferably one that is easily accessed whenever possible.

 4. Translations, comments and other additions or modifications must be dated and their author(s) must be identifiable (possibly via an alias).

 5. This licence is preserved and applies to the whole document with modifications and additions (except for brief quotes), independently of the representation format.

 6. Any reference to the "official version", "original version" or "how to obtain original versions" of the document is preserved verbatim. Any copyright notice in the document is preserved verbatim. Also, the title and author(s) of the original document should be clearly mentioned as such.

 7. In the case of translations, verbatim sentences mentioned in (6.) are preserved in the language of the original document accompanied by verbatim translations to the language of the traslated document. All translations state clearly that the author is not responsible for the translated work. This license is included, at least in the language in which it is referenced in the original version.

 8. Whatever the mode of storage, reproduction or dissemination, anyone able to access a digitized version of this document must be able to make a digitized copy in a format directly usable, and if possible editable, according to accepted, and publicly documented, public standards.

 9. Redistributing this document to a third party requires simultaneous redistribution of this licence, without modification, and in particular without any further condition or restriction, expressed or implied, related or not to this redistribution. In particular, in case of inclusion in a database or collection, the owner or the manager of the database or the collection renounces any right related to this inclusion and concerning the possible uses of the document after extraction from the database or the collection, whether alone or in relation with other documents.

Any incompatibility of the above clauses with legal, contractual or judiciary decisions or constraints implies a corresponding limitation of reading, usage, or redistribution rights for this document, verbatim or modified.

The Ciao System
***************

Ciao is a general purpose, multi-paradigm programming language in the Prolog family. Its modular design allows working with fully declarative subsets of Prolog and also to extend these subsets both syntactically and semantically. Most importantly, these restrictions and extensions can be activated separately on each program module so that several extensions can coexist in the same application for different modules, providing both clear program semantics and the precise assumptions required to perform effective global program analysis and static debugging and optimization.

The Ciao language is intended to support several kinds of uses:

  * Ciao can be used as a classical Prolog and logic programming system. It includes standard ISO-Prolog as a sublanguage and a program development environment similar to that of traditional Prolog and constraint logic programming (CLP) implementations. The Ciao programming environment includes a classical top level and a rich Emacs interface with an embeddable source-level debugger, a number of execution visualization tools, and several useful extensions such as alternative control rules (breadth-first search, iterative deepening, ...), and several constraint domains.

  * Ciao includes many modern general-purpose programming language features and idioms, such as functions, higher-order (with predicate abstractions), mutables, records, persistence, concurrency (threads/engines), parallel execution, or distributed execution. Ciao includes an assertion language for declaring (optional) program properties, automatic static inference and static/dynamic checking of such assertions, testing, documentation, etc. (some tasks performed by the CiaoPP Program Processor ( ciaopp)).

  * Ciao supports programming in the large with separate/incremental compiler, an integrated build system, an automatic documentation generator ( lpdoc), and a set of standard and contributed libraries providing useful data structures, access to the operating system and networking, Web programming, as well as foreign interfaces, and several bindings to different languages and systems.

  * Ciao supports programming in the small through its dynamic language features (dynamically typed, dynamic program modification). It supports producing small executables (including only those libraries actually used by the program) and writing scripts.

  * Ciao is also a very good platform for experimenting with new language features,  languages, analyses, and program transformations.

The Ciao distribution consists in a complete public domain, open-source implementation, very competitive with other commercial and academic languages (including other Prolog/CLP systems), and distributed under the GNU Library General Public License (LGPL).

This documentation corresponds to version 1.22 (2022/9/28, 17:41:23 CET).
     [file ciaointro.texic not included]
     [file GettingStarted.texic not included]
     [file Install.texic not included]
     [file CommandLineUse.texic not included]
     [file EmacsUse.texic not included]
     [file Troubleshooting.texic not included]
     [file DevEnv.texic not included]
     [file toplevel_doc.texic not included]
     [file debugger_doc.texic not included]
     [file debugger.texic not included]
     [file builder_doc.texic not included]
     [file ciaoc.texic not included]
     [file ciao-shell.texic not included]
     [file ciao-utilities.texic not included]
     [file ciaodump.texic not included]
     [file callgraph.texic not included]
     [file pldiff.texic not included]
     [file CiaoMode.texic not included]
     [file AdvCiaoEmacs.texic not included]
     [file flycheck-ciao.texic not included]
     [file company-ciao.texic not included]
     [file BasicLang.texic not included]
     [file Conventions.texic not included]
     [file modules.texic not included]
     [file bundles_doc.texic not included]
     [file packages.texic not included]
     [file condcomp_doc.texic not included]
     [file basiccontrol.texic not included]
     [file exceptions.texic not included]
     [file term_typing.texic not included]
     [file term_basic.texic not included]
     [file term_compare.texic not included]
     [file atomic_basic.texic not included]
     [file arithmetic.texic not included]
     [file AssrtLang.texic not included]
     [file assertions_doc.texic not included]
     [file assertions_props.texic not included]
     [file regtypes_doc.texic not included]
     [file basic_props.texic not included]
     [file native_props.texic not included]
     [file native_props_shfrg_doc.texic not included]
     [file native_props_nfdet_doc.texic not included]
     [file native_props_cardinality_doc.texic not included]
     [file native_props_exceptions_doc.texic not included]
     [file native_props_sideff_doc.texic not included]
     [file native_props_polyhedral_doc.texic not included]
     [file native_props_cost_doc.texic not included]
     [file modes_doc.texic not included]
     [file isomodes_doc.texic not included]
     [file basicmodes_doc.texic not included]
     [file doccomments_doc.texic not included]
     [file ExtendLang.texic not included]
     [file noprelude_doc.texic not included]
     [file pure_doc.texic not included]
     [file hiord_rt.texic not included]
     [file traits_doc.texic not included]
     [file argnames_doc.texic not included]
     [file fsyntax_doc.texic not included]
     [file dcg_doc.texic not included]
     [file dcg_phrase_doc.texic not included]
     [file global_vars.texic not included]
     [file mutables.texic not included]
     [file indexer_doc.texic not included]
     [file block_doc.texic not included]
     [file freeze.texic not included]
     [file when.texic not included]
     [file andorra_doc.texic not included]
     [file det_hook_doc.texic not included]
     [file det_hook_rt.texic not included]
     [file lazy_doc.texic not included]
     [file lazy_lib.texic not included]
     [file bf_doc.texic not included]
     [file id_doc.texic not included]
     [file odd.texic not included]
     [file aggregates.texic not included]
     [file datafacts_doc.texic not included]
     [file datafacts_rt.texic not included]
     [file dynamic_doc.texic not included]
     [file dynamic_rt.texic not included]
     [file dynamic_clauses_doc.texic not included]
     [file dynamic_clauses_rt.texic not included]
     [file persdb_rt.texic not included]
     [file persdb_examples.texic not included]
     [file datadir.texic not included]
     [file factsdb_doc.texic not included]
     [file factsdb_rt.texic not included]
     [file concurrency.texic not included]
     [file conc_aggregates.texic not included]
     [file actmod_doc.texic not included]
     [file actmod_dist.texic not included]
     [file regp_filebased.texic not included]
     [file regp_platformbased.texic not included]
     [file regp_webbased.texic not included]
     [file actmod_process.texic not included]
     [file actmod_rt.texic not included]
     [file clpq_doc.texic not included]
     [file clpr_doc.texic not included]
     [file clpfd_doc.texic not included]
     [file clpfd_rt.texic not included]
     [file tabling_doc.texic not included]
     [file attr_doc.texic not included]
     [file attr_rt.texic not included]
     [file attributes.texic not included]
     [file foreign_interface_doc.texic not included]
     [file foreign_interface_properties.texic not included]
     [file foreign_compilation.texic not included]
     [file CompatProlog.texic not included]
     [file classic_doc.texic not included]
     [file classic_predicates.texic not included]
     [file iso_strict_doc.texic not included]
     [file iso_char.texic not included]
     [file iso_misc.texic not included]
     [file iso_incomplete.texic not included]
     [file dec10_io.texic not included]
     [file old_database.texic not included]
     [file ttyout.texic not included]
     [file runtime_ops_doc.texic not included]
     [file listing.texic not included]
     [file DataStructuresAlgs.texic not included]
     [file lists.texic not included]
     [file hiordlib.texic not included]
     [file sort.texic not included]
     [file llists.texic not included]
     [file idlists.texic not included]
     [file numlists.texic not included]
     [file strings.texic not included]
     [file fuzzy_search.texic not included]
     [file diff.texic not included]
     [file dict.texic not included]
     [file vndict.texic not included]
     [file arrays.texic not included]
     [file assoc.texic not included]
     [file keys.texic not included]
     [file graphs.texic not included]
     [file ugraphs.texic not included]
     [file lgraphs.texic not included]
     [file queues.texic not included]
     [file sets.texic not included]
     [file bitcodesets.texic not included]
     [file lsets.texic not included]
     [file StdLibs.texic not included]
     [file streams.texic not included]
     [file stream_basic.texic not included]
     [file io_basic.texic not included]
     [file stream_utils.texic not included]
     [file tokenize.texic not included]
     [file read.texic not included]
     [file read_from_string.texic not included]
     [file write.texic not included]
     [file operators.texic not included]
     [file format.texic not included]
     [file terms_io.texic not included]
     [file messages_basic.texic not included]
     [file runtime_control.texic not included]
     [file system_info.texic not included]
     [file assrt_lib.texic not included]
     [file compiler.texic not included]
     [file libpaths.texic not included]
     [file system.texic not included]
     [file pathnames.texic not included]
     [file process.texic not included]
     [file process_channel.texic not included]
     [file ExtraLibs.texic not included]
     [file io_alias_redirection.texic not included]
     [file port_reify.texic not included]
     [file io_port_reify.texic not included]
     [file ctrlcclean.texic not included]
     [file errhandle.texic not included]
     [file terms.texic not included]
     [file terms_check.texic not included]
     [file terms_vars.texic not included]
     [file cyclic_terms.texic not included]
     [file fastrw.texic not included]
     [file modblobs.texic not included]
     [file formulae.texic not included]
     [file counters.texic not included]
     [file between.texic not included]
     [file pretty_print.texic not included]
     [file assrt_write.texic not included]
     [file syntax_highlight.texic not included]
     [file source_tree.texic not included]
     [file version_strings.texic not included]
     [file librowser.texic not included]
     [file random.texic not included]
     [file random_aggregates.texic not included]
     [file sockets.texic not included]
     [file sockets_io.texic not included]
     [file http_doc.texic not included]
     [file http_client.texic not included]
     [file http_server.texic not included]
     [file url.texic not included]
     [file http_forms.texic not included]
     [file cgi.texic not included]
     [file http_messages.texic not included]
     [file http_date.texic not included]
     [file http_grammar.texic not included]
     [file pillow_doc.texic not included]
     [file html.texic not included]
     [file json.texic not included]
     [file color_space.texic not included]
     [file glob.texic not included]
     [file regexp_doc.texic not included]
     [file regexp_code.texic not included]
     [file text_template.texic not included]
     [file messages.texic not included]
     [file menu_doc.texic not included]
     [file menu_generator.texic not included]
     [file getopts.texic not included]
     [file system_extra.texic not included]
     [file parse_shell_args.texic not included]
     [file archive_files.texic not included]
     [file file_locks.texic not included]
     [file symfnames.texic not included]
     [file opendoc.texic not included]
     [file emacs.texic not included]
     [file ciaorefs.texic not included]
     [file ciaoliindex.texic not included]
     [file ciaopdindex.texic not included]
     [file ciaoprindex.texic not included]
     [file ciaoteindex.texic not included]
     [file ciaodeindex.texic not included]
     [file ciaocoindex.texic not included]
     [file ciaoauindex.texic not included]
     [file ciaoglindex.texic not included]