Skip to content

Latest commit

 

History

History
255 lines (176 loc) · 9.95 KB

README.md

File metadata and controls

255 lines (176 loc) · 9.95 KB

nqthm

nqthm - the original Boyer-Moore theorem prover, from 1992

This is the original Boyer-Moore theorem prover, developed from 1972 to 1992. The sources for this program were last revised in 1992, and can be found here:

ftp://ftp.cs.utexas.edu/pub/boyer/nqthm/index.html

With very minor modifications, the program can be run under GNU "clisp". This repository contains a version runnable today.

This program is primarily of historical interest as a milestone in logic-based artificial intelligence. New work in this area should use the newer ACL2 theorem prover, also by Boyer and Moore.

Current status: the prover will run using the LISP commands in the README file below. However, the UNIX makefiles are not yet working on Linux. Fetch all the files from this repository with "git", "cd" to the directory "nqthm-1992", and follow the directions under "COMPILE" and "LOAD".

Once you have the theorem prover loaded, try

(load "examples/basic/proveall.events")

and watch the system prove the basic theorems of number theory in a few seconds. There are many other examples provided, but "proveall" is a classic and a basis for most other theories.

John Nagle August, 2016.

The original README file follows.


This is the README' file for the 1998 distribution of Nqthm-1992, the Boyer-Moore prover. This distribution of Nqthm corresponds to the second edition of the book A Computational Logic Handbook', Boyer and Moore, Academic Press, 1998, ISBN 0-12-122955-6. That book provides a comprehensive user's manual for this distribution, including installation instructions, a definition of the logic for which Nqthm-1992 is a theorem prover, documentation of all the user commands, and short introductions to the hundreds of sample input files, which cover many areas of computing and mathematics.

                          LICENSES INVOLVED

It is the basic intention of those who have contributed to this distribution of Nqthm that the entire distribution may be freely copied and freely used. However, the evolution of the concept of free software' has resulted in the creation of certain licenses that spell out what free' means, and those who need or wish to know these fine details should continue reading this section on licenses.

All of the files in this Nqthm distribution whose copyright is held by any subset of {Boyer, Moore, Computational-Logic-Inc} is licensed to the public under the terms of the Gnu General Public License, a copy of which may be found in the file gnu-general-public-license.text'. In particular, the Gnu license covers all of the Common Lisp sources for Nqthm. The Gnu licensing of material in this Nqthm distribution is in addition to, and in no way in conflict with, permissions granted in the various files of this distribution for use under the Nqthm Public Software License, under public domain declarations, or under other licenses. However, please note that in this distribution, we also distribute by permission some example files that are the work of others, and this licensing under the Gnu General Public License does not apply to those files. See individual files under the events' directory for specific licensing information. Similarly, the documentation directory `doc' contains some information that is copyright by Academic Press and is distributed under the terms of a letter from Academic Press that may be found on that directory.

In addition, copying and use of Nqthm-1992 is authorized under the terms stated in the Nqthm-1992 General Public Software License, which may be found at the beginning of the Nqthm file basis.lisp' and also in the files nqthm-public-software-license.doc' and `nqthm-public-software-license.ps'.

The user may choose to operate under either of these `free software' licenses.

		     OBTAINING NQTHM-1992

It is best to obtain Nqthm-1992 via the Internet as the URL

ftp://ftp.cs.utexas.edu/pub/boyer/nqthm/nqthm-2nd-edition.tar.Z

If for some reason you cannot make use of that single file, e.g., because you cannot uncompress a .Z file or untar a .tar file, then you may obtain obtain Nqthm-1992 by ftp a file at a time. Connect to ftp.cs.utexas.edu with the login name `anonymous' and your email address as the password. Ftp all of the files on the /pub/boyer/nqthm/nqthm-1992/ directory and its sub- and subsub-directories, and then go to the COMPILE instruction of this README file. Because there are over a hundred files and over a dozen subdirectories, making sure that you have gotten all of the files in this way can be tedious!

			  UNCOMPRESS

To uncompress the file nqthm-2nd-edition.tar.Z, do

% uncompress nqthm-2nd-edition.tar.Z

			     UNTAR

To untar the file nqthm-2nd-edition.tar, do

% tar xvf nqthm-2nd-edition.tar

This tar' command will create a subdirectory named nqthm-1992', which contains the sources and examples. This will take up an additional 23 megabytes. You may now delete the file nqthm-2nd-edition.tar to save space.

			    COMPILE

To compile Nqthm, execute the following commands:

% cd nqthm-1992
% lisp  ; Or whatever commands starts your Common Lisp.
> (load "nqthm.lisp")
> (proclaim '(optimize (speed 3) (safety 0) (space 0)))
> (in-package "USER")
> (compile-nqthm) ; takes a few minutes on a contemporary workstation
> (bye)  ; however you get out, if you can.

If you encounter problems at this stage, please consult the installation chapter in the user's manual, which describes many sorts of environmental problems you may be encountering and some work arounds.

To use Nqthm under Lispworks 3.2.0, execute the following immediately after loading "nqthm.lisp" to workaround two problems with Lispworks.

(progn (shadow 'comment) (setf (svref ccl::funny-symbol-char-table (char-code #.)) t))

			     LOAD

Having compiled Nqthm, one may now load it as follows:

% lisp
> (load "nqthm.lisp")
> (in-package "USER")
> (load-nqthm)
> ; Nqthm is now ready to use.  Here is a simple test.
> (boot-strap nqthm)
> (assoc-of-app)

The last form should result in a few pages of terminal output proving the associativity of the function `app'. If it does, you (probably) have a working Nqthm and can now try any of the commands described in the reference guide chapter of the documentation.

You may find it convenient to save a binary image of Nqthm-1992. This may be done after the (load-nqthm) command. The saving of an image is very dependent upon the Lisp implementation being used, and may require many megabytes of space. Repeatedly loading the compiled code whenever one wants to use Nqthm-1992 is sufficiently fast that one can comfortably get by without an image. But having a saved image is slightly more convenient and may provide an economy under certain operating systems.

MCL Note: To use Nqthm under MCL 2.0, start by loading the file mcl-nqthm-startup.lisp from the EVAL window.

Lispworks Note: To use Nqthm under Lispworks 3.2.0, execute the following immediately after loading "nqthm.lisp" to work around two problems.

(progn (shadow 'comment) (setf (svref ccl::funny-symbol-char-table (char-code #.)) t))

     FOR UNIX:  MAKING A SAVE IMAGE and TESTING VIA `make'

Nqthm-1992 is not tied to any particular operating system or Common Lisp implementation. However the creation of an executable Nqthm-1992 save image and the running of certain tests has been automated for Unix and for certain Lisp implementations. Instead of following the preceding simple compiling and loading commands, one can instead merely invoke make' under some versions of Unix and with some Lisps to do the compilation, save an executable Lisp image named nqthm-1992', and then test that image. Issue the single command

make LISP=xxx

where xxx' is the command to run your Lisp. lisp' is used for xxx' by default. This make' works only for GCL, Allegro, CMU, Lispworks, and Lucid Common Lisps. And it may only work on Sun Sparcs, for all we know about the portability of Unix makefile' code. See the file makefile for further details. If this make' command does not work for you, please use the simple installation commands above.

If the foregoing `make' command succeeds, then a longer test of the file examples/basic/proveall.events can be run with the command

make small-test

If that succeeds, and if you can afford to consume perhaps several days of cpu time and over a hundred megabytes of disk space, try

make giant-test

			   PROBLEMS

The installation guide chapter in the user's manual describes a number of potential installation problems and how to work around them.

			   EXAMPLES

See the file examples/README for details on how to run Nqthm-1992 on many examples. These examples briefly are described in Chapter 14 of the user's manual.

			    IMAGES

For information on executable binary images of Nqthm-1992 for a variety of computers, please fetch URL

ftp://ftp.cs.utexas.edu/pub/boyer/nqthm/nqthm-1992-images/README

                             MAILING LIST

There is a mailing list for discussion of Nqthm, [email protected]. To join, send an email message to [email protected]. The archive of this mailing group may be found at

ftp://ftp.cs.utexas.edu/pub/boyer/nqthm/nqthm-users-mail-archive

                  COMPUTATIONAL LOGIC, INC., R.I.P.

On August 1, 1997, the corporation Computational Logic, Inc. closed its doors. Although a web site for cli.com will continue to exist for a while, references in this Nqthm distribution to that corporation's addresses, both physical and Internet, are now obsolete. Much of the information that was available from ftp.cli.com is now available via ftp://dirleton.csres.utexas.edu and ftp://ftp.cs.utexas.edu/pub/boyer/. Questions about Nqthm-related matters should now be addressed to Boyer and Moore at the addresses below.

Bob Boyer J Moore [email protected] [email protected] http://www.cs.utexas.edu/users/boyer http://www.cs.utexas.edu/users/moore

August, 1997