To build hol90 takes four stages:
- Get the hol90 sources
- Get SML/NJ
- Make hol90
- Install the hol90 manual
If it happens that you want to move the system after it has been built,
consult Moving hol90
after it has been built. If you have any trouble building the
system, please send mail to
slind@informatik.tu-muenchen.de
Important! Once you have installed the system, all users
must rebuild any theories (and libraries that build theories) that have
been built on an earlier release of hol90.
User Manual Table of Contents
These are available by anonymous ftp from either
Munich or
Bell Labs
Once you have the hol90 source, it it can be unpacked by
zcat hol90.7.tar.Z | tar xf -
This gives a directory called hol90, with the following directories:
- contrib - libraries contributed by users
- doc - system documentation
- examples - examples of using hol90
- help - the system online help files
- src - the hol90 sources
- library - the standard libraries
- theories - the system theories
- tools - some useful tools
Beginning of Installation Guide.
User Manual Table of Contents.
Currently, hol90 is being implemented in the SML/NJ dialect of SML. It
has some dependencies on that compiler, although ports to PolyML and
other compilers have been successfully carried out in the past. For now,
though, the New Jersey compiler is what you need. The New Jersey
compiler has a well-deserved reputation for being memory hungry. You can
run hol90 on a 16 Megabyte Sun workstation, but the more memory the
better! A workstation with 24 Megabytes or more, with generous swap
space is recommended. The current public release of the SML/NJ compiler
is available from
Bell Labs.
Beginning of Installation Guide.
User Manual Table of Contents.
For this release, we assume that theory files will be represented in
ascii on disk. Currently this is preferable because ascii theories are
architecture independent and orders of magnitude smaller than binary
theories. If you have an intense desire to build binary theory files,
send mail to the author of this document.
The model for building the hol90 system is simply to make the system
image for every architecture of interest. In the following sml
is a copy of the SML/NJ compiler (with perhaps some other functions
added, e.g., the SML/NJ library). The notation .../hol90
represents the full path to the hol90 sources.
In the simplest case, making the system image for an architecture is
done by invoking the unix command
make_hol sml
in the directory .../hol90/src. This will leave an image
hol90.arch, where arch is what SML/NJ
thinks is the machine architecture. It takes about 20 minutes on a SPARC10,
and considerably longer for some other machines.
There are extra options to make_hol that cover special
circumstances, so if you find that the default option to make_hol
doesn't give you the flexibility you need to build hol90 at your
site, the following documentation gives more detail.
make_hol
The calling convention for make_hol is:
make_hol sml [-n | -b | -o] [-d path]
The default, calling make_hol sml with no parameters,
tells the system to
- Re-use the existing (ascii) theory files. These will be the theory
files that were shipped with the release, unless the system has
since been remade locally by invoking make_hol with the
-n option.
- Set the hol90 root directory to be the parent directory of the
current working directory (which is found by pwd).
If make_hol isn't invoked in .../hol90/src
or if one wants the hol90 root directory to be expandable in
different ways on different machines in a networked computing
environment, the -d option must be used.
The other options are
- -o
- Reuse the existing ascii theory files.
- -n
- This option tells the system to rebuild all its theories. Be
warned that a consequence of this option is that the system
libraries will have to be rebuilt (with src/make_lib)
and all user theories at the site will have to be rebuilt, along with
any images that depend on hol90 libraries.
- -b
- The -b option tells the system to build binary
theories. This is not advised, and some editing of the
src/sys01.sml file is necessary to get this approach to work.
- -d path
- This option to make_hol is used to establish the root
directory for hol90. If your current directory at the time of calling
make_hol is not .../hol90/src, then you will need to
supply the full directory path to the hol90 directory. This option is
also useful in the case when building a version of the system that will
be used in a networked environment, where the root directory may be
expanded differently for different machines in the network.
Note: there must be a space separating -d and
path.
The default invocation for building the system is equivalent to invoking
make_hol sml -o -d `pwd`/..
in .../hol90/src.
Notes
- In the normal course of events, the system needn't be built with the
-n option.
- The default and the -n and -o
options entail that theory files will be in ascii. This is preferable,
since ascii files are portable between architectures and are much
smaller than binary theory files.
Libraries
Please note that in this release the system libraries do not
have to be built; that has already been done for you. However, if one
rebuilds the system with the -n option, then libraries
must be rebuilt. This is done with src/make_lib; the invocation is
make_lib hol90
Contrib
In this release the contributed libraries do have to be
built after hol90 has been made (if you want to use a contrib
library). This is done with src/make_contrib; the invocation
is
make_contrib hol90
Notes.
- Some contrib libraries, hol_ML in particular, can
take several hours to build, even on a large machine, so you might want
to leave them out of an initial build sequence. In fact, all theories
belonging to contrib libraries have already been made, so the only
installation work that really needs to be done is to re-declare the
contrib library of interest, and put the declaration in the right
place. For example, the hol_ML library gets built with the
following shell script:
#!/bin/sh
# Make script for holML library
# Build the theories
$* < theories/src/more_list/mk_more_list.sml
$* < theories/src/more_string/mk_more_string.sml
$* < theories/src/finmap/mk_finmap.sml
$* < theories/src/Core/Common/mk_common_holML_core.sml
$* < theories/src/Core/Plain_Core/mk_holML_Plain_Core.sml
$* < theories/src/Core/Determinacy/mk_core_determinacy.sml
$* < theories/src/Modules/Common/mk_common_ModML.sml
$* < theories/src/Modules/ModML/mk_ModML.sml
$* < theories/src/Modules/HOFML/mk_HOFML.sml
# Install the library description file
$* < theories/src/mk_holML_lib.sml
mv holML.hol_lib ../desc
Only the last two lines would need to be executed to install this
library. i.e.,
$* < theories/src/mk_holML_lib.sml
mv holML.hol_lib ../desc
-
If one moves the hol90 root directory after building the system,
contrib libraries will be findable (via
find_library) but not loadable. See Moving hol90 after it has been built for
more information.
Beginning of Installation Guide.
User Manual Table of Contents.
The hol90 manual is hyperlinked, and is mostly self-contained. However,
it does provide links to the local SML/NJ installation, in the file doc/sml.html. The paths in this file
should be adjusted to the paths for your local setup.
Beginning of Installation Guide.
User Manual Table of Contents.
One may decide to move hol90 after it has been built. There are a couple
of scenarios that have been considered by the hol90 implementors:
- You move only the executables, or link to them. Nothing needs to
be done: executables can be moved with impunity.
- You move the hol90 directory. For instance, you might have
built the system in your home directory, and now want to move the sources to
/usr/local/lib and hol90.arch to
/usr/local/bin. In such a case, you
have to reset some internal paths in the
hol90.arch images.
Fortunately, this has been automated. In the following, let
path
be the full path to the directory you have moved the sources to. (For
example, if you perform mv hol90 /usr/local/lib then
path
is
/usr/local/lib/hol90.) On each architecture arch
invoke the following
tools/resituate_hol90 from-image to-image path
where from-image is hol90.arch,
to-image is the file name to
put the saved image at, and path is the path to the hol90 root
directory. For example, on a sun4 one could do, in directory hol90,
tools/resituate_hol90 src/hol90.sparc src/hol90.sparc `pwd`
Note that this particular invocation will overwrite the file of an
executing process (namely src/hol90.sparc). Some operating
systems may not allow this (how will you know? Don't worry - the OS
will let you know!); in that case one needs to use a "temporary"
to-image. Invoking
something like
tools/resituate_hol90 src/hol90.sparc src/hol90.tmp `pwd`
mv src/hol90.tmp src/hol90.sparc
ought to work. After the images have been resituated, one can make
symbolic links in /usr/local/bin to the executables.
contrib libraries will no longer load, although they
are findable with find_library. Probably the simplest solution
to this is to not execute make_contrib until the system
is in its final resting place. Otherwise, one can
- redo the make_contrib, or
- perform a find_library then move_library
everytime one wants a contrib library, or
- edit the path field in each .hol_lib
file in contrib/desc.
Finally, once this new version of hol90 has been installed, we repeat
that all hol90 users must rebuild any of their theories that have been
built on an earlier release of hol90.
Beginning of Installation Guide.
User Manual Table of Contents.
Konrad Slind,
slind@informatik.tu-muenchen.de