Geoff Sutcliffe
University of Miami geoff[@]cs.miami.edu
Introduction
The syntax for simply typed first order form, and typed higher order form,
is now reasonably stable.
The THF is now in use by a few people, including Chris Benzmueller and
Viktor Kunak.
No-one is using the TFF syntax, but if the SPASS people ever get off the
DFG horse maybe they'll find it appropriate.
Some further information about the simply typed first order form is available
from the
original proposal with Koen Claessen.
There have been a few improvements to the THF syntax since its first release,
and the latest version is given at the end of this document.
A key change was motivated by Florian Rabe, to relax the syntax somewhat
so that it is easier to use, but makes more nonsense syntactically legal.
The final goal is to add THF problems to the TPTP, as proposed by
Chris Benzmueller and Chad Brown in
this TPHOLs paper.
Is this all too Overwhelming?
The combined THF, TFF, FOF, and CNF syntax is quite large.
In order to make it more managable I plan to split it into pieces:
A base syntax, which includes the FOF and CNF components, and common
elements.
A TFF extension, which can be added to the base
A THF extension, which can be added to the base
Status wrt Semantics
While FOL semantics is simple and standard, in HOL there are
alternative semantics, e.g., standard semantics, Henkin semantics,
non-extensional semantics, etc.
A full discussion is in
this JSL paper by Chris Benzmueller, Chad Brown, and Michael Kohlhase.
Different semantics lead to different
(SZS) statuses for problems.
The TPTP syntax (original and THF) does not provide any way of regording
these alternatives.
Generally, the THF needs ways of specifying the semantics information.
This requires a simple extension of the header section conventions for
TPTP problem files.
Question: Does a THF ATP system need to know the semantics wrt which the user
wants an answer?
If so, this information will have to be specified, but it seems most likely
to be a command line option for the system rather than a statement in the
problem.
Libraries of Axioms
Just like for the FOF and CNF cases, there is a need for someone to
develop librarues of THF axioms that can be used in THF problems.
Viktor Kunak has sugggested that the most important things are:
sets and relations
transitive closure
inductive definitions
integers
algebraic data types, sequences
Looking at e.g. Isabelle or HOL libraries, would be a good starting point.
%----v3.2.0.10 (TPTP version.internal development number)
%------------------------------------------------------------------------------
%----README ... this header provides important meta- and usage information
%----
%----Intended uses of the various parts of the TPTP syntax are explained
%----in the TPTP technical manual, linked from www.tptp.org.
%----
%----Four kinds of separators are used, to indicate different types of rules:
%---- ::= is used for regular grammar rules, for syntactic parsing.
%---- :== is used for semantic grammar rules. These define specific values
%---- that make semantic sense when more general syntactic rules apply.
%---- ::- is used for rules that produce tokens.
%---- ::: is used for rules that define character classes used in the
%---- construction of tokens.
%----
%----White space may occur between any two tokens. White space is not specified
%----in the grammar, but there are some restrictions to ensure that the grammar
%----is compatible with standard Prolog: a should be readable with
%----read/1.
%----
%----The syntax of comments is defined by the rule. Comments may
%----occur between any two tokens, but do not act as white space. Comments
%----will normally be discarded at the lexical level, but may be processed
%----by systems that understand them (e.g., if the system comment convention
%----is followed).
%------------------------------------------------------------------------------
%----Files. Empty file is OK.
::= *
::= |
%----Formula records
::= | | |
%----Future languages may include ... english | efof | tfof | mathml | ...
::= thf(,,).
::= tff(,,).
::= fof(,,).
::= cnf(,,).
::= | ,