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
|
---|