| 1 | Dear User:
|
---|
| 2 |
|
---|
| 3 | This directory contains files which provide Grobner basis support for
|
---|
| 4 | the free computer algebra system Maxima. The older versions of the
|
---|
| 5 | package are distributed with Maxima in the subfolder of the Maxima
|
---|
| 6 | installation tree, like:
|
---|
| 7 |
|
---|
| 8 | maxima/5.xx.x/share/contrib/Grobner
|
---|
| 9 |
|
---|
| 10 | This version is meant to be a backward-compatible replacement for this
|
---|
| 11 | package. It features an implementation of the Faugere's F4 algorithm.
|
---|
| 12 |
|
---|
| 13 | == INSTALLATION INSTRUCTIONS ==
|
---|
| 14 |
|
---|
| 15 | In order to use the package,
|
---|
| 16 | 1. Copy the files in this directory to your favorite location;
|
---|
| 17 | or better, checkout the contents of this repository with SVN.
|
---|
| 18 | 2. Edit the file "grobner.mac" to modify the location of the Lisp
|
---|
| 19 | files, to reflect your choice made in previous step.
|
---|
| 20 | 3. Start your Maxima and load the file "grobner.mac"
|
---|
| 21 | 4. Optionally, compile the Lisp files, so that the next file
|
---|
| 22 | you load "grobner.mac", the compiled (.fasl) versions of
|
---|
| 23 | the files will be loaded. The compilation instructions
|
---|
| 24 | vary slightly depending on Lisp version.
|
---|
| 25 |
|
---|
| 26 | This version has been verified to work under this Maxima version:
|
---|
| 27 |
|
---|
| 28 | ----------------------------------------------------------------
|
---|
| 29 | Maxima 5.34.1 http://maxima.sourceforge.net
|
---|
| 30 | using Lisp SBCL 1.2.4-1.fc21
|
---|
| 31 | ----------------------------------------------------------------
|
---|
| 32 |
|
---|
| 33 | It should also be portable across other ANSI Common Lisp implementations.
|
---|
| 34 |
|
---|
| 35 | The file grobner.demo is a Macsyma-style demo file for most of the operations
|
---|
| 36 | provided by the package. In order to run it, go to the Maxima level and
|
---|
| 37 | type:
|
---|
| 38 |
|
---|
| 39 | demo("grobner.demo");
|
---|
| 40 |
|
---|
| 41 | or
|
---|
| 42 |
|
---|
| 43 | batch("grobner.demo");
|
---|
| 44 |
|
---|
| 45 | and watch the demonstration.
|
---|
| 46 |
|
---|
| 47 | Maxima documentation for this package has not been written yet, but
|
---|
| 48 | there is a sizable amount of documentation in the LISP source.
|
---|
| 49 |
|
---|
| 50 | == COMPILATION INSTRUCTIONS FOR SBCL ==
|
---|
| 51 |
|
---|
| 52 | === When using ASDF (preferred way):
|
---|
| 53 | ----------------------------------------------------------------
|
---|
| 54 | * (require :asdf)
|
---|
| 55 | * (load "ngrobner.asd")
|
---|
| 56 | * (asdf:install-system :ngrobner)
|
---|
| 57 | ----------------------------------------------------------------
|
---|
| 58 | The compiled files (extension .fasl for SBCL) will be typically
|
---|
| 59 | placed in a standard location determined by the ASDF configuration. On my system it is:
|
---|
| 60 | ----------------------------------------------------------------
|
---|
| 61 | /home/marek/.cache/common-lisp/sbcl-1.2.4-1.fc21-linux-x64/home/marek/Repos/MaximaGrobner/branches/f4grobner/
|
---|
| 62 | ----------------------------------------------------------------
|
---|
| 63 | given that the SVN repository was copied to /home/marek/Repos/MaximaGrobner.
|
---|
| 64 |
|
---|
| 65 | === When not using ASDF (for whatever reason):
|
---|
| 66 |
|
---|
| 67 | Step 1. Start SBCL in the directory which is a copy of this directory.
|
---|
| 68 | Step 2. Execute Lisp commands:
|
---|
| 69 | ----------------------------------------------------------------
|
---|
| 70 | * (load "compile-me.lisp")
|
---|
| 71 | ----------------------------------------------------------------
|
---|
| 72 |
|
---|
| 73 | The resulting compiled files (extension .fasl for SBCL) will end up in
|
---|
| 74 | the same folder as the Lisp files. Then can be moved any directory
|
---|
| 75 | where Maxima can find them, as determined by the variable
|
---|
| 76 | file_search_lisp. This variable needs to be modified in "grobner.mac"
|
---|
| 77 | accordingly. After that, every time you load "grobner.mac" the
|
---|
| 78 | compiled version will be used.
|
---|
| 79 |
|
---|
| 80 | == 5AM TESTS ==
|
---|
| 81 |
|
---|
| 82 | The system is set up for using the FiveAM unit testing framework.
|
---|
| 83 | One performs the tests by loading a single file:
|
---|
| 84 | ----------------------------------------------------------------
|
---|
| 85 | * (load "5am-tests")
|
---|
| 86 | ----------------------------------------------------------------
|
---|
| 87 | Note that this requires ASDF and QuickLisp being installed.
|
---|
| 88 |
|
---|
| 89 | NOTE: The coverage is still minimal. The number of tests
|
---|
| 90 | will increase over time.
|
---|
| 91 |
|
---|
| 92 | == TESTING WITH ORACLE APPROACH ==
|
---|
| 93 |
|
---|
| 94 | The alternative mechanism is enabled
|
---|
| 95 | by doing this *BEFORE* loading/compiling NGROBNER:
|
---|
| 96 | ----------------------------------------------------------------
|
---|
| 97 | * (push :grobner-check *features*)
|
---|
| 98 | ----------------------------------------------------------------
|
---|
| 99 | This will enable verification of every Grobner basis computed,
|
---|
| 100 | by performing Buchberger criterion, after the basis is computed.
|
---|
| 101 | This is an "oracle" testing, given that the portion of the code
|
---|
| 102 | required for verification of Groebner bases is correct. A significant
|
---|
| 103 | test involves loading the demonstration code, like:
|
---|
| 104 | ----------------------------------------------------------------
|
---|
| 105 | (%i1) batch("grobner.demo");
|
---|
| 106 | ----------------------------------------------------------------
|
---|
| 107 | The failure will result in a spectacular error message.
|
---|
| 108 | NOTE: For this to work (push :grobner-check *features*)
|
---|
| 109 | needed to be executed before loading/compiling Lisp code.
|
---|
| 110 |
|
---|
| 111 | == ADDITIONAL COMMENTS ==
|
---|
| 112 |
|
---|
| 113 | The files were derived the sources of a package CGBlisp, version 2,
|
---|
| 114 | also authored by me, which will eventually be released at my Web site
|
---|
| 115 | (see below). An older version of CGBlisp is available at the Web
|
---|
| 116 | site.
|
---|
| 117 |
|
---|
| 118 | == VIEWING DOCUMENTATION ==
|
---|
| 119 |
|
---|
| 120 | Various components of the system have significant documentation
|
---|
| 121 | attached. This can be browsed with tools such as DOCBROWSER or
|
---|
| 122 | MANIFEST. Both start a web server on a local port. A quick tutorial
|
---|
| 123 | on these tools: if you have Quicklisp, you can use this one-liner to
|
---|
| 124 | start MANIFEST:
|
---|
| 125 |
|
---|
| 126 | * (ql:quickload :manifest) (manifest:START)
|
---|
| 127 |
|
---|
| 128 | The port of MANIFEST server is printed.
|
---|
| 129 |
|
---|
| 130 | Or this one-liner to start DOCBROWSER on port 8084:
|
---|
| 131 |
|
---|
| 132 | * (ql:quickload :docbrowser) (docbrowser:start-docserver 8084)
|
---|
| 133 |
|
---|
| 134 | Enjoy.
|
---|
| 135 | --Marek Rychlik
|
---|
| 136 |
|
---|
| 137 | 5-24-2002
|
---|
| 138 | Revised: 1-25-2009
|
---|
| 139 | Revised: 1-25-2015
|
---|
| 140 |
|
---|
| 141 | E-mail: rychlik@u.arizona.edu
|
---|
| 142 | URL: http://marekrychlik.com
|
---|