<!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>
      <journal-title-group>
        <journal-title>J. A. Robinson. A Machine-Oriented
Logic Based on the Resolution Principle. Journal of the
ACM</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Enumeration of valid partial configurations</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Alexey Voronov</string-name>
          <email>voronov@chalmers.se</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Knut Åkesson</string-name>
          <email>knut@chalmers.se</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Fredrik Ekstedt</string-name>
          <email>fredrik.ekstedt@fcc.chalmers.se</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Chalmers University of Technology, Göteborg, Sweden Fraunhofer-Chalmers Research Centre for Industrial Mathematics</institution>
          ,
          <addr-line>Göteborg</addr-line>
          ,
          <country country="SE">Sweden</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2009</year>
      </pub-date>
      <volume>12</volume>
      <issue>1</issue>
      <abstract>
        <p>Models of configurable products can have hundreds of variables and thousands of configuration constraints. A product engineer usually has a limited responsibility area, and thus is interested in only a small subset of the variables that are relevant to the responsibility area. It is important for the engineer to have an overview of possible products with respect to the responsibility area, with all irrelevant information omitted. Configurations with some variables omitted we will call partial configurations, and we will call a partial configuration valid if it can be extended to a complete configuration satisfying all configuration constraints. In this paper we consider exact ways to compute valid partial configurations: we present two new algorithms based on Boolean satisfiability solvers, as well as ways to use knowledge compilation methods (Binary Decision Diagrams and Decomposable Negation Normal Form) to compute valid partial configurations. We also show that the proposed methods are feasible on configuration data from two automotive companies.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Within the automotive industry it is common to have a few
general platforms where each platform are highly
configurable to adapt to the needs on different markets but also to
satisfy the needs of individual customers. Having highly
configurable products put high demands on the engineering
systems to support the engineers during the development of the
platforms. While having a configurable product or platform it
is inevitable to also have constraints that specify what can be
allowed together and what is not allowed together. These
constraints can, in many situations, be defined as a set of Boolean
formulas defined over finite domain variables.</p>
      <p>Development of complex products—like in the
automotive industry—is done in large teams, where each engineer
is working with only a limited part of the product. For the
individual engineer only a small subset of the variables from
those that describe the full product, are of immediate
interest. However, an important problem for the engineer is to
know which combinations of variable assignments for a
subset of the variables might result in a product that satisfies all
constraints, that is to know valid partial configurations. This
is important because it helps the engineer to develop
solutions only for those combinations that can actually be built
and sold. Overestimation of these solutions will lead to
engineer doing unnecessary designs. Underestimation can lead to
costly delays if an overlooked configuration is requested by a
customer afterwards.</p>
      <p>Computing the exact set of valid partial configurations is
generally hard. Simply taking configurations of the complete
products and projecting them on relevant variables is not
feasible, as practical problems can have 10120 and more
buildable complete products.</p>
      <p>One of the ways to get exact set of valid partial
configurations is to existentially quantify all irrelevant variables from
the formula that represents the conjunction of all
configuration constraints, for example using resolution inference rule
[Robinson, 1965; Davis and Putnam, 1960], and then use a
standard algorithm to enumerate all (complete) assignments
of the new simplified formula. A simple enumeration of
complete assignments searches for a satisfying assignment, adds it
to the result, and also adds it to the current set of constraints as
a blocking constraint, forbidding future search from returning
it again. The disadvantage of this approach is that the formula
size can grow significantly after quantification. In this paper
we present a modification of this enumeration algorithm that
does not require existential quantification of variables to
enumerate partial configurations (Section 4.1). Similar algorithm
can be found in [Gebser et al., 2009].</p>
      <p>The problem of partial configurations can also be tackled
by the widely used interactive configurators. In an
interactive configurator a user selects values for variables one by
one. The configurator should guide the user so that at any
point there exist at least one way to complete the
configuration without changing any of the earlier decisions, in this case
a configurator is backtrack-free. Configurator should also be
complete meaning that if a configuration is allowed
according to the constraints, configurator should allow it. Having
such complete and backtrack-free configurator, it is possible
to automatically check all (partial) assignments of values to
the relevant variables, and the configurator will show which
of them are valid. If a configurator is not backtrack-free, it
can overestimate allowed partial configurations. If it is not
complete, it will underestimate them.</p>
      <p>
        Previous work on methods for building interactive
