Download The Nuprl Proof Development System, Version 5 Reference Manual

Transcript
4.1
The Library
Nuprl’s library is a mathematical and logical database. All library contents are represented by a
common basic data structure called objects. There are objects for theorems, definitions, inference
rules, tactics and other algorithms, comments and articles, objects that control the visual appearance of the mathematical notation, and objects that are used to organize other objects in theories
and directories. A library table binds objects to identifiers that are used when referring to them.
In contrast to previous releases of Nuprl, all library contents are kept in a persistent library
and are accessible (modulo permission restrictions) as soon as the Nuprl 5 system is started. The
library roughly operates like a data base: modifications to theories, such as creating, deleting, or
editing objects are immediately committed to the library. However, all changes may be undone if
necessary. A backup of all previous versions of an object is kept until is explicitly destroyed in a
garbage collection process, which enables a user to recover previous versions if needed.
The navigator shows information on a segment of the library, which is sometimes called the
user’s work space. The format of the navigator window is discussed in Section 4.2.1. Commands
for for browsing, searching, editing, and structuring library contents as well as for controlling the
navigator window and are discussed in Section 4.3. In the rest of this section we briefly explain the
internal structure of Nuprl’s library and its relation to the externally visible behavior of Nuprl.
4.1.1
Library Objects
Library objects the common representation of all the contents of Nuprl’s library. They are abstract
terms that are associated with a kind , a variety of properties, and possibly with extra data.
Abstract terms provide a uniform data structure for representing almost any kind of formal
content. They consist of an operator identifier, a list of parameters, and a list of bound subterms
(see Chapter 5 for a detailed description). The abstract term syntax makes sure that no predefined
structure is imposed on the contents of the library and makes parsing unnecessary. All visible
structure and notation is generated by the editor process, which consults display forms that describe
how to “read” an abstract term. The separation between internal representation and external
presentation makes formal notation extremely flexible and expressive, as it supports an almost
arbitrary syntax and allows information to be presented differently depending on context and the
preferences of the users of Nuprl.
The kind of an object is a description of the intended role of the abstract term. It allows making a distinction between theorems, definitions, tactics, comments, etc., and identifying structure
information when assembling theories. Currently the following kinds are defined
statement objects contain a proposition and (reference to) a proof. If the proof is complete, the
proposition is considered a theorem (or a lemma). Otherwise it is a conjecture. A statement
object for a complete theorem also contains the extract term of the theorem
proof objects contain Nuprl proofs, i.e. directed acyclic graphs of (references to) inference steps,
where the conclusion of a child inference is a premise of its parent inference. A proof is
complete if all its leaves are closed by inferences.
inference objects contain records of actual inference steps. These may consists of instances of
primitive rules, of tactics executions, or more generally of applications of inference engines
that are connected to the Nuprl library.
abstraction objects introduce the abstract definition of a new term.
32