<!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>L. Repp); mario.frank@uni-potsdam.de (M. Frank)</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>nanoCoP-Ω: A Non-Clausal Connection Prover with Arithmetic</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Leo Repp</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Mario Frank</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>TUD Dresden University of Technology</institution>
          ,
          <addr-line>01062 Dresden, Saxony</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Potsdam, Institute of Computer Science</institution>
          ,
          <addr-line>An der Bahn 2, 14476 Potsdam, Brandenburg</addr-line>
          ,
          <country country="DE">Germany</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2023</year>
      </pub-date>
      <volume>000</volume>
      <fpage>0</fpage>
      <lpage>0003</lpage>
      <abstract>
        <p>In this work, we present nanoCoP-Ω, an extension of the non-clausal connection prover nanoCoP capable of handling arithmetic and arithmetic equations, following the novel approach taken by leanCoP-Ω. We describe these methods and their implementation into nanoCoP. The performance of nanoCoP-Ω is then compared to that of leanCoP-Ω, using suitable TFA problems from the TPTP library.</p>
      </abstract>
      <kwd-group>
        <kwd>eol&gt;non-clausal connection calculus</kwd>
        <kwd>arithmetic</kwd>
        <kwd>equality</kwd>
        <kwd>presburger</kwd>
        <kwd>omega test</kwd>
        <kwd>nanoCoP</kwd>
        <kwd>leanCoP</kwd>
        <kwd>automated theorem proving</kwd>
        <kwd>equations</kwd>
        <kwd>unification</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>
        State of the art automated theorem provers (ATPs) like Vampire [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], CVC 4[
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], iProver[
        <xref ref-type="bibr" rid="ref3">3</xref>
        ] and