configurators started as extensions of Constraint Satisfaction
Problem (CSP) with conditional and dynamic formulations
[Dechter and Dechter, 1988; Mittal and Falkenhainer, 1990;
Soininen and Gelle, 1999; Sabin and Freuder, 1998;
Gottlob et al., 2007]. However, supported implementations of
these algorithms are not readily available. Binary Decision
Diagrams (BDDs) [Bryant, 1986] is a knowledge
compilation method [Darwiche and Marquis, 2002] successfully
used for configuration [Hadzic et al., 2004], especially for
real-time interactive configuration. However, BDDs suffer
from memory explosion for many datasets of practical size.
Other knowledge compilation methods used for configuration
include automata representation [Amilhastre et al., 2002],
Tree-of-BDDs [Subbarayan, 2005], Joint Matched CSP
[Subbarayan and Andersen, 2005], Decomposable Negation
Normal Form (DNNF) [Darwiche and Marquis, 2002]
        <xref ref-type="bibr" rid="ref17 ref22">(especially Deterministic DNNF for model counting [Kübler et
al., 2010])</xref>
        , as well as combinations of search and BDDs
[Norgaard et al., 2009]. Recently, Boolean Satisfiability
Solvers (SAT-solvers) emerged as an alternative to work with
configurations [Sinz et al., 2003; Küchlin and Sinz, 2000;
Sinz et al., 2006; Janota, 2008], including interactive
configurators [Janota, 2010].
      </p>
      <p>In this paper we show how a SAT-solver can be used to
enumerate partial configurations based on modification of
standard enumeration algorithm, and based on checking every
partial assignment inspired by interactive configuration. We
also show how existing DNNF algorithms can be used to
enumerate partial configurations. We show feasibility of a
SATsolver based implementation on configuration data from two
automotive companies.</p>
      <p>The paper is organized as following. Section 2 covers
formal preliminaries, Section 3 gives a motivating example,
Section 4 presents the algorithms. Section 5 provides
experimental results and discussion, and Section 6 concludes the paper.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Preliminaries</title>
      <p>The configuration problem is a triple P = hX; D; Ci,
where X = fx1; x2; : : : ; xK g is a set of variables, D =
fD1; D2; : : : ; DK g is a set of corresponding finite domains,
and C = fC1; C2; : : : ; CJ g is a set of propositional formulas
over atomic propositions xk = v where v 2 Dk, specifying
conditions that the variable assignments have to satisfy.</p>
      <p>A complete assignment to a configuration problem P is a
function A : X ! D which is defined for all xk 2 X. A
valid complete assignment (or solution) to P is a complete
assignment A for which each Cj is satisfied. A partial
assignment to P is a partial function B : X ! D defined for
variables xk 2 Y X. We will write vars(B) = Y X
to denote the set of variables of B, or the scope of B. We
will call a partial assignment valid iff it can be extended to a
valid complete assignment. We will use P[B] to denote the
simplified problem obtained by setting the variables defined
in B.</p>
    </sec>
    <sec id="sec-3">
      <title>Motivating example</title>
      <p>Configuration problems describing complete products can
have thousands of variables and hundreds of thousands
constraints. An engineer, or a group of engineers, is usually
responsible only for a subset of the variables. It could be that it
is a requirement to design all possible solutions within the
responsibility area, in case someone will order such a product.
In such a case it can be expensive to have overestimated set
of valid configurations, since engineers will spend time
designing forbidden ones. Underestimations are also bad, since
they lead to delays for designing a solution for ordered, but
missed configuration.</p>
      <p>The problem can be illustrated by the following
example of a simple car configuration. Let X =
fbody; engine; transmissiong be the set of variables, and
D = ffmini; sedan; suvg, fgasoline; diesel; electricg,
fmanual; auto; evtgg be the set of corresponding domains.
Let the following be the set of constraints C:
:((body = mini) ^ (engine = gasoline))
:((body = mini) ^ (engine = diesel))
:((body = sedan) ^ (engine = electric))
:((body = suv) ^ (engine = gasoline))
(engine = electric) ! (transmission = evt)
(transmission = evt) ! (engine = electric)</p>
      <p>Valid assignments of P = hX; D; Ci can be presented, for
example, in a tabular form, as shown in Table 1. Each row
in the table corresponds to an assignment, and each column
corresponds to a variable. Each cell contains a value assigned
to the corresponding variable.</p>
      <p>Let us suppose that there is a group of engineers that
are interested only in connection between body and
transmission, and they would like to disregard all information
about engine. So they define the limited scope to be S =
fbody; transmissiong. Valid partial assignments for S are
presented in Table 2.</p>
      <p>One way to get the partial assignments is to enumerate all
complete assignments, project them onto the relevant
variables (remove the irrelevant columns from the table), and
remove duplicate partial assignments (rows). This approach is
infeasible in practice, as some industrial examples from
automotive industry have 10120 allowed complete assignments.
However, scopes of interest for the engineers may have less
than a thousand valid partial assignments, which is
computable using methods presented below. Approximations of
this approach are found in practice, where instead of all valid
assignments, only the ones that correspond to the products
built during the last year (for example) are considered, which
gives an underestimation of the answer. Clearly, there is a
need for a better method.
4</p>
    </sec>
    <sec id="sec-4">
      <title>Enumerating valid partial assignments</title>
      <p>This sections presents two algorithms adopted to solve the
