| 
            
              
                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. 
             |