<!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>Classification of SAT Problem Instances by Machine Learning Methods</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Márk Danisovszky</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Zijian Győző Yang</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Gábor Kusper</string-name>
          <email>kusper.gabor@uni-eszterhazy.hu</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Eszterházy Károly University, Faculty of Informatics</institution>
          ,
          <country country="HU">Hungary</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2020</year>
      </pub-date>
      <fpage>29</fpage>
      <lpage>31</lpage>
      <abstract>
        <p>Eficient SAT solving is critical in many practical applications. State-ofthe-art SAT solvers can solve SAT problems with more than 100.000 variables and millions of clauses. They have usually more than 10 options, and we might combine them. We need those options to get better runtime. Our experience shows that we can get significant speed up if we use the suitable options. Our goal is to create a neural network based system, which can select the best option configuration for the input SAT instance. As a first step, we created a system that can predict the type of a SAT problem. Our system has two main tools: CNFStats and the prediction tool. The CNFStats can compute several properties of the input SAT instance. For example, how many variables, clauses, unit, binary clause are in the input. How many horn clauses, so called black and white clauses are in the input. These properties generated by CNFStats are the input for the prediction tool. The prediction tool is a multi-layer perceptron neural network, which is able to do classification over SAT problem instances found on the SATLIB webpage, see: https://www.cs.ubc.ca/~hoos/SATLIB/benchm.html. The neural network is written in .NET from scratch. It is easy to configure by using a webpage. The user can give the number of layers, number of neurons, and the activation function, train it, test it and save it. In the prediction tool we use those 48 properties which is computed by the CNFStats tool. We used the half of the input problems from SATLIB to train the neural network. Classes were the same as in the webpage. The most successful neural network was using 2 hidden layers, 125 neurons in each hidden layer, the activation function was the sigmoid function (other activation functions did not perform well in these settings), 10.000 training runs with 0.033 learning rate. The accuracy was 95%. The second best neural network was the same but with 1 hidden layer and 250 neurons.</p>
      </abstract>
      <kwd-group>
        <kwd>SAT solvers</kwd>
        <kwd>neural network</kwd>
        <kwd>classification</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Eficient SAT solving is critical in many practical applications. State-of-the-art
SAT solvers can solve SAT problems with more than 100.000 variables and millions
of clauses. They have usually more than 10 options, and we might combine them.
We need those options to get better runtime. Our experience shows that we can get
significant speed up if we use the suitable options. Our goal is to create a neural
network based system, which can select the best option configuration for the input
SAT instance. As a first step, we created a system that can predict the type of a
SAT problem.</p>
      <p>In our research we have created features for machine learning algorithms, then,
using these features training corpora were built. We have tried more machine
learning methods. At last, but not least, we have evaluated our experiments.</p>
    </sec>
    <sec id="sec-2">
      <title>2. Related Work</title>
      <p>It is well known that diferent SAT solvers have many diferent options which
corresponds to diferent solution strategies. Each of them is optimised for some
SAT problem classes. So choosing the right options give better runtime results.
This idea was used at The Configurable SAT Solver Challenge (CSSC), see [4].
They run SAT solvers after a fully automated configuration step.</p>
      <p>This is called algorithm configuration and this technique seem to be efective in
case of several SAT solvers. For example, Hutter et al. [3] configured the algorithm
Spear on formal verification instances, achieving a 500-fold speedup. Algorithm
configuration has also enabled the development of general frameworks for stochastic
local search SAT solvers that can be automatically instantiated to yield
state-ofthe-art performance on new types of instances, like SATenstein [5]. Algorithm
configuration can be seen as a special case of automatic data correction, see for
example [10], where a neural network is used to correct sensor data automatically.</p>
      <p>On the other hand neural networks was trained to recognize interesting
properties of SAT problems. For example Evans et al. constructed a neural network
to recognize logical entailment[1]. NeuroSAT is designed to guess the unsatisfiable
core of SAT instances [8, 9].</p>
      <p>In the research of Evans et al. [12], a new process was performed to recognising
