<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>DALL'UNIFICAZIONE INSIEMISTICA AI VINCOLI SU INSIEMI FROM SET UNIFICATION TO SET CONSTRAINTS</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Gianfranco Rossi</string-name>
        </contrib>
      </contrib-group>
      <fpage>20</fpage>
      <lpage>25</lpage>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>In questo articolo riassumiamo brevemente alcuni dei
problemi piu` interessanti che nascono quando si
permette di trattare gli insiemi come oggetti di “prima
classe” in un linguaggio logico, dall’unificazione di
insiemi ben-fondati e non alla soluzioni di vincoli su insiemi.
In this paper, we briefly summarize some of the most
challenging issues that arise when allowing sets to be dealt
with as first-class objects in a logic language, ranging from
set unification of well-founded and non-well-founded sets
to set constraint solving.
1</p>
    </sec>
    <sec id="sec-2">
      <title>Introduction</title>
      <p>Sets are familiar mathematical objects, and they are often
used as a high-level abstraction to represent complex data
structures, whenever the order and repetitions of elements
are immaterial.</p>
      <p>In the last two decades, a number of proposals have
emerged where sets are dealt with as primitive objects of
a (first-order) logic language. In this context, sets are
often represented as first-order terms, called set terms, built
from symbols of a suitable alphabet, using selected
function symbols as set constructors. Furthermore, the
language usually provides the typical set-theoretic operations
to manipulate set objects.</p>
      <p>These short notes summarize some of the most
challenging issues arising when manipulating finite sets in a
logic language. In Section 2 we briefly review set
unification, i.e., the key problem of solving equations between
set terms. In Section 3 the unification problem is extended
to the case of non-well-founded sets. In Section 4 we
introduce set constraints as a way to allow set-theoretic
operations other than set equality to be taken into account.
Finally, in Section 5 we briefly review proposals aiming at
making set constraint solving more effective.
2</p>
    </sec>
    <sec id="sec-3">
      <title>Set Unification</title>
      <p>Intuitively, the set unification problem is the problem of
computing (or simply testing the existence of) an
assignment of values to the variables occurring in two set terms
which makes them denote the same set.</p>
      <p>
        Various forms of set unification have been used in
various application areas, such as (see [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]): deductive
databases, AI and its various sub-fields (e.g., Automated
Deduction and Natural Language Processing), program
analysis and security, declarative programming languages
with sets.
      </p>
      <p>Set unification can be thought of as an instance of
Eunification, i.e., unification modulo an equational theory
E, where the identities in E capture the properties of set
terms—i.e., the fact that the ordering and repetitions of
elements in a set are immaterial.</p>
      <p>
        The equational theory E is strongly related to the
representation adopted for set terms. Two main approaches
have been presented in the literature: the union-based
representation, and the list-like representation. The
unionbased representation makes use of the union operator (∪)
to construct sets. This representation has been often used
when dealing with the problem of set unification on its
own, where set unification is dealt with as an ACI
unification problem—i.e., unification in presence of operators
satisfying the Associativity, Commutativity, and
Idempotence properties (e.g., [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]).
      </p>
      <p>The list-like representation builds sets using an element
insertion constructor (typically denoted by {· | ·}). With
this approach, the finite set {t0, . . . , tn} is represented by
a sequence of element insertions</p>
      <p>
        {t0 | {· · · {tn | ∅} · · ·}},
where t0, . . . , tn are either individuals or sets. While this
representation restricts the number of set variables which
can occur in each set term to one, on the other hand it
allows sets to be viewed and manipulated in a fashion
similar to lists. As a matter of fact, this representation has
been adopted in a number of logic and functional-logic
programming languages with sets (e.g., CLP (SE T ) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]).
      </p>
      <p>
        Various authors have investigated the problem of set
unification using the list-like representation [
        <xref ref-type="bibr" rid="ref12 ref23 ref3 ref8">3, 12, 23, 8</xref>
        ].
In particular, the algorithm presented in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] considers an
equational theory E containing the two identities (Ab) and
(C`) stating the fundamental properties of the set
constructor {· | ·}:
(Ab)
(C`)
{X | Z}
{Y | {X | Z}}.
{X | {X | Z}}
{X | {Y | Z}}
≈
≈
The core of the unification algorithm is very similar in
structure to the traditional unification algorithms for
standard Herbrand terms (e.g., [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ]). The main difference
is represented by the reduction of equations between set
terms, {Y1 | V1} = {Y2 | V2}. The algorithm allows also to
account for equations of the form X = {t0, . . . , tn | X},
with X 6∈ vars (t0, . . . , tn), which turns out to be
satisfiable for any X containing t0, . . . , tn thanks to (Ab) and
(C`)). As an example, given the set unification problem
{X | S} = {1, 2}
(where {1, 2} is a syntactic shorthand for {1 | {2 | ∅}})
the algorithm non-deterministically computes the
following (complete) set of solutions: X = 1 ∧ S = { }
2 , X =
1 ∧ S = {1, 2}, X = 2 ∧ S = {1}, X = 2 ∧ S = {1, 2}.
      </p>
      <p>
        A general survey of the problem of unification in
