[7] | 1 | Dear User:
|
---|
| 2 |
|
---|
[340] | 3 | This archive 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:
|
---|
[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 |
|
---|
| 118 | Enjoy.
|
---|
| 119 | --Marek Rychlik
|
---|
| 120 |
|
---|
| 121 | 5-24-2002
|
---|
| 122 | Revised: 1-25-2009
|
---|
[316] | 123 | Revised: 1-25-2015
|
---|
[7] | 124 |
|
---|
| 125 | E-mail: rychlik@u.arizona.edu
|
---|
[317] | 126 | URL: http://marekrychlik.com
|
---|