logical entailment. LSTM and Convolution network were used to capture and
exploit heterogeneous and deeply structured syntax of logic.</p>
      <p>In our experiments, we used the neural network as traditional machine learning
method to train human created attributes that extracted from logical expressions.</p>
    </sec>
    <sec id="sec-3">
      <title>3. CNFStats and corpora</title>
      <p>
        Our prediction system is based on machine learning. Our classification system
has two main tools: CNFStats, see http://fmv.ektf.hu/files/CnfStats.java,
Name
number Of Variables
number Of Clauses
number Of K Clauses (
        <xref ref-type="bibr" rid="ref1 ref10 ref11 ref12 ref2 ref3 ref4 ref5 ref6 ref7 ref8 ref9">1-13</xref>
        )
number Of Black Clauses
number Of White Clauses
number Of Definite Horn Clauses
number Of Strait Clauses
number Of Positive Literals
number Of Negative Literals
ratio Of Clauses And Variables
ratio Of K Clauses (
        <xref ref-type="bibr" rid="ref1 ref10 ref11 ref12 ref2 ref3 ref4 ref5 ref6 ref7 ref8 ref9">1-13</xref>
        )
ratio Of Black Clauses
ratio Of White Clauses
ratio Of Definite Horn Clauses
ratio Of Strait Clauses
ratio Of Positive Literals
ratio Of Negative Literals
mayBe PigeonHole
mayBe Random3SAT
mayBe RandomAIM
mayBe NemesisFormula
mayBe Dubois
      </p>
      <p>Description
Number of variables.</p>
      <p>Number of clauses.</p>
      <p>How many 1, 2 ... 12. literal clauses.</p>
      <p>The 13 or more literal clauses are count
as 13 literal clauses.</p>
      <p>Number of Black clauses.</p>
      <p>Number of White Clauses.</p>
      <p>Number of Definite Horn Clauses.</p>
      <p>Number of Strait Clauses.
number of Positive Literals.</p>
      <p>Number of Negative Literals.</p>
      <p>Ratio of clauses and variables.</p>
      <p>Ratio of K Clauses (K=1-13).</p>
      <p>Ratio of Black Clauses.</p>
      <p>Ratio of White Clauses.</p>
      <p>Ratio of Definite Horn Clauses.</p>
      <p>Ratio of Strait Clauses.</p>
      <p>Ratio of Positive Literals.</p>
      <p>Ratio of Negative Literals.</p>
      <p>Is it a PigeonHole problem?
Is it a Random3SAT problem?
Is it a RandomAIM problem?
Is it a NemesisFormula problem?</p>
      <p>Is it a Dubois problem?
and prediction tool, see http://fmv.ektf.hu/files/SAT-CLASSIFIER.rar. The
CNFStats extracts features from the input SAT instance. For example, how many
variables, clauses, unit, binary clause are in the input. We extract 48 features, the
complete feature list can be found in Table 1. These extracted features are the
inputs of a machine learning algorithm. The output is the result of the classification,
so it is a type of SAT problems.</p>
      <p>First, our CNFStats tool reads a DIMACS (standard SAT format) file. The
DIMACS file contain a propositional logic formula in conjunctive normal form
(CNF). The DIMACS file format represents clauses as a line, which is a list of
integers terminated by a zero. Positive integers represent positive literals, negative
ones represent negative literals. The number of variables is usually between 10 and
100,000 and the number of clauses is usually between 100 and or even few millions,
so we cannot use a DIMACS file directly to train a neural network. Therefore, we
need to create features from these variables and clauses. Our aim was to create
relevant features that can help a classifier in its work. In Table 1 we can see all the
48 features that CNFStats extracts.</p>
      <p>The last 5 features in Table 1 are invented by an expert, Gábor Kusper, who is
