Home Page

The {log} (read setlog) project aims at the design and development of a Constraint Logic Programming language that embodies the fundamental forms of set designation and a number of primitive operations for set management.
Various new features have been added to the core part of the language since the initial development of {log}. Among them, basic facilities for representing and manipulating multisets, intervals of integers (integrating the CLP(FD) solver), binary relations, partial functions.
The {log} language can be used either as a stand-alone CLP language or as an addition to Prolog that allows to extend Prolog with set constraint management facilities. 

On May 2016, {log} has obtained the Artifact Evaluated Stamp issued by CAV 2016

Here you can find ...

using {log}
current releases
programming examples
previous releases
user's manual and papers

Using {log}

Download the {log} interpreter (file setlog.pl) along with its related libraries (files setloglib.slog, setloglibpf.slog, setlog_rules.slog), and save them into the same directory. To start working with the interpreter, invoke Prolog and then load the {log} interpreter, e.g., by giving the directive ?-consult(setlog)
{log} can be used either (a) in an interactive way, or (b) as a Prolog library within any Prolog program.
(a) To start using {log} in an interactive way give the goal ?-setlog. {log} will notify you that it is ready to accept {log} goals by showing its prompt ({log}=>) on the standard output. 
To exit from the {log} interactive environment give the goal {log}=>halt. To re-enter the {log} interactive environment give the goal ?-setlog
(b) To use {log} within a Prolog program (i.e.,without leaving the Prolog execution environment), call the predicate setlog(+Goal,-Constr_ext), where Goal is any {log} goal and Constr_ext is the (possibly empty) list of computed {log} set constraints (see the help information for other predicates to call {log} within a Prolog program).

Use the Prolog goal setlog_help or the {log} goal help to get general help information.

Current releases

User's manual and papers