There are a number of versions of HOL, going back to Mike Gordon's work in the early 80s. Compared with other HOL systems, HOL Light uses a much simpler logical core and has little legacy code, giving the system a simple and uncluttered feel. Despite its simplicity, it offers theorem proving power comparable to, and in some areas greater than, other versions of HOL, and has been used for some significant industrial-scale verification applications.
You can download the sources for the latest version 2.20 here. It should work on pretty much any platform under most recent versions of Ocaml. (Note that 2.20 doesn't yet work under the very latest OCaml, 3.10, owing to changes to camlp4. If you really want to use HOL Light with 3.10, use the development snapshot below. You will also need to install camlp5.) See the README file in the distribution for detailed installation instructions.
A Development snapshot from 19th February
2008 is available. This is not an official release and may be
buggy, but it should give some idea of what's likely to change in 2.30. It
should build under any reasonably recent OCaml. To build with OCaml 3.10 and
later you will also need to install camlp5 version 5.07.
Experimental Linux binaries for version 2.20 are also now available, created using CryoPID. NB: I'm not sure how portable these are across Linux versions; better to build from source if you can. The files are hol (core system), hol.sosa (preloaded with analysis and sum-of-squares tools), hol.multivariate (preloaded with multivariate analysis) and hol.card (preloaded with cardinal arithmetic). Note that although these work as standalone executables, if you are planning to work much with the system, you'll probably still want to download the HOL sources to give access to additional library directories and to the help files. For example, if you download the HOL Light source tree to "/home/myself/hol_light", you might start a HOL Light session with the following so that HOL Light can find all the files (# is the OCaml prompt):
# hol_dir := "/home/myself/hol_light";; val it : unit = () # load_path := ["."; !hol_dir];; val it : unit = ()The following lists some available documentation and resources: