<!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>Proof Search Optimizations for Non-clausal Connection Calculi</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Jens Otten</string-name>
          <email>jeotten@ifi.uio.no</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Informatics, University of Oslo PO</institution>
          <addr-line>Box 1080 Blindern, 0316 Oslo</addr-line>
          ,
          <country country="NO">Norway</country>
        </aff>
      </contrib-group>
      <fpage>49</fpage>
      <lpage>57</lpage>
      <abstract>
        <p>The paper presents several proof search optimization techniques for non-clausal connection calculi. These techniques are implemented and integrated into the non-clausal connection prover nanoCoP. Their effectiveness is evaluated on the problems in the TPTP library. Together with a fixed strategy scheduling, these techniques are the basis of the new version 1.1 of nanoCoP.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        Most of the popular efficient proof search calculi require the input formula to be in
clausal form, i.e. in disjunctive or conjunctive normal form. First-order formulae that
are not in clausal form are translated into clausal form in a preprocessing step. While
the use of a clausal form technically simplifies the proof search and the required data
structures, it also has some disadvantages. Even the definitional translation into clausal
form introduces a significant overhead into the proof search [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Furthermore, a
translation into clausal form modifies the structure of the original formula and the translation
of the clausal proof back into one of the original formula is not straightforward [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ].
      </p>
      <p>
        Non-clausal connection calculi for classical logic [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] and non-classical logics [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]
do not have these shortcomings. They combine the advantages of more natural
nonclausal calculi, such as sequent or (standard) tableau calculi [
        <xref ref-type="bibr" rid="ref2 ref3">2, 3</xref>
        ], with the efficiency
of a connection-based proof search. Recently, implementations of these calculi have
been presented: nanoCoP for classical logic [
        <xref ref-type="bibr" rid="ref10 ref9">9, 10</xref>
        ] and nanoCoP-i/nanoCoP-M for
intuitionistic/modal first-order logic [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. But whereas the nanoCoP core provers have a
better performance than the core provers of the leanCoP series [
        <xref ref-type="bibr" rid="ref11 ref9">9, 11</xref>
        ], the full leanCoP
provers include additional optimizations techniques and a strategy scheduling, which
leads to a significantly better performance than the current nanoCoP (core) provers.
      </p>
      <p>
        This paper presents techniques for optimizing the proof search in non-clausal
connection calculi (Section 3) and shows how these can be implemented and integrated
into the (classical) nanoCoP prover (Section 4). Among these techniques are restricted
backtracking and clause reordering techniques, which are already successfully used in
clausal connection calculi [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. Using these techniques within a fixed strategy
scheduling, results in a new version 1.1 of nanoCoP. The effectiveness of all presented
optimization techniques is evaluated and the nanoCoP 1.1 prover is compared to other
popular provers on the problems in the TPTP library (Section 5).
      </p>
    </sec>
    <sec id="sec-2">
      <title>The Non-clausal Connection Calculus</title>
      <p>
        A (first-order) formula (denoted by F) is built up from atomic formulae, the connectives
:, ^, _, ), and the standard first-order quantifiers 8 and 9. An atomic formula (denoted
by A) is built up from predicate symbols and terms. A literal L has the form A or :A.
Its complement L is A if L is of the form :A; otherwise L is :L. A connection is a
set fA; :Ag of literals with the same predicate symbol but different polarities. A term
substitution s assigns terms to variables. The non-clausal connection calculus uses
nonclausal matrices. A non-clausal matrix M of a formula F is a set of clauses, in which
each clause consists of literals and (sub)matrices, and can be seen as a representation of
a formula in negation normal form; see [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] for details. In the graphical representation
of a non-clausal matrix, its clauses are arranged horizontally, while the literals and
matrices of each clause are arranged vertically.
      </p>
      <p>
        The axiom and the rules of the non-clausal connection calculus are given in
Figure 1. Compared to the formal clausal connection calculus [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], a decomposition rule
for decomposing clauses is added and the extension rule with its extension clause
(eclause) is generalized; see [
        <xref ref-type="bibr" rid="ref8 ref9">8, 9</xref>
        ] for details. It works on tuples “C; M; Path”, where M is
a non-clausal matrix, C is a (subgoal) clause or e and (the active) Path is a set of literals
“through M” or e; s is a (rigid) term substitution. A non-clausal connection proof of M
is a non-clausal connection proof of e; M; e. The rigid term substitution s is calculated
whenever a connection is identified, i.e. a reduction or extension rule is applied.
      </p>
      <p>For example, the formula P(a)^(8y(P(y))P(g(y)))_ :(Q)Q)) ) P(g(g(a))) has
