<!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>TH1: The TPTP Typed Higher-Order Form with Rank-1 Polymorphism</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Cezary Kaliszyk</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Geo Sutcli e</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>University of Innsbruck, Austria</institution>
          ,
          <addr-line>Florian Rabe</addr-line>
          ,
          <institution>Jacobs University Bremen</institution>
          ,
          <country country="DE">Germany</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>University of Miami</institution>
          ,
          <country country="US">USA</country>
        </aff>
      </contrib-group>
      <fpage>41</fpage>
      <lpage>55</lpage>
      <abstract>
        <p>The TPTP world is a well established infrastructure that supports research, development, and deployment of Automated Theorem Proving (ATP) systems for classical logics. The TPTP language is one of the keys to the success of the TPTP world. Originally the TPTP world supported only rst-order clause normal form (CNF). Over the years support for full rst-order form (FOF), monomorphic typed rstorder form (TF0), rank-1 polymorphic typed rst-order form (TF1), and monomorphic typed higher-order form (TH0) have been added. The TF0, TF1, and TH0 languages also include constructs for arithmetic. This paper introduces the TH1 form, an extension of TH0 with TF1-style rank-1 polymorphism. TH1 is designed to be easy to process by existing reasoning tools that support ML-style polymorphism. The hope is that TH1 will be implemented in many popular ATP systems for typed higher-order logic.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>It opens the door to useful middleware, such as monomorphizers and other translation tools that encode
polymorphism in FOF or TH0. Many existing ATP and ITP systems for higher-order logic already implement some
kind of polymorphism. TH1 has been designed in interaction with those systems' developers, and can provide
an interoperability layer for their systems. The hope is that TH1 will be implemented in many popular ATP
systems for typed higher-order logic.</p>
      <p>Figure 1 shows the relationships between the various TPTP language forms, leading to TH1. TH1 combines
two existing orthogonal extensions to the basic FOF language: the polymorphic TF1 and the higher-order TH0.1
Therefore, this paper rst presents the preceding TF0, TF1, and TH0 forms, whose features are then inherited
in the TH1 form.</p>
      <p>The remainder of this paper is organized as follows: Section 2 introduces the generic TPTP language, with a
brief review of the well-known rst-order form. Sections 2.1 and 2.2 describe the monomorphic and polymorphic
typed rst-order forms, and Section 2.3 describes the monomorphic typed higher-order form. Sections 3 and 4 are
the heart of the paper, describing the syntax and semantics of the polymorphic higher-order form respectively.
Section 5 explains the LF-based type checking system for the typed languages. Section 6 concludes.</p>
      <p>CNF</p>
      <p>FOF
TF0
TF1</p>
      <p>TH0</p>
      <p>TH1
The TPTP language is a human-readable, easily machine-parsable, exible and extensible language, suitable for
writing both ATP problems and solutions. The top level building blocks of the TPTP language are annotated
formulae. An annotated formula has the form:</p>
      <p>language(name, role, formula, [source, [useful info]]).</p>
      <p>The languages supported are clause normal form (cnf), rst-order form (fof), typed rst-order form (tff), and