presence of sets, across different set representations and
different admissible classes of set terms, can be found in [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>
        The computational complexity properties of the set
unification have been investigated by Kapur and
Narendran [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], who established that these decision problems are
NP-complete. Complexity of the set unification operation,
however, depends on which forms of set terms (e.g., flat
or nested sets, with zero, one, or more set variables) are
allowed. The form of set terms in turn is influenced by the set
constructors used to build them. Thus, different
complexity results can be obtained for different classes of set terms.
For instance, while the set equivalence test of ground set
terms denoting flat sets, such as {a, b, c} and {b, c, a}, is
rather easy, when the decision problem deals with nested
set terms involving variables it becomes NP-complete.
      </p>
      <p>
        Various authors have considered simplified versions of
the (Ab)(C`) problem obtained by imposing restrictions
on the form of the set terms. In particular, various works
have been proposed to study the simpler cases of
matching1 and unification of Bound Simple set terms, i.e., bound
set terms of the form {s1, . . . , sn}, where each si is either
a constant or a variable [
        <xref ref-type="bibr" rid="ref16 ref4">4, 16</xref>
        ].
      </p>
      <p>1Set matching can be seen as a special case of set unification, where
variables are allowed to occur in only one of the two set terms which are
compared.
3</p>
    </sec>
    <sec id="sec-4">
      <title>Hypersets</title>
      <p>Sets considered so far are the so called hereditarily finite
sets, i.e. sets with a finite number of elements, all of which
are themselves hereditarily finite. This definition leaves
still a further possibility for infinity. Let us consider the
sets x and y that satisfy the equations x = {∅, y}, y =
{x}. They are hereditarily finite, but they hide an infinite
descending chain x 3 y 3 x 3 y 3 · · ·. These sets in
which, roughly speaking, membership can form cycles are
called non-well-founded sets (or hypersets). Hypersets are
very important in some areas, such as concurrency theory,
but hyperset theory has been applied in a number of areas
of logic, linguistics, and computer science, as well.</p>
      <p>Introducing hypersets as a data structure in a logic
programming language requires a unification algorithm that is
able to deal with objects denoting hypersets. All set
unification algorithms cited in the previous section, however,
consider well-founded sets only.</p>
      <p>
        An hyperset unification algorithm is shown in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. The
key idea underlying this algorithm is that of enlarging the
domain of discourse from terms (i.e., finite trees) over the
signature Σ to directed labeled graphs over Σ, possibly
with cycles. This data structure, when involving the
interpreted function symbol {· | ·} used as the set constructor,
can be regarded as a convenient way to denote hypersets.
For instance, a solution to the equation X = {X} is a
cyclic graph which can be interpreted as an hyperset
containing itself as its only element. In addition, a notion of
bisimulation which applies to this kind of graphs is defined
and the interpretation domain is taken as the set of directed
labeled graphs over Σ modulo the equivalence relation
induced by bisimulation.
      </p>
      <p>
        The algorithm in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] can be seen as an adaptation of
the set unification algorithm of [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. Many of the changes
required to move from set to hyperset unification are the
same needed when moving from standard unification to
unification over (uninterpreted) rational trees, for which
a number of efficient algorithms have been proposed in the
literature (e.g., [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]). In particular the hyperset unification
algorithm in [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] works on Herbrand systems of equations,
avoiding full variable substitution and adding simple
nonmembership constraints to avoid the possibly endless
repeated insertions of the same elements into hypersets.
4
      </p>
    </sec>
    <sec id="sec-5">
      <title>Set Constraints</title>
      <p>The algorithms cited above focus only on equality between
set terms. Besides equality, however, other basic set
operations, such as membership, inclusion, union, etc., are
usually required for dealing with sets in a more general way.</p>
      <p>
        A number of proposals have been put forward in the last
fifteen years in which general set-based formulae are
considered and procedures to check their consistency are
developed. Most of these proposals have emerged in the
context of Constraint (Logic) Programming (see, e.g., [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]).
In this context, set-theoretical operations are conveniently
dealt with as (set) constraints, that is arbitrary
conjunctions of positive and negative atomic predicates built
using a fixed finite set of predicate symbols denoting
settheoretical operations, whose variables can range over the
domain of sets. Systems of (set) constraints are solved as a
whole by suitable (set) constraint solvers, which are able to
reduce the given constraints either to false or to a
simplified form from which it is easier to obtain a solution (i.e.,
a substitution for the variables in the given constraints that
make them satisfiable in the selected interpretation). For
example,
      </p>
      <p>X ∈ S ∧ T = S ∪ R ∧ X 6∈ T
is a set constraint, where R, S, and T are set variables, that
the set constraint solver can reduce to false.</p>
      <p>Set based formalisms allow a natural formulation of a
number of problems, in quite different areas:
combinatorial search problems, warehouse location problems,
diagnostic related problems (e.g., VLSI circuit verification),
program analysis, network design problems (e.g., weight
setting). Dealing with such formulations as constraints
allow, on the one hand, to solve these problems even if not
all sets are (fully) known a priori, and, on the other hand, to
compute solutions efficiently, provided constraint
reasoning enables the solver to prune the search space.</p>
      <p>As an example, the following is a very compact
formulation as a set constraint of the well-known map coloring
problem for a map of three regions, R1, R2, R3 (where
R1 borders R2 and R2 borders R3), using two colors, c1
and c2:
{R1, R2, R3} = {c1, c2} ∧ M = {{R1, R2}, {R2, R3}}
∧ {c1} 6∈ M ∧ {c2} 6∈ M.</p>
      <p>
        A complete set constraint solver, i.e., one which is
always able to decide if a given constraint is satisfiable
or not is presented in [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. The constraint language is
based on constructed sets using the list-like
representation and it provides the usual set-theoretic operations as
primitive constraints. Sets are allowed to be nested and
to contain unknown elements (i.e., uninstantiated logical
variables). The constraint solver rewrites any given
constraint C into an equi-satisfiable disjunction of constraints
in solved form—proved to be correct and terminating. In
particular the solver uses the set unification algorithm
developed in [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] to deal with (set) equalities. A constraint
in solved form is guaranteed to be satisfiable in the
corresponding structure. Therefore the ability to obtain a solved
form guarantees that the original constraint is satisfiable.
      </p>
      <p>
        This constraint structure has been exploited to obtain a
specific instance of the general Constraint Logic
Programming scheme, called CLP(SE T ) [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. A Java
implementation of (most of) CLP(SE T ) facilities for set management
has been recently developed and made available as part of a
Java library, called JSetL [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], intended to support
declarative programming in an object-oriented language.
      </p>
      <p>
        The study of set constraints is strongly related to work in
the so-called Computable Set Theory area (C.S.T.), a
fruitful research stream born in the 1970’s at the New York
University thanks to the initial ideas and subsequent
stimulus of J. T. Schwartz (see [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] for a general survey). Work
in C.S.T. has identified increasingly larger classes of
computable formulae of suitable sub-theories of the general
Zermelo-Fraenkel set-theory for which satisfiability is
decidable. Further extensions of these classes are still under
investigation at present. Recent related work is described
in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. However, efforts in this area are mainly concerned
with decidability results, rather than computing solutions
like it is usually required in constraint programming.
      </p>
      <p>
        Other classes of aggregates (akin to sets) have also been
considered in the literature. In particular, various
frameworks have introduced the use of multisets where repeated
elements are allowed to appear in the collection. An
analysis of the problems concerned with the introduction of
multisets—as well as sets and lists—is reported in [
        <xref ref-type="bibr" rid="ref11 ref12">11, 12</xref>
        ].
5
      </p>
    </sec>
    <sec id="sec-6">
      <title>Efficient Set Constraint Solving</title>
      <p>The proposals for (general) set constraints cited above do
not take into account efficiency adequately to allow them to
be effectively applied in many concrete applications. For
example the CLP(SE T ) solvers often use a generate &amp; test
approach, that non-deterministically assigns values to
variables as soon as those values are available. For instance,
given the constraint X ∈ {1, 2, 3, 4, 5} ∧ X 6= 10, the
CLP(SE T ) solver enumerates all possible values of X
before asserting that the constraint holds.</p>
      <p>
        A number of proposals have been developed in the last
fifteen years that consider more restricted forms of set
constraints but equipped with constraint solving techniques
that allow them to be processed in a quite more effective
way. Works along these lines include [
        <xref ref-type="bibr" rid="ref14 ref17 ref5">5, 14, 17</xref>
        ].
      </p>
      <p>In these proposals constraint variables have a finite
domain attached to them. In the case of set constraints, the
domain is a collection of sets, usually specified as a set
interval [l, u], where l and u are known sets (typically,
of integers). [l, u] represents a lattice of sets induced by
the subset partial ordering relation ⊆ having l and u as
the greatest lower bound and the least upper bound,
respectively. The constraint solver exploits the information
that the domain of variables provides to efficiently
compute simplified forms of the original constraint or to detect
failures. In its simplest form, the solver uses a local
propagation algorithm that attempts to enforce consistency on
the values in the variable domains by removing values that
cannot form part of a solution to the system of constraints.
For example, given the set constraint</p>
      <p>S ∈ {1}..{1, 2, 3, 4} ∧ X ⊆ S ∧ Y ⊆ S</p>
      <p>
        ∧ #X = 2 ∧ Z = Y \X
where S, X, Y , and Z are set variables and #X denotes
the cardinality of the set X, the constraint solver in [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]
is able to infer that the constraint is satisfiable provided
#Z ≤ 2 holds.
Most of these consistency algorithms are incomplete, so
they have to be combined with a backtracking search
procedure to produce a complete constraint solver. For
example, in the example above, such a procedure allows to
enumerate all possible solutions for Z: Z = {1}, Z = {1, 2},
Z = {1, 3}, Z = {1, 4}.
      </p>
      <p>
        While these constraint languages turn out to allow more
efficient handling of set constraints with respect to the
proposals cited in the previous section (e.g., CLP(SE T )), the
latter allows more general form of sets to be dealt with:
elements can be of any type, possibly other sets, and possibly
unknown (e.g., {X, {a, 1}}). For example the set-based
formulation of the map coloring problem shown above can
be written—and solved—using CLP(SE T ) but not using
the constraint language in [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] and [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <p>
        A current line of research (see [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]) is trying to combine
the general set representation and management of
proposals like CLP(SE T ), with the efficient constraint solving
of “Finite Domain” solvers, in order to have the
expressive power of the former while retaining the execution
efficiency of the latter.
      </p>
    </sec>
    <sec id="sec-7">
      <title>Contacts</title>
      <p>7</p>
    </sec>
    <sec id="sec-8">
      <title>Biography</title>
      <p>Gianfranco Rossi received a degree in Computer Science from the University of Pisa in 1979. Since November 2001 he
is a Full Professor of Computer Science at the University of Parma. His research activity has been mainly devoted to
Programming Languages, with special attention to Logic Programming languages. Since December 2006 he is President
of the Association of Logic Programming (GULP).</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>D.</given-names>
            <surname>Aliffi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dovier</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi</surname>
          </string-name>
          . From Set to Hyperset Unification.
          <source>J. of Functional and Logic Programming</source>
          ,
          <year>1999</year>
          (
          <volume>10</volume>
          ):
          <fpage>1</fpage>
          -
          <lpage>48</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dal</surname>
          </string-name>
          <string-name>
            <surname>Palu`</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Dovier</surname>
          </string-name>
          , E. Pontelli, and
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi. Integrating Finite</surname>
          </string-name>
          <article-title>Domain Constraints and CLP with Sets</article-title>
          . In D. Miller, ed.,
          <source>Proc. of 5th ACM-SIGPLAN Int'l Conf. on Principles and Practice of Declarative Programming</source>
          ,
          <fpage>219</fpage>
          -
          <lpage>229</lpage>
          , ACM Press,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>P.</given-names>
            <surname>Arenas-Sa</surname>
          </string-name>
          ´
          <article-title>nchez and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Dovier</surname>
          </string-name>
          .
          <article-title>A Minimality Study for Set Unification</article-title>
          .
          <source>J. of Functional and Logic Programming</source>
          ,
          <year>1997</year>
          (7):
          <fpage>1</fpage>
          -
          <lpage>49</lpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>N.</given-names>
            <surname>Arni</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Greco</surname>
          </string-name>
          , and
          <string-name>
            <surname>D.</surname>
          </string-name>
          <article-title>Sacca`. Matching of Bounded Set Terms in the Logic Language LDL++</article-title>
          .
          <source>J. of Logic Programming</source>
          ,
          <volume>27</volume>
          (
          <issue>1</issue>
          ):
          <fpage>73</fpage>
          -
          <lpage>87</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>F.</given-names>
            <surname>Azevedo</surname>
          </string-name>
          . Cardinal:
          <string-name>
            <given-names>A Finite</given-names>
            <surname>Sets</surname>
          </string-name>
          <article-title>Constraint Solver</article-title>
          .
          <source>Constraints</source>
          ,
          <volume>12</volume>
          (
          <issue>37</issue>
          ):
          <fpage>93</fpage>
          -
          <lpage>129</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>W.</given-names>
            <surname>Bu</surname>
          </string-name>
          <article-title>¨ ttner. Unification in the Data Structure Sets</article-title>
          . In J. K. Siekmann, ed.,
          <source>Proc. of the 8th Int'l Conf. on Automated Deduction</source>
          , v.
          <volume>230</volume>
          ,
          <fpage>470</fpage>
          -
          <lpage>488</lpage>
          , SpringerVerlag,
          <year>1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>D.</given-names>
            <surname>Cantone</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. G.</given-names>
            <surname>Omodeo</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Policriti</surname>
          </string-name>
          .
          <article-title>Set Theory for Computing. From Decision Procedures to Declarative Programming with Sets</article-title>
          .
          <source>Monographs in Computer Science</source>
          , Springer-Verlag,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>E.</given-names>
            <surname>Dantsin</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Voronkov</surname>
          </string-name>
          .
          <article-title>A Nondeterministic Polynomial-Time Unification Algorithm for Bags, Sets, and Trees</article-title>
          . In W. Thomas, ed.,
          <source>FoSSaCS'99, LNCS</source>
          <volume>1578</volume>
          ,
          <fpage>180</fpage>
          -
          <lpage>196</lpage>
          , Springer-Verlag,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dovier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E. G.</given-names>
            <surname>Omodeo</surname>
          </string-name>
          , E. Pontelli, and
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi.</surname>
          </string-name>
          <article-title>{log}: A Language for Programming in Logic with Finite Sets</article-title>
          .
          <source>J. of Logic Programming</source>
          ,
          <volume>28</volume>
          (
          <issue>1</issue>
          ):
          <fpage>1</fpage>
          -
          <lpage>44</lpage>
          ,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dovier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Piazza</surname>
          </string-name>
          , E. Pontelli, and
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi</surname>
          </string-name>
          .
          <article-title>Sets and Constraint Logic Programming</article-title>
          .
          <source>ACM TOPLAS</source>
          ,
          <volume>22</volume>
          (
          <issue>5</issue>
          ):
          <fpage>861</fpage>
          -
          <lpage>931</lpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dovier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Piazza</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi</surname>
          </string-name>
          .
          <article-title>A uniform approach to constraint-solving for lists, multisets, compact lists, and sets</article-title>
          .
          <source>ACM Transactions on Computational Logic</source>
          ,
          <volume>9</volume>
          (
          <issue>3</issue>
          ),
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dovier</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Policriti</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi</surname>
          </string-name>
          .
          <article-title>A uniform axiomatic view of lists, multisets, and sets, and the relevant unification algorithms</article-title>
          .
          <source>Fundamenta Informaticae</source>
          ,
          <volume>36</volume>
          (
          <issue>2</issue>
          /3):
          <fpage>201</fpage>
          -
          <lpage>234</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>A.</given-names>
            <surname>Dovier</surname>
          </string-name>
          , E. Pontelli, and
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi</surname>
          </string-name>
          .
          <article-title>Set unification</article-title>
          .
          <source>Theory and Practice of Logic Programming</source>
          ,
          <volume>6</volume>
          :
          <fpage>645</fpage>
          -
          <lpage>701</lpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>C.</given-names>
            <surname>Gervet</surname>
          </string-name>
          .
          <article-title>Interval Propagation to Reason about Sets: Definition and Implementation of a Practical Language</article-title>
          .
          <source>Constraints</source>
          ,
          <volume>1</volume>
          (
          <issue>3</issue>
          ):
          <fpage>191</fpage>
          -
          <lpage>244</lpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>C.</given-names>
            <surname>Gervet</surname>
          </string-name>
          .
          <article-title>Constraints over Structured Domains</article-title>
          . In F.Rossi, P. van Beek, and T. Walsh,
          <article-title>ed's, Handbook of Constraint Programming</article-title>
          .
          <source>Elsevier</source>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>S.</given-names>
            <surname>Greco</surname>
          </string-name>
          .
          <article-title>Optimal Unification of Bound Simple Set Terms</article-title>
          .
          <source>In Proc. of Conf. on Information and Knowledge Management</source>
          ,
          <fpage>326</fpage>
          -
          <lpage>336</lpage>
          , ACM Press,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>P.</given-names>
            <surname>Hawkins</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.</given-names>
            <surname>Lagoon</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P. J.</given-names>
            <surname>Stuckey</surname>
          </string-name>
          .
          <article-title>Solving Set Constraint Satisfaction Problems using ROBDDs</article-title>
          .
          <source>J. of AI Research</source>
          ,
          <volume>24</volume>
          :
          <fpage>109</fpage>
          -
          <lpage>156</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>D.</given-names>
            <surname>Kapur</surname>
          </string-name>
          and
          <string-name>
            <given-names>P.</given-names>
            <surname>Narendran</surname>
          </string-name>
          .
          <article-title>Complexity of Unification Problems with Associative-Commutative Operators</article-title>
          .
          <source>J. of Automated Reasoning</source>
          ,
          <volume>9</volume>
          :
          <fpage>261</fpage>
          -
          <lpage>288</lpage>
          ,
          <year>1992</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <given-names>V.</given-names>
            <surname>Kuncak</surname>
          </string-name>
          .
          <article-title>Polynomial Constraints for Sets with Cardinality Bounds</article-title>
          .
          <source>FoSSaCS'99</source>
          , LNCS 4423,
          <issue>SpringerVerlag</issue>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>A.</given-names>
            <surname>Martelli</surname>
          </string-name>
          and
          <string-name>
            <given-names>U.</given-names>
            <surname>Montanari</surname>
          </string-name>
          .
          <article-title>An Efficient Unification Algorithm</article-title>
          .
          <source>ACM TOPLAS</source>
          ,
          <volume>4</volume>
          :
          <fpage>258</fpage>
          -
          <lpage>282</lpage>
          ,
          <year>1982</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>A.</given-names>
            <surname>Martelli</surname>
          </string-name>
          and
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi</surname>
          </string-name>
          .
          <article-title>Efficient Unification with Infinite Terms in Logic Programming</article-title>
          .
          <source>In Proc. of FGCS'84: Int'l Conf. on Fifth Generation Computer Systems</source>
          ,
          <year>1984</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>G.</given-names>
            <surname>Rossi</surname>
          </string-name>
          , E. Panegai, and
          <string-name>
            <surname>E. Poleo.</surname>
          </string-name>
          <article-title>JSetL: A Java Library for Supporting Declarative Programming in Java</article-title>
          .
          <source>Software-Practice &amp; Experience</source>
          ,
          <volume>37</volume>
          :
          <fpage>115</fpage>
          -
          <lpage>149</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>F.</given-names>
            <surname>Stolzenburg</surname>
          </string-name>
          .
          <article-title>An Algorithm for General Set Unification</article-title>
          and
          <string-name>
            <given-names>Its</given-names>
            <surname>Complexity</surname>
          </string-name>
          .
          <source>J. of Automated Reasoning</source>
          ,
          <volume>22</volume>
          (
          <issue>1</issue>
          ):
          <fpage>45</fpage>
          -
          <lpage>63</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>