| [7] | 1 | Dear User:
 | 
|---|
 | 2 | 
 | 
|---|
| [1621] | 3 | This directory contains files which provide Grobner basis support for
 | 
|---|
| [340] | 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:
 | 
|---|
| [338] | 7 | 
 | 
|---|
| [340] | 8 | maxima/5.xx.x/share/contrib/Grobner
 | 
|---|
 | 9 | 
 | 
|---|
 | 10 | This version is meant to be a backward-compatible replacement for this
 | 
|---|
| [341] | 11 | package. It features an implementation of the Faugere's F4 algorithm.
 | 
|---|
| [340] | 12 | 
 | 
|---|
| [338] | 13 | == INSTALLATION INSTRUCTIONS ==
 | 
|---|
 | 14 | 
 | 
|---|
 | 15 | In order to use the package, 
 | 
|---|
| [318] | 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
 | 
|---|
| [320] | 23 |     the files will be loaded. The compilation instructions
 | 
|---|
 | 24 |     vary slightly depending on Lisp version.
 | 
|---|
| [7] | 25 | 
 | 
|---|
| [318] | 26 | This version has been verified to work under this Maxima version:
 | 
|---|
| [328] | 27 | 
 | 
|---|
| [318] | 28 | ----------------------------------------------------------------
 | 
|---|
 | 29 | Maxima 5.34.1 http://maxima.sourceforge.net
 | 
|---|
 | 30 | using Lisp SBCL 1.2.4-1.fc21
 | 
|---|
 | 31 | ----------------------------------------------------------------
 | 
|---|
| [7] | 32 | 
 | 
|---|
| [9] | 33 | It should also be portable across other ANSI Common Lisp implementations.
 | 
|---|
| [8] | 34 | 
 | 
|---|
| [7] | 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 | 
 | 
|---|
| [330] | 50 | == COMPILATION INSTRUCTIONS FOR SBCL ==
 | 
|---|
| [7] | 51 | 
 | 
|---|
| [336] | 52 | === When using ASDF (preferred way):
 | 
|---|
| [321] | 53 | ----------------------------------------------------------------
 | 
|---|
| [361] | 54 | * (require :asdf)
 | 
|---|
 | 55 | * (load "ngrobner.asd")
 | 
|---|
 | 56 | * (asdf:install-system :ngrobner)
 | 
|---|
| [321] | 57 | ----------------------------------------------------------------
 | 
|---|
| [334] | 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.
 | 
|---|
| [320] | 64 | 
 | 
|---|
| [334] | 65 | === When not using ASDF (for whatever reason):
 | 
|---|
 | 66 | 
 | 
|---|
| [332] | 67 | Step 1. Start SBCL in the directory which is a copy of this directory.
 | 
|---|
 | 68 | Step 2. Execute Lisp commands:
 | 
|---|
| [329] | 69 | ----------------------------------------------------------------
 | 
|---|
| [550] | 70 | * (load "compile-me.lisp")
 | 
|---|
| [329] | 71 | ----------------------------------------------------------------
 | 
|---|
| [320] | 72 | 
 | 
|---|
| [335] | 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 | 
 | 
|---|
| [358] | 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 | ----------------------------------------------------------------
 | 
|---|
| [360] | 87 | Note that this requires ASDF and QuickLisp being installed.
 | 
|---|
| [358] | 88 | 
 | 
|---|
| [362] | 89 | NOTE: The coverage is still minimal. The number of tests
 | 
|---|
| [365] | 90 | will increase over time. 
 | 
|---|
 | 91 | 
 | 
|---|
 | 92 | == TESTING WITH ORACLE APPROACH ==
 | 
|---|
 | 93 | 
 | 
|---|
 | 94 | The alternative mechanism is enabled
 | 
|---|
| [363] | 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
 | 
|---|
| [366] | 102 | required for verification of Groebner bases is correct. A significant
 | 
|---|
| [364] | 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.
 | 
|---|
| [366] | 108 | NOTE: For this to work (push :grobner-check *features*)
 | 
|---|
 | 109 | needed to be executed before loading/compiling Lisp code.
 | 
|---|
| [362] | 110 | 
 | 
|---|
| [330] | 111 | == ADDITIONAL COMMENTS ==
 | 
|---|
 | 112 | 
 | 
|---|
| [319] | 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.
 | 
|---|
| [7] | 117 | 
 | 
|---|
| [1592] | 118 | == VIEWING DOCUMENTATION ==
 | 
|---|
 | 119 | 
 | 
|---|
| [1593] | 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:
 | 
|---|
| [1592] | 125 | 
 | 
|---|
 | 126 | * (ql:quickload :manifest) (manifest:START)
 | 
|---|
 | 127 | 
 | 
|---|
| [1593] | 128 | The port of MANIFEST server is printed.
 | 
|---|
| [1592] | 129 | 
 | 
|---|
| [1593] | 130 | Or this one-liner to start DOCBROWSER on port 8084:
 | 
|---|
 | 131 | 
 | 
|---|
| [1592] | 132 | * (ql:quickload :docbrowser) (docbrowser:start-docserver 8084)
 | 
|---|
 | 133 | 
 | 
|---|
| [7] | 134 | Enjoy.
 | 
|---|
 | 135 | --Marek Rychlik
 | 
|---|
 | 136 | 
 | 
|---|
 | 137 | 5-24-2002
 | 
|---|
 | 138 | Revised: 1-25-2009
 | 
|---|
| [316] | 139 | Revised: 1-25-2015
 | 
|---|
| [7] | 140 | 
 | 
|---|
 | 141 | E-mail: rychlik@u.arizona.edu
 | 
|---|
| [317] | 142 | URL: http://marekrychlik.com
 | 
|---|