<!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>Series</journal-title>
      </journal-title-group>
      <issn pub-type="ppub">1613-0073</issn>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Structure Composition Discovery using Alloy</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Radek Maˇr´ık</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>The Czech Technical University (Prague)</institution>
          ,
          <country country="CZ">Czech Republic</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2014</year>
      </pub-date>
      <volume>1214</volume>
      <abstract>
        <p>A method for structure discovery is described. We assume that an unknown composite structure is sampled and observed as a set of small relational structure fractions. Each fraction is described by a set of atoms and their relations. We propose a technique that allows fusing these fractions into large components or the structure itself. The method is demonstrated using an example taken from the genealogy domain. Our approach of the solution is based on SAT. We show that the composition can be effectively performed using the Alloy tool, which is a bounded model checker. The search through the possible solutions is guided by the unique identities of observations.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        A general scientific approach begins with a strategy of collecting of evidence events [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
In the next step the event data are sorted and classified. We often try to find abstract
entities and their attributes to simplify model building. Relations among entities are
employed in the actual model composition. Based on the model we can derive or predict
further properties, events, and general behavioral patterns of the inspected system.
      </p>
      <p>In this paper we focus on the building of such a model instance which resembles
all non-trivial observations made on an unknown system. We assume the existence of
background knowledge that is satisfied by all system model instances and has a form
of relations from which any instance can be composed. Furthermore, we assume the
existence of a mapping that relates facts of observations to the model instance.</p>
      <p>
        While a constraint satisfaction problem seeks a solution given a set of constraints [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ],
our proposed method utilizes additional conditions, i.e. the input variable values are
fixed and linked through the identity of particular observations. We do not deal with
object detection as these methods try to select a part of an inspected system, i.e. as points
of a flat n-dimensional space in pattern recognition [
        <xref ref-type="bibr" rid="ref13 ref4 ref5 ref6">4, 6, 5, 13</xref>
        ] or as relation
components, such as topics or named entities in natural language processing NLP [
        <xref ref-type="bibr" rid="ref16 ref17">16, 17</xref>
        ] or
communities in social network analysis [
        <xref ref-type="bibr" rid="ref3 ref9">3, 9</xref>
        ]. While general machine learning
methods [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] or methods focused on inductive logic programming [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], logical and relational
learning [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] try to detect rules that are followed in the inspected system, our method
assumes an explicit specification of such constraints at input.
We search for a resulting structure that uses a minimum number of fragments. More
specifically, the resulting structure is assumed to have the form of a weighted graph
G = (V, E), where V (G) is a set of weighted nodes and E(G) is a set of weighted
edges. In this paper we consider possible weights as finite sets of labels. More formally,
we have a finite set X of finite sets Yi ∈ X of labels Lij ∈ Yi. Then, there are two
sets of weight functions assigning labels to vertices W G : V (G) → Lij and to edges
W E : E(G) → L`k. Observations in the form of small graphs follow the same pattern,
i.e. graphs Gm = (Vm, Em), where Vm(Gm) is a set of weighted nodes and Em(Gm)
is a set of weighted edges and their weight domains are taken from X .
      </p>
      <p>The input data are very small subgraphs with few nodes and edges. The result
structure is not known a priori. Also no unique identifiers of nodes relating to the result
structure are provided. The goal is a composition of subgraphs that results in as small a
result graph as possible. In other words, we try to replace a large set of small subgraphs
with one larger structure. We hope that all input observed subgraphs can be mapped as
substructures onto the large structure. Thus, we search for a mapping between nodes
Vm of small subgraphs and nodes V of the result structure and similarly for a mapping
between sequences of edges Em of small subgraphs and sequences of edges E of the
result structure.</p>
      <p>In reality, there are a number of constraints that must be satisfied in substructures,
similarly the result structure must follow a number of constraints. Further, a mapping
between the observed substructures and a result structure is not given explicitly. We
assume that the mapping can be a very general relation specified again by constraints.
Then, we search for such result structures which satisfy their own constraints and fulfill
also the constraints of the mapping.</p>
      <p>SAT can be proposed as a suitable method for searching for a solution although we
might use more efficient methods for special forms of structures, like trees, and their
constraints . While traditional methods provide a huge set of independent constraints
leading to very difficult conditions for searching, we exploit the identity of the
observation substructures as the fundamental feature of our method. Each substructure
produces a number of constraints, but all of them are bound to the identity of a given
substructure. As a result we can observe that if the input substructures are larger, the
searching space of possible result structures is smaller. We will show that even when the
transformation of a given problem into a SAT task results in a huge amount of variables,
solutions can be found very quickly (seconds for 105 variables).</p>
      <p>Generally, we will find no solution if the problem is overconstrained, one or a few
solutions if the constraints are defined properly, or a large number of solutions if the
problem is underconstrained. In this paper, we focused on situations when the result
structure is almost unique. If we detect more solutions, we try to supply additional
substructures or constraints using detected sources of ambiguities. Thus, our method
might be used for controlling a process of substructure observations to fill gaps and
ambiguities in the result structure.</p>
      <p>
        The proposed method follows the principle of minimum description length [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]
using which we replace a large number of small observations with a structure that explains
or captures a majority of small observations. While in theory we could pose the search
for a minimum structure, we do not insist on such a result in this paper. Generally, such
theoretically set-up problems lead to NP problems. However, in many practical
examples we are able to find supplementary information, such as additional attributes. As
mentioned above, we also assume that observed data are not provided as standalone
atomic constraints between two logical variables but as small chunks of structures. If
such additional information is supplemented with a suitable observation procedure we
can often find a polynomial solution [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>In this paper we consider a treatment of the actual algorithm complexity beyond the
scope of this paper. Also, we do not treat a number of other possible aspects in depth,
such as missing information or speculations on ambiguous parts of the result structure.
We will just demonstrate a principle of the method. Also we will demonstrate that even
when small instances of a problem lead to a rather huge number of variables used by
the underlying SAT solver, processing times remain feasibly short.</p>
      <p>
        In the following sections we will introduce the Alloy tool, a bounded model checker.
We will show how such observed substructures and related constraints for the result
structure can be represented using the Alloy language. As a model checker, Alloy is
mostly used for verifications of models represented as collections of constraints. The
solver takes the constraints of a model and finds structures that satisfy them. It can be
used both to explore the model by generating sample structures, and to check
properties of the model by generating counterexamples [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].The simulation and exploration
of model properties through the generating of samples is the feature we exploit in our
proposed method. We specify the observed substructures and constraints that must be
satisfied by the resulting structure and constraints determining how the input
substructures limit the result structure as a problem input. The model expressed in relational
logic is translated by Alloy into a corresponding boolean logic formula and an
off-theshelf SAT-solver is invoked on the boolean formula. In the event that the solver finds
a solution, the result is translated back into a corresponding binding of constants to
variables in the relational logic model [
        <xref ref-type="bibr" rid="ref14 ref15">14, 15</xref>
        ].
      </p>
      <p>We should note that the art of model specification for our problem resides in
constraining possible result structures in such a way that does not produce unwanted
speculations. The task of any model checker is to search for any solution that satisfies the
constraints. That means, if model constraints enable the addition of extra entities into
the result structure and the related part of the structure is underconstrained by the input
substructures, then the model checker generates structures that might not be valid. In
fact, the same situation happens in science generally. Having some observations so far,
we created a theory that covers these observations. If we find additional facts that are
contradictory with the theory, we will try to adjust the theory to cover the new facts.
In a similar way, if the result structure found by our method seems to be suspicious we
need either to add more constraints to remove such speculations or search for additional
substructure observations that would disambiguate the issue.</p>
      <p>To demonstrate our proposed method, we selected a simplified domain of
genealogy. We will search for a family tree given observation facts such as birth events or
marriage events. However, we provide some highlights of the Alloy language in the
following section before concrete steps of the proposed method are described.
3</p>
    </sec>
    <sec id="sec-2">
      <title>Exemplar Problem from Genealogy Domain</title>
      <p>The basic task in the domain of genealogy is the composition of a family tree from
scattered facts about relatives. Of course, a family tree might be extended in a
number of possible ways. We will simplify significantly the real problem to demonstrate
fundamental properties of our method.
(a) A record in Czech from 1643 on
the birth of Jirik Mikiska. His
fathers name was Vaclav Mikiska and
his mothers name Katerina. He was
born in the village Orlice.</p>
      <p>(b) A marriage event from 1819. Groom Jan Mikyska, son
of Martin Mikyska from Mistrovice n. 40, married bride
Josefa, born Doleckova, daughter of Josef Dolecek from
Mistrovice n. 37 and Katerina, daughter of Klyment Balas
from Mistrovice and Anna, daughter of Martin Stepanek
from Mistrovice</p>
      <p>Basic facts about relatives cover the following three events. A birth event describes
the birth of a person. The record of such an event often contains the following items:
the name of the child, the names of its father and mother, the place of birth, and the
date of birth. Information on grandparents is usually also provided. A marriage event
describes a situation when two people are married. Again, the record of a marriage event
contains items such as the date, the name of the groom, the name of the bride, the place
of the marriage, a description of parents of the groom and the bride. The third event
that provides significant information on people is a death event. The record provides
information on when, where, and who died, often at what age and what the cause of the
death was.</p>
      <p>Facts about events can be discovered through discussions with people for the last
100-150 years. Facts on earlier events might be found in parish registers. We should
note that records or their parts might not be readable or are missing because of fire,
flood, mold, special contemporary styles of handwriting, etc. The amount of detail in
records differs significantly.</p>
      <p>Examples of two such records are depicted on Figure 1a and Figure 1b. After a
short training in reading the contemporary handwriting, one can find that the record
in Figure 1a describes the birth of Jirik Mikiska. The following record from 1819 in
Figure 1b contains much more information. It is about the marriage of Jan Mikyska and
Josefa Doleckova. To simplify our example we drop information on dates and places.
Also we simplify the treatment of names. We will use only simple single short labels
instead of full names.
4</p>
    </sec>
    <sec id="sec-3">
      <title>Basics of Alloy</title>
      <p>
        Alloy is a formal notation based on relational logic [
        <xref ref-type="bibr" rid="ref2 ref7">7, 2</xref>
        ]. In this section, we only
introduce the key characteristics of the notation as they are applied in our family tree
example.
sig ASet {}
abstract sig Sex {}
one sig Male, Female extends Sex {}
      </p>
      <p>An empty signature is used to introduce the concept of ASet. A signature
introduces a set of atoms. A set can be a subset of another set. For example, Male and
Female are (disjoint) extensions of Sex. An abstract signature, such as Sex has no
elements except those belonging to its extensions. A multiplicity keyword, such as one,
lone, some, set, placed before a signature declaration constrains the number of
elements in the signatures set. Declaring an abstract signature with scalar extensions (one)
introduces an enumeration, e.g. , Male and Female. In our method one often needs
to restrict the elements of sets to be explicitly defined elements to avoid generating
unwanted speculative entities. The enumeration technique is suitable for such constraints.</p>
      <p>In our family tree example we will need to encode input substructures and the
entities of result structure of family tree. We will label the input signatures as events
and we will need only two such events: BirthEvent recording attributes of a child
birth and MarriageEvent describing an event if a man and a woman get married. We
will need two main signatures for family tree coding, i.e. Person describing composed
knowledge on a given person, with its two extensions Man and Woman, and Marriage
with collected information about a married couple of people.</p>
      <p>Relations are declared as fields in signatures. For example, fieldschildName,
childSex, fatherName, motherName introduce relations whose domain is
BirthEvent. The range of a given relation is specified by the expression after the
colon, in our example often as a multiplicity symbol and a signature (default multiplicity
is one). Elements of relations are n-ary tuples. Scalars are also relations, i.e. singletons.
The quintessential relational operator is composition, or dot join. To join two tuples p =
{(N 0, A0)} and q = {(A0, D0)} written as p.q one first check whether the last atom
of the first tuple matches the first atom of the second tuple. If not, the result is empty.
If so, it is the tuple that starts with the atoms of the first tuple, and finishes with the
atoms of the second, omitting just the matching atom, e.g. {(N 0, A0)}.{(A0, D0)} =
{(N 0, D0)}.</p>
      <p>We introduce the first signature of theresult structure fragment, Person. Besides
the relations personSex determining the sex of the person and personName
coding his/her name, signature Person provides three relations providing binding with
other people, such as mother and father, and their marriage. Signature Marriage
binds information of married people and collects links to their own children.
Constraints that are assumed always to hold are recorded as facts. SAT method ensures
validity of facts in any direction of relations. Facts might be recorded as signature facts
as exemplified in extensionsMan and Woman with the constraints immediately
following their signatures. For example, we require that any tuple of relation personSex
describing a man has a value Male. Then, facts can be introduced in any order as
a paragraph of its own, labelled by the keyword fact and consisting of a collection
of constraints. In fact, both relations personFather and personMother are
redundant, here introduced for demonstration purposes. The fact MarriageBasic1
requires that relation personFather is one to one mapping with regard to dot join
composition personParents.husband; similarly personParents.wife and
personMother.</p>
      <p>Alloy also provides operators for sets, such as intersection (&amp;), union (+), subset
(in), equality (=), and operators for relations, such as transpose (˜ ), transitive closure
(ˆ ), reflexive-transitive closure ( *), identity (ident). Standard logical operators are
also provided, e.g. negation (not or (!),), conjuction (and), disjunction (or),
implication (+).</p>
      <p>In this section we introduced very basic notation elements of Alloy language. In
fact, we have also specified all signatures we need to describe both input substructures,
e.g. our family events, and the result structure fragments of family tree. We still miss a
number of constraints that must be satisfied by the output family tree and relations in
which input substructures drive the form of the result family tree. This will be described
in the next section.
5</p>
    </sec>
    <sec id="sec-4">
      <title>Genealogy Relations in Alloy</title>
      <p>A careful reader noticed that signatures BirthEvent and MarriageEvent define
relations childPerson, childParents, and marriage. These relations define
a basic mapping from the input substructures to the family tree. Although the elements
of these relations are not provided explicitly, they serve as binding touch points through
which the family tree is shaped. They could be also defined outside these event
signatures. To make expressions shorter, we placed these relations into the event signatures.
fact MarriageBasic2 {
no p: Person {p in p.ˆ(personFather+personMother)} //1
no wife &amp; husband.*(personParents.(husband+wife)).personMother //2
no husband &amp; wife.*(personParents.(husband+wife)).personFather //3
no wife.personParents &amp; husband.personParents //4
all pChild: Person | no children.pChild or (
one children.pChild and pChild in pChild.personParents.children)} //5
We still need to define constraints valid for any family tree, then we need to
define other constraints relating the input substructures to the result family tree. Fact
MarriageBasic2 sets additional constraints. Constraint 1 ensures nobody can be
her/his own father or mother. Constraints 2 and 3 and 4 specify the social convention
that there cannot be a marriage between blood relatives. Constraint 5 ensures
consistency between relation personParent that binds a given child with its parents and
relation children that collects references to all children of a given married couple.
fact FamilyTreeMapping1 {
no personName.UnknownN //6
all n: Name {not n=UnknownN =&gt; some Name2Person[n]}//7
childPerson.˜childPerson in iden //8
˜childPerson.childPerson in iden //9
childParents.˜childParents in iden //10
˜childParents.childParents in iden //11
all p:Person { (no childPerson.p and
(marriage.husband.p).groomFatherName = UnknownN) =&gt; no p.personParents}//12
all m: Marriage | some childParents.m or some marriage.m or</p>
      <p>some marriage.husband.personParents.m //13
all be: BirthEvent {be.childPerson in be.childParents.children}} //14</p>
      <p>We need also to constrain the amount of entities that can be generated in the
family tree. The model checker generates general solutions, i.e. also those which have no
justification in observations. Thus, we need to relate generated entities of the family
tree to the provided observations. So, constraint 6 states no Person is generated for
unspecified names. However, any provided Name will be reflected by some Person
instances by constraint 7. All BirthEvent events will be reflected by exactly one
child Person and one instance of Marriage using constraints 8, 9, 10, and 11. By
constraint 12 no Marriage instance is generated if there is not birth event or marriage
event evidence. Also all Marriage instances must be supported by a birth event or by
a married couple or by their grandparents through constraint 13. Constraint 14 ensures
propagation of BirthEvent into the family tree.
fact FamilyTreeMapping2 {
all be: BirthEvent | one pChild: Person {
(pChild = be.childPerson) and (pChild.personName = be.childName) and
(pChild.personSex = be.childSex) and
((be.motherName != UnknownN or be.fatherName != UnknownN) =&gt;</p>
      <p>pChild.personParents = be.childParents)
and (be.motherName != UnknownN =&gt; (
(Mother[pChild].personName = be.motherName) and
(Mother[pChild].personSex = Female))) and
(be.motherName = UnknownN =&gt; no pChild.personMother)
and (be.fatherName != UnknownN =&gt; (
(Father[pChild].personName = be.fatherName) and
(Father[pChild].personSex = Male))) and
(be.fatherName = UnknownN =&gt; no pChild.personFather)}</p>
      <p>Fact FamilyTreeMapping2 propagates information from BirthEvent
instances into Person and Marriage instances. The propagation is performed
conditionally only in situations when names of people are provided already.
fact FamilyTreeMapping3 {
all me: MarriageEvent | one m: Marriage {
(m = me.marriage) and (me.groomName != UnknownN =&gt;</p>
      <p>me.groomName = m.husband.personName) and
(me.brideName != UnknownN =&gt; me.brideName
(me.groomFatherName != UnknownN =&gt;</p>
      <p>m.husband.personParents.husband.personName = me.groomFatherName)}
all m1: Marriage | all m2: Marriage
{m1.husband = m2.husband and m1.wife = m2.wife =&gt; m1=m2}}
= m.wife.personName) and</p>
      <p>Similarly, FamilyTreeMapping3 propagates information from MarriageEvent.
It follows the same strategy as the previous fact. Finally, we need to provide the input
data. As a demonstration we select a very simple set of input substructures. There are 7
names, three instances of BirthEvent, including those with unspecified names, and
one instance of MarriageEvent with richer details.
one sig UnknownN, N1, N2, N3, N4, N5, N6, N7 extends Name {}
one sig N2_BE extends BirthEvent{}{childName=N2 childSex=Female</p>
      <p>fatherName=N5 motherName=N1}
one sig N3_BE extends BirthEvent{}{childName=N3 childSex=Female</p>
      <p>fatherName=N6 motherName=N1}
one sig N4_BE extends BirthEvent{}{childName=N4 childSex=Male</p>
      <p>fatherName = UnknownN motherName=N2}
one sig M6_1 extends MarriageEvent {}{groomName=N6 brideName=N1</p>
      <p>groomFatherName=N7 brideFatherName=UnknownN}
6</p>
    </sec>
    <sec id="sec-5">
      <title>Experiments and Discussion</title>
      <p>A simple command of Alloy run {} for 7 Person, 7 Marriage can
trigger a generation of the family tree. The maximum number of people and Marriage
instances must be either estimated (the maximum number of people is determined by
the number of fields with names, also the number of marriages is constrained by the
number of birth and marriage events). The result family tree is depicted on Figure 2.
The solution was found using 16978 vars, 544 primary vars, 40721 clauses in 109 ms
using Sat4j solver. Characteristics of other experiments with a different number of input
events are collected in Table 1.
From Table 1 we cannot draw any conclusions regarding additional constraints
provided by input substructures like marriage event. In our experiments, these additional
events were used mainly as confirmations of some relations inside of the result family
tree. They meant adding a relatively small number of other variables, but they resulted
in rather different processing time, both longer and shorter. Our original speculation
was that such additional input constraints should shorten processing time as the search
space is more constrained.
7</p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>In this paper we demonstrated that using a set of relational substructures observed as
partial views on an unknown system we can compose the entire structure. The proposed
method utilizes a transformation from relational specification into SAT problem. We use
Alloy Analyzer that provides a suitable relational notation language and bounded model
checking. Constraints must restrict both properties of the result structure and how input
information is propagated into the result structure. The proposed method was presented
on exemplar case taken from the genealogy domain. Using a few constraints we are
able to find the underlying family tree. Although the number of variables of the related
SAT problem is huge as expected, the search for the solution is fast because observation
facts of overlapping substructures are bound by unique identities of substructures.
Nevertheless, some additional issues such as time, dates, a selection of suitable mappings,
and sensitivity to unspecified variables need to be resolved before the method can be
utilized in more practical problems.</p>
      <p>Acknowledgments. We would like to thank the reviewers for their comments, which
helped improve this paper considerably. This work was supported by the Systems for
Identification and Processing of Signaling and Transmission Protocols VF20132015029
project.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Angluin</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Learning regular sets from queries and counterexamples</article-title>
          .
          <source>Information and Computation</source>
          <volume>75</volume>
          (
          <issue>2</issue>
          ),
          <fpage>87</fpage>
          -
          <lpage>106</lpage>
          (
          <year>1987</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Baresi</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Spoletini</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>On the use of Alloy to analyze graph transformation systems</article-title>
          . In: Corradini,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Ehrig</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            ,
            <surname>Montanari</surname>
          </string-name>
          ,
          <string-name>
            <given-names>U.</given-names>
            ,
            <surname>Ribeiro</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            ,
            <surname>Rozenberg</surname>
          </string-name>
          ,
          <string-name>
            <surname>G</surname>
          </string-name>
          . (eds.)
          <source>Graph Transformations, Lecture Notes in Computer Science</source>
          , vol.
          <volume>4178</volume>
          , pp.
          <fpage>306</fpage>
          -
          <lpage>320</lpage>
          . Springer Berlin Heidelberg (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Du</surname>
            ,
            <given-names>N.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wu</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Pei</surname>
            ,
            <given-names>X.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Wang</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Xu</surname>
            ,
            <given-names>L.</given-names>
          </string-name>
          :
          <article-title>Community detection in large-scale social networks</article-title>
          .
          <source>In: Proceedings of the 9th WebKDD and 1st SNA-KDD 2007 Workshop on Web Mining and Social Network Analysis</source>
          . pp.
          <fpage>16</fpage>
          -
          <lpage>25</lpage>
          . WebKDD/SNA-KDD '
          <fpage>07</fpage>
          ,
          <string-name>
            <surname>ACM</surname>
          </string-name>
          , New York, NY, USA (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <surname>Duda</surname>
            ,
            <given-names>R.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hart</surname>
            ,
            <given-names>P.E.: Pattern</given-names>
          </string-name>
          <string-name>
            <surname>Classification</surname>
            and
            <given-names>Scene</given-names>
          </string-name>
          <string-name>
            <surname>Analysis</surname>
          </string-name>
          . John Wiley (
          <year>1973</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <surname>Duda</surname>
            ,
            <given-names>R.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hart</surname>
            ,
            <given-names>P.E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stork</surname>
            ,
            <given-names>D.G.</given-names>
          </string-name>
          :
          <article-title>Pattern Classification</article-title>
          . Wiley, New York,
          <volume>2</volume>
          <fpage>edn</fpage>
          . (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Fukunaga</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          :
          <article-title>Introduction to Statististical Pattern Recognition</article-title>
          . Academic Press, second edn. (
          <year>1990</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>Jackson</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Software Abstractions: Logic, Language, and Analysis</article-title>
          . MIT Press,
          <source>ISBN 978- 0-262-10114-1</source>
          (
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Muggleton</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>de Raedt</surname>
          </string-name>
          , L.:
          <article-title>Inductive logic programming: Theory and methods</article-title>
          .
          <source>The Journal of Logic Programming</source>
          <volume>19</volume>
          -
          <issue>20</issue>
          (
          <issue>0</issue>
          ),
          <fpage>629</fpage>
          -
          <lpage>679</lpage>
          (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Newman</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Networks: an introduction</article-title>
          . Oxford University Press, Inc. (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <surname>Popper</surname>
            ,
            <given-names>K.R.</given-names>
          </string-name>
          :
          <article-title>Logika vedeckeho zkoumani (Logik der Forschung</article-title>
          , German original
          <year>1934</year>
          ).
          <source>OIKOYMENH</source>
          (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Raedt</surname>
            ,
            <given-names>L.D.</given-names>
          </string-name>
          : Logical and
          <string-name>
            <given-names>Relational</given-names>
            <surname>Learning</surname>
          </string-name>
          . Springer (
          <year>September 2008</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <surname>Rissanen</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          :
          <article-title>Modeling by shortest data description</article-title>
          .
          <source>Automatica</source>
          <volume>14</volume>
          (
          <issue>5</issue>
          ),
          <fpage>465</fpage>
          -
          <lpage>471</lpage>
          (
          <year>Sep 1978</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Russell</surname>
            ,
            <given-names>S.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Norvig</surname>
            ,
            <given-names>P.: Artificial</given-names>
          </string-name>
          <string-name>
            <surname>Intelligence</surname>
            ,
            <given-names>A Modern</given-names>
          </string-name>
          <string-name>
            <surname>Approach</surname>
          </string-name>
          . Pre, third edn. (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>Torlak</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Dennis</surname>
          </string-name>
          , G.:
          <article-title>Kodkod for alloy users</article-title>
          .
          <source>In: First Alloy Workshop, colocated with the Fourteenth ACM SIGSOFT Symposium on Foundations of Software Engineering. Portland, Oregon (November 6</source>
          <year>2006</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <surname>Torlak</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Jackson</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          :
          <article-title>Kodkod: A relational model finder</article-title>
          . In: Grumberg,
          <string-name>
            <given-names>O.</given-names>
            ,
            <surname>Huth</surname>
          </string-name>
          , M. (eds.)
          <article-title>Tools and Algorithms for the Construction</article-title>
          and
          <source>Analysis of Systems, Lecture Notes in Computer Science</source>
          , vol.
          <volume>4424</volume>
          , pp.
          <fpage>632</fpage>
          -
          <lpage>647</lpage>
          . Springer Berlin Heidelberg (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Uszkoreit</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          :
          <article-title>Methods and applications for relation detection potential and limitations of automatic learning in ie</article-title>
          .
          <source>In: Proceedings of International Conference on Natural Language Processing and Knowledge Engineering</source>
          , NLP-KE
          <year>2007</year>
          . pp.
          <fpage>6</fpage>
          -
          <lpage>10</lpage>
          . Beijing,
          <source>China (Aug 30- Sep 1</source>
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Welty</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Fan</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Gondek</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schlaikjer</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Large scale relation detection</article-title>
          .
          <source>In: Proceedings of the NAACL HLT 2010 First International Workshop on Formalisms and Methodology for Learning by Reading</source>
          . pp.
          <fpage>24</fpage>
          -
          <lpage>33</lpage>
          . Association for Computational Linguistics, Los Angeles, California (Jun
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>