one of the authors, by closely investigating the corresponding DIMCAS files. For
example the ’mayBe PigeonHole’ feature is computed by a 12 lines Java method
which uses the other features. It tries to guess whether the input SAT problem is
a Pigeonhole SAT problem or not, see https://www.cs.ubc.ca/~hoos/SATLIB/
Benchmarks/SAT/DIMACS/PHOLE/descr.html.</p>
      <p>This Java code is a segment of the CNFStats tool. It is the source code of the
method which computes the ’mayBe PigeonHole’ feature:
private boolean mayItBePigeonHole() {
int binary = numberOfKClauses[2];
if (binary != numberOfBlackClauses) return false;
if (numberOfBlackClauses + numberOfWhiteClauses !=</p>
      <p>numberOfClauses) return false;
int nonBinary = numberOfClauses - binary;
if (nonBinary &lt; 4) return false;
int k = nonBinary-1;
k = k &gt; 12 ? 13 : k;
if (numberOfKClauses[k] != k+1) return false;
return true;
}</p>
      <p>To invent this method an expert used to need 2 hours of work, and this was the
simplest one. We invented these ’mayBe’ features to check whether the 48 statistics
what we compute are suitable to classify a SAT instance or not. Since we could do
that for 5 classes by hand, it seems that the measured features are suficient.</p>
      <p>Using these 48 features, we created our training sets. We built 2 diferent
corpora from the SAT problems from the SATLIB webpage, see https://www.cs.
ubc.ca/~hoos/SATLIB/benchm.html.</p>
      <p>1. SAT33: 3557 instances, 33 classes: 3CNF, 3SAT1K, 5SAT500, 7SAT90,
AIM, AIS, BEJING, BF, BMC, BMS, BW, CBS, CF, DUBOIS, GCP,
HANOI, II, JNH, K3, LABS, LOGISTICS, LRAN, PARITY, PHOLE, QG,
QI-CRAFTED, QI-ISO, QUEENS, RND3SAT, SSA, SW-GCP, UNIF-K5,
WND
2. SAT19: 1038 instances; 19 classes: AIM, AIS, BEJING, BF, BMC, BMS,
BW, CBS, DUBOIS, GCP, HANOI, II, JNH, LOGISTICS, LRAN, PARITY,
QG, RND3SAT, SW-GCP</p>
      <p>We decided to have 2 diferent corpora because the learning time in case of
SAT19 was significantly smaller than in case of SAT33. For example we decided
not to include QI-CRAFTED and QI-ISO into SAT19 because we had 40GB CNF
ifles for them. In case of 3SAT1K, 5SAT500 the reason was that they are very
similar as we can see in Figure 4. The other reason is that classes in SAT33 are
less widely known. It includes also CNF files from the SAT race competition, see
http://www.satcompetition.org/. On the other hand, all classes from SAT19
can be found on the SATLIB page.</p>
      <p>In Figure 1 we can see the number of instances for each class in our corpora.
Since the distribution is not uniform, we had to use 10-fold cross-validation in our
experiments.</p>
      <p>Using the training sets, prediction models are trained and our prediction tool
can predict a concrete type of the input SAT problem given as a DIMACS file.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Reusable User Friendly MLP Neural Network</title>
    </sec>
    <sec id="sec-5">
      <title>Framework</title>
      <p>For training a classifier neural network, we have implemented a reusable user
friendly multilayer perceptron neural network framework in C# language1. Neural
network is a commonly used method in research projects, but building a neural
network is dificult and programming knowledge is needed. Thus, we have created
an user friendly software for users who would like to build a neural network for our
CNFStats without programming skill. But the software can be easily changed for
an other kind of task.</p>
      <p>In our software, first, the user can choose the output classes for the neural