problem based on satisfiability solvers. By a satisfiability
solver we mean a tool that is able to answer whether an
instance of a configuration problem has at least one valid
complete assignment, and provides one if such exists. For
example, tools for solving Constraint Satisfaction Problems
(CSPsolvers) and Boolean Satisfiability Problems (SAT-solvers)
can be used for this purpose. This section also shows how
DNNF algorithms can be used to enumerate valid partial
configurations.
4.1</p>
      <sec id="sec-4-1">
        <title>Searching for complete, then forbidding partial</title>
        <p>One way to enumerate all valid complete assignments is to
iteratively search for any valid complete assignment, and in
addition to adding it to the result, add a negation of it as a
blocking constraint to the existing set of constraints. This
algorithm can be modified to enumerate valid partial
assignments, as shown in Algorithm 1. When a solver returns the
first complete assignment, the assignment is projected onto
the relevant scope. This partial assignment is returned as the
first element of the result, and also added as a blocking
constraint, ensuring that the solver will not return any (complete)
assignment that will contain the partial one. Then this process
is repeated.</p>
        <p>The ability of the solver to incrementally add blocking
constraints, while still keeping previously inferred information,
is very important for the good performance of this algorithm.
This is supported by, for example, Minisat-like solvers [Een
and Sörensson, 2004; Een and Sörensson, 2003].
4.2</p>
      </sec>
      <sec id="sec-4-2">
        <title>Enumerating partial, then extending</title>
        <p>In this approach it is necessary to enumerate all partial
assignments, and try to extend each of them to a valid complete
assignment using a solver. Just checking a partial assignment
against each of the constraints in isolation is not enough,
because there could be dependencies between variables that are
not visible within the local scope, but are only visible within
X
X
Algorithm 1 Search for complete, then forbid partial
input: problem P = hX; D; Ci, relevant variables S
C0 C
P0 P
result {}
while sat(P): / ask solver /</p>
        <p>A assignment(P) / assignment from solver /
B A projected on S
result result [B
C0 C0 ^ :(B as constraint)</p>
        <p>P0 hX; D; C0)i
return result
the complete scope. The solver can be used as following:
each partial assignment is added as an extra constraint to the
set of configuration constraints, and removed after the solver
has returned an answer. The key to the good performance in
this method is in the ability of the solver to cheaply add and
retract constraints consisting of atomic propositions; again,
Minisat-like solvers have this feature.</p>
        <p>Algorithm 2 Enumerate partial, then extend