typed higher-order form (thf). The role, e.g., axiom, lemma, conjecture, de nes the use of the formula in an
ATP system. In the formula, terms and atoms follow Prolog conventions, i.e., functions and predicates start
with a lowercase letter or are 'single quoted', variables start with an uppercase letter, and all contain only
alphanumeric characters and underscore. The TPTP language also supports interpreted symbols, which either
start with a $, or are composed of non-alphanumeric characters, e.g., the truth constants $true and $false,
and integer/rational/real numbers such as 27, 43/92, -99.66. The basic logical connectives are !, ?, ~, |, &amp;, =&gt;,
&lt;=, &lt;=&gt;, and &lt;~&gt;, for 8, 9, :, _, ^, ), (, ,, and respectively. Equality and inequality are expressed as the
in x operators = and !=. An example annotated rst-order formula, supplied from a le, is:
fof(union,axiom,
( ! [X,A,B] :</p>
      <p>( member(X,union(A,B))
&lt;=&gt; ( member(X,A)</p>
      <p>| member(X,B) ) )
file('SET006+0.ax',union),
[description('Definition of union'), relevance(0.9)]).
1Note that while TH1 adopts features of TF1, TH0 is independent of TF0.
2.1</p>
      <p>The Monomorphic Typed First-order Form TF0
TF0 extends the basic FOF language with types and type declarations. Every function and predicate symbol is
declared before its use, with a type signature that speci es the types of the symbol's arguments and result.</p>
      <p>have the following forms:
the prede ned types $i for (individuals) and $o for o (booleans);
the prede ned arithmetic types $int (integers), $rat (rationals), and $real (reals);
user-de ned types (constants).</p>
      <p>User-de ned types are declared (before their use) to be of the kind $tType, in annotated formulae with a type
role { see Figure 2 for examples. All symbols share the same namespace; in particular, a type cannot have the
same name as a function or predicate symbol.</p>
      <p>TF0 type signatures &amp; have the following forms:
( 1 * * n) &gt; ~ for n &gt; 0, where i are the argument types, and ~ is the result type. Argument types
and the result type for a function cannot be $o, and the result type for a predicate must be $o. If n = 1
the parentheses are omitted.</p>
      <p>
        The type signatures of uninterpreted symbols are declared like types, in annotated formulae with a type role {
see Figure 2 for examples. The type of = is ad hoc polymorphic over all types except $o, with both arguments
having the same type and the result type being $o. The types of arithmetic predicates and functions are ad hoc
polymorphic over the arithmetic types; see [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ] for details.
      </p>
      <p>In logical formulae the arguments to functions and predicates must respect the symbol's type signature.
Variables must be typed in their quanti cation, and used accordingly. For example, in Figure 2 the predicate
chased is declared to have the type signature</p>
      <p>(dog * cat) &gt; $o
so an example of a well-formed formula is</p>
      <p>! [X: dog] : chased(X,garfield)
because X is of type dog and garfield is of type cat.</p>
      <p>Figure 2 illustrates some TF0 formulae, whose conjecture can be proved from the axioms (it is the TPTP
problem PUZ130 1.p).
2.2</p>
      <p>The Polymorphic Typed First-order Form TF1
TF1 extends TF0 with (user-de ned) type constructors, type variables, polymorphic symbols, and one new binder.</p>
      <p>TF1 types</p>
      <p>have the following forms:
the prede ned types $i and $o;
the prede ned arithmetic types $int, $rat, and $real;
user-de ned n-ary type constructors applied to n type arguments;
type variables, which must be quanti ed by !&gt; { see the type signature forms below.</p>
      <p>Type constructors are declared (before their use) to be of the kind ($tType * * $tType) &gt; $tType, in
annotated formulae with a type role. The type constructor's arity is the number of \$tType"s before the &gt;. If
the arity is zero the &gt; is omitted, and the type constructor is a monomorphic user-de ned type constant as in
TF0, else it is polymorphic. If the arity is less than two the parentheses are omitted. In the example of Figure 3,
cup of is a unary type constructor that is is used to construct the type cup of(beverage)).</p>
      <p>TF1 type signatures &amp; have the following forms:
%-----------------------------------------------------------------------------tff(animal_type,type,( animal: $tType )).
tff(cat_type,type,( cat: $tType )).
tff(dog_type,type,( dog: $tType )).
tff(human_type,type,( human: $tType )).
tff(cat_to_animal_type,type,( cat_to_animal: cat &gt; animal )).
tff(dog_to_animal_type,type,( dog_to_animal: dog &gt; animal )).
tff(garfield_type,type,( garfield: cat )).
tff(odie_type,type,( odie: dog )).
tff(jon_type,type,( jon: human )).
tff(owner_of_type,type,( owner_of: animal &gt; human )).
tff(chased_type,type,( chased: ( dog * cat ) &gt; $o )).
tff(hates_type,type,( hates: ( human * human ) &gt; $o )).
tff(human_owner,axiom,(
! [A: animal] :
? [H: human] : H = owner_of(A) )).
tff(jon_owns_garfield,axiom,(</p>
      <p>jon = owner_of(cat_to_animal(garfield)) )).
tff(jon_owns_odie,axiom,(</p>
      <p>jon = owner_of(dog_to_animal(odie)) )).
tff(jon_owns_only,axiom,(
! [A: animal] :
( jon = owner_of(A)
=&gt; ( A = cat_to_animal(garfield) | A = dog_to_animal(odie) ) ) )).
tff(dog_chase_cat,axiom,(
! [C: cat,D: dog] :
( chased(D,C)
=&gt; hates(owner_of(cat_to_animal(C)),owner_of(dog_to_animal(D))) ) )).
tff(odie_chased_garfield,axiom,(</p>
      <p>chased(odie,garfield) )).
tff(jon_hates_jon,conjecture,(</p>
      <p>hates(jon,jon) )).
%-----------------------------------------------------------------------------( 1 * * n) &gt; ~ for n &gt; 0, where i are the argument types and ~ is the result type (with the same
caveats as for TF0);
!&gt;[ 1: $tType, : : : , n: $tType]: &amp; for n &gt; 0, where 1; : : : ; n are distinct type variables and &amp; is a type
signature.</p>
      <p>The binder !&gt; in the last form denotes universal quanti cation in the style of calculi. It is only used at
the top level in polymorphic type signatures. All type variables must be of type $tType; more complex type
variables, e.g., $tType &gt; $tType are beyond rank-1 polymorphism. In the example of Figure 3, the type signature
for mixture is polymorphic. As in TF0, arithmetic symbols and equality are ad hoc polymorphic.</p>
      <p>Type variables that are bound by !&gt; without occurring in a type signature's body, e.g., as in the
last example, are called phantom type variables. These make it possible to specify operations and
relations directly on types and provide a convenient way to encode type classes. For example, a
polymorphic propositional constant is linear can be declared with the type signature !&gt;[A : $tType]: $o, and
used as a guard to restrict the axioms specifying that a binary predicate less eq with the type signature
!&gt;[A: $tType]: ((A * A) &gt; $o) is a linear order to those types that satisfy the is linear predicate, i.e., a
formula of the form ! [A: $tType] : ( (is linear @ A) =&gt; (axiom about less eq)).</p>
      <p>In logical formulae the application of symbols must respect the symbol's type signature.
Additionally, every use of a polymorphic symbol (except ad hoc polymorphic arithmetic and equality
symbols) must explicitly specify the type instance. A function or predicate symbol with a type signature
!&gt;[ 1: $tType, : : : , m: $tType]: (( 1 * &gt; n &gt; ~) must be applied to m type arguments and n term
arguments. For example, in Figure 3 below, the type contructor cup of, the function full cup, the function
mixture, and the predicate help stay awake, are declared to have the type signatures
$tType &gt; $tType
beverage &gt; cup of(beverage)
!&gt;[BeverageOrSyrup: $tType] : ((BeverageOrSyrup * syrup) &gt; BeverageOrSyrup)
cup of(beverage) &gt; $o
so an example of a well-formed formula is</p>
      <p>! [S: syrup] : help stay awake(full cup(mixture(beverage,coffee,S)))
because beverage provides the one type argument for mixture, coffee is of that type, S is of type syrup, and
the result type is beverage as required by full cup, whose whose result type is in turn cup of(beverage) as
required by help stay awake. As TF1 is rank-1 polymorphic, the type arguments must be actual types; in
particular $tType and !&gt;-binders cannot occur in type arguments of polymorphic symbols.</p>
      <p>Figure 3 illustrates some TF1 formulae, whose conjecture can be proved from the axioms (it is a variant of
the TPTP problem PUZ139 1.p).
2.3</p>
      <p>The Monomorphic Typed Higher-order Form TH0
TH0 extends FOF with higher-order notions, including adoption of curried form for type declarations, lambda
terms (with a lambda binder), symbol application, and two other new binders.</p>
      <sec id="sec-1-1">
        <title>TH0 types</title>
        <p>have the following forms:
the prede ned types $i and $o;
the prede ned arithmetic types $int, $rat, and $real;
user-de ned types (constants);
TH0 type signatures &amp; have the following forms:
individual types .
( 1 &gt;
&gt; n &gt; ~) for n &gt; 0, where i are the argument types and ~ is the result type.
%-----------------------------------------------------------------------------ff(beverage_type,type,( beverage: $tType )).
tff(syrup_type,type,( syrup: $tType )).
tff(cup_of_type,type,( cup_of: $tType &gt; $tType )).
tff(full_cup_type,type,( full_cup: beverage &gt; cup_of(beverage) )).
tff(coffee_type,type,( coffee: beverage )).
tff(vanilla_type,type,( vanilla: syrup )).
tff(caramel_type,type,( caramel: syrup )).
tff(help_stay_awake_type,type,( help_stay_awake: cup_of(beverage) &gt; $o )).
tff(mixture_type,type,(
mixture: !&gt;[BeverageOrSyrup: $tType] :</p>
        <p>( ( BeverageOrSyrup * syrup ) &gt; BeverageOrSyrup ) )).
%----Coffee keeps you awake
tff(mixture_of_coffee_help_stay_awake,axiom,(</p>
        <p>! [S: syrup] : help_stay_awake(full_cup(mixture(beverage,coffee,S))) )).
%----Coffee mixed with a syrup or two helps you stay awake
tff(syrup_coffee_help_stay_awake,conjecture,(
help_stay_awake(full_cup(</p>
        <p>mixture(beverage,coffee,mixture(syrup,caramel,vanilla)))) )).
%-----------------------------------------------------------------------------The ( 1 &gt; &gt; n &gt; ~) form is promoted to be a type in TH0 (and TH1) forms, so that variables in formulae can
be quanti ed as function types. The curried form means that TH0 provides the possibility of partial application.
As in TF0, arithmetic symbols and equality are ad hoc polymorphic.</p>
        <p>The new binary connective @ represents application (explicit use of @ is required { symbols cannot simply
be juxtaposed) { see Figure 4 for examples. There are three new binders: ^, @+, and @-, for , (inde nite
description, aka choice), and (de nite description). Use of all the connectives as terms is also supported { this
is quite straightforward because connectives are equivalent (in Henkin semantics - see below) to corresponding
lambda abstractions. The arithmetic predicates and functions, and the equality operator, can also be used as
terms, but must be applied to a term of a known type (which must be an arithmetic type for the arithmetic
symbols). This formula illustrates the use of conjunction as a term, in a de nition of f alse,
thf(and_false,definition,(
( ( &amp; @ $false )
= ( ^ [Q: $o] : $false ) ) )).</p>
        <p>In logical formulae the application of symbols must respect the symbol's type signature. For example, in
Figure 4 the symbols mix and hot are declared to have the type signatures
beverage &gt; syrup &gt; beverage
beverage &gt; $o
so an example of a well-formed formula is</p>
        <p>! [S: syrup] : (hot @ (mix @ coffee @ S))
because S is of type syrup, coffee is of type beverage, and mix the result type is beverage as required by
hot. Partial application results in a lambda term. For example, mix @ coffee produces a lambda term of type
syrup &gt; beverage.</p>
        <p>Figure 4 illustrates some TH0 formulae, whose conjecture can be proved from the axioms (it is a variant of
the TPTP problem PUZ140^1.p). The following formula illustrates the de nite description binder (the inde nite
and de nite description binders are not used in Figure 4) for a set whose elements of type $i are all equal,</p>
        <p>
          The semantics for TH0 is Henkin semantics with choice (Henkin semantics by de nition also includes Boolean
and functional extensionality) [
          <xref ref-type="bibr" rid="ref1 ref8">1, 8</xref>
          ].
%-----------------------------------------------------------------------------thf(syrup_type,type,( syrup: $tType )).
thf(beverage_type,type,( beverage: $tType )).
thf(coffee_type,type,( coffee: beverage )).
thf(mix_type,type,( mix: beverage &gt; syrup &gt; beverage )).
thf(coffee_mixture_type,type,( coffee_mixture: syrup &gt; beverage )).
thf(hot_type,type,( hot: beverage &gt; $o )).
%----The mixture of coffee and something
thf(coffee_mixture_definition,definition,
        </p>
        <p>( coffee_mixture = ( mix @ coffee ) )).
%----Any coffee mixture is hot coffee
thf(coffee_and_syrup_is_hot_coffee,axiom,(
! [S: syrup] : ( ( (coffee_mixture @ S) = coffee )</p>
        <p>&amp; ( hot @ ( coffee_mixture @ S ) )) )).
%----There is some mixture of coffee and any syrup which is hot coffee
thf(there_is_hot_coffee,conjecture,(
? [SyrupMixer: syrup &gt; beverage] :
! [S: syrup] :
? [B: beverage] :</p>
        <p>( ( B = ( SyrupMixer @ S ) ) &amp; ( B = coffee ) &amp; ( hot @ B ) ) )).
%-----------------------------------------------------------------------------</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>The TH1 Syntax</title>
      <p>TH1 combines the higher-order features of TH0 (curried form, lambda terms, description, partial application)
with the polymorphic features of TF1 (type constructors, type variables, polymorphic symbols). TH1 also adds
ve new polymorphic constants.</p>
      <p>TH1 types</p>
      <p>have the following forms:
the prede ned types $i and $o;
user-de ned n-ary type constructors applied to n type arguments;
type variables (which must be quanti ed by !&gt;);
( 1 &gt;</p>
      <p>&gt; n &gt; ~) for n &gt; 0, where i are the argument types and ~ is the result type.</p>
      <sec id="sec-2-1">
        <title>TH1 type signatures &amp; have the following forms:</title>
        <p>individual types;
!&gt;[ 1: $tType, : : : , n: $tType]: &amp; for n &gt; 0, where 1; : : : ; n are distinct type variables and &amp; is a
type signature.</p>
        <p>In logical formulae the application of symbols must respect the symbol's type signature. Additionally, as in
TF1, every use of a polymorphic symbol must explicitly specify the type instance by providing type arguments.
However, in TH1 the application to terms may be partial, i.e., a symbol with a type signature
!&gt;[ 1: $tType, : : : , m: $tType]: ( 1 &gt; &gt; n &gt; ~)
must be applied to m type arguments and up to n term arguments. For example, given the type declarations in
Figure 5 below, some examples of well-formed formulae are
idempotent @ bird @ ^ [X: bird] : X
! [M: map @ bird @ $o] : ( bird lookup @ bird @ $o @ M @ tweety )
! [T: $tType] : ( idempotent @ T @ ^ [X: T] : X ).</p>
        <p>TH1 has ve new polymorphic constants: !! for (universal quanti cation), ?? for (existential quanti
cation), @@+ for (inde nite description, aka choice), @@- for (de nite description), and @= (equality).2 Each
of these must be instantiated by applying them to exactly one type argument, e.g.,</p>
        <p>? [B: bird] : ( (@= @ bird) @ tweety @ B ).</p>
        <p>Figure 5 illustrates some TH1 formulae, whose conjecture can be proved from the axioms. It declares and
axiomatizes lookup and update operations on maps, then conjectures that update is idempotent for certain keys
and values. Figure 6 illustrates the !! universal quanti cation operator by de ning apply both as the function
that supplies its argument to the function as both its arguments, then conjecturing that the two are equal for all
types. Figure 7 illustrates the @@- inde nite description operator by asserting that the function has fixed point
has a xed point (some X such that f(X) = X), and then conjecturing that applying the function to some xed
point simply returns that xed point. In informal mathematics, there is no guarantee that the two \some xed
point" expressions are equal, e.g., if has fixed point is the identity function then all points are xed points.
However, in logic, \some xed point" has a xed interpretation in a given model, so the conjecture is a theorem.
Figure 8 illustrates the @= equality connective by de ning the higher-order is symmetric predicate that takes
a predicate as an argument and returns true i the argument is a symmetric predicate, and then conjecturing
that @= is symmetric (which it is).
%-----------------------------------------------------------------------------thf(bird_type,type,( bird: $tType )).
thf(tweety_type,type,( tweety: bird )).
thf(list_type,type,( list: $tType &gt; $tType )).
thf(map_type,type,( map: $tType &gt; $tType &gt; $tType )).
tff(bird_lookup_type,type,(</p>
        <p>bird_lookup: !&gt;[A: $tType,B: $tType] : ( ( map @ A @ B ) &gt; A &gt; B ) )).
thf(bird_update_type,type,(
bird_update: !&gt;[A: $tType,B: $tType] :</p>
        <p>( ( map @ A @ B ) &gt; A &gt; B &gt; ( map @ A @ B ) ) )).
thf(idempotent_type,type,( idempotent: ( !&gt;[A: $tType] : ( A &gt; A ) &gt; $o ) )).</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Semantics</title>
      <p>The semantics of TH1 have to extend that of TH0 and that of TF1, to maximize the uniformity of the TPTP.
Additionally, the semantics have be compatible with that of existing higher-order logic proof assistants and
2!! and ?? used to be in TH0, but they have been moved out to be in only TH1 now.
thf(apply_both_defn,axiom,(</p>
      <p>apply_both = ( ^ [X: a_type] : ( the_function @ X @ X ) ) )).
thf(prove_this,conjecture,
( !! @ a_type
@ ^ [Y: a_type] : ( ( the_function @ Y @ Y ) = ( apply_both @ Y ) ) )).
%-----------------------------------------------------------------------------%-----------------------------------------------------------------------------thf(a_type,type,( a_type: $tType )).
thf(has_fixed_point_type,type,( has_fixed_point: a_type &gt; a_type )).
thf(apply_has_fixed_point,axiom,(</p>
      <p>? [X: a_type] : ( ( has_fixed_point @ X ) = X ) )).
%-----------------------------------------------------------------------------thf(a_type,type,(</p>
      <p>a_type: $tType )).
thf(is_symmetric_type,type,(</p>
      <p>is_symmetric: ( ( $i &gt; a_type ) &gt; ( $i &gt; a_type ) &gt; $o ) &gt; $o )).
thf(conj,conjecture,</p>
      <p>( is_symmetric @ ( @= @ ( $i &gt; a_type ) ) )).
%-----------------------------------------------------------------------------countermodel nders, so as to provide a problem exchange language for such tools.</p>
      <p>
        The semantics of TH1 is, as for TH0, the Henkin semantics with choice, extended to shallow polymorphism
[
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Assuming the syntax of types and terms introduced in the previous sections, the semantics is given as a set
of inference rules that de ne provability in TH1. The provability relation is the same as the provability induced
by major HOL-based proof assistants. The inference rules are closest to those of HOL Light [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ], because those
rules are most concise, but are the same as those of other systems, including Isabelle/HOL [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] and HOL4 [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ],
as well as frameworks that allow higher-order proofs to be speci ed independently of the proof assistant, e.g.,
OpenTheory [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>The rst three rules introduce the re exivity and transitivity of equality, and assumption:
t : bool
` t = t
1 ` s = t</p>
      <p>2 ` t = u
1 [ 2 ` s = u
fpg ` p
The next two de ne application and abstraction over equality theorems:
1 ` f = g
2 ` x = y f :
-&gt;</p>
      <p>x :</p>
      <p>1 ` s = t
1 ` (^[x: ]:s) = (^[x: ]:t)</p>
      <p>The next three correspond to beta reduction, modus ponens for equalities, and deduction of logical equivalence
from deductions in both directions:</p>
      <p>t : -&gt;
` (^[x: ]:t)(x: ) = t
1 ` s = t</p>
      <p>2 ` s
1 [ 2 ` t
1</p>
      <p>1 ` p
fqg [ 2
2 ` q
fpg ` p = q
The nal two rules allow for instantiation of types and terms in proven theorems:
[ 1; :::; n] ` p[ 1; :::; n]
[ 1; :::; n] ` p[ 1; :::; n]
[x1; :::; xn] ` p[x1; :::; xn]
[t1; :::; tn] ` p[t1; :::; tn]</p>
      <p>In order to achieve the exact semantics of the higher-order logic provers, it is necessary to add axioms that
correspond to those of the provers. For example, HOL Light introduces three axioms: eta (from which classical
logic follows), in nity (which allows the de nition an in nite type of individuals, out of which the natural numbers
are carved), and choice. To achieve the Henkin semantics (including the induced classical logic) the eta axiom is
added. The in nity axiom is not needed because TH1 problems introduce the necessary types as assumptions.
Two instances of the axiom of choice are given: one for choice and one for description. They specify the operators
@++ and @--. None of the axioms need any inference assumptions, so they can be given in the TPTP syntax.
thf(eta,axiom,(
! [A: $tType,B: $tType,A0: ( A &gt; B )] :</p>
      <p>( ( ^ [A1: A] : ( A0 @ A1 ) ) = A0 ) )).
thf(choice_type,type,(</p>
      <p>@@+: !&gt;[A: $tType] : ( ( A &gt; $o ) &gt; A ) )).</p>
    </sec>
    <sec id="sec-4">
      <title>Type Checking</title>
      <p>
        Well-typed TPTP formulae are de ned uniformly for CNF, FOF, TF0, TF1, TH0, and TH1 using a set of
typing rules. We use the logical framework LF [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] to give these rules. The use of LF is not critical and other
representations of the typing rules would work similarly. But LF has the advantage of being extremely concise,
providing the structural rules (including the closure under substitution) for free, and | via the Twelf tool for
LF [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ] | providing an implementation of the type checker out of the box.
      </p>
      <p>
        The type-checking process is split into two steps. The rst step translates a TPTP problem P to a Twelf
theory P . This step is implemented as part of the TPTP2X tool, and is a relatively simple induction on the
context-free grammar for TPTP. The second step runs Twelf to check the theory T H1; P . This includes, in
particular, the context-sensitive parts of the language. This is the same process as used for TH0 [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. The steps
are described in more detail below. The Twelf theory TH1 is given in Appendix A.
      </p>
      <sec id="sec-4-1">
        <title>Translation to Twelf</title>
        <p>Besides bridging the minor syntactic di erences between TPTP and Twelf, this step performs two basic structural
checks:</p>
        <p>It reject formulae not allowed in the respective language form, e.g., it rejects polymorphic type signatures
in TF0 formula.</p>
        <p>It translates all formulae into TH1.</p>
        <p>The translation into TH1 proceeds as follows:</p>
        <p>CNF to FOF: This well-known and straightforward translation has been part of the TPTP tool suite for
some time.</p>
        <p>FOF to TF0: This is essentially an inclusion. The only subtlety is that the untyped FOF constants and
quanti ers must become typed. This is done by assuming that every untyped n-ary function or predicate
symbol has type signature ($i * ... * $i) &gt; $i or ($i * ... * $i) &gt; $o, respectively. Moreover,
all FOF variables are taken to range over the type $i.</p>
        <p>TF0 to TF1, and TH0 to TH1: These translations are inclusions.</p>
        <p>TF0 to TH0, and TF1 to TH1: These translations are almost inclusions. The only subtlety is that TF0/1
type signatures using * are translated to TH0/1 type signatures using &gt;.</p>
      </sec>
      <sec id="sec-4-2">
        <title>Type-Checking in LF</title>
        <p>
          The inference system is a straightforward variant of the one used for TH0 [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]. The rules for types are:
$tType: type
$i : $tType
$o : $tType
&gt; : $tType -&gt; $tType -&gt; $tType
        </p>
        <p>(infix)
These declare the LF type $tType of TPTP types, as well as $i, $o, and &gt; as constructors for it. User-declared
n-ary type operators T are translated to Twelf constants T: $tType -&gt; ... -&gt; $tType -&gt; $tType.</p>
        <p>The rules for terms are
: $tType -&gt; type
: ($tm A -&gt; $tm B) -&gt; $tm (A &gt; B)
: $tm (A &gt; B) -&gt; $tm A -&gt; $tm B</p>
        <p>(infix)
These declare the LF type $tm A of TPTP terms of type A for every TPTP type A:$tType, as well as constructors
for ^ (using higher-order abstract syntax) and @. The latter two constructors take two implicit arguments A and
B of type $tType, which are inferred by Twelf. User-declared (monomorphic) constants f of type are translated
to Twelf constants f: $tm , where is the recursive translation of .</p>
        <p>
          The rules for the remaining term constructors are as follows (omitting the constructors for propositional
formulae described in [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ]):
For example, ! takes an LF function from a TPTP type A to a TPTP formula as an argument, and returns a
TPTP formula. Because the LF function X : $tm A:t is written [X:$tm $A] t in Twelf's concrete syntax, the
TPTP formula ![X:A]:F becomes ![X:$tm A]F in Twelf syntax.
        </p>
        <p>There is no need for rules for proofs, except for a truth predicate
$istrue : $tm $o -&gt; type
This allows user-declared axioms and conjectures a asserting F to be represented as Twelf constants a:$istrue
F.</p>
        <p>
          Rank-1 polymorphism comes for free when using LF [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. In fact, the type checker for TH0 has always
allowed polymorphism, which is suppressed for TH0 in the context-free grammar. The reason is that LF's
dependent function space can be used to represent type signatures that quantify over type variables. First,
note that the dependent function type :$tType.T of LF is written f :$tTypeg T in Twelf. A user-declared
polymorphic constant f that takes type arguments 1; : : : ; n and has type is represented as the Twelf constant
f:f 1g...f ng $tm . User-declared polymorphic axioms and conjectures are represented accordingly. Finally,
any occurrence of f with type arguments 1; : : : ; n is translated to the Twelf term f 1 : : : n.
        </p>
        <p>In addition to the ve term constructors, whose types are given above, TH1 also introduces ve corresponding
constants. Besides being a part of TH1, they serve as examples of how polymorphic constants are represented
in Twelf:
!! : {A: $tType} $tm ((A &gt; $o) &gt; $o)
?? : {A: $tType} $tm ((A &gt; $o) &gt; $o)
@@+: {A: $tType} $tm ((A &gt; $o) &gt; A )
@@-: {A: $tType} $tm ((A &gt; $o) &gt; A )
@= : {A: $tType} $tm ( A &gt; A &gt; $o)
6</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>Conclusion</title>
      <p>
        This paper has described the polymorphic typed-higher order form (TH1) in the TPTP language family, which
extends the monomorphic TH0 language with TF1-style rank-1 polymorphism. A type-checker for the language
has been developed. Now that the language has been speci ed, TH1 problems can be added to the TPTP problem
library. Already hundreds of problems have been collected from various sources, e.g., the HOL(y)Hammer and
Sledgehammer exports from HOL [
        <xref ref-type="bibr" rid="ref11 ref16">11, 16</xref>
        ] and [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. The addition of TH1 problems to the TPTP should provide
the impetus for ATP system developers to extend their systems to TH1. In fact many systems could process
TH1 with modi cations to their parsers only, including LEO-III [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] and Why3 [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The hope is that TH1 will
be implemented in many popular ATP systems for typed higher-order logic. Beyond that, a TH1 division could
be added to CASC to further stimulate development of robust TH1 ATP systems that are useful and easily
deployed in applications, leading to increased and highly e ective use.
      </p>
      <sec id="sec-5-1">
        <title>Acknowledgements. Thanks to Jasmin Blanchette and Christoph Benzmuller for their constructive input, and to Jasmin Blanchette and Andrei Paskevich for letting us plagerize parts of their TF1 paper [3]. Kaliszyk was supported by the Austrian Science Fund grant P26201.</title>
        <p>A</p>
        <p>The Twelf TH1 Theory
$kind : type.
%% types (i, o, functions and products)
$tf : $kind -&gt; type.
$type : $kind.
$tType = $tf $type.
$i : $tType.
$o : $tType.
&gt; : $tType -&gt; $tType -&gt; $tType.
* : $tType -&gt; $tType -&gt; $tType.
%% terms (lambda and application)
$tm : $tType -&gt; type.
^ : ($tm A -&gt; $tm B) -&gt; $tm (A &gt; B).
@ : $tm (A &gt; B) -&gt; $tm A -&gt; $tm B.
%% connectives
$true : $tm $o.
&amp; : $tm $o -&gt; $tm $o -&gt; $tm $o.
| : $tm $o -&gt; $tm $o -&gt; $tm $o.
~ : $tm $o -&gt; $tm $o.
$false : $tm $o</p>
        <p>= ~ $true.
=&gt; : $tm $o -&gt; $tm $o -&gt; $tm $o</p>
        <p>= [a][b](a | ~ b).
&lt;= : $tm $o -&gt; $tm $o -&gt; $tm $o</p>
        <p>= [a][b](b =&gt; a).
&lt;=&gt; : $tm $o -&gt; $tm $o -&gt; $tm $o</p>
        <p>= [a][b]((a =&gt; b) &amp; (b =&gt; a)).
&lt;~&gt; : $tm $o -&gt; $tm $o -&gt; $tm $o</p>
        <p>= [a][b] ~ (a &lt;=&gt; b).
~&amp; : $tm $o -&gt; $tm $o -&gt; $tm $o</p>
        <p>= [a][b] ~ (a &amp; b).
~| : $tm $o -&gt; $tm $o -&gt; $tm $o</p>
        <p>= [a][b] ~ (a | b).
%% equality over a type A
== : $tm A -&gt; $tm A -&gt; $tm $o.
!= : $tm A -&gt; $tm A -&gt; $tm $o
= [x][y] ~ (x == y).
%infix right 10 &gt;.</p>
        <p>%infix right 10 *.
%infix left 5 &amp;.
%infix left 5 |.
%infix none 5 =&gt;.
%infix none 5 &lt;=.
%infix none 5 &lt;=&gt;.
%infix none 5 &lt;~&gt;.
%infix none 5 ~&amp;.
%infix none 5 ~|.
%infix none 10 ==.
%infix none 10 !=.
%% quantification over a type A, taking a meta-level function
! : ($tm A -&gt; $tm $o) -&gt; $tm $o. %prefix 5 !.
? : ($tm A -&gt; $tm $o) -&gt; $tm $o</p>
        <p>= [f] ~ (! [x] ~ (f x)). %prefix 5 ?.
%% equality and quantifiers over types
=t= : $tm A -&gt; $tm A -&gt; $tm $o.
!t! : ($tType -&gt; $tm $o) -&gt; $tm $o.
?t? : ($tType -&gt; $tm $o) -&gt; $tm $o.
%% dependent sum and product type
%% ?* : ($tm A -&gt; $tType) -&gt; $tType.
%% !&gt; : ($tm A -&gt; $tType) -&gt; $tType.
%% arithmetic types as a subtype
$arithdom : type.
$_int : $arithdom.
$_rat : $arithdom.
$_real : $arithdom.
$arithtype : $arithdom -&gt; $tType.
$int : $tType = $arithtype $_int.
$rat : $tType = $arithtype $_rat.
$real : $tType = $arithtype $_real.
%% dummy constants to represent arithmetic literals
$intliteral : $tm $int.
$ratliteral : $tm $rat.
$realliteral : $tm $real.
%% arithmetic operations in higher-order style for an arbitrary arithmetic type
$less : $tm ($arithtype D) &gt; ($arithtype D) &gt; $o.
$lesseq : $tm ($arithtype D) &gt; ($arithtype D) &gt; $o.
$greater : $tm ($arithtype D) &gt; ($arithtype D) &gt; $o.
$greatereq : $tm ($arithtype D) &gt; ($arithtype D) &gt; $o.
$uminus : $tm ($arithtype D) &gt; ($arithtype D).
$sum : $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$difference: $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$product : $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$quotient : $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$quotient_e: $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$quotient_t: $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$quotient_f: $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$remainder_e: $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$remainder_t: $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$remainder_f: $tm ($arithtype D) &gt; ($arithtype D) &gt; ($arithtype D).
$is_int : $tm ($arithtype D) &gt; $o.
$is_rat : $tm ($arithtype D) &gt; $o.
$is_real : $tm ($arithtype D) &gt; $o.
%% truth predicate
$istrue : $tm $o -&gt; type.</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>C.</given-names>
            <surname>Benzmu</surname>
          </string-name>
          ller, C.E. Brown, and
          <string-name>
            <given-names>M.</given-names>
            <surname>Kohlhase</surname>
          </string-name>
          .
          <article-title>Higher-order Semantics and Extensionality</article-title>
          .
          <source>Journal of Symbolic Logic</source>
          ,
          <volume>69</volume>
          (
          <issue>4</issue>
          ):
          <volume>1027</volume>
          {
          <fpage>1088</fpage>
          ,
          <year>2004</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>C.</given-names>
            <surname>Benzmu</surname>
          </string-name>
          ller,
          <string-name>
            <given-names>F.</given-names>
            <surname>Rabe</surname>
          </string-name>
          , and
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Sutcli e. THF0 - The Core TPTP Language for Classical Higher-Order Logic</article-title>
          . In P. Baumgartner,
          <string-name>
            <given-names>A.</given-names>
            <surname>Armando</surname>
          </string-name>
          , and D. Gilles, editors,
          <source>Proceedings of the 4th International Joint Conference on Automated Reasoning, number 5195 in Lecture Notes in Arti cial Intelligence</source>
          , pages
          <fpage>491</fpage>
          {
          <fpage>506</fpage>
          . Springer-Verlag,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>J.</given-names>
            <surname>Blanchette</surname>
          </string-name>
          and
          <string-name>
            <surname>A. Paskevich.</surname>
          </string-name>
          <article-title>TFF1: The TPTP Typed First-order Form with Rank-1 Polymorphism</article-title>
          . In M.P. Bonacina, editor,
          <source>Proceedings of the 24th International Conference on Automated Deduction, number 7898 in Lecture Notes in Arti cial Intelligence</source>
          , pages
          <fpage>414</fpage>
          {
          <fpage>420</fpage>
          . Springer-Verlag,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Francois</given-names>
            <surname>Bobot</surname>
          </string-name>
          ,
          <article-title>Jean-Christophe Filli^atre, Claude Marche, and Andrei Paskevich. Let's verify this with Why3</article-title>
          .
          <source>STTT</source>
          ,
          <volume>17</volume>
          (
          <issue>6</issue>
          ):
          <volume>709</volume>
          {
          <fpage>727</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>M.</given-names>
            <surname>Gordon</surname>
          </string-name>
          and
          <string-name>
            <given-names>A.</given-names>
            <surname>Pitts</surname>
          </string-name>
          .
          <article-title>The HOL Logic</article-title>
          . In M. Gordon and T. Melham, editors, Introduction to HOL,
          <article-title>a Theorem Proving Environment for Higher Order Logic</article-title>
          , pages
          <volume>191</volume>
          {
          <fpage>232</fpage>
          . Cambridge University Press,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>R.</given-names>
            <surname>Harper</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Honsell</surname>
          </string-name>
          , and
          <string-name>
            <given-names>G.</given-names>
            <surname>Plotkin. A Framework for De ning Logics</surname>
          </string-name>
          .
          <source>Journal of the ACM</source>
          ,
          <volume>40</volume>
          (
          <issue>1</issue>
          ):
          <volume>143</volume>
          {
          <fpage>184</fpage>
          ,
          <year>1993</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <surname>J. Harrison. HOL</surname>
          </string-name>
          <article-title>Light: An Overview</article-title>
          . In T. Nipkow and C. Urban, editors,
          <source>Proceedings of the 22nd International Conference on Theorem Proving in Higher Order Logics, number 5674 in Lecture Notes in Computer Science</source>
          , pages
          <volume>60</volume>
          {
          <fpage>66</fpage>
          . Springer-Verlag,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>L.</given-names>
            <surname>Henkin</surname>
          </string-name>
          .
          <article-title>Completeness in the Theory of Types</article-title>
          .
          <source>Journal of Symbolic Logic</source>
          ,
          <volume>15</volume>
          (
          <issue>2</issue>
          ):
          <volume>81</volume>
          {
          <fpage>91</fpage>
          ,
          <year>1950</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>F.</given-names>
            <surname>Horozal</surname>
          </string-name>
          and
          <string-name>
            <given-names>F.</given-names>
            <surname>Rabe. Formal Logic</surname>
          </string-name>
          <article-title>De nitions for Interchange Languages</article-title>
          . In M. Kerber,
          <string-name>
            <given-names>J.</given-names>
            <surname>Carette</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Kaliszyk</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Rabe</surname>
          </string-name>
          , and V. Sorge, editors,
          <source>Proceedings of the International Conference on Intelligent Computer Mathematics, number 9150 in Lecture Notes in Computer Science</source>
          , pages
          <volume>171</volume>
          {
          <fpage>186</fpage>
          .
          <string-name>
            <surname>SpringerVerlag</surname>
          </string-name>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>J.</given-names>
            <surname>Hurd</surname>
          </string-name>
          .
          <article-title>The OpenTheory Standard Theory Library</article-title>
          . In M. Bobaru,
          <string-name>
            <given-names>K.</given-names>
            <surname>Havelund</surname>
          </string-name>
          , G. Holzmann, and R. Joshi, editors,
          <source>Proceedings of the 3rd International Symposium on NASA Formal Methods, number 6617 in Lecture Notes in Computer Science</source>
          , pages
          <volume>177</volume>
          {
          <fpage>191</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>Cezary</given-names>
            <surname>Kaliszyk</surname>
          </string-name>
          and
          <string-name>
            <given-names>Josef</given-names>
            <surname>Urban</surname>
          </string-name>
          .
          <article-title>HOL(y)Hammer: Online ATP service for HOL Light</article-title>
          . Mathematics in Computer Science,
          <volume>9</volume>
          (
          <issue>1</issue>
          ):5{
          <fpage>22</fpage>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>T.</given-names>
            <surname>Matsuzaki</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Iwane</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kobayashi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Y.</given-names>
            <surname>Zhan</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Fukasaku</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kudo</surname>
          </string-name>
          ,
          <string-name>
            <given-names>H.</given-names>
            <surname>Anai</surname>
          </string-name>
          , and
          <string-name>
            <given-names>N.</given-names>
            <surname>Arai</surname>
          </string-name>
          . Race against the Teens - Benchmarking Mechanized Math on Pre-university Problems. In N. Olivetti and
          <string-name>
            <surname>A</surname>
          </string-name>
          . Tiwari, editors,
          <source>Proceedings of the 8th International Joint Conference on Automated Reasoning, Lecture Notes in Arti cial Intelligence</source>
          , page To appear,
          <year>2016</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>T.</given-names>
            <surname>Nipkow</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Paulson</surname>
          </string-name>
          , and M. Wenzel. Isabelle/HOL:
          <article-title>A Proof Assistant for Higher-Order Logic</article-title>
          .
          <source>Number 2283 in Lecture Notes in Computer Science</source>
          . Springer-Verlag,
          <year>2002</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>F.</given-names>
            <surname>Pfenning</surname>
          </string-name>
          and
          <string-name>
            <surname>C.</surname>
          </string-name>
          <article-title>Schurmann. System Description: Twelf - A Meta-Logical Framework for Deductive Systems</article-title>
          . In H. Ganzinger, editor,
          <source>Proceedings of the 16th International Conference on Automated Deduction, number 1632 in Lecture Notes in Arti cial Intelligence</source>
          , pages
          <fpage>202</fpage>
          {
          <fpage>206</fpage>
          . Springer-Verlag,
          <year>1999</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>K.</given-names>
            <surname>Slind</surname>
          </string-name>
          and
          <string-name>
            <given-names>M.</given-names>
            <surname>Norrish</surname>
          </string-name>
          .
          <article-title>A Brief Overview of HOL4</article-title>
          . In O. Mohamed,
          <string-name>
            <given-names>C.</given-names>
            <surname>Munoz</surname>
          </string-name>
          , and S. Tahar, editors,
          <source>Proceedings of the 21st International Conference on Theorem Proving in Higher Order Logics, number 5170 in Lecture Notes in Computer Science</source>
          , pages
          <volume>28</volume>
          {
          <fpage>32</fpage>
          . Springer-Verlag,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Nik</surname>
            <given-names>Sultana</given-names>
          </string-name>
          , Jasmin Christian Blanchette, and Lawrence C.
          <article-title>Paulson</article-title>
          .
          <article-title>LEO-II and Satallax on the Sledgehammer test bench</article-title>
          .
          <source>J. Applied Logic</source>
          ,
          <volume>11</volume>
          (
          <issue>1</issue>
          ):
          <volume>91</volume>
          {
          <fpage>102</fpage>
          ,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Sutcli e. The TPTP Problem Library</article-title>
          and
          <string-name>
            <given-names>Associated</given-names>
            <surname>Infrastructure</surname>
          </string-name>
          .
          <source>The FOF and CNF Parts, v3.5.0. Journal of Automated Reasoning</source>
          ,
          <volume>43</volume>
          (
          <issue>4</issue>
          ):
          <volume>337</volume>
          {
          <fpage>362</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Sutcli e</article-title>
          .
          <source>The TPTP World - Infrastructure for Automated Reasoning</source>
          . In E. Clarke and
          <string-name>
            <surname>A</surname>
          </string-name>
          . Voronkov, editors,
          <source>Proceedings of the 16th International Conference on Logic for Programming Arti cial Intelligence and Reasoning, number 6355 in Lecture Notes in Arti cial Intelligence</source>
          , pages
          <fpage>1</fpage>
          <lpage>{</lpage>
          12. Springer-Verlag,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Sutcli e and C. Benzmuller. Automated Reasoning in Higher-Order Logic using the TPTP THF Infrastructure</article-title>
          .
          <source>Journal of Formalized Reasoning</source>
          ,
          <volume>3</volume>
          (
          <issue>1</issue>
          ):1{
          <fpage>27</fpage>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20] G. Sutcli e, S. Schulz,
          <string-name>
            <given-names>K.</given-names>
            <surname>Claessen</surname>
          </string-name>
          , and
          <string-name>
            <given-names>P.</given-names>
            <surname>Baumgartner</surname>
          </string-name>
          .
          <article-title>The TPTP Typed First-order Form with Arithmetic</article-title>
          .
          <source>In N. Bjorner and A</source>
          . Voronkov, editors,
          <source>Proceedings of the 18th International Conference on Logic for Programming Arti cial Intelligence and Reasoning, number 7180 in Lecture Notes in Arti cial Intelligence</source>
          , pages
          <fpage>406</fpage>
          {
          <fpage>419</fpage>
          . Springer-Verlag,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <surname>G.</surname>
          </string-name>
          <article-title>Sutcli e and C.B</article-title>
          .
          <string-name>
            <surname>Suttner</surname>
          </string-name>
          .
          <source>The TPTP Problem Library: CNF Release v1.2.1. Journal of Automated Reasoning</source>
          ,
          <volume>21</volume>
          (
          <issue>2</issue>
          ):
          <volume>177</volume>
          {
          <fpage>203</fpage>
          ,
          <year>1998</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>M.</given-names>
            <surname>Wisniewski</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Steen</surname>
          </string-name>
          , and
          <string-name>
            <surname>C.</surname>
          </string-name>
          <article-title>Benzmuller. The Leo-III Project</article-title>
          . In A. Bolotov and M. Kerber, editors,
          <source>Proceedings of the Joint Automated Reasoning Workshop and Deduktionstre en, page 38</source>
          ,
          <year>2014</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          <article-title>%% equality as a polymorphic constant with type inference (no type argument) $tptp_equal : $tm A &gt; A &gt; $o = @= A. %prefix 5 @=.</article-title>
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>