network, then we have to add the folder of CNF sources and the output folder
for each classes. After the input settings, the second step is to build our neural
network. The user can set the number of hidden layers, then set the number of
neurons of the input layer, the hidden layers and the output layer. Activation
function can be chosen as well. After building the architecture of the network,
1https://github.com/DanisovszkyMark/EKE-PROBLEM-CLASSIFIER-WITH-NEURAL-NETWORK_V2
the user can set the training options and start the training steps. At the end of
training, the user can test the learned model.</p>
    </sec>
    <sec id="sec-6">
      <title>5. Methods and Experiments</title>
      <p>First, we did preprocess experiments to find the best hyperparameters for our
neural network. For this task, we tried diferent settings and architectures of neural
network:
• 1 hidden layer:
• 2 hidden layer
• 3 hidden layer
– Number of neurons: 35, 150, 200, 250, 300, 500
– Epochs: 1000 - 10000
– Number of neurons: 125-125, 150-100, 200-50
– Number of neurons: 100-100-50, 100-75-75, 125-75-50
• Corpus: Training set: 80%, Test set: 20%</p>
      <p>As we can see in Figure 3, neural network with 1 hidden layer (the green bars)
could gain same performance against the 2 (the blue ones) or 3 hidden layers (the
yellow ones), and the training time of 1 hidden layer is also much faster although
in all 3 scenarios we had 250 neurons in total. Thus in our further experiments,
we used only one hidden layer in our neural network. Furthermore, in Figure 3 the
green bars show that among the neural networks with 1 hidden layer the one with
250 neurons achieved the highest result. Figure 2 shows that 4000 epoch steps are
enough for the training.</p>
      <p>Using the pretrained neural network we have built our neural network
classification models.</p>
      <p>Furthermore, we have tried also diferent kinds of machine learning algorithms
for this task. Beside the neural network, we have tried 4 basic machine learning
classifiers [11]:
• Naive Bayes: probabilistic classifier based on Bayes’ theorem with strong
independence assumptions between the features.
• Support Vector Machine: supervised machine learning algorithm, it uses a
non-probabilistic binary linear classifier. The separated categories are divided
by a clear gap that is as wide as possible.
• Decision Tree (J48): an open source Java implementation of the C4.5
algorithm, which is used to generate a decision tree.
• Random Forest: it constructs multitude of individual decision trees during
training and at prediction phase, each individual tree in the random forest
spits out a class prediction and the class with the most votes becomes the
model’s prediction.</p>
      <p>Using these machine learning methods, we trained classifier models on SAT19
and SAT33. For training and testing, we used the Weka 3 open source machine
learning software [2].</p>
    </sec>
    <sec id="sec-7">
      <title>6. Results and Evaluation</title>
      <p>For evaluation, we used the "Correctly Classified Instances" metric. In all cases we
used 10-fold cross-validation. In Table 2 we can see the evaluation of the machine
learning algorithms. In our experiment, the Random forest achieved the best result,
close to 99% accuracy.</p>
      <p>MLP
SVM
Naive Bayes
J48
Random forest</p>
      <p>CCI</p>
      <p>In Table 3 we can see the relevance of the features computed by the CnfStats
tool. This table was created by the decision tree (J48) technique. The depth of
the decision tree was 9, this table show the features used at each decision level.
The first decision is made whether the "maybe random 3 sat" feature was 0 or 1.
This is very important, because lots of classes are some variant of the random 3
SAT problem. We can see that the "number of kclauses" feature was used on many
levels so this is an interesting feature.</p>
      <p>We also did error analysis. In Figure 4 we can see the confusion matrix of the
SAT33 (left) and the SAT19 (right) of the random forest experiments. In these
matrices only the mistakes are shown. The columns are the predicted classes,
the rows are the original classes. The most outstanding mistake is CBS and
QICRAFTED. Our method predicted 12 times CBS, but it was originally K3 and 5
times QI-CRAFTED, but it was QI-ISO.</p>
    </sec>
    <sec id="sec-8">
      <title>7. Conclusion</title>
      <p>In our research we have created a SAT problem classifier. For this task we did