Princess [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] are capable of proving first order logic (FOL) problems including equalities and
arithmetic. While the former is usually done by applying methods like paramodulation [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] or
decision procedures like the congruence closure algorithm [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ], the latter is usually handled by
delegating arithmetic expressions to SMT solvers, like Z3 [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        However, connection based ATP systems are usually not capable of solving FOL problems
that include arithmetic equations, i.e., (in-)equalities containing typed arithmetic expressions.
One of the few ATP systems that does support this type of problem is leanCoP-Ω [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], which
was presented at the CASC J5 competition [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and performed very well. But leanCoP-Ω has
one significant drawback: Every formula is transformed into disjunctive or definitional normal
form, which destroys the original formula’s structure and reduces the possibility of reusing the
generated proofs in interactive theorem provers like Coq [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ] or Isabelle [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>
        The non-clausal connection prover nanoCoP [
        <xref ref-type="bibr" rid="ref12 ref13 ref14">12, 13, 14</xref>
        ] is capable of proving the problems in
the original formula’s structure, but is not able to handle equations involving (integer) arithmetic.
In this document, we present an extension of nanoCoP that fills this gap. This extension was
created in course of a Bachelor’s thesis [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. The new ATP nanoCoP-Ω uses the basic concepts of
leanCoP-Ω, with some necessary modifications to the original concept. Note that the ideas are all
taken from leanCoP-Ω, we merely present and implement these methods and demonstrate our
AReCCa 2023
      </p>
      <p>
        CEUR-WS.org
experiences in working with them. We expected the resulting system to provide more
humanreadable and reusable proofs than leanCoP-Ω due to its different matrix representation. Also,
the proofs given by leanCoP-Ω do not include information about results from the arithmetic
tools, which, in contrast, nanoCoP-Ω’s proofs do. Additionally, we expected nanoCoP-Ω to have
a better runtime performance and to hopefully solve more problems than leanCoP-Ω. But, since
already the original nanoCoP proves slightly fewer problems than leanCoP [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], the probability
of proving more problems with nanoCoP-Ω was quite low. While the runtime performance
indeed has shown to be better than that of leanCoP-Ω, leanCoP-Ω solved slightly more problems.
Importantly, the presented methods still need to be formalized and verified. We discuss the
underlying arithmetic tool: the Omega Library, its hook in Prolog and the implementation and
performance of nanoCoP-Ω.
      </p>
      <p>
        In the following, we will discuss relevant preliminaries, like leanCoP, arithmetic, leanCoP-Ω,
the Omega Library and nanoCoP. Then, we present the way we implemented the adaptation of
nanoCoP to handle arithmetic equations, followed by an in-depth evaluation comparing the
performance of both leanCoP-Ω and nanoCoP-Ω on TFA problems from the TPTP [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. This
is followed by ideas for future work, including possible optimisations. Finally, we discuss the
potential overall impact of nanoCoP-Ω on connection based theorem proving.
2. Preliminaries
2.1. leanCoP and nanoCoP
leanCoP is an automated lean clausal connection prover for first order logic with regular
equalities. It was first presented in [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ], further extended to leanCoP 2.0 [
        <xref ref-type="bibr" rid="ref19 ref20">19, 20</xref>
        ] and, written
in Prolog, is very small and elegant and thus easily maintainable. It is based on the clausal
connection calculus, meaning it proves a formula by transforming it into a matrix, i.e. a set of
clauses in disjunctive normal form. The proof is done by ensuring that each path in the matrix
contains a so-called connection. It works with matrices of formulas in a mix of disjunctive and
definitional normal form, meaning that the structure of the original formula is usually lost.
      </p>
      <p>
        This information loss is resolved by nanoCoP, a natural non-clausal connection prover also
written in Prolog. The main difference to leanCoP lies in the underlying calculus, i.e. in the
matrix representation, a new decomposition rule and a generalised extension rule. The matrices
in nanoCoP directly correspond to the structure of the original formula and include sub-matrices.
This increases the complexity of representation but has significant advantages. Obviously the
understandability for humans can be increased. And even more importantly, the proof search is
able to exploit this structure to eliminate large parts of the search tree efficiently. Finally, the
proof term is more easily reusable for interactive theorem provers, e.g. via Sledgehammer [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ].
Testing these hypotheses are the reasons we chose to transfer the arithmetic and arithmetic
equation methods to nanoCoP.
      </p>
    </sec>
    <sec id="sec-2">
      <title>2.2. From leanCoP to leanCoP-Ω</title>
      <p>
        In the following, we will always assume arithmetic bound by Presburger arithmetic [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ], but
extended by subtraction and multiplication with constants. This means function symbols
within arithmetic terms cannot be evaluated. Whenever talking about equations, inequations or
constraints, we mean pairs of arithmetic terms connected by one of the operators “=”, “̸=”, “≤”,
“≥”, “&gt;” or “&lt;”.
      </p>
      <p>
        The Omega Library, developed in course of the Omega Project [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] is one tool that can handle
Presburger arithmetic. It uses the Omega Test [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], an extension of the Fourier-Motzkin variable
elimination, which can find solutions for an arbitrary set of linear equations and inequations.
But the Omega Library is additionally able to reason over formulas containing disjunctions,
conjunctions, integer constraints, first-order quantification, subtraction, and multiplication with
constants. Notably, it cannot reason over predicates, functions or division. According to the
authors this maintains completeness and decidability.
      </p>
      <p>
        This system was then used by Otten, Troelenberg and Raths to establish leanCoP-Ω. This
new prover can handle arithmetic and (in-)equations that lie within the abilities of the Omega
Library [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. As the original connection calculus cannot handle arithmetic and (in-)equations,
we must discuss how this extension was possible.
      </p>
      <p>
        Originally, leanCoP-Ω accessed the Omega Library via a console call to the Omega Calculator
command line tool and grep to evaluate the output. But the Omega Calculator was buggy,
crashing with segmentation faults for some problems at unpredictable times, seemingly in the
parser component. Those errors led to a failure return value which was interpreted by leanCoP
as negative result. Also, communication via shell is quite slow compared to foreign function
interfaces. For those reasons, two bachelor’s students at the University of Potsdam were tasked
with updating the hook. First, the library itself was updated [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ]. This included reducing the
codebase of the Omega Project to the part which is really necessary, i.e., the Omega Library
and the Omega Calculator. Then, the hook between leanCoP and Omega was rewritten [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]
by implementing foreign function interface functionality both in C++ on the Omega side and
Prolog on the leanCoP side. Münch implemented the conversion of the constraint-formula
to Omega-syntax in Prolog. New C++ methods then access the required parts of the Omega
Library, and the hook is transformed into a shared object accessible to Prolog via its Foreign
Language Interface. The new hook is reliable and has a speed-up linear in the number of Omega
Library calls compared to the Omega Calculator.
      </p>
      <sec id="sec-2-1">
        <title>2.3. Extending the Connection Calculus</title>
        <p>The handling of arithmetic and arithmetic equations is done by leanCoP-Ω in a particular way:
When transforming the input formula into a matrix, arithmetic expressions like f (3) = f (x)1,
27+x &lt; 6* y0 or y ̸= 40 are treated as atomic terms that cannot be simplified further. The result
is that each of these expressions (here also called “e-literals” or “constraints”) is a literal within
the generated matrix. Note that we refer to both e-literals within a matrix and (in-)equations
within the original formula as constraints whenever we want to highlight that they constrain
the possible variable evaluations. We can then prove each of these e-literals with rules by using
the regular extension rule with a modified unification, or new e-literal specific rules. We will
discuss both approaches in the following.</p>
        <p>We discuss unification first. If we ever wish to unify two e-literals, e.g. when using the
extension or reduction rule to prove an e-literal, or when unifying regular literals that contain
arithmetic, the unification must be extended to evaluate those expressions. This is done by
comparing the syntax trees of the literals recursively while evaluating as many constant
arithmetic sub-terms, such as 2 * 3 + 5, as possible. Function, predicate and equality symbols must
match exactly. The final, non-reducible to-be-unified pairs are stored as equations in normal
form (side0 − side1 = 0). This equation is simplified again if possible and, finally, tested for
validity. A single unification procedure may produce multiple of these equations if they include
functions, predicates or equations with multiple parameters. For example, take the following
matrix:</p>
        <p>[|s(2 * a + b, (r + q) * q)0| |s(x + y, (2 + 1) * z)1|]
(Sub-)matrices are denoted by square brackets and clauses by vertical bars. This matrix requires
three equations for the unification to succeed, namely
2 * a + b − x − y = 0
r + q − 3 = 0
q − z = 0
(1)</p>
        <p>This is because we assume Presburger arithmetic, which disallows non-linear arithmetic.
With these equations, we can allow for unification in the rare case that the two sides of the
would-be non-linear multiplication are equal for the two literals. The symbol s can be a function,
a predicate, or an (in-)equality symbol. The variables are assumed to be existentially quantified.</p>
        <p>Equations generated by the unification need to hold for the entire proof search and are tested
repeatedly whenever variables are assigned new values. The exact configuration of these tests
is discussed in the following paragraphs.</p>
        <p>Certain ground e-literals such as (1 &lt; 2)0 are inherently valid (called self-fulfilling in the
following) and can easily be verified without further work while respecting their polarity. This
is the first rule that can only be applied to e-literals. In the non-ground case the e-literal is a
constraint on the variable evaluation. Such a constraint is valid iff it is valid under all valid
interpretations of the integer variables (respecting the relevant quantifiers) under the current
substitution. This yields the second method for proving an e-literal: By constructing a formula
including constraints based on the current path, and testing it for validity. This type of formula
is called a “constraint-formula” in the following. It must additionally contain the constraints
generated by the modified unification procedure, as well as the quantifiers of the occurring
variables.</p>
        <p>We will elaborate with an example (see also Figure 1): Say we wish to prove the formula
2 + 3 = x ∧ 1 + 4 = y ⇒ x = y. Then the corresponding matrix will include each equation
from the formula in the form of an e-literal, all being in α-relation to each other, i.e., they can be
connected by the extension rules. The e-literal for x = y is marked by polarity 0 and the others
by polarity 1. A proof for one of the e-literals will then require all the e-literals to be on the
same path. This can happen by applying the deep-omega extension rule explained in the next
paragraph. We can then construct the constraint-formula by connecting all the e-literals on the
path into one formula: ¬(2 + 3 = x) ∨ ¬(1 + 4 = y) ∨ (x = y). It may appear counterintuitive
to use disjunctions here, since we are collecting e-literals from the path. But the reader can
easily ascertain that this is the correct representation of the original formula, which is due to
the polarity 0 given to the original formula combined with De Morgan’s laws. Additionally,
we need to add previous constraint-formulas to this constraint-formula with a conjunction.
Once we have added the correct quantifiers for all occurring variables, we can pass the formula
to an arithmetic validity test. If the formula is valid, it must be stored, to be added to further
constraint-formula validity tests in the future. E-literals on the path may have been added there
by regular extension rules, but still need to be evaluated by the constraint test. Note that we
assumed that the constraint-formula is passed to an external system. This may seem like we
are delegating the problem, but the prover still provides the search strategy.</p>
        <p>The final rule for proving an e-literal is the deep-omega extension rule. This is an alternative
extension rule that is only applicable to e-literals. Its usage is necessary whenever a (sub-)proof is
only possible by constructing a constraint-formula that contains multiple e-literals which would
not usually be connected by the extension rule. The example matrix |z &lt; x + 10 x &lt; z0 ]
illustrates this: A successful proof is only possible by having both constraints be contained in
the same constraint-formula. But a regular connection will never be drawn since arithmetic
reasoning is required for the proof. While attempting to prove the first e-literal, the deep-omega
extension rule allows the proof procedure to draw a deep-omega extension to any other e-literal.
In contrast to the regular extension rule, the connected-to literal must now still be proven,
which in this example is possible by the constraint method.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3. Implementation</title>
      <p>In the following, we will discuss the implementation of nanoCoP-Ω. Its creation was the focus
of this work, took the most effort, and yielded the knowledge discussed in Subsection 2.3.</p>
      <p>
        nanoCoP-Ω can read first-order logic formulas in typed TPTP syntax (v 8.0.0), i.e., TFA
theorems from the Specialist Problem Class (SPC) TF0. It supports the types integer, boolean,
individual, function, predicate and newly defined types. For an exact specification of these
types check the TPTP syntax [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ]. For integer-typed expressions, the arithmetic methods and
rules (described above) are used. The other types are only matched during unification. Reading
original leanCoP-syntax is not fully supported by nanoCoP-Ω, thus we encourage using only
the TPTP syntax.
      </p>
      <p>Types were not available in nanoCoP-2.0. Additionally, nanoCoP-Ω can discern certain
formula types: namely the conjecture from the axioms. Once an internal representation has
been parsed, the equality axioms reflexivity, symmetry, transitivity, and the substitution rules
for all occurring predicates and functions are added to the internal representation. Then a
non-clausal matrix including the e-literals is generated. The implementation of the new proof
methods is discussed in the following subsections. We added a feature that allows the tracking
of their usage. The final already human readable proof output of nanoCoP was adjusted to show
new explanations whenever arithmetic and constraint specific methods were used, as shown in
the following listing.
[ . . . ]
1 . 1 . 1 Assume ( 2 9 ^ [ ] ) ^ t ( $ i n t ) = ( 3 0 ^ [ ] ) ^ t ( $ i n t ) i s f a l s e .</p>
      <p>T h i s c o n s t r a i n t − f o r m u l a ( i n c o m b i n a t i o n w i t h a l l o t h e r
c o n s t r a i n t s from t h e p a t h ) i s v a l i d a s p r o v e n w i t h t h e
Omega T e s t .</p>
      <p>In the compact proof, the arithmetic related output contains a constraint-formula proven by
the Omega Library as shown in the following listing.
[ a r i t h O m e g a , ( − ( ( 1 ^ t ( $ i n t ) +4^ t ( $ i n t ) ) ^ t ( $ i ) = ( 3 0 ^ [ ] ) ^ t ( $ i n t ) ) ; −
( ( 2 ^ t ( $ i n t ) +3^ t ( $ i n t ) ) ^ t ( $ i ) = ( 2 9 ^ [ ] ) ^ t ( $ i n t ) ) ; ( 2 9 ^ [ ] ) ^ t ( $ i n t
) = ( 3 0 ^ [ ] ) ^ t ( $ i n t ) ) ]</p>
      <sec id="sec-3-1">
        <title>3.1. Implementing the New Methods</title>
        <p>The new methods introduced in leanCoP-Ω were successfully imported to
nanoCoP-Ω. The modified unification procedure is realised by the predicate
unify_with_arith(LitA,LitB,Eqs,Settings). It is used when applying the
reduction and extension rules. It will do regular Prolog unification, not requiring any equations,
unless encountering typed expressions. If the latter occurs, if one of the literals is simply a
variable, it will attempt to evaluate the other side as far as possible and then do a regular
unification. If both sides are complex arithmetic expressions, it will return all necessary
equations, again evaluating simple arithmetic. It cannot return non-linear equations and will,
when encountering non-linear arithmetic, instead recursively call the unification procedure to
attempt to match the two sides of the non-linear term separately. The same occurs when the
literals have predicate symbols as their topmost symbol. The unification predicate can return
function symbols within its equations. We added a test to prevent omega calls for these cases,
which is not done in leanCoP-Ω, causing the Omega Library to crash for these cases. Each call
to the unification predicate is followed by a call of the omega predicate (see below).</p>
        <p>
          The classic proof methods of the connection-based method as present in nanoCoP 2.0 [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ] were
adapted to use the modified unification procedure, followed by an omega call. The proof search
was extended to store generated constraint-formulas. The predicate leanari(Lit) implements
the test for self-fulfilling literals. If this fails, we attempt a constraint-based proof. This includes
collecting the e-literals from the path with the path_eq(Path,Lit,EqsPath) predicate and
calling the omega(cFormula) predicate on the returned constraint-formula conjoined with
all previously constructed constraint-formulas. The omega predicate will convert the input into
the Omega Library’s syntax. It is the Omega Hook rewritten by Münch in [
          <xref ref-type="bibr" rid="ref26">26</xref>
          ]. The deep-omega
extension rule is the final rule attempted and is very close in its implementation to the regular
extension rule, except that the connected to e-literal needs to still be proven. It is locked behind
the setting deep_omega, formerly called eq(2) in leanCoP-Ω.
        </p>
        <p>
          An important difference between nanoCoP 2.0 and nanoCoP-Ω lies in their respective start
rules, the method by which the start clause is selected. In the classic connection-calculus
it is a valid optimization to restrict the choice of the start clause to one that contains only
positive literals. This is because, if no such clause exists, the matrix has a path containing only
negative literals, which thus cannot contain any connections. This optimization is not valid for
matrices containing e-literals, as e-literals can be proven with methods other than connections
irrespective of their polarity. To combat this issue, we have implemented a second start rule that
is called if finding a proof with the first fails: It interprets all e-literals as positive for the purpose
of selecting a start clause, thus allowing the prover to select another start clause. This means
that the prover will still prioritize selecting clauses that are purely positive, but can attempt a
different angle if this fails. nanoCoP-Ω supports the optimizations present in nanoCoP 2.0 [
          <xref ref-type="bibr" rid="ref16">16</xref>
          ],
such as restricted backtracking [
          <xref ref-type="bibr" rid="ref20">20</xref>
          ] and random reordered restarts. Like nanoCoP 2.0 it uses
iterative deepening to ensure completeness.
        </p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>3.2. Restrictions of nanoCoP-Ω</title>
      <p>For clarity, let us now discuss the things that nanoCoP-Ω cannot do. Simply put, this includes
everything that is not formalizable in Presburger arithmetic. Note that this restriction only
applies to constraints after they have been simplified by Prolog: nanoCoP-Ω will succeed in
proving ∀A, B ∈ Int : p(A * B * B) ⇒ p(B * B * A), because the unify_with_arith
predicate evaluates the parameter of p: A * B * B − B * B * A = 0 becomes 0 = 0, a linear
equation. On the other hand, nanoCoP-Ω cannot prove the formula ∀X, Y, Z ∈ Int : Y =
Z ∧ p(X, 3 + s(Y )) ⇒ p(X, 3 + s(Z)), with p being an uninterpreted predicate and s being
an uninterpreted function symbol. This is because it has no way of collecting the information
Y = Z before attempting to validate the equation Y − Z = 0 in order to unify the two
literals containing p. The deep-omega extension rule is not applicable here, because the literals
containing p are not e-literals. Perhaps merely a modification of the presented methods would
suffice to find a proof here, or possibly a new method based on an “α-constraint-closure” needs
to be developed.</p>
      <p>
        nanoCoP-Ω may prove non-theorems when invoked on typed formulas containing real or
rational numbers. This behaviour was deemed non-detrimental, as nanoCoP-Ω was solely
created for formulas with integer arithmetic. For soundness testing, nanoCoP-Ω was tested on
all applicable non-theorems from the integer TFA segment of the TPTP v8.0.0 and none of them
was falsely proven.
4. Evaluation
nanoCoP-Ω was evaluated with a comparison to leanCoP-Ω, specifically the version of Behrens
and Münch. Due to the similarity of the systems, this is also a direct comparison between
leanCoP and nanoCoP. Evaluation was done on 1092 non-polymorphic typed first-order logic
theorems (TFA) from the TPTP benchmark v8.0.0 [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ]. The experimental setup was transferred
from Münch’s work: each prover was given a maximum time of 60 seconds. To provide a more
robust execution time, easy problems (&lt; 1s) were run 100 times and harder problems 9 times.
A first optimized strategy optimization was used, but some further strategies can be added
and improvements can still be made. The strategy sequence that was used can be found in the
nanocop_omega.sh shell script on the project page.
      </p>
      <p>According to the results shown in Table 1, nanoCoP-Ω marks 76 problems as non-theorems. In
43 of these cases the theorems used division or function symbols within arithmetic expressions
and had evaded pruning. For these problems, leanCoP-Ω instead times out other than in four
cases, in which it manages to find a false proof using literals with fractions in them. Five
problems were solved by leanCoP-Ω but not nanoCoP-Ω because the deep-omega extension was
not activated during much of nanoCoP-Ω’s proof search. The rest of the problems marked as
non-theorems by nanoCoP-Ω were most likely not provable without the deep-omega extension
rule, although leanCoP-Ω not proving them within the time limit indicates that nanoCoP-Ω
may also not have proved them. leanCoP-Ω crashes for at least 24 theorems, most likely due to
calling the Omega Library on a constraint-formula including function symbols.</p>
      <p>nanoCoP-Ω has a success rate of approximately 27.8%, while leanCoP-Ω has one of about
32.0%. Thus nanoCoP-Ω’s is lower by approximately 4.2%, indeed being a downgrade in the
number of solvable problems. But nanoCoP-Ω possibly would have been able to solve more
problems if the deep-omega extension rule had been allocated more of its execution time.</p>
      <p>Thus, we compare the cross-distribution of the outcomes of both systems in more detail,
as shown in Table 1. The most interesting aspect is that leanCoP-Ω solves 90 problems that
nanoCoP-Ω does not solve. nanoCoP-Ω, on the other hand, solves 45 problems that leanCoP-Ω
does not solve. Obviously, both connection calculus implementations are differently well suited
for proving different formulas.</p>
      <p>The problems leanCoP-Ω solves over nanoCoP-Ω stem to 90% from the software verification
domain. These problems are particularly large and were generated automatically. The other
10% stem from the interactive theorem prover, arithmetic, and number theory domains. The
problems nanoCoP-Ω solves over leanCoP-Ω are to 60% from the software verification domain,
with further problems from arithmetic, data structures, number theory and set theory.</p>
      <p>In order to assess whether there is some specific hardness of domains for leanCoP-Ω or
nanoCoP-Ω we compared the success rate domain-wise, as displayed in Table 2. Here, only
domains with sufficiently many (40) problems within the benchmark are shown.</p>
      <p>Both systems have a weak performance in the interactive theorem proving and hardware
verification domains and identical performance in the arithmetic domain. In the most other
domains, leanCoP-Ω performs better than nanoCoP-Ω. Merely in the data structures domain
nanoCoP-Ω has a better performance. Nevertheless, both provers were successful for their most
important use-case: proving arithmetic and number theory problems.</p>
      <p>Since nanoCoP-Ω does not outperform leanCoP-Ω concerning the count of solved problems,
we analysed the runtime performance of the two systems.</p>
      <p>The distribution of real-time (wall-time) speed-up ratios is displayed in Figure 2. For each
ratio r, the number of problems solved r times faster is drawn on the y-axis1. Here we see a
real-time average relative speed-up of nanoCoP-Ω over leanCoP-Ω of 2.3, i.e. nanoCoP-Ω is
approximately 2 times faster than leanCoP-Ω. We chose to analyse the real-time speed-up as
the average user-time speed-up ratio lies at 12.63, a value vastly different from the real-time
1The figure does not include the problem ARI081 = 1.p with a speed-up of 8, as well as COM 003_1.p with a
speed-up of 31, which both exceed the scale.
speed-up ratio and thus not deemed indicative. Also, nanoCoP-Ω is slower than leanCoP-Ω
for only 20 of the 259 shared proofs. These are mainly theorems from the domains software
verification and interactive theorem proving, as well as single theorems from the domains
puzzles and set theory. Here, nanoCoP-Ω takes on average approximately 4.9 times as long to
find a proof.</p>
      <p>By doing a domain-wise speed-up comparison, as displayed in Table 3, we learn that
nanoCoPΩ is faster for theorems from the arithmetic and number theory domains and slower for those
from software verification.</p>
    </sec>
    <sec id="sec-5">
      <title>5. Future Work</title>
      <p>
        In principle, the concept of leanCoP-Ω and nanoCoP-Ω should be transferable to nanoCoP-M
and nanoCoP-i [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] by adopting the prefix_unify predicate. Additionally, the Omega Test
is not the only decision procedure for Presburger arithmetic. For example, ARITH [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ],
SUPINF [
        <xref ref-type="bibr" rid="ref29 ref30">29, 30</xref>
        ] and Cooper’s [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ] method are all suitable for Presburger arithmetic but differ in
capabilities and performance. Thus, implementing them for nanoCoP-Ω and introducing a clever
scheduling or heuristic could make more problems solvable. In fact, the ARITH procedure has
already been implemented in Prolog by Troelenberg [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ], but was never successfully integrated
in leanCoP or nanoCoP. An extension of nanoCoP-Ω to real numbers with the algorithms
provided in [
        <xref ref-type="bibr" rid="ref33">33</xref>
        ], [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ] and [
        <xref ref-type="bibr" rid="ref34">34</xref>
        ] would be possible and desirable, too.
      </p>
      <p>
        During evaluation we have learnt that the performance of leanCoP-Ω and nanoCoP-Ω differs
depending on the domain and formula structure. For instance, both provers can solve problems
which the other one cannot, which is consistent with the results for leanCoP and nanoCoP
presented in [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. Thus, a combination of leanCoP-Ω and nanoCoP-Ω has the potential to yield
significantly better results. This could be done either by starting proof attempts in parallel by
both systems, or first by nanoCoP-Ω and, on failure, by leanCoP-Ω.
      </p>
      <p>The deep-omega extension rule was not active during much of nanoCoP-Ω’s proof search.
In future extensions, this should be one of the strategies used during the bulk of
nanoCoPΩ’s execution time. Additionally, backtracking could be restricted upon a successful call to
unify_with_arith, for example as an optional strategy similar to restricted backtracking.
This would reduce the count of calls to omega, which undoubtedly would improve the runtime
performance. Another untested strategy lies in ommiting to add the equality axioms to the
matrix. The transitivity axiom can easily be applied and thus potentially slow down the
proof search. Moreover, the predicate unify_with_arith returns equations of the shape
a * X + b * Y + · · · + c * Z + d = 0. This normal form is enforced again before passing
constraint-formulas to the Omega Library. An elimination of this redundant transformation
could improve the runtime slightly. A potentially more powerful optimization again lies in
the number of calls to the Omega Library: It appears that there are many redundant calls of
the validity test with the exact same constraint-formulas. Sadly, extending the Omega Library
to recognise this is hardly possible due to the complex project structure. But an additional
module that caches previous constraint checks would give the possibility to detect and eliminate
redundant calls. Even more, we neither fully optimised the strategy sequences for nanoCoP-Ω,
nor test the optimization strategies proposed above, which are both subject to future work.
Then, nanoCoP-Ω could be reasonably compared to other theorem provers for the TFA division.</p>
    </sec>
    <sec id="sec-6">
      <title>6. Conclusion</title>
      <p>We have successfully integrated arithmetic and arithmetic (in-)equation handling methods
into nanoCoP-Ω. It has proven to be slightly worse at proving large theorems compared to
leanCoP-Ω, but it is considerably faster for small problems, and overall equally well-suited
for proving arithmetic and number theory theorems. Moreover, both systems prove problems
that the other does not. The resulting system should provide readable proofs for use-cases in
which these are required. We have presented ideas for combining nanoCoP-Ω and leanCoP-Ω,
for optimizing and for extending nanoCoP-Ω. The source code is available on the nanoCoP-Ω
project page2.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>L.</given-names>
            <surname>Kovács</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Voronkov</surname>
          </string-name>
          ,
          <string-name>
            <surname>First-Order Theorem</surname>
          </string-name>
          Proving and Vampire, in: N.
          <string-name>
            <surname>Sharygina</surname>
          </string-name>
          , H. Veith (Eds.), Computer Aided Verification, Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2013</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>35</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -39799-
          <issue>8</issue>
          _
          <fpage>1</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>C.</given-names>
            <surname>Barrett</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Conway</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Deters</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Hadarean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Jovanovic</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>King</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Reynolds</surname>
          </string-name>
          , C. Tinelli, CVC4, in: G. Gopalakrishnan, S. Qadeer (Eds.),
          <source>Proceedings of the 23rd International Conference on Computer Aided Verification, number 6806 in Lecture Notes in Computer Science</source>
          , Springer-Verlag,
          <year>2011</year>
          , pp.
          <fpage>171</fpage>
          -
          <lpage>177</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>A.</given-names>
            <surname>Duarte</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Korovin</surname>
          </string-name>
          ,
          <article-title>Implementing superposition in iprover (system description)</article-title>
          , in: N.
          <string-name>
            <surname>Peltier</surname>
            ,
            <given-names>V.</given-names>
          </string-name>
          <string-name>
            <surname>Sofronie-Stokkermans</surname>
          </string-name>
          (Eds.),
          <source>Automated Reasoning - 10th International Joint Conference, IJCAR 2020</source>
          , Paris, France,
          <source>July 1-4</source>
          ,
          <year>2020</year>
          , Proceedings,
          <string-name>
            <surname>Part</surname>
            <given-names>II</given-names>
          </string-name>
          , volume
          <volume>12167</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2020</year>
          , pp.
          <fpage>388</fpage>
          -
          <lpage>397</lpage>
          . doi:
          <volume>10</volume>
          .1007/ 978-3-
          <fpage>030</fpage>
          -51054-1\_
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>P.</given-names>
            <surname>Rümmer</surname>
          </string-name>
          ,
          <article-title>A constraint sequent calculus for first-order logic with linear integer arithmetic</article-title>
          ,
          <source>in: Proceedings, 15th International Conference on Logic for Programming</source>
          ,
          <source>Artificial Intelligence and Reasoning</source>
          , volume
          <volume>5330</volume>
          <source>of LNCS</source>
          , Springer,
          <year>2008</year>
          , pp.
          <fpage>274</fpage>
          -
          <lpage>289</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>R.</given-names>
            <surname>Nieuwenhuis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Rubio</surname>
          </string-name>
          ,
          <article-title>Paramodulation-Based Theorem Proving</article-title>
          , in: A.
          <string-name>
            <surname>Robinson</surname>
            ,
            <given-names>A</given-names>
          </string-name>
          . Voronkov (Eds.),
          <source>Handbook of Automated Reasoning</source>
          , North-Holland, Amsterdam,
          <year>2001</year>
          , pp.
          <fpage>371</fpage>
          -
          <lpage>443</lpage>
          . doi:
          <volume>10</volume>
          .1016/B978-044450813-3/
          <fpage>50009</fpage>
          -6.
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Nieuwenhuis</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Oliveras</surname>
          </string-name>
          ,
          <string-name>
            <surname>Proof-Producing Congruence</surname>
          </string-name>
          Closure, in: J.
          <string-name>
            <surname>Giesl</surname>
          </string-name>
          (Ed.),
          <source>Term Rewriting and Applications</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2005</year>
          , pp.
          <fpage>453</fpage>
          -
          <lpage>468</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -32033-3_
          <fpage>33</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7] L. de Moura, N. Bjørner,
          <article-title>Z3: An Efficient SMT Solver</article-title>
          , in: C. R. Ramakrishnan, J. Rehof (Eds.),
          <source>Tools and Algorithms for the Construction and Analysis of Systems</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2008</year>
          , pp.
          <fpage>337</fpage>
          -
          <lpage>340</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -78800-3_
          <fpage>24</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>J.</given-names>
            <surname>Otten</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Trölenberg</surname>
          </string-name>
          , T. Raths, leanCoP-Ω,
          <year>2010</year>
          . URL: https://www.tptp.org/CASC/J5/ leanCoP-Omega---0.1.pdf.
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>G.</given-names>
            <surname>Sutcliffe</surname>
          </string-name>
          ,
          <source>The 5th IJCAR Automated Theorem Proving System Competition - CASC-J5</source>
          ,
          <source>AI Commun</source>
          .
          <volume>24</volume>
          (
          <year>2011</year>
          )
          <fpage>75</fpage>
          -
          <lpage>89</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>Y.</given-names>
            <surname>Bertot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Castéran</surname>
          </string-name>
          , Interactive Theorem Proving and
          <string-name>
            <given-names>Program</given-names>
            <surname>Development</surname>
          </string-name>
          .
          <source>Coq'Art: The Calculus of Inductive Constructions, Texts in Theoretical Computer Science</source>
          , Springer Verlag,
          <year>2004</year>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>662</fpage>
          -07964-5.
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wenzel</surname>
          </string-name>
          , The Isabelle/Isar Reference Manual,
          <year>2009</year>
          . P.
          <volume>162</volume>
          -
          <fpage>164</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>J.</given-names>
            <surname>Otten</surname>
          </string-name>
          ,
          <article-title>A Non-clausal Connection Calculus</article-title>
          , in: K. Brünnler, G. Metcalfe (Eds.),
          <source>Automated Reasoning with Analytic Tableaux and Related Methods</source>
          , Springer Berlin Heidelberg, Berlin, Heidelberg,
          <year>2011</year>
          , pp.
          <fpage>226</fpage>
          -
          <lpage>241</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>642</fpage>
          -22119-4_
          <fpage>18</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>J.</given-names>
            <surname>Otten</surname>
          </string-name>
          , nanoCoP:
          <string-name>
            <given-names>A</given-names>
            <surname>Non-clausal Connection</surname>
          </string-name>
          <string-name>
            <given-names>Prover</given-names>
            , in: N.
            <surname>Olivetti</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . Tiwari (Eds.),
          <source>Automated Reasoning - 8th International Joint Conference, IJCAR</source>
          <year>2016</year>
          , Coimbra, Portugal, June 27 - July 2,
          <year>2016</year>
          , Proceedings, volume
          <volume>9706</volume>
          of Lecture Notes in Computer Science, Springer,
          <year>2016</year>
          , pp.
          <fpage>302</fpage>
          -
          <lpage>312</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>319</fpage>
          -40229-1_
          <fpage>21</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>J.</given-names>
            <surname>Otten</surname>
          </string-name>
          ,
          <article-title>nanoCoP: Natural Non-clausal Theorem Proving</article-title>
          , in: C.
          <string-name>
            <surname>Sierra</surname>
          </string-name>
          (Ed.),
          <source>Proceedings of the 26th International Joint Conference on Artificial Intelligence, IJCAI'17</source>
          , AAAI Press,
          <year>2017</year>
          , pp.
          <fpage>4924</fpage>
          -
          <lpage>4928</lpage>
          . doi:
          <volume>10</volume>
          .24963/ijcai.
          <year>2017</year>
          /695.
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>L.</given-names>
            <surname>Repp</surname>
          </string-name>
          ,
          <article-title>Extending the automatic theorem prover nanoCoP with arithmetic procedures</article-title>
          ,
          <source>BSc Thesis</source>
          , Institute for Computer Science, University of Potsdam, Potsdam, Germany,
          <year>2023</year>
          . doi:
          <volume>10</volume>
          .25932/publishup-57619.
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>J.</given-names>
            <surname>Otten</surname>
          </string-name>
          ,
          <source>The nanoCoP 2</source>
          .
          <article-title>0 Connection Provers for Classical, Intuitionistic and Modal Logics</article-title>
          , in: A.
          <string-name>
            <surname>Das</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          Negri (Eds.),
          <source>Automated Reasoning with Analytic Tableaux and Related Methods - 30th International Conference, TABLEAUX</source>
          <year>2021</year>
          ,
          <article-title>Birmingham</article-title>
          , UK, September 6-
          <issue>9</issue>
          ,
          <year>2021</year>
          , Proceedings, volume
          <volume>12842</volume>
          of Lecture Notes in Computer Science, Springer-Verlag, Berlin, Heidelberg,
          <year>2021</year>
          , pp.
          <fpage>236</fpage>
          -
          <lpage>249</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -86059-2_
          <fpage>14</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <given-names>G.</given-names>
            <surname>Sutcliffe</surname>
          </string-name>
          ,
          <article-title>The TPTP Problem Library</article-title>
          and
          <string-name>
            <given-names>Associated</given-names>
            <surname>Infrastructure</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Autom</surname>
          </string-name>
          . Reason.
          <volume>59</volume>
          (
          <year>2017</year>
          )
          <fpage>483</fpage>
          -
          <lpage>502</lpage>
          . doi:
          <volume>10</volume>
          .1007/s10817-017-9407-7.
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>J.</given-names>
            <surname>Otten</surname>
          </string-name>
          , W. Bibel,
          <article-title>leanCoP: lean connection-based theorem proving</article-title>
          ,
          <source>Journal of Symbolic Computation</source>
          <volume>36</volume>
          (
          <year>2003</year>
          )
          <fpage>139</fpage>
          -
          <lpage>161</lpage>
          . doi:
          <volume>10</volume>
          .1016/S0747-
          <volume>7171</volume>
          (
          <issue>03</issue>
          )
          <fpage>00037</fpage>
          -
          <lpage>3</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          <source>[19] J. Otten, leanCoP 2.0 and ileanCoP 1</source>
          .
          <article-title>2: High performance lean theorem proving in classical and intuitionistic logic. (System descriptions)</article-title>
          ,
          <source>in: Automated reasoning. 4th international joint conference</source>
          ,
          <source>IJCAR</source>
          <year>2008</year>
          , Sydney, Australia,
          <source>August 12-15</source>
          ,
          <year>2008</year>
          Proceedings, Berlin: Springer,
          <year>2008</year>
          , pp.
          <fpage>283</fpage>
          -
          <lpage>291</lpage>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>540</fpage>
          -71070-7_
          <fpage>23</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <given-names>J.</given-names>
            <surname>Otten</surname>
          </string-name>
          , Restricting Backtracking in Connection Calculi,
          <source>AI</source>
          Communications
          <volume>23</volume>
          (
          <year>2010</year>
          )
          <fpage>159</fpage>
          -
          <lpage>182</lpage>
          . doi:
          <volume>10</volume>
          .3233/AIC-2010-0464.
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>L. C.</given-names>
            <surname>Paulson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. C.</given-names>
            <surname>Blanchette</surname>
          </string-name>
          ,
          <article-title>Three years of experience with sledgehammer, a practical link between automatic and interactive theorem provers</article-title>
          , in: G. Sutcliffe,
          <string-name>
            <given-names>S.</given-names>
            <surname>Schulz</surname>
          </string-name>
          , E. Ternovska (Eds.),
          <source>IWIL 2010. The 8th International Workshop on the Implementation of Logics</source>
          , volume
          <volume>2</volume>
          of EPiC Series in Computing, EasyChair,
          <year>2012</year>
          , pp.
          <fpage>1</fpage>
          -
          <lpage>11</lpage>
          . doi:
          <volume>10</volume>
          .29007/ 36dt.
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>M.</given-names>
            <surname>Presburger</surname>
          </string-name>
          ,
          <article-title>Über die Vollständigkeit eines gewissen Systems der Arithmetik ganzer Zahlen, in welchem die Addition als einzige Operation hervortritt</article-title>
          .,
          <source>in: Comptes-Rendus du ler Congress des Mathematiciens des Pays Slavs</source>
          ,
          <year>1929</year>
          , p.
          <fpage>92</fpage>
          -
          <lpage>101</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          [23]
          <string-name>
            <given-names>W.</given-names>
            <surname>Pugh</surname>
          </string-name>
          ,
          <article-title>the entire Omega Project Team, The Omega Project: Frameworks and Algorithms for the Analysis</article-title>
          and
          <source>Transformation of Scientific Programs</source>
          ,
          <year>2013</year>
          . URL: https://www.cs. umd.edu/projects/omega/.
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          [24]
          <string-name>
            <given-names>W.</given-names>
            <surname>Pugh</surname>
          </string-name>
          ,
          <article-title>The Omega Test: A Fast and Practical Integer Programming Algorithm for Dependence Analysis</article-title>
          ,
          <source>in: Proceedings of the 1991 ACM/IEEE Conference on Supercomputing, Supercomputing '91</source>
          ,
          <string-name>
            <surname>Association</surname>
          </string-name>
          for Computing Machinery, New York, NY, USA,
          <year>1991</year>
          , p.
          <fpage>4</fpage>
          -
          <lpage>13</lpage>
          . doi:
          <volume>10</volume>
          .1145/125826.125848.
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          [25]
          <string-name>
            <surname>A. B. Behrens</surname>
          </string-name>
          , Modernisierung von Legacy Beweissystemen,
          <source>BSc Thesis</source>
          , Institute for Computer Science, University of Potsdam, Potsdam, Germany,
          <year>2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          [26]
          <string-name>
            <given-names>K.</given-names>
            <surname>Münch</surname>
          </string-name>
          ,
          <article-title>Entwicklung einer performanten und verlässlichen Schnittstelle für leanCoP-Ω</article-title>
          ,
          <source>BSc Thesis</source>
          , Institute for Computer Science, University of Potsdam, Potsdam, Germany,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          [27]
          <string-name>
            <given-names>G.</given-names>
            <surname>Sutcliffe</surname>
          </string-name>
          , TPTP Syntax,
          <year>2023</year>
          . URL: https://tptp.org/TPTP/SyntaxBNF.html#tff_formula.
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          [28]
          <string-name>
            <given-names>T.</given-names>
            <surname>Chan</surname>
          </string-name>
          ,
          <article-title>An Algorithm for Checking PL/CV Arithmetic Inferences</article-title>
          ,
          <source>Technical Report</source>
          , Cornell University, USA,
          <year>1977</year>
          . URL: https://dl.acm.org/doi/book/10.5555/867428.
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          [29]
          <string-name>
            <given-names>R. E.</given-names>
            <surname>Shostak</surname>
          </string-name>
          ,
          <article-title>On the SUP-INF method for proving presburger formulas</article-title>
          ,
          <source>J. ACM</source>
          <volume>24</volume>
          (
          <year>1977</year>
          )
          <fpage>529</fpage>
          -
          <lpage>543</lpage>
          . doi:
          <volume>10</volume>
          .1145/322033.322034.
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          [30]
          <string-name>
            <given-names>R.</given-names>
            <surname>Shostak</surname>
          </string-name>
          ,
          <article-title>Deciding Linear Inequalities by Computing Loop Residues</article-title>
          ,
          <source>J. ACM</source>
          <volume>28</volume>
          (
          <year>1981</year>
          )
          <fpage>769</fpage>
          -
          <lpage>779</lpage>
          . doi:
          <volume>10</volume>
          .1145/322276.322288.
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          [31]
          <string-name>
            <given-names>D. C.</given-names>
            <surname>Cooper</surname>
          </string-name>
          , Theorem Proving in Arithmetic without Multiplication,
          <source>Machine intelligence 7</source>
          (
          <year>1972</year>
          )
          <fpage>300</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          [32]
          <string-name>
            <given-names>H.</given-names>
            <surname>Trölenberg</surname>
          </string-name>
          , Arithmetik im Automatischen Theorembeweisen,
          <source>Diploma Thesis</source>
          , Institute for Computer Science, University of Potsdam, Potsdam, Germany,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref33">
        <mixed-citation>
          [33]
          <string-name>
            <given-names>L.</given-names>
            <surname>Hodes</surname>
          </string-name>
          ,
          <article-title>Solving problems by formula manipulation in logic and linear inequalities</article-title>
          ,
          <source>in: Proceedings of the 2nd International Joint Conference on Artificial Intelligence</source>
          ,
          <year>1971</year>
          , pp.
          <fpage>553</fpage>
          -
          <lpage>559</lpage>
          . doi:
          <volume>10</volume>
          .1016/
          <fpage>0004</fpage>
          -
          <lpage>3702</lpage>
          (
          <issue>72</issue>
          )
          <fpage>90046</fpage>
          -
          <lpage>X</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref34">
        <mixed-citation>
          [34]
          <string-name>
            <given-names>B.</given-names>
            <surname>Boigelot</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Jodogne</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.</given-names>
            <surname>Wolper</surname>
          </string-name>
          ,
          <article-title>An effective decision procedure for linear arithmetic over the integers and reals</article-title>
          ,
          <source>ACM Transactions on Computational Logic (TOCL) 6</source>
          (
          <year>2005</year>
          )
          <fpage>614</fpage>
          -
          <lpage>633</lpage>
          . doi:
          <volume>10</volume>
          .1145/1071596.1071601.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>