<!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>Towards Generic Explanations for Pen and Paper Puzzles with MUSes?</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>n Esp</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>n P. G</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ruth Ho m</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Christoph</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>rson[</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Matthew J. McIlree</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alice M. Lynch[</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of St Andrews</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>Pen and paper puzzles like Sudoku, Futoshiki and Star Battle are hugely popular. Solving such puzzles can be a trivial task for modern AI systems. However, most AI systems solve problems using a form of backtracking, while people try to avoid backtracking as much as possible. This means that existing AI systems do not output explanations about their reasoning that are meaningful to people. We present Demystify, a tool which allows puzzles to be expressed in a high-level constraint programming language and uses MUSes to allow us to produce descriptions of steps in the puzzle solving. We give several improvements to the existing techniques for solving puzzles with MUSes, which allow us to solve a range of signi cantly more complex puzzles and give higher quality explanations. We demonstrate the e ectiveness and generality of Demystify by comparing its results to documented strategies for solving a range of pen and paper puzzles by hand, showing that our technique can nd many of the same explanations.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        Puzzles like Sudoku, Futoshiki or Star Battle are designed to be solved on paper
and continue to be incredibly popular. New variants of these puzzles are created
almost weekly, and there are many websites and books dedicated to showing o
new problems. The increasing popularity of the YouTube channel `Cracking the
Cryptic' shows that people enjoy seeing explanations of pen and paper puzzles.
There exist specialised guides for solving many of these puzzles [
        <xref ref-type="bibr" rid="ref13 ref14">14, 13</xref>
        ]. Such
guides provide a reference to compare our techniques against.
      </p>
      <p>
        Most paper and pen puzzles can be trivially solved when using a constraint
solver [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. This is due to propagators which enforce consistency between subsets
of the variables or constraints in the problem. Propagators make deductions
beyond the abilities of most human players, while still often producing search
trees, whereas human players aim to solve problems with no backtrack.
? This research was supported by the Royal Society URFnRn180015 .
      </p>
      <p>Copyright © 2021 for this paper by its authors. Use permitted under Creative
Commons License Attribution 4.0 International (CC BY 4.0).</p>
      <p>
        (7,1) is 0, (7,2) is 0 and (7,3) is 0 because:
{ Column 7 must contain at most 1 star
{ Box 6 must contain at least 1 star
There are two main reasons to look at how humans solve puzzles { to advise
players on how to progress and to produce more accurate di culty measures
of puzzles. A common approach to explain how puzzles are solved is to create
custom solvers which use the same techniques as human players. For popular
puzzles this is easy, as the techniques which human players use are well
documented. SudokuWiki [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] provides solvers for several Sudoku variants, showing
which techniques can be applied at each stage of solving. Some works [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] try to
measure the di culty of a puzzle by recording both the number and di culty of
deductions which can be applied at each point in solving. The major limitation of
these systems is the need for an existing list of techniques. This paper provides a
more general technique, based on Minimal Unsatis able Subsets (MUSes), which
we demonstrate on a variety of puzzles. An example of our system's output is
given in Figure 1.
      </p>
      <p>Our contribution is threefold. First, a novel MUS- nding algorithm optimised
to nd individual small MUSes. Second, improved techniques for using MUSes
to generate explanations designed for pen and paper puzzles. Finally, we provide
a comparison of explanations generated via MUSes to real-world tutorials and
puzzle solving, showing how our techniques closely match the explanations used
by real players on a variety of puzzles and guides.
2</p>
    </sec>
    <sec id="sec-2">
      <title>Background</title>
      <p>
        The puzzles we discuss in this paper are typically solved by keeping a list of
the values which are being considered for each cell of a grid, called the
candidates. Once every cell has only one candidate remaining, the puzzle is solved. We
consider puzzles with a single solution, which and are intended to be solved by
humans without guessing. We call these pen and paper puzzles. We consider
Bigiven grid: int
letting griddim be int(1..grid)
given starcount: int
$#VAR stars
find stars: matrix indexed by [griddim, griddim] of bool
$#CON rowup "at least {p[’starcount’]} star(s) in row ({a[0]})"
$#CON rowdown "at most {p[’starcount’]} star(s) in row ({a[0]})"
find rowup: matrix indexed by [griddim] of bool
find rowdown: matrix indexed by [griddim] of bool
forAll i: griddim. rowup[i] -&gt; (sum(stars[i,..]) &gt;= starcount),
forAll i: griddim. rowdown[i] -&gt; (sum(stars[i,..]) &lt;= starcount)
nairo, Futoshiki, Kakuro, Starbattle, Tents and Trees, Thermometer, Skyscrapers
and Sudoku (rules and examples of all these puzzles can be seen on [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]).
      </p>
      <p>
        An unsatis able set of an unsatis able constraint problem is any unsatis
able subset of the set of constraints of the problem. Traditionally, unsatis able
sets are de ned on the clauses of a conjunctive normal formula. In this paper,
we extend this de nition to general constraint problems. The hypothesis of our
work is that unsatis able sets closely align with how human players solve
puzzles. Unsatis able sets have many uses, such as on interactive applications or
model checking; see [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] for an extensive a survey. Identifying minimum
unsatis able sets is a P2-complete problem [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ], there are some attempts including
FORQES [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] at addressing this. On the other hand nding Minimal Unsatis
able Sets (MUS ) is easier [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. MUSes cannot be shrunk by removing members,
but may not be minimum (there may exist smaller MUSes). We concentrate on
these in this paper, as they can be found in reasonable time.
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Model Augmentation</title>
      <p>The rules for many well-known pen and paper puzzles can be expressed using
constraints. For example a Sudoku is built from AllDi erent constraints, Kakuro
rules have sums and Futoshiki has inequalities.</p>
      <p>
        To be able to give explanations for each reasoning step, all constraints used
to model the rules of puzzles are half-rei ed. For each constraint c, SavileRow
outputs x ! c, where c is the constraint and x is a Boolean variable that
controls if the constraint is active. Each constraint is also associated with a
string, describing in natural language terms what the constraint is expressing.
We use SavileRow [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] to automatically translate high-level models of puzzles into
SAT, with annotations to mark which variables represent the Problem (that the
player completes) and which activates the constraints. Part of the speci cation
for the puzzle Star Battle is given in Figure 2. The $#VAR annotation marks
the variables the use must complete, and the $#CON annotation gives variables
representing constraints. The language used to specify the English description
of each constraint is contained in the Demystify documentation.
      </p>
      <p>In problems such as Sudoku it is common for players to remove possible
values for a cell one at a time until only one remains, commonly referred to as
candidate elimination. In other puzzles such as Skyscrapers, Kakuro or Futoshiki
it is common to only ll in a cell once the player knows its value. To support these
two methods of playing, Demystify can either generate MUSes for both positive
and negative assignments to Problem variables (allowing candidate elimination)
or only for positive assignments to Problem variables.
4</p>
    </sec>
    <sec id="sec-4">
      <title>MUSes for Explaining Puzzles</title>
      <p>
        Demystify1 generates explanations very similarly to [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], which applies the
techniques to logic grid puzzles. Below is a schematic description showing our general
procedure of explaining decisions when solving a puzzle.
1. Translate the description of the puzzle rules to a CNF formula P (using
SavileRow [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]). This translation produces a set L of variables L representing
each value which can be assigned to each problem variable and a set X of
variables which activate the half-rei ed constraints of the puzzle.
2. 8l 2 L take the value a of l in the solution, nd MUSes for P ^ (l 6= a).
3. Pick l 2 L which has the \best" MUS and display this to the user. Our
criteria for picking the best MUS is: Choose the MUS with the fewest constraints.
Break ties by choosing the MUS whose constraints refer to the fewest literals.
      </p>
      <p>Finally, choose the MUS which can be used to discard the most literals.
4. Assign any literals which can be deduced from the best MUS and iterate
from step 2 until all variables are assigned.</p>
      <p>There are several improvements we make when presenting MUSes to the
user, which reduce information overload and allow us to solve the puzzles in
fewer steps. Firstly, MUSes of size 1 are grouped together, as there can be many
such MUSes and they are very simple to understand. Secondly, for each MUS
we nd all literals which can be deduced using the MUS. This is generally very
fast, as the MUS is already small and we only need to check literals contained in
at least one of the constraints in the MUS. A single MUS can often be used to
deduce many literals. This lets us deduce several literals in a single step. MUSes
are displayed to the user by listing the English descriptions of the constraints.
5</p>
    </sec>
    <sec id="sec-5">
      <title>MUS Algorithms</title>
      <p>As previously discussed, there are many existing MUS nding algorithms. We
found existing state-of-the-art techniques for nding smallest MUSes either did
1 https://github.com/stacs-cp/demystify
Algorithm 1 Basic MUS nding algorithm
Algorithm 2 ManyChop Algorithm
1: procedure ManyChop(P; X; M axSize)
2: step = min(fn 2 Nj(1 21n )MaxSize 110 g); frac = 1 2s1tep
3: for i 2 [1::20] do
4: check = Shu e(X)[1::jXj frac]
5: if Solve(check) == False then return BasicMUS(check, M axSize)
6:</p>
      <p>return Fail
not nish in reasonable time or could only nd MUSes when each constraint is
a single SAT clause. Furthermore, we do not wish to nd the smallest MUS for
a single problem but to nd the globally smallest MUS for a set of problems
{ one for each remaining unassigned problem literal, where often most of these
problems will have no small MUSes.</p>
      <p>
        Demystify uses Glucose [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] as the underlying SAT engine via the PySAT
library [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Our algorithms use the FindUnsatCore function of Glucose. This
function takes a SAT problem and list of variables X. It returns Fail if there is
a solution where all members of X are True, or a subset of X such that P is
unsolvable if all members of X are assigned true.
      </p>
      <p>
        BasicMUS, a variant of the deletion-based algorithm of [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], is given in
Algorithm 1. BasicMUS accepts a problem P and a set of variables X (representing
the constraints) and tries removing each element of X in turn, checking the result
is still unsolvable. It uses FindUnsatCore to reduce X at each step. The only
new feature is stopping once M axSize members have been found and checking
if they form a MUS, if not we need more values and return Fail.
      </p>
      <p>One major limitation of BasicMUS is the lack of variety in the MUSes it
returns, as FindUnsatCore often returns the same unsat core. We mitigate
this with the ManyChop algorithm (Algorithm 2), which starts by removing a
random subset of X. ManyChop chooses a xed-size proportion of X to remove
and keeps trying to remove that many elements of X and checking if the
problem is still unsolvable, before using BasicMUS to nd a MUS. The intuition
behind ManyChop is that, given a set X, if we remove some proportion p of the
elements of X, the chance that any xed collection of n elements remains behind
is approximately (1 p)n. In our experiments, we choose p such that there is
at least a probability of 110 of nding a MUS of size M axSize, then search 20
times.</p>
      <p>We nally nd the globally smallest MUS by searching over the problem
variables (which represent the values these variables can take in the solution) in
parallel using iterative deepening looking for larger and larger sizes of MUS.
6</p>
    </sec>
    <sec id="sec-6">
      <title>Experiments</title>
      <p>
        We compare Demystify against a selection of published tutorials to show how
it lines up with human players. We wrote each of our puzzles in Essence' [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
Below we discuss some modelling challenges which arose during this process.
      </p>
      <p>In problems which do not allow candidate elimination we imposed
AllDifferent constraints as a single constraint. For problems which allow candidate
elimination we decomposed the AllDi erent constraints into smaller pieces,
requiring that each pair of variables take di erent values and each value occurs
exactly once. This is because without candidates the deductions possible from a
single AllDi erent are quite simple, while with candidate elimination the tutorial
will decompose AllDi erent constraints into smaller simpler pieces.</p>
      <p>Several puzzles (including Tents and Trees, Thermometers and Starbattle)
require that there is a xed number of objects in rows, columns or regions.
We split these equality constraints into and constraints, as this made the
resulting MUSes easier to understand. In the Tents and Trees puzzle, there is a
bijection between tents and trees. To express this bijection we assign each tree
a unique number between 1 and n, then ll in cells with a number between
0 and n, where 0 represents empty and i &gt; 0 represents that this is the tent for
tree i. We require each non-zero number in the grid occurs exactly once.
6.1</p>
      <p>Tutorials
To show that MUS generation lines up with how players solve puzzles, we
compared our techniques to the tutorials for ten di erent puzzles, seeing in each case
if the MUS highlighted the same constraints as those given by the tutorial. For
each step of each tutorial, we use ManyChop to get the smallest MUS for one of
the deductions produced by that tutorial step. We do not use the globally
smallest MUS, as in many cases there were smaller MUSes in di erent parts of the
puzzle, unrelated to the logical rule the tutorial step was demonstrating. In some
cases, a MUS may only deduce one, or a subset, of the deductions described in a
single tutorial step, as many tutorial steps describe a general idea and then apply
it in many places. We de ne a successful match by the MUS when it correctly
captures the reasoning for the single deduction we chose. Where tutorials show
several connected steps we consider each step individually, rather than running
Demystify to solve the whole puzzle. There were two common issues we found
with tutorials. In some cases the tutorial example had multiple answers, in this
case Demystify can only deduce variables which take the same value in all
solutions. Some tutorials had no solutions { we remove those instances.</p>
      <p>
        We have taken instances from di erent online guides. For Sudoku, X-Sudoku
and Jigsaw Sudoku we used [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. The other two major sources for instances of
techniques, for various puzzles, are [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Some tutorials present named
techniques with one or more example puzzles; in other cases, the explanations
are spread over a step-by-step solving guide. Table 1 shows the total number of
instances we extracted for each puzzle type, and how many times we matched the
tutorials. For Binairo, Jigsaw Sudoku, Kakuro, Skyscrapers, Tents and Trees and
X-Sudoku we matched all tutorial steps (Table 1). On average for all puzzles,
apart from classic Sudoku, we match 85%. In some cases where Demystify
produced a di erent MUS to the tutorial it could be argued the MUS found
by Demystify was simpler, but we strictly compare to the reasoning presented
rather than apply our judgement as to which reasoning was simpler.
      </p>
      <p>
        Our results on the classic Sudoku puzzle are not as impressive as for the other
puzzles. There are several reasons for this. One is that we often nd constraints
which represent a di erent Sudoku technique to the one in the tutorial. For
example, instead of the \Naked Triples" or \Hidden Triple" techniques we nd
\Pointing Pairs": the latter is sometimes considered as an easier technique, e.g.
by Sudoku Dragon's strategy guide [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. A second reason is that Sudoku is
exceptionally well-studied and many rules have been invented. Some of these
`Diabolical' [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] techniques are required exceptionally rarely and many involve
very large MUSes (up to 56 constraints), much larger than any of the other
problems we looked at. We only accept these when we matched exactly and in
many cases we found similar (and often smaller) but not identical reasoning.
We separate the \Diabolical" techniques in Table 1, where we see signi cantly
better performance on the `Basic' and `Tough' techniques.
      </p>
      <p>Overall, we believe Table 1 gives strong evidence for the validity of using
MUSes for solving unseen puzzles. With no signi cant tuning (other than
deciding how to represent AllDi erent constraints) we have reproduced a signi cant
number of the techniques from a varied set of puzzles.</p>
    </sec>
    <sec id="sec-7">
      <title>Conclusion and Future Work</title>
      <p>
        We have presented a new algorithm to e ciently nd small MUSes. We
demonstrate its usefulness and generality by producing descriptions of steps for many
pen and paper puzzles. We also demonstrate that MUSes align very closely with
pre-existing research on how human players decide how to solve these puzzles.
This work, along with earlier work on Logic Grid Puzzles [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], provides strong
evidence that MUSes are a powerful, natural, and generic method of explaining
how to solve puzzles in a human-like way.
      </p>
      <p>
        We believe the FORQES [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ] approach is one that closely aligns to our needs.
However, it works on problems where constraints are only represented as
individual SAT clauses, while our puzzle models describe constraints as many SAT
clauses. As part of future work we want to produce an extension of the FORQES
approach for incrementally solving puzzles speci ed by high-level constraints. For
future work, we want to also explain exactly how the constraints in a MUS can
be used to deduce the next step of the puzzle. This needs a step beyond the
current work to involve signi cant work in Human Computer Interaction as well
as a possible collaboration with psychologists.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Audemard</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Simon</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>On the glucose SAT solver</article-title>
          .
          <source>IJAIT</source>
          <volume>27</volume>
          (
          <issue>1</issue>
          ),
          <volume>1</volume>
          {
          <fpage>25</fpage>
          (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Bogaerts</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gamba</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Claes</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Guns</surname>
            ,
            <given-names>T.</given-names>
          </string-name>
          :
          <article-title>Step-wise explanations of constraint satisfaction problems</article-title>
          . In: ECAI (
          <year>2020</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. Conceptis: ConceptisPuzzles.com (
          <year>2002</year>
          ), http://www.conceptispuzzles. com
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Dershowitz</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hanna</surname>
            ,
            <given-names>Z.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Nadel</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>A scalable algorithm for minimal unsatis - able core extraction</article-title>
          .
          <source>In: SAT</source>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Gupta</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Learning abstractions for model checking</article-title>
          .
          <source>Ph.D. thesis</source>
          , Carnegie Mellon University (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Ignatiev</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Morgado</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Marques-Silva</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>PySAT: A Python toolkit for prototyping with SAT oracles</article-title>
          . In: SAT (
          <year>2018</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Ignatiev</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Previti</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Li</surname>
            <given-names>ton</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>M.H.</given-names>
            ,
            <surname>Marques-Silva</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.</surname>
          </string-name>
          :
          <article-title>Smallest MUS Extraction with Minimal Hitting Set Dualization</article-title>
          . In: CP (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Nightingale</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Spracklen</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Miguel</surname>
            ,
            <given-names>I.</given-names>
          </string-name>
          :
          <article-title>Automatically Improving SAT Encoding of Constraint Problems Through Common Subexpression Elimination in Savile Row</article-title>
          . In: CP (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Pelanek</surname>
          </string-name>
          , R.:
          <article-title>Di culty Rating of Sudoku Puzzles by a Computational Model</article-title>
          .
          <source>FLAIRS</source>
          (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Senn</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Sudoku</surname>
          </string-name>
          Dragon - Strategy
          <string-name>
            <surname>Guide</surname>
          </string-name>
          (
          <year>2020</year>
          ), https://www. sudokudragon.com/sudokustrategy.htm
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Silva</surname>
            ,
            <given-names>J.P.M.</given-names>
          </string-name>
          :
          <article-title>Minimal Unsatis ability: Models, Algorithms and Applications</article-title>
          . In: ISMVL (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Simonis</surname>
          </string-name>
          , H.:
          <article-title>Sudoku as a constraint problem</article-title>
          .
          <source>In: CP Workshop on modeling and reformulating Constraint Satisfaction Problems</source>
          (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Stuart</surname>
          </string-name>
          , A.: SudokuWiki.org (
          <year>2008</year>
          ), http://www.sudokuwiki.org/
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14. Tectonic: TectonicPuzzel.eu (
          <year>2005</year>
          ), http://www.tectonicpuzzel.eu
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>