experiments in feature engineering and feature selection. We have tried five diferent
kinds of machine learning algorithm. Among the tried methods, the random forest
gained the best result. We could achieve 98.9% accuracy at SAT33 and 99.03%
accuracy at SAT19. Furthermore we have implemented a reusable user friendly
MLP neural network framework for classifying SAT problems.</p>
      <p>As a future work we would like to use also other techniques for algorithm
conifguration, like optimization modulo theories [6] using for example Puli [7].
features
maybe random 3 sat
ratio of strait clauses,
number of variable
number of kclauses 8
number of black clauses
ratio of kclauses 3
number of clauses
ratio of clauses and variable
ratio of kclauses 4
number of variables
ratio of kclauses 6
number of kclauses 3
number of clause
ratio of kclauses 1
maybe dubois
number of variables
maybe nemesis formula
number of kclauses 4
ratio of kclauses 6
number of kclauses 14
ratio of strait clauses
number of variables
number of kclauses
number of definite horn clauses
number of kclauses 5
number of kclauses
number of white clauses
ratio of kclauses 14
maybe nemesis formula
ratio of kclauses 14</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R.</given-names>
            <surname>Evans</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Saxton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Amos</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Kohli</surname>
          </string-name>
          , and
          <string-name>
            <given-names>E.</given-names>
            <surname>Grefenstette</surname>
          </string-name>
          ,
          <article-title>Can neural networks understand logical entailment?</article-title>
          <source>In 6th International Conference on Learning Representations, ICLR</source>
          <year>2018</year>
          , (
          <year>2018</year>
          ), http://arxiv.org/abs/
          <year>1802</year>
          .08535.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>M.</given-names>
            <surname>Hall</surname>
          </string-name>
          , E. Frank,
          <string-name>
            <given-names>G.</given-names>
            <surname>Holmes</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Pfahringer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Reutemann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>and I.H.</given-names>
            <surname>Witten</surname>
          </string-name>
          ,
          <source>The WEKA Data Mining Software: An Update, SIGKDD Explor. Newsl.</source>
          , Volume
          <volume>11</volume>
          :
          <fpage>1</fpage>
          ,
          <string-name>
            <surname>ISSN</surname>
          </string-name>
          <year>1931</year>
          -
          <volume>0145</volume>
          , (
          <year>2009</year>
          ), pp.
          <fpage>10</fpage>
          -
          <lpage>18</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>F.</given-names>
            <surname>Hutter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Babic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Hoos</surname>
          </string-name>
          ,
          <article-title>and</article-title>
          <string-name>
            <given-names>A.</given-names>
            <surname>Hu</surname>
          </string-name>
          ,
          <article-title>Boosting verification by automatic tuning of decision procedures, Formal Methods in Computer Aided Design (FMCAD'07</article-title>
          ), (
          <year>2007</year>
          ), pp.
          <fpage>27</fpage>
          --
          <lpage>34</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>F.</given-names>
            <surname>Hutter</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. T.</given-names>
            <surname>Lindauer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Balint</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Bayless</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H. H.</given-names>
            <surname>Hoos</surname>
          </string-name>
          ,
          <string-name>
            <surname>K.</surname>
          </string-name>
          <article-title>LeytonBrown, The Configurable SAT Solver Challenge (CSSC), CoRR</article-title>
          , abs / 1505.01221, (
          <year>2015</year>
          ), http://arxiv.org/abs/1505.01221.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>A.</given-names>
            <surname>KhudaBukhsh</surname>
          </string-name>
          , L. Xu,
          <string-name>
            <given-names>H.</given-names>
            <surname>Hoos</surname>
          </string-name>
          , and
          <string-name>
            <given-names>K.</given-names>
            <surname>Leyton-Brown</surname>
          </string-name>
          ,
          <article-title>SATenstein: Automatically building local search SAT solvers from components</article-title>
          .
          <source>Proceedings of IJCAI'09</source>
          , (
          <year>2009</year>
          ), pp.
          <fpage>517</fpage>
          --
          <lpage>524</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kovásznai</surname>
          </string-name>
          , Cs. Biró, and
          <string-name>
            <given-names>B.</given-names>
            <surname>Erdélyi</surname>
          </string-name>
          ,
          <article-title>Generating Optimal Scheduling for Wireless Sensor Networks by Using Optimization Modulo Theories Solvers CEUR</article-title>
          WORKSHOP PROCEEDINGS
          <year>1889</year>
          , (
          <year>2017</year>
          ), pp.
          <fpage>15</fpage>
          -
          <lpage>27</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>G.</given-names>
            <surname>Kovásznai</surname>
          </string-name>
          , Cs. Biró, and
          <string-name>
            <given-names>B.</given-names>
            <surname>Erdélyi</surname>
          </string-name>
          , Puli - A
          <string-name>
            <surname>Problem-Specific</surname>
            <given-names>OMT</given-names>
          </string-name>
          <source>solver Proceedings of SMT</source>
          <year>2018</year>
          , (
          <year>2018</year>
          ), Paper:
          <fpage>362</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>D.</given-names>
            <surname>Selsam</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Lamm</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Bünz</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Liang</surname>
          </string-name>
          , Leonardo de Moura, and
          <string-name>
            <given-names>D. L.</given-names>
            <surname>Dill</surname>
          </string-name>
          .
          <article-title>Learning a SAT Solver from Single-Bit Supervision</article-title>
          , ICLR 2019 Conference, (
          <year>2019</year>
          ), https://openreview.net/forum?id=HJMC_
          <fpage>iA5tm</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>D.</given-names>
            <surname>Selsam</surname>
          </string-name>
          ,
          <string-name>
            <surname>N.</surname>
          </string-name>
          <article-title>Bjørner, Guiding High-Performance SAT Solvers with Unsat-Core Predictions</article-title>
          ,
          <string-name>
            <surname>SAT</surname>
          </string-name>
          <year>2019</year>
          :
          <article-title>Theory and Applications of Satisfiability Testing - SAT</article-title>
          <year>2019</year>
          , (
          <year>2019</year>
          ), pp.
          <fpage>336</fpage>
          -
          <lpage>353</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>T.</given-names>
            <surname>Tajti</surname>
          </string-name>
          , G. Geda,
          <string-name>
            <given-names>T.</given-names>
            <surname>Balla</surname>
          </string-name>
          , and
          <string-name>
            <surname>Gy</surname>
          </string-name>
          . Vad,
          <article-title>Indoor localization using NFC and mobile sensor data corrected using neural net</article-title>
          <source>Proceedings of ICAI 2014</source>
          , vol.
          <volume>1</volume>
          -
          <issue>2</issue>
          , (
          <year>2014</year>
          ) pp.
          <fpage>163</fpage>
          -
          <lpage>169</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>I. H.</given-names>
            <surname>Witten</surname>
          </string-name>
          , E. Frank, and
          <string-name>
            <given-names>M.A.</given-names>
            <surname>Hall</surname>
          </string-name>
          ,
          <source>Data Mining: Practical Machine Learning Tools and Techniques</source>
          , Morgan Kaufmann Publishers Inc., ISBN
          <volume>0123748569</volume>
          , (
          <year>2011</year>
          ), book.
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Richard</given-names>
            <surname>Evans</surname>
          </string-name>
          and
          <string-name>
            <given-names>David</given-names>
            <surname>Saxton</surname>
          </string-name>
          and
          <string-name>
            <given-names>David</given-names>
            <surname>Amos</surname>
          </string-name>
          and
          <string-name>
            <given-names>Pushmeet</given-names>
            <surname>Kohli</surname>
          </string-name>
          and
          <string-name>
            <given-names>Edward</given-names>
            <surname>Grefenstette</surname>
          </string-name>
          ,
          <source>Can Neural Networks Understand Logical Entailment?, International Conference on Learning Representations</source>
          , (
          <year>2018</year>
          ), book.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>