HOL Namespace

Modules Description

Bool

This module extends the boolean-related theory by giving definitions for classic predicate logic theory objects not introduced in 'CoreThry', and adds various derived syntax functions, theorems and inference rules. Note that derivations relying on the Axiom of Choice are separated out into the 'BoolClass' module.

BoolAlg

This module proves various algebraic property theorems for the predicate logic operators.

BoolClass

This module derives further predicate logic theorems and inference rules. Unlike all preceding derivations, these all use the Axiom of Choice (i.e. 'select_ax'), and thus could be considered as classical logic. However, note that some of these (such as 'exists_rule') are actually derivable in intuitionistic logic if an alternative definition of existential quantification is used (as in HOL Light).

CoreThry

This module completes the logical core for HOL by defining the core theory. This involves giving declarations, definitions and axioms for all the HOL theory objects anticipated by the language and inference kernels.

Def1

This module defines a command for defining type bijection constants for a given type constant definition.

Def2

This module defines two specialised forms of definition for function constants. The first form is for non-recursive functions and the second is for recursive functions.

DLTree

Questo modulo costituisce una libreria di operazioni su alberi dinamici di ricerca - alberi binari auto-bilanciati che memorizzano informazioni su nodi ordinati in base a un indice rispetto alla relazione (<).

Dmodes

This module implements the display modes mechanism, for configuring how the pretty printers display types and terms. Note that the display modes make no difference to the way that types and terms are parsed.

EqCong

This module implements equality congruence rules for equality, function application and predicate logic operators. These are all trivial derivations of the primitive congruence rules 'mk_comb_rule' and 'mk_abs_rule' (see 'Thm' module) and the derived congruence rules 'mk_comb1_rule' and 'mk_comb2_rule' (see 'Equal' module).

Equal

This module adds more constants and inference rules for basic reasoning using equality.

Exn

Questo modulo definisce tre nuove eccezioni di uso generale, insieme a una stampa di queste eccezioni.

GenericTree

Ind

This module extends the HOL logic with an infinite-cardinality base type, together with a zero and a successor function for this type. These get used in the 'Nat' module as the basis for defining the natural numbers.

Lexer

This module implements the lexical analysis stage, common to both HOL type and term quotation parsing. The top-level type and term parsers are implemented in the 'Parser' module. The classification of characters, used to determine how lexical tokens are formed, is implemented in the 'Names' module.

Lib

Questo modulo definisce varie utilità di programmazione funzionale da usare nel corso dell'implementazione.

Names

This module provides support for classifying HOL names for the purposes of parsing and printing. This consists of tests for basic classes of name and commands for setting identifier fixity and enumeration brackets. This module is a trusted component of the system, since it is used in the implementation of the pretty printer.

Nat

This module extends the HOL logic with the theory of natural numbers. This involves giving theory object definitions for the naturals base type and the "ZERO" and "SUC" constants, based on the theory of individuals, and proving a few important properties.

NatArith

This module defines some classic natural number arithmetic operators, using recursive function definition and the "SUC" and "ZERO" constants, and proves various basic properties about each operator.

NatEval

This module defines conversions for evaluating arithmetic operations on natual number numerals. Because large proofs may involve heavy numeric computation, special consideration is given to the efficieny of these functions.

NatNumrl

This module defines the representation of natural number numerals. This is based on the HOL functions "BIT0" and "BIT1".

NatRel

This module defines the classic natural number arithmetic relations and derives various basic properties about them.

Pair

This module extends the HOL logic with the theory of ordered pairs. This involves giving theory object definitions for the product type operator, the pairing function and the constants "FST" and "SND", and proving a few basic properties. Syntax functions and equality congruence rules are also provided.

Parser

This module implements syntax analysis and top-level parsing of type/term quotations into internal types/terms. The syntax analysis functions take a list of lexical tokens as their source, and return a pretype/preterm that gets passed on to type analysis. Lexical analysis is implemented in the 'Lexer' module, and type analsyis (actually common to parsing and printing) is implemented in the 'TypeAnal' module.

Preterm

This module defines the pretype and preterm datatypes (called 'pretype' and 'preterm'), and various basic operations on them. These are used during parsing and printing as intermediate representations of types/terms between their quotation and internal representations. They incorporate extra datatype classes, that don't occur in the corresponding internal datatypes and are only used during parsing and printing. Being intermediate datatypes, there is no need for well-formedness restrictions on their constructors, and so the datatypes are not made abstract.

Printer

This module implements the type, term and theorem pretty printers, for outputting quotation representations of internal types/terms/theorems. The printers take into account identifier fixity status and enumeration bracket settings (see 'Names' module), certain special-case theory objects (whose declarations in later modules are anticipated here), and the display modes (see 'DModes' module). This module is a trusted component of the system, since the user will normally rely on it to determine what has been proved and what has been asserted.

ProofManagement

ProofTree

Reader

This module provides library support for generic reader functions that process data from a given source and return a read item and the source correspondingly advanced, ready for the next item to be read. This gets used in the HOL quotation lexer and parsers (see 'Lexer' and 'Parser' modules respectively).

Store

This module implements databases for storing theorems and lemmas under a name index. Like axioms, stored theorems are restricted to having no free variables or assumptions, whereas stored lemmas are theorems that have no such restrictions.

Term

This module defines the internal representation of HOL terms. This is done by defining an abstract datatype for terms, and then primitive syntax functions for constructing and destructing terms, and support for constant declaration. The primitive syntax constructors ensure that only well- formed terms can be constructed. This module is a trusted component of the system.

Thm

This module defines the basic mechanisms for logical deduction and theory assertion. As is characteristic of LCF-style theorem provers, this is done by defining an abstract datatype for the internal representation of HOL theorems. The primitive constructors for this datatype are limited to the primitive inference rules and the primitive assertion commands. Any subsequent theorem-creating functions must ultimately be implemented in terms of these constructors. This module is a trusted component of the system.

Type

This module defines the internal representation of HOL types. This is done by defining an abstract datatype for types, and then primitive syntax functions for constructing and destructing types, and support for type constant declaration. The primitive syntax constructors ensure that only well-formed types can be constructed. This module is a trusted component

TypeAnal

This module defines type analysis routines for pretypes and preterms, used in parsing and printing type/term quotations. The primary routines are detyping, type unification, type inference and type consistency check. This module is used in the implementation of the pretty printer, and is a trusted component of the system.

TypeAnnot

This module defines type analysis routines for pretypes and preterms, used in parsing and printing type/term quotations. The primary routines are detyping, type unification, type inference and type consistency check. This module is used in the implementation of the pretty printer, and is a trusted component of the system.

Utils1

This module defines various basic operations on types and terms that get used in the implementation of the primitive inference rules and primitive assertion commands in the 'Thm' module. This module is a trusted component of the system.

Utils2

This module defines various basic useful operations on types, terms and theorems.

Wrap

The primitive inference rules and theory commands have minimal, stripped- down functionality, to make the language and inference kernels as concise as possible and their correctness as easy as possible to justify. This module adds basic wrappers around these primitives, giving the rules step counting and the theory commands benign redefinition and slightly enhanced functionality.