the non-clausal matrix (the polarity 1 is used to represent negation):</p>
      <p>ffP(a)1g; fffP(y)0; P(g(y))1gg; ffQ1g; fQ0ggg; fP(g(g(a)))0gg
which has the following graphical representation and connection proof (using the term
substitution s with s (y) = a and s (y0) = g(a)):
2</p>
      <p>2
66 P(a)1 66
4 4</p>
      <p>P(y)0
P(g(y))1</p>
      <p>copy
z P(y}0|)0</p>
      <p>P(g(y0))1
Q1</p>
      <p>Q0
{ 3</p>
      <p>3
77 P(g(g(a)))0 77 .
5 5</p>
      <sec id="sec-2-1">
        <title>Axiom (A)</title>
      </sec>
      <sec id="sec-2-2">
        <title>Reduction (R)</title>
      </sec>
      <sec id="sec-2-3">
        <title>Extension (E)</title>
      </sec>
      <sec id="sec-2-4">
        <title>Decomposition (D)</title>
        <p>fg; M; Path</p>
        <sec id="sec-2-4-1">
          <title>C; M; Path[fL2g</title>
        </sec>
        <sec id="sec-2-4-2">
          <title>C[fL1g; M; Path[fL2g</title>
        </sec>
        <sec id="sec-2-4-3">
          <title>C3; M[C1nC2]; Path[fL1g</title>
        </sec>
        <sec id="sec-2-4-4">
          <title>C[fL1g; M; Path</title>
        </sec>
      </sec>
      <sec id="sec-2-5">
        <title>Start (S)</title>
        <p>C2; M; fg
e; M; e
and s (L1)=s (L2)</p>
        <p>and C2 is copy of C12M
and C3:=b -clauseL2 (C2), C2
C; M; Path is copy of C1, C1 is e-clause of
M wrt. Path [ fL1g, C2
contains L2 with s (L1) = s (L2)
C [C1; M; Path</p>
        <sec id="sec-2-5-1">
          <title>C[fM1g; M; Path</title>
          <p>and C12M1</p>
        </sec>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Optimization Techniques</title>
      <p>The following proof search optimization techniques are integrated into the non-clausal
connection calculus: regularity, lemmata, restricted backtracking, positive and
conjecture start clauses, reordering clauses, and strategy scheduling.
3.1</p>
      <p>
        Regularity and Lemmata
Regularity is an effective technique for pruning the search space in clausal connection
calculi [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. The regularity condition states that no literal occurs more than once in the
active path (without losing completeness). This condition can be integrated in a
similar way1 into the non-clausal connection calculus in Figure 1 by adding the following
restriction to the reduction rule and the extension rule:
      </p>
      <p>8 L0 2 C [fL1g : s (L0) 62 s (Path) .</p>
      <p>Additional backtracking is avoided if the term substitution s is not modified in order to
satisfy the regularity condition, e.g., by applying the restriction only to ground literals.</p>
      <p>
        The idea of lemmata is to reuse subproofs during the proof search [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. To this end
an additional set of lemmata (i.e. set of literals) and a lemma rule is added to the
nonclausal connection calculus in the same way as it is added to the clausal calculus [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
3.2
      </p>
      <p>Restricted Backtracking
As proof search in the presented connection calculus is not confluent, backtracking is
necessary in order to achieve completeness. In the clausal connection calculus
backtracking is necessary when choosing clause C1 in the extension rule or literal L1 in the
reduction or extension rule. In the non-clausal calculus (see Figure 1) additional
backtracking is required when choosing C1 in the decomposition rule (but no backtracking
is required when choosing M1).</p>
      <p>
        The idea of restricted backtracking is to cut off any alternative solutions/connections
once a literal from the subgoal clause has been solved [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. A literal L is called solved
if it is the literal L1 of a reduction or extension step (see Figure 1) and in case of
the extension rule, there is a proof for the left premise. Furthermore, backtracking can
also be restricted when selecting clause C1 in the start rule by omitting alternative start
clauses. Restricted backtracking is correct (as the search space is only pruned) and very
effective, but incomplete [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. It can also be applied to the non-clausal calculus.
3.3
      </p>
      <p>Positive and Conjecture Start Clauses
By default, the selection of the start clause C1 in the start rule (see Figure 1) is restricted
to positive clauses. A clause is positive iff all of its elements (matrices and literals)
are positive; a matrix is positive iff it contains at least one positive clause; a literal is
positive iff its polarity is 0. Furthermore, clauses that are not positive can be deleted
from the start clause C1 (or its copy C2).
1 Observe that the restriction to the active path is necessary in the non-clausal case as
completeness is lost, otherwise; see, e.g., the valid matrix ffp0g; fp1; ffp0g; fq0ggg; fq1gg .</p>
      <p>Whereas selecting positive start clauses can significantly prune the search space, this
technique is less appropriate for problems with a large number of axioms, i.e. formulae
of the form A1 ^ ::: ^ An ) C for a “large” n. In this case it is more goal-oriented to start
with clauses of the conjecture C, which leads to a smaller search space.2
3.4</p>
      <p>Reordering Clauses
As already mentioned in Section 3.2, the connection calculus is not proof confluent. The
order in which clauses and literals are selected if more than one connection is possible
has a significant impact on the proof search. This is even more important for incomplete
techniques, such as restricted backtracking. One clause order might lead to an
incomplete proof search, while another one might quickly lead to a proof. Hence, reordering
clauses is a crucial technique for connection calculi using restricted backtracking. For
non-clausal calculi it is important that a reordering technique leads to diverse orders
even for small sets of clauses, e.g., if a (sub)matrix contains only two or three clauses.
3.5</p>
      <p>Strategy Scheduling
Trying different techniques or methods when solving a hard problem is, in general, a
successful approach. Hence, when trying to prove a formula, a mix of different
techniques or strategies is more likely to be successful. A strategy scheduling would
subsequently try different techniques to find a proof of a formula, e.g., positive and conjecture
start clauses, with and without restricted backtracking, or using different clause orders.</p>
    </sec>
    <sec id="sec-4">
      <title>4 Implementation</title>
      <p>The proof search optimization techniques described in Section 3 have been
implemented and integrated into the non-clausal connection prover nanoCoP, which is
available under the GNU General Public License and can be downloaded from the following
website: http://www.leancop.de/nanocop/ .</p>
      <p>
        In a first step the input formula F is translated into a non-clausal (indexed) matrix
M; in the second step this matrix is written into Prolog’s database using the literal
lit(Lit,ClaB,ClaC,Grnd); see [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] for details.
      </p>
      <p>The source code of the nanoCoP core prover is shown in Figure 2. The predicate
prove(Mat,PathLim,Set,Proof) implements the start rule (lines 1–11). Mat is the
matrix generated in the preprocessing step, PathLim is the maximum size of the active
path used for iterative deepening (lines 7–11), Set is a strategy (see below), and Proof
contains the returned connection proof.</p>
      <p>The predicate prove(Cla,Mat,Path,PathI,PathLim,Lem,Set,Proof) implements
the axiom (line 12), the decomposition rule (lines 13–17), the reduction rule (lines 18–
21, 24–25, 34), and the extension rule (lines 18–21, 27–45) of the non-clausal
connection calculus in Figure 1. It succeeds iff there is a connection proof for the tuple “Cla,
Mat, Path” with jPathj &lt; PathLim. The predicate prove_ec calculates an appropriate
extension clause (lines 35–45). The substitution s is stored implicitly by Prolog.
2 This approach is incomplete, though, as shown by the following formula: (P ^ :P) ) Q .
% start rule
prove(Mat,PathLim,Set,[(I^0)^V:Cla1|Proof])
:( member(scut,Set) -&gt; ( append([(I^0)^V:Cla1|_],[!|_],Mat) ;
member((I^0)^V:Cla,Mat), positiveC(Cla,Cla1) ) -&gt; true ;
( append(MatC,[!|_],Mat) -&gt; member((I^0)^V:Cla1,MatC) ;
member((I^0)^V:Cla,Mat), positiveC(Cla,Cla1) ) ),
prove(Cla1,Mat,[],[I^0],PathLim,[],Set,Proof).
prove(Mat,PathLim,Set,Proof)
:retract(pathlim) -&gt;
( member(comp(PathLim),Set) -&gt; prove(Mat,1,[],Proof) ;</p>
      <p>PathLim1 is PathLim+1, prove(Mat,PathLim1,Set,Proof) ) ;
member(comp(_),Set) -&gt; prove(Mat,1,[],Proof).
% axiom
prove([],_,_,_,_,_,_,[]).
% decomposition rule
prove([J:Mat1|Cla],MI,Path,PI,PathLim,Lem,Set,Proof) :- !,
member(I^_:Cla1,Mat1),
prove(Cla1,MI,Path,[I,J|PI],PathLim,Lem,Set,Proof1),
prove(Cla,MI,Path,PI,PathLim,Lem,Set,Proof2),
append(Proof1,Proof2,Proof).
% reduction and extension rules
prove([Lit|Cla],MI,Path,PI,PathLim,Lem,Set,Proof)
:</p>
      <p>Proof=[[I^V:[NegLit|ClaB1]|Proof1]|Proof2],
\+ (member(LitC,[Lit|Cla]), member(LitP,Path), LitC==LitP),
(-NegLit=Lit;-Lit=NegLit) -&gt;
( member(LitL,Lem), Lit==LitL, ClaB1=[], Proof1=[]
;
member(NegL,Path), unify_with_occurs_check(NegL,NegLit),
ClaB1=[], Proof1=[]
;
lit(NegLit,ClaB,Cla1,Grnd1),
( Grnd1=g -&gt; true ; length(Path,K), K&lt;PathLim -&gt; true ;</p>
      <p>\+ pathlim -&gt; assert(pathlim), fail ),
prove_ec(ClaB,Cla1,MI,PI,I^V:ClaB1,MI1),
prove(ClaB1,MI1,[Lit|Path],[I|PI],PathLim,Lem,Set,Proof1)
),
( member(cut,Set) -&gt; ! ; true ),
prove(Cla,MI,Path,PI,PathLim,[Lit|Lem],Set,Proof2).
% extension clause (e-clause)
prove_ec((I^K)^V:ClaB,IV:Cla,MI,PI,ClaB1,MI1)
:append(MIA,[(I^K1)^V1:Cla1|MIB],MI), length(PI,K),
( ClaB=[J^K:[ClaB2]|_], member(J^K1,PI),
unify_with_occurs_check(V,V1), Cla=[_:[Cla2|_]|_],
append(ClaD,[J^K1:MI2|ClaE],Cla1),
prove_ec(ClaB2,Cla2,MI2,PI,ClaB1,MI3),
append(ClaD,[J^K1:MI3|ClaE],Cla3),
append(MIA,[(I^K1)^V1:Cla3|MIB],MI1)
;
(\+member(I^K1,PI);V\==V1) -&gt;
ClaB1=(I^K)^V:ClaB, append(MIA,[IV:Cla|MIB],MI1) ).
Regularity and Lemmata The regularity condition is implemented in line 20. In order
to avoid backtracking, it is restricted to ground literals, i.e. literals without term
variables or literals whose term variables have been substituted by terms that do not contain
term variables. The lemma rule is implemented in line 22. Furthermore, the list Lem
containing all literals that have been “solved” so far is added to the arguments of the
prove predicate. In line 34 the current literal Lit is added as lemma to the set Lem.
Restricted Backtracking The restricted backtracking technique for start clauses is
implemented in line 2 and 3. Restricted backtracking for the reduction and extension
rule (and the lemma rule) is implemented in line 33. In the former case an implicit
Prolog cut in an if-then-else condition is used to cut off alternative start clauses, in the
latter case a Prolog cut is used to cut off alternative connections. In both cases, restricted
backtracking can be switched on or off (see below for details).</p>
      <p>Positive and Conjecture Start Clauses By default, start clauses are restricted to
positive clauses (lines 3 and 5). The predicate positiveC(Cla,Cla1) returns a positive start
clause Cla1 if clause Cla is positive. It is implemented within another seven lines of
Prolog code. If start clauses are restricted to conjecture clauses, a “!” is inserted into
the matrix to split the clauses of the conjecture formula from the axiom clauses. In this
case only clauses in front of the “!” are considered as start clauses (lines 2 and 4). See
the full source code on the nanoCoP website for details.</p>
      <p>Reordering Clauses By default, clauses are arranged in ascending order according
to the number of paths through its elements. If reordering of clauses is switched on
(see Section 4), all (sub-)clauses are reordered using a compact shuffle algorithm. It is
implemented within 13 lines of Prolog code; see the full source code for details.
Strategy Scheduling The argument Set of the prove predicate (see, e.g., lines 1, 7, 13,
and 18) defines a strategy. It is a list of options and may contain the following elements:
– “scut” (switch on restricted backtracking for start clauses),
– “cut” (switch on restricted backtracking for reduction, extension and lemma rule),
– “conj” (use conjecture start clauses),
– “reo(J)” for J 2 IN (reorder the clauses J times before the proof search starts), and
– “comp(I)” for I 2 IN (restart proof search using a complete search strategy, i.e.
without scut, cut, and conj, if PathLim exceeds I).</p>
      <p>These are the main strategies used for the fixed strategy scheduling together with
the total time ratio allotted to them: [cut,comp(7)]/15%, [reo(22),conj,cut]/20%,
[scut]/10%, [scut,cut]/5%, [reo(20),conj,cut]/10%, [reo(30),conj,scut,cut]/
10%, and [reo(34),conj,scut,cut]/5%. Afterwards, 12 different strategies are
invoked for 20% of the total time. Finally, the strategy [] is used for the remaining time
( 5%). As the first strategy and the last strategy are complete, the whole prover is
complete (provided an arbitrary large total time is given). The strategy scheduling is
implemented with a shell script that invokes the Prolog prover.</p>
    </sec>
    <sec id="sec-5">
      <title>Experimental Evaluation</title>
      <p>
        The different optimization techniques described in Section 3 and implemented in
Section 4 were evaluated on all 8044 first-order (so-called FOF) problems in the TPTP
library v6.4.0 [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Furthermore, nanoCoP was compared to other popular provers. All
evaluations were conducted on a 2.3 GHz Xeon system with 32 GB of RAM running
Linux 2.6.32. ECLiPSe Prolog 5.10 was used for all provers implemented in Prolog.
5.1
      </p>
      <p>Evaluation of Different Optimizations
The following versions of nanoCoP are evaluated: a version without regularity and
lemmata (“basic”), the standard version using regularity and lemmata (i.e. strategy [ ]), a
version with conjecture start clauses ([conj]), two versions with restricted
backtracking ([scut] and [cut]), nanoCoP 1.0, which uses only the strategy [cut,comp(7)], a
version with reordering clauses (“reo”=[reo(22),conj,cut]), and nanoCoP 1.1 using
the strategy scheduling described in Section 4.</p>
      <p>Table 1 shows the results of the evaluation for a CPU time limit of 10 seconds. The
table shows the number of proved (valid) problems (i.e. with TPTP status “Theorem”
or “Unsatisfiable”) and the number of refuted (invalid) problems (i.e. with TPTP status
“Countersatisfiable” or “Satisfiable”). The entry “errors” shows the number of problems
for which nanoCoP terminates with a stack overflow error by Prolog. It also shows the
number of new problems (“new proved”) that were not proved by a preceding version
(“compared to”) of nanoCoP.</p>
      <p>
        Whereas regularity and lemmata ([ ]) show only a small improvement,
conjecture start clauses ([conj]) and restricted backtracking ([scut] and [cut]) are very
effective techniques proving many more problems. For example, the [cut] version
proves 421 new problems compared to the standard version ([ ]). Using the strategy
[cut,comp(7)], nanoCoP 1.0 combines the [ ] and the [cut] techniques. The “reo”
version proves 242 new problems compared to nanoCoP 1.0, showing that reordering
clauses and conjecture start clauses are effective techniques as well. Using a strategy
scheduling, which is limited to the CPU time limit of 10 seconds (i.e., not all 20
strategies are used), nanoCoP 1.1 proves significantly more problems than nanoCoP 1.0.
The performance of nanoCoP 1.1 is compared to the following provers: the lean
(nonclausal) tableau prover leanTAP 2.3 [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], the resolution prover Prover9 (2009-02A) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ],
the superposition prover E 1.9 [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] (using options “--auto --tptp3-format”), and
leanCoP 2.2 (casc16) [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. For leanTAP, leanCoP, and nanoCoP, the required
equality axioms were added in a preprocessing step (which is included in the timings).
      </p>
      <p>
        Table 2 shows the results of the evaluation for a CPU time limit of 100 seconds (the
strategy scheduling of leanCoP 2.2 and nanoCoP 1.1 are adapted to this limit). The
entry “errors” shows the number of problems for which the prover terminated
without result before the CPU time limit was exceeded, e.g., because of a stack overflow
(leanTAP, leanCoP, and nanoCoP) or an empty set-of-support (Prover9). nanoCoP 1.1
proves slightly less problems than Prover9 and about the same number of problems as
leanCoP. The advantage of dealing directly with a non-clausal form is compensated
by the overhead for dealing with the non-clausal data structure. Only few problems in
the TPTP library are in a (deeply) nested non-clausal form; in this case proofs found
by nanoCoP can be significantly shorter than the clausal proofs found by leanCoP [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ].
nanoCoP 1.1 proves 150, 755, 301, and 452 problems not proved by leanCoP, Prover9,
E, and nanoCoP 1.0, respectively.
6
      </p>
    </sec>
    <sec id="sec-6">
      <title>Conclusion</title>
      <p>The paper presented a few effective optimization techniques for non-clausal connection
calculi and described their integration into the nanoCoP prover. Together with a strategy
scheduling, these techniques are the basis for the nanoCoP 1.1 prover. It solves almost
400 more problems from the TPTP library than the first version of nanoCoP, which
essentially consists only of the Prolog core prover.</p>
      <p>
        Future work include an improved representation of the clauses stored in Prolog’s
database and the integration of further techniques to prune the search space, such as
learning [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. Furthermore, most of the presented techniques can be used for reasoning
in non-classical, e.g., intuitionistic or modal first-order connection calculi [
        <xref ref-type="bibr" rid="ref11 ref13">11, 13</xref>
        ] as
well, by taking the prefixes of the literals into account.
      </p>
      <p>Acknowledgements. The author would like to thank Michael Fa¨rber for many useful
discussions on the nanoCoP prover.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Beckert</surname>
            ,
            <given-names>B.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Posegga</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>leanTAP: lean, tableau-based deduction</article-title>
          .
          <source>Journal of Automated Reasoning</source>
          <volume>15</volume>
          (
          <issue>3</issue>
          ),
          <fpage>339</fpage>
          -
          <lpage>358</lpage>
          (
          <year>1995</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Gentzen</surname>
          </string-name>
          , G.:
          <article-title>Untersuchungen u¨ber das logische Schließen</article-title>
          .
          <source>Mathematische Zeitschrift</source>
          <volume>39</volume>
          ,
          <fpage>176</fpage>
          -
          <lpage>210</lpage>
          ,
          <fpage>405</fpage>
          -
          <lpage>431</lpage>
          (
          <year>1935</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. Ha¨hnle, R.: Tableaux and
          <string-name>
            <given-names>Related</given-names>
            <surname>Methods</surname>
          </string-name>
          . In: Robinson,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Voronkov</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . (eds.)
          <source>Handbook of Automated Reasoning</source>
          , pp.
          <fpage>100</fpage>
          -
          <lpage>178</lpage>
          . Elsevier, Amsterdam (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Kaliszyk</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Urban</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>FEMaLeCoP: Fairly Efficient Machine Learning Connection Prover</article-title>
          . In: Davis,
          <string-name>
            <surname>M.</surname>
          </string-name>
          et al. (eds.)
          <article-title>LPAR 2015</article-title>
          .
          <article-title>LNAI</article-title>
          , vol.
          <volume>9450</volume>
          , pp.
          <fpage>88</fpage>
          -
          <lpage>96</lpage>
          . Springer, Heidelberg (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Letz</surname>
            ,
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stenz</surname>
          </string-name>
          , G.:
          <article-title>Model Elimination and Connection Tableau Procedures</article-title>
          . In: Robinson,
          <string-name>
            <given-names>A.</given-names>
            ,
            <surname>Voronkov</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . (eds.)
          <source>Handbook of Automated Reasoning</source>
          , pp.
          <fpage>2015</fpage>
          -
          <lpage>2114</lpage>
          . Elsevier, Amsterdam (
          <year>2001</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>McCune</surname>
            ,
            <given-names>W.</given-names>
          </string-name>
          :
          <article-title>Release of Prover9. Mile high conference on quasigroups, loops and nonassociative systems</article-title>
          , Denver (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Otten</surname>
          </string-name>
          , J.:
          <article-title>Restricting backtracking in connection calculi</article-title>
          .
          <source>AI</source>
          Communications
          <volume>23</volume>
          ,
          <fpage>159</fpage>
          -
          <lpage>182</lpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Otten</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>A Non-clausal Connection Calculus</article-title>
          . In: Bru¨nnler,
          <string-name>
            <given-names>K.</given-names>
            ,
            <surname>Metcalfe</surname>
          </string-name>
          ,
          <string-name>
            <surname>G</surname>
          </string-name>
          . (eds.)
          <source>TABLEAUX</source>
          <year>2011</year>
          ,
          <article-title>LNAI</article-title>
          , vol.
          <volume>6793</volume>
          , pp.
          <fpage>226</fpage>
          -
          <lpage>241</lpage>
          . Springer, Heidelberg (
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Otten</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>nanoCoP: A Non-clausal Connection Prover</article-title>
          . In: Olivetti,
          <string-name>
            <given-names>N.</given-names>
            ,
            <surname>Tiwari</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . (eds.)
          <source>IJCAR</source>
          <year>2016</year>
          ,
          <article-title>LNAI</article-title>
          , vol.
          <volume>9706</volume>
          , pp
          <fpage>269</fpage>
          -
          <lpage>276</lpage>
          . Springer, Heidelberg (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Otten</surname>
            ,
            <given-names>J.:</given-names>
          </string-name>
          <article-title>nanoCoP: Natural Non-clausal Theorem Proving</article-title>
          . In Sierra, C. (ed.)
          <source>IJCAI</source>
          <year>2017</year>
          , Sister Conference Best Paper Track, pp.
          <fpage>4924</fpage>
          -
          <lpage>4928</lpage>
          . ijcai.
          <source>org</source>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Otten</surname>
          </string-name>
          , J.:
          <article-title>Non-clausal Connection Calculi for Non-classical Logics</article-title>
          . In: Schmidt,
          <string-name>
            <given-names>R.</given-names>
            ,
            <surname>Nalon</surname>
          </string-name>
          , C. (eds.)
          <source>TABLEAUX</source>
          <year>2017</year>
          ,
          <article-title>LNAI</article-title>
          , vol.
          <volume>10501</volume>
          , pp
          <fpage>209</fpage>
          -
          <lpage>227</lpage>
          . Springer, Heidelberg (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Otten</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bibel</surname>
            ,
            <given-names>W.:</given-names>
          </string-name>
          <article-title>leanCoP: lean connection-based theorem proving</article-title>
          .
          <source>Journal of Symbolic Computation</source>
          <volume>36</volume>
          ,
          <fpage>139</fpage>
          -
          <lpage>161</lpage>
          (
          <year>2003</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Otten</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Bibel</surname>
            ,
            <given-names>W.:</given-names>
          </string-name>
          <article-title>Advances in Connection-Based Automated Theorem Proving</article-title>
          . In: Hinchey, M. at al. (eds.)
          <source>Provably Correct Systems. NASA Monographs in Systems and Software Engineering</source>
          , pp.
          <fpage>211</fpage>
          -
          <lpage>241</lpage>
          . Springer, Heidelberg (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>Reis</surname>
          </string-name>
          , G.:
          <article-title>Importing SMT and connection proofs as expansion trees</article-title>
          . In: Kaliszyk,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Paskevich</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . (eds.) 4th Workshop PxTP, EPTCS 186, pp.
          <fpage>3</fpage>
          -
          <lpage>10</lpage>
          (
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Schulz</surname>
            ,
            <given-names>S.:</given-names>
          </string-name>
          <article-title>E - a brainiac theorem prover</article-title>
          .
          <source>AI</source>
          Communications
          <volume>15</volume>
          (
          <issue>2</issue>
          ),
          <fpage>111</fpage>
          -
          <lpage>126</lpage>
          (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Sutcliffe</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>The TPTP Problem Library and Associated Infrastructure</article-title>
          .
          <source>Journal of Automated Reasoning</source>
          <volume>59</volume>
          (
          <issue>4</issue>
          ),
          <fpage>483</fpage>
          -
          <lpage>502</lpage>
          (
          <year>2017</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>