We describe the key features of the proof description language of Declare, an experimental theorem prover for higher order logic. We take a somewhat radical approach to proof description: proofs are not described with tactics but by using just three expressive outlining constructs. The language is "declarative" because each step specifies its logical consequences, i.e. the constants and formulae that are introduced, independently of the justification of that step. Logical constants and facts are lexically scoped in a style reminiscent of structured programming. The style is also heavily "inferential", because Declare relies on an automated prover to eliminate much of the detail normally made explicit in tactic proofs. Declare has been partly inspired by Mizar, but provides better automation. The proof language has been designed to take advantage of this, allowing proof steps to be both large and controlled. We assess the costs and benefits of this approach, and describe its impact on three areas of theorem prover design: Specification, automated reasoning and interaction.
[1]
Robert S. Boyer,et al.
A computational logic handbook
,
1979,
Perspectives in computing.
[2]
Donald Robert Syme.
Declarative theorem proving for operational semantics
,
1999
.
[3]
M. Gordon,et al.
Introduction to HOL: a theorem proving environment for higher order logic
,
1993
.
[4]
G. D. Liveing,et al.
The University of Cambridge
,
1897,
British medical journal.
[5]
Mandayam K. Srivas,et al.
A Tutorial Introduction to PVS
,
1998
.
[6]
Lawrence Charles Paulson,et al.
Isabelle: A Generic Theorem Prover
,
1994
.
[7]
Piotr Rudnicki,et al.
An Overview of the MIZAR Project
,
1992
.
[8]
John Harrison,et al.
A Mizar Mode for HOL
,
1996,
TPHOLs.
[9]
J. S. Moore,et al.
ACL2: an industrial strength version of Nqthm
,
1996,
Proceedings of 11th Annual Conference on Computer Assurance. COMPASS '96.