input: problem P = hX; D; Ci, relevant variables S
output: valid partial assignments
result {}
for B in allAssignments(S):
if sat( P[B] ):</p>
        <p>result result [B
return result</p>
        <p>An example illustrating this method is presented in Table 3.
The columns for body and transmission contain all possible
(not only valid) partial assignments for S. The table must be
extended with the columns for variables (X n S), in this case
it is only one, engine. If there is at least one valid complete
assignment that contains the partial one for the row, the values
for all variables are written in the row. Otherwise, a “—”
indicates that there is no such valid complete assignment, and
the partial assignment is not valid.</p>
        <p>An advantage of Algorithm 1 compared to Algorithm 2 is
that it builds upon heuristics of an underlying solver to skip
checking many of the non-allowed assignments. A
disadvantage is that to find the next partial assignment, it is necessary
to process a larger (increased by one) set of constraints; this
could be a problem when it is necessary to produce millions
of partial assignments. But when there is a small number of
valid partial assignments, or a user specifically asked for the
first hundred of assignments as a sample, and there are many
non-allowed configurations, Algorithm 1 can be beneficial.
Knowledge compilation is a family of approaches that
addresses intractability of many Artificial Intelligence
problems. A propositional model is compiled in an off-line phase
in order to support some queries in polytime [Darwiche and
Marquis, 2002]. Binary Decision Diagrams (BDDs) [Bryant,
1986] belong to this family and received substantial attention
as a tool for configuration problems [Hadzic et al., 2004].
Decomposable Negation Normal Form (DNNF) [Darwiche,
2001] is a data structure used in knowledge compilation for
which BDD is a special case. It is more succinct than BDDs
and its compilation time is often shorter than that of BDDs
[Subbarayan et al., 2007]. DNNF supports smaller number
of tractable operations than BDD, while still allowing
polytime existential quantification (forgetting) and assignments
enumeration, which together allow polytime partial
assignments enumeration once DNNF is compiled.</p>
        <p>Formally, a propositional formula a is in negation normal
form (NNF) if and only if a is either a positive or negative
atomic proposition (a literal); a conjunction ^iai; or a
disjunction _iai where each ai is in negation normal form. A
formula in NNF f is decomposable (DNNF) if and only if for
any conjunction a = a1 ^ ^ an no atomic propositions are
shared by any conjuncts in a: ATOMS(ai) \ ATOMS(aj ) = ;
for every i 6= j. A formula in NNF is smooth if for every
disjunction a = a1 _ _ an, ATOMS(a) = ATOMS(ai) for
every i.</p>
        <p>Existential quantification of variables from DNNF is
presented in Algorithm 3 [Darwiche, 2001]. Every occurence
of irrelevant variable is replaced by true, and the formula is
simplified accordingly. This procedure preserves
decomposability, and its running time is linear in the DNNF size.
Algorithm 3 FORGET – existential quantification on DNNF
input: relevant variables S X, DNNF f
output: DNNF with variables X n S existentially quantified
if f is a Literal l:
if VAR(l) 2 S:</p>
        <p>return f
else</p>
        <p>return true
else if f is a conjunction a1 ^ ^ an:</p>
        <p>return FORGET(a1) ^ : : : ^ FORGET(an)
else if f is a disjunction a1 _ _ an:
return FORGET(a1) _ : : : _ FORGET(an)</p>
        <p>Enumeration of assignments of DNNFs is shown in
Algorithm 4 [Darwiche, 2000], where each assignment is
represented as a set of literals, and is a Cartesian product on
them:
fN1; : : : ; Nng fM1; : : : ; Mmg = fN1[M1; : : : ; Nn[Mmg:
The complexity of enumerating the models of a smooth
DNNF f is O(mn2), where m is the size of f and n =
jMODELS(f )j [Darwiche, 1998].</p>
        <p>Algorithm 4 MODELS – enumerating assignments of DNNF
input: smooth DNNF f
output: (complete) valid assignments of f , as sets of literals
if f is a Literal l:</p>
        <p>return fflgg;
else if f is a conjunction a1 ^ ^ an:</p>
        <p>return MODELS(a1) MODELS(an);
else if f is a disjunction a1 _ _ an:</p>
        <p>return MODELS(a1)[ [ MODELS(an).</p>
        <p>The overall process of using DNNF is shown in
Algorithm 5. DNNF for the car example is shown on Figure 1a.
DNNF with variable engine forgotten is shown on Figure 1b,
and its valid partial assignments can be found in Table 2.
Algorithm 5 Knowledge compilation based approach
input: problem P = hX; D; Ci, relevant variables S
output: valid partial assignments
f1 COMPILE(P)
f2 FORGET(S; f1) /* see Algorithm 3 =
m MODELS(f2) /* see Algorithm 4 =
return m
X</p>
        <p>Polynomial time guarantee for assignments enumeration
operation is an advantage of DNNF. However, the
compilation time of arbitrary constraints into DNNF is in general
exponential. When the data changes rarely, this time is
amortized among multiple queries, but when the data changes very
often, this off-line stage does not pays off.</p>
        <p>DNNF have an important advantage: if it is smooth and
deterministic, it can be used to count the assignments
[Darwiche, 2000]. An NNF formula a is deterministic if for every
disjunction a = a1 _ _ an, every pair of disjuncts in a
is logically inconsistent; that is, ai ^ aj j= f alse for every
i 6= j. Unfortunately, operation FORGET does not preserve
determinism, and counting in such case will give
overestimated answer. However, even overestimated answer can be
useful in some cases. It is also possible to recompile the
resulting DNNF again into a deterministic one. Some practical
applications of counting for configuration using DNNF were
considered in [Kübler et al., 2010].
5</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Experimental results</title>
      <p>We analyzed the data from two automotive companies: three
datasets from the first company, and one dataset from the
sec(a) Full DNNF.
(b) DNNF with variable engine existentially quantified.
ond, denoted as A, B, C and D, respectively. Details about
datasets are presented in Table 4.</p>
      <p>We implemented Algorithms 2 and 1 on top of Sat4j solver
[Le Berre and Parrain, 2010].</p>
      <p>A knowledge compilation tool was developed based on
BDD package BuDDy [Lind-Nielsen, 2002]. The
preordering algorithms from [Narodytska and Walsh, 2007] were
implemented for sorting variables and restrictions, using
inflation parameter r = 1:5 in the clustering step. A simplified
version of the MCL clustering algorithm [van Dongen, 2000]
was used, skipping the truncation heuristics and the sparse
matrix multiplication tools. No post-ordering of the variables
was included. The tool was able to handle only the smallest
dataset.</p>
      <p>Another attempt to use knowledge compilation involved
c2d compiler [Darwiche, 2004] that compiles propositional
formulas to deterministic DNNF. Algorithms 3 (FORGET) and
4 (MODELS) were implemented to work with the DNNF
output of c2d. Using another DNNF compiler sharpSAT [Muise
et al., 2010] resulted in segmentation faults on some of the
datasets, and its debugging is underway.</p>
      <p>Sat4j and c2d require the input to be in Conjunctive Normal
Form (CNF), that is it have to be a conjunction of clauses, and
each clause is a disjunction of literals. Each literal is either
a positive or negative atomic proposition. Constraints were
converted to CNF using Tseitin encoding [Tseitin, 1968].</p>
      <p>Two times were measured. The first time measured was
preprocessing or off-line time. This included, for example,
DNNF compilation, and initial constraint propagation. The
results are presented in Table 5. BDD-based implementation
was not able to complete the compilation process of larger
instances. c2d compiler ran out of 2 GB memory limit (it is
available only as a 32 bit application) compiling the largest
dataset A.</p>
      <p>The second time measured was the on-line time, or the time
to actually compute the valid partial configurations for one
given scope, while utilizing results from the off-line phase.
The results are presented in Table 6. SAT-based solution is
very robust on the datasets, even without having theoretical
guarantees on running times. The BDD-based solution, when
In this paper we looked at the problem of computing allowed
partial combinations, which is important for engineers
working with product development. We presented several
algorithms, two of which are suitable for SAT-solvers, and one
that is based on DNNF. Our experiments showed that
SATbased implementation can handle large datasets from
automotive industry quite efficiently. Preliminary experiments with
knowledge compilation tools showed that available DNNF
compilers cannot handle the largest dataset within the
memory and time limits. However, DNNF-based method has
the advantages of polynomial time guarantee on the on-line
phase, and the ability to count the assignments when DNNF
is determenistic.</p>
    </sec>
    <sec id="sec-6">
      <title>Acknowledgements</title>
      <p>This work was carried out at the Wingquist Laboratory VINN
Excellence Centre within the Area of Advance —
Production at Chalmers, supported by the Swedish Governmental
Agency for Innovation Systems (VINNOVA). The support is
gratefully acknowledged.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [Amilhastre et al.,
          <year>2002</year>
          ]
          <string-name>
            <given-names>Jérôme</given-names>
            <surname>Amilhastre</surname>
          </string-name>
          , Helene Fargier, and
          <string-name>
            <given-names>Pierre</given-names>
            <surname>Marquis</surname>
          </string-name>
          .
          <article-title>Consistency restoration and explanations in dynamic CSPs - Application to configuration</article-title>
          .
          <source>Artificial Intelligence</source>
          ,
          <volume>135</volume>
          :
          <fpage>199</fpage>
          -
          <lpage>234</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <source>[Bryant</source>
          , 1986]
          <string-name>
            <given-names>Randal E.</given-names>
            <surname>Bryant</surname>
          </string-name>
          .
          <article-title>Graph-Based Algorithms for Boolean Function Manipulation</article-title>
          .
          <source>IEEE Trans. Comput.</source>
          ,
          <volume>35</volume>
          (
          <issue>8</issue>
          ):
          <fpage>677</fpage>
          -
          <lpage>691</lpage>
          ,
          <year>August 1986</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <source>[Darwiche and Marquis</source>
          , 2002]
          <string-name>
            <given-names>Adnan</given-names>
            <surname>Darwiche</surname>
          </string-name>
          and
          <string-name>
            <given-names>Pierre</given-names>
            <surname>Marquis</surname>
          </string-name>
          .
          <article-title>A knowledge compilation map</article-title>
          .
          <source>Journal of Artificial Intelligence Research</source>
          ,
          <volume>17</volume>
          (
          <issue>1</issue>
          ):
          <fpage>229</fpage>
          -
          <lpage>264</lpage>
          ,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <source>[Darwiche</source>
          , 1998]
          <string-name>
            <given-names>Adnan</given-names>
            <surname>Darwiche</surname>
          </string-name>
          .
          <article-title>Model-Based Diagnosis using Structured System Descriptions</article-title>
          .
          <source>Journal of Arti cial Intelligence Research</source>
          ,
          <volume>8</volume>
          :
          <fpage>165</fpage>
          -
          <lpage>222</lpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <source>[Darwiche</source>
          , 2000]
          <string-name>
            <given-names>Adnan</given-names>
            <surname>Darwiche</surname>
          </string-name>
          .
          <article-title>On the tractable counting of theory models and its application to belief revision and truth maintenance</article-title>
          .
          <source>Journal of Applied Non-Classical Logics</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          <source>[Darwiche</source>
          , 2001]
          <string-name>
            <given-names>Adnan</given-names>
            <surname>Darwiche</surname>
          </string-name>
          .
          <article-title>Decomposable negation normal form</article-title>
          .
          <source>Journal of the ACM</source>
          ,
          <volume>48</volume>
          (
          <issue>4</issue>
          ):
          <fpage>608</fpage>
          -
          <lpage>647</lpage>
          ,
          <year>July 2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          <source>[Darwiche</source>
          , 2004]
          <string-name>
            <given-names>Adnan</given-names>
            <surname>Darwiche</surname>
          </string-name>
          .
          <article-title>New Advances in Compiling CNF to Decomposable Negation Normal Form</article-title>
          .
          <source>In ECAI</source>
          <year>2004</year>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          <source>[Davis and Putnam</source>
          , 1960]
          <string-name>
            <given-names>Martin</given-names>
            <surname>Davis</surname>
          </string-name>
          and
          <string-name>
            <given-names>Hilary</given-names>
            <surname>Putnam</surname>
          </string-name>
          .
          <article-title>A Computing Procedure for Quantification Theory</article-title>
          .
          <source>Journal of the ACM</source>
          ,
          <volume>7</volume>
          (
          <issue>3</issue>
          ):
          <fpage>201</fpage>
          -
          <lpage>215</lpage>
          ,
          <year>July 1960</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          <source>[Dechter and Dechter</source>
          , 1988]
          <string-name>
            <given-names>Rina</given-names>
            <surname>Dechter</surname>
          </string-name>
          and
          <string-name>
            <given-names>Avi</given-names>
            <surname>Dechter</surname>
          </string-name>
          .
          <article-title>Belief maintenance in Dynamic Constraint Networks</article-title>
          .
          <source>In AAAI-88</source>
          , pages
          <fpage>37</fpage>
          -
          <lpage>42</lpage>
          ,
          <year>1988</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          <source>[Een and Sörensson</source>
          , 2003]
          <string-name>
            <given-names>Niklas</given-names>
            <surname>Een</surname>
          </string-name>
          and
          <string-name>
            <given-names>Niklas</given-names>
            <surname>Sörensson</surname>
          </string-name>
          .
          <article-title>Temporal Induction by Incremental SAT Solving</article-title>
          .
          <source>Electronic Notes in Theoretical Computer Science</source>
          ,
          <volume>89</volume>
          (
          <issue>4</issue>
          ):
          <fpage>543</fpage>
          -
          <lpage>560</lpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          <source>[Een and Sörensson</source>
          , 2004]
          <string-name>
            <given-names>Niklas</given-names>
            <surname>Een</surname>
          </string-name>
          and
          <string-name>
            <given-names>Niklas</given-names>
            <surname>Sörensson</surname>
          </string-name>
          .
          <article-title>An Extensible SAT-solver</article-title>
          .
          <source>Theory and Applications of Satisfiability Testing</source>
          ,
          <volume>2919</volume>
          /
          <year>2004</year>
          :
          <fpage>502</fpage>
          -
          <lpage>518</lpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [Gebser et al.,
          <year>2009</year>
          ]
          <string-name>
            <given-names>Martin</given-names>
            <surname>Gebser</surname>
          </string-name>
          , Benjamin Kaufmann, and
          <string-name>
            <given-names>Torsten</given-names>
            <surname>Schaub</surname>
          </string-name>
          .
          <article-title>Solution enumeration for projected Boolean search problems. Integration of AI and OR Techniques in Constraint Programming for Combinatorial Optimization Problems</article-title>
          , pages
          <fpage>71</fpage>
          -
          <lpage>86</lpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [Gottlob et al.,
          <year>2007</year>
          ]
          <string-name>
            <given-names>Georg</given-names>
            <surname>Gottlob</surname>
          </string-name>
          , Gianluigi Greco, and
          <string-name>
            <given-names>Toni</given-names>
            <surname>Mancini</surname>
          </string-name>
          .
          <article-title>Conditional Constraint Satisfaction: Logical Foundations and Complexity</article-title>
          . In Manuela M. Veloso, editor,
          <source>IJCAI-2007</source>
          , pages
          <fpage>88</fpage>
          -
          <lpage>93</lpage>
          , Hyderabad, India,
          <year>January 2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [Hadzic et al.,
          <year>2004</year>
          ]
          <string-name>
            <given-names>Tarik</given-names>
            <surname>Hadzic</surname>
          </string-name>
          , Sathiamoorthy Subbarayan,
          <string-name>
            <given-names>R.M.</given-names>
            <surname>Jensen</surname>
          </string-name>
          , Henrik Reif Andersen,
          <string-name>
            <surname>J.</surname>
          </string-name>
          <article-title>Mø ller, and</article-title>
          <string-name>
            <given-names>H.</given-names>
            <surname>Hulgaard</surname>
          </string-name>
          .
          <article-title>Fast backtrack-free product configuration using a precompiled solution space representation</article-title>
          .
          <source>PETO conference</source>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          <source>[Janota</source>
          , 2008]
          <string-name>
            <given-names>Mikolas</given-names>
            <surname>Janota</surname>
          </string-name>
          .
          <source>Do SAT solvers make good configurators? 12th International Software Product Line Conference. First Workshop on Analyses of Software Product Lines</source>
          , pages
          <fpage>1</fpage>
          -
          <lpage>5</lpage>
          ,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          <source>[Janota</source>
          , 2010]
          <string-name>
            <given-names>Mikolas</given-names>
            <surname>Janota</surname>
          </string-name>
          .
          <article-title>SAT Solving in Interactive Configuration (PhD thesis)</article-title>
          .
          <source>PhD thesis</source>
          , University College Dublin,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [Kübler et al.,
          <year>2010</year>
          ]
          <string-name>
            <given-names>Andreas</given-names>
            <surname>Kübler</surname>
          </string-name>
          , Christoph Zengler, and
          <string-name>
            <given-names>Wolfgang</given-names>
            <surname>Küchlin</surname>
          </string-name>
          .
          <article-title>Model Counting in Product Configuration</article-title>
          .
          <source>Electronic Proceedings in Theoretical Computer Science</source>
          ,
          <volume>29</volume>
          (LoCoCo):
          <fpage>44</fpage>
          -
          <lpage>53</lpage>
          ,
          <year>July 2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          <source>[Küchlin and Sinz</source>
          , 2000]
          <string-name>
            <given-names>Wolfgang</given-names>
            <surname>Küchlin</surname>
          </string-name>
          and
          <string-name>
            <given-names>Carsten</given-names>
            <surname>Sinz</surname>
          </string-name>
          .
          <article-title>Proving Consistency Assertions for Automotive Product Data Management</article-title>
          .
          <source>Journal of Automated Reasoning</source>
          ,
          <volume>24</volume>
          (
          <issue>1</issue>
          ):
          <fpage>145</fpage>
          -
          <lpage>163</lpage>
          ,
          <year>February 2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          <source>[Le Berre and Parrain</source>
          , 2010] Daniel Le Berre and
          <string-name>
            <given-names>Anne</given-names>
            <surname>Parrain</surname>
          </string-name>
          .
          <article-title>The Sat4j library , release 2.2 system description</article-title>
          .
          <source>Journal on Satisfiability, Boolean Modeling and Computation</source>
          ,
          <volume>7</volume>
          :
          <fpage>59</fpage>
          -
          <lpage>64</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [
          <string-name>
            <surname>Lind-Nielsen</surname>
          </string-name>
          ,
          <year>2002</year>
          ]
          <article-title>Jø rn Lind-Nielsen. BuDDy: A BDD package</article-title>
          . http://buddy.sourceforge.net,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          <source>[Mittal and Falkenhainer</source>
          , 1990]
          <string-name>
            <given-names>Sanjay</given-names>
            <surname>Mittal</surname>
          </string-name>
          and
          <string-name>
            <given-names>Brian</given-names>
            <surname>Falkenhainer</surname>
          </string-name>
          .
          <article-title>Dynamic Constraint Satisfaction Problems</article-title>
          .
          <source>In AAAI-90</source>
          , pages
          <fpage>25</fpage>
          -
          <lpage>32</lpage>
          ,
          <year>1990</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [Muise et al.,
          <year>2010</year>
          ]
          <string-name>
            <given-names>Christian</given-names>
            <surname>Muise</surname>
          </string-name>
          ,
          <string-name>
            <surname>Sheila McIlraith</surname>
            ,
            <given-names>J.Christopher</given-names>
          </string-name>
          <string-name>
            <surname>Beck</surname>
            , and
            <given-names>Eric</given-names>
          </string-name>
          <string-name>
            <surname>Hsu</surname>
          </string-name>
          .
          <article-title>Fast d-DNNF Compilation with sharpSAT</article-title>
          .
          <source>In AAAI 2010</source>
          , pages
          <fpage>54</fpage>
          -
          <lpage>60</lpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          <source>[Narodytska and Walsh</source>
          , 2007]
          <string-name>
            <given-names>Nina</given-names>
            <surname>Narodytska</surname>
          </string-name>
          and
          <string-name>
            <given-names>Toby</given-names>
            <surname>Walsh</surname>
          </string-name>
          .
          <article-title>Constraint and variable ordering heuristics for compiling configuration problems</article-title>
          .
          <source>In Proceedings of the 20th international joint conference on Artifical intelligence</source>
          , pages
          <fpage>149</fpage>
          -
          <lpage>154</lpage>
          , Hyderabad, India,
          <year>2007</year>
          . Morgan Kaufmann Publishers Inc.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [Norgaard et al.,
          <year>2009</year>
          ]
          <string-name>
            <given-names>Andreas</given-names>
            <surname>Hau</surname>
          </string-name>
          <string-name>
            <surname>Norgaard</surname>
          </string-name>
          , Morten Riiskjaer Boysen, Rune Moller Jensen, and Peter Tiede[Sinz et al.,
          <year>2003</year>
          ]
          <string-name>
            <given-names>Carsten</given-names>
            <surname>Sinz</surname>
          </string-name>
          , Andreas Kaiser, and
          <string-name>
            <given-names>Wolfgang</given-names>
            <surname>Küchlin</surname>
          </string-name>
          .
          <article-title>Formal methods for the validation of automotive product configuration data</article-title>
          .
          <source>Artificial Intelligence for Engineering Design, Analysis and Manufacturing</source>
          ,
          <volume>17</volume>
          (
          <issue>01</issue>
          ):
          <fpage>75</fpage>
          -
          <lpage>97</lpage>
          ,
          <year>August 2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [Sinz et al.,
          <year>2006</year>
          ]
          <string-name>
            <given-names>Carsten</given-names>
            <surname>Sinz</surname>
          </string-name>
          , Wolfgang Küchlin, Dieter Feichtinger, and
          <string-name>
            <given-names>Georg</given-names>
            <surname>Görtler</surname>
          </string-name>
          .
          <article-title>Checking Consistency and Completeness of On-Line Product Manuals</article-title>
          .
          <source>Journal of Automated Reasoning</source>
          ,
          <volume>37</volume>
          (
          <issue>1</issue>
          ):
          <fpage>45</fpage>
          -
          <lpage>66</lpage>
          ,
          <year>August 2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          <source>[Soininen and Gelle</source>
          , 1999]
          <string-name>
            <given-names>Timo</given-names>
            <surname>Soininen</surname>
          </string-name>
          and
          <string-name>
            <given-names>Esther</given-names>
            <surname>Gelle</surname>
          </string-name>
          .
          <article-title>Dynamic Constraint Satisfaction in Configuration</article-title>
          .
          <source>In AAAI-99</source>
          , Workshop on Configuration, pages
          <fpage>95</fpage>
          -
          <lpage>100</lpage>
          ,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          <source>[Subbarayan and Andersen</source>
          , 2005]
          <article-title>Sathiamoorthy Subbarayan and Henrik Reif Andersen</article-title>
          .
          <article-title>Linear Functions for Interactive Configuration Using Join Matching and CSP Tree Decomposition</article-title>
          . In Configuration Workshop at IJCAI'
          <volume>05</volume>
          , pages
          <fpage>7</fpage>
          -
          <lpage>12</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [Subbarayan et al.,
          <year>2007</year>
          ]
          <string-name>
            <given-names>Sathiamoorthy</given-names>
            <surname>Subbarayan</surname>
          </string-name>
          , Lucas Bordeaux, and
          <string-name>
            <given-names>Youssef</given-names>
            <surname>Hamadi</surname>
          </string-name>
          .
          <article-title>Knowledge Compilation Properties of Tree-of-BDDs</article-title>
          .
          <source>In AAAI 2007</source>
          , pages
          <fpage>502</fpage>
          -
          <lpage>507</lpage>
          ,
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          <source>[Subbarayan</source>
          , 2005]
          <string-name>
            <given-names>Sathiamoorthy</given-names>
            <surname>Subbarayan</surname>
          </string-name>
          .
          <article-title>Integrating CSP Decomposition Techniques and BDDs for Compiling Configuration Problems. Integration of AI and OR Techniques in Constraint Programming for Combinatorial Optimization Problems</article-title>
          ,
          <volume>3524</volume>
          /
          <year>2005</year>
          :
          <fpage>351</fpage>
          -
          <lpage>365</lpage>
          ,
          <year>2005</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          <source>[Tseitin</source>
          , 1968]
          <string-name>
            <surname>Gregory</surname>
            <given-names>S.</given-names>
          </string-name>
          <string-name>
            <surname>Tseitin</surname>
          </string-name>
          .
          <article-title>On the complexity of derivation in propositional calculus</article-title>
          . In A.O. Slisenko, editor,
          <source>Structures in Constructive Mathematics and Mathematical Logic</source>
          ,
          <string-name>
            <surname>Part</surname>
            <given-names>II</given-names>
          </string-name>
          ,
          <source>Seminars in Mathematics (translated from Russian)</source>
          , pages
          <fpage>234</fpage>
          -
          <lpage>259</lpage>
          . Steklov Mathematical Institute,
          <year>1968</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          <string-name>
            <surname>[van Dongen</surname>
          </string-name>
          ,
          <year>2000</year>
          ] Stijn van Dongen.
          <article-title>A cluster algorithm for graphs</article-title>
          .
          <source>Technical Report INS-R0010.</source>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>