[1] | 1 | # $Id: README,v 1.7 1997/11/30 19:33:01 marek Exp $
|
---|
| 2 |
|
---|
| 3 | From: rychlik@math.arizona.edu
|
---|
| 4 | ----------------------------------------------------------------
|
---|
| 5 | I. GENERAL REMARKS
|
---|
| 6 | ----------------------------------------------------------------
|
---|
| 7 | Dear User:
|
---|
| 8 |
|
---|
| 9 | This is an experimental Comprehensive Grobner Basis package.
|
---|
| 10 | In order to use the package you must be familiar with the lisp
|
---|
| 11 | syntax. The command language used is that of lisp. However,
|
---|
| 12 | in order to facilitate input and output, some limited facilities
|
---|
| 13 | for the customary infix notation are included. The documentation
|
---|
| 14 | of the Lisp code can be found in sets of automatically
|
---|
| 15 | generated manuals, in the following sub-directories:
|
---|
| 16 |
|
---|
| 17 | ./latex-doc - a LaTeX documentation
|
---|
| 18 | ./doc - pure text documentation
|
---|
| 19 |
|
---|
| 20 | The package has been tested under the following environments:
|
---|
| 21 | ----------------------------------------------------------------
|
---|
| 22 | 1. SUN SPARC/UNIX, AKCL (Austing Kyoto Common Lisp version 615 )
|
---|
| 23 | 2. Linux 1.2.13 + gcl 2.0
|
---|
| 24 | 3. Linux 2.0 + Allegro 4.3
|
---|
| 25 | ----------------------------------------------------------------
|
---|
| 26 | The current development environment is
|
---|
| 27 |
|
---|
| 28 | Linux 2.0 + Allegro Common Lisp v. 4.3
|
---|
| 29 |
|
---|
| 30 | If incompatibilities arise with other environments as a result
|
---|
| 31 | of new code being added, please let me know. In general, only
|
---|
| 32 | then I will try to fix the compatibility issues.
|
---|
| 33 | ----------------------------------------------------------------
|
---|
| 34 | II. THE MATHEMATICAL BACKGROUND
|
---|
| 35 | ----------------------------------------------------------------
|
---|
| 36 | For a definition of a Comprehensive Grobner Basis, see
|
---|
| 37 |
|
---|
| 38 | Volker Weispfenning, Comprehensive Groebner Bases,
|
---|
| 39 | Journal of Symbolic Computation
|
---|
| 40 | volume 14, 1992,
|
---|
| 41 | Pages 1-29
|
---|
| 42 |
|
---|
| 43 | That paper defines the basic notion of a Grobner System (the object that
|
---|
| 44 | is calculated by the current package). In the paper you will also find
|
---|
| 45 | a description of a software system which calculates Comprehensive Grobner
|
---|
| 46 | Bases. Our package initially grew out of frustration with that package,
|
---|
| 47 | however, we feel that in the process of writing thin new package we made
|
---|
| 48 | a number of substantial improvements to the original mathematical idea
|
---|
| 49 | of the Weispfenning's paper.
|
---|
| 50 |
|
---|
| 51 | William Dunn has written a dissertation which describes the ideas behind
|
---|
| 52 | the current package. It also contains an elaboration of the ideas of
|
---|
| 53 | Weispfenning. To obtain a copy, contact the author at
|
---|
| 54 | ................................................................
|
---|
| 55 | dunn@math.arizona.edu
|
---|
| 56 | ................................................................
|
---|
| 57 |
|
---|
| 58 | ----------------------------------------------------------------
|
---|
| 59 | II. HOW TO USE THE PACKAGE?
|
---|
| 60 | ----------------------------------------------------------------
|
---|
| 61 |
|
---|
| 62 | The basic operation of the package consists in typing commands at the
|
---|
| 63 | Lisp prompt:
|
---|
| 64 | Example: The basic example of the theory is the following
|
---|
| 65 | ----------------------------------------------------------------
|
---|
| 66 | >(STRING-GROBNER-SYSTEM "[x+y,x+u*y]" '(X Y) '(U))
|
---|
| 67 | ------------------- CASE 1 -------------------
|
---|
| 68 | Condition:
|
---|
| 69 | Green list: [ ]
|
---|
| 70 | Red list: [ U - 1 ]
|
---|
| 71 | Basis: [ (U - 1) * X, ( - U + 1) * Y ]
|
---|
| 72 | ------------------- CASE 2 -------------------
|
---|
| 73 | Condition:
|
---|
| 74 | Green list: [ U - 1 ]
|
---|
| 75 | Red list: [ ]
|
---|
| 76 | Basis: [ (1) * X + (1) * Y ]
|
---|
| 77 | ----------------------------------------------------------------
|
---|
| 78 | This example calculates the Grobner System corresponding to the
|
---|
| 79 | ideal [x+y,x+u*y] in k[u][x,y], where u is a parameter. The output
|
---|
| 80 | consists of a number of CASES. The cases correspond to distinct elements
|
---|
| 81 | of the partition of the parameter space. The "Green List" is a list of
|
---|
| 82 | polynomial in parameters that are 0 on a given chunk of the parameter space,
|
---|
| 83 | while "Red List" is a list of polynomials which are different from 0.
|
---|
| 84 | Thus, CASE 1 corresponds to those parameters for which u is not 1,
|
---|
| 85 | while CASE 2 corresponds to u=1. The "Basis" part lists a plain Grobner Basis
|
---|
| 86 | of the ideal in k[x,y] obtained by specializing the parameter u in such
|
---|
| 87 | a way that the restriction imposed by the corresponding Green List and Red
|
---|
| 88 | List are satisfied.
|
---|
| 89 |
|
---|
| 90 | The ideal specification is given as string "[x+y,x+u*y]". As a rule, when
|
---|
| 91 | we have a command in our package which starts with a prefix string-... then
|
---|
| 92 | one or more of the arguments are going to have a form of a string. This string
|
---|
| 93 | is immediately parsed from infix notation to internal form and then typically
|
---|
| 94 | a corresponding command without the prefix string-... is called to perform the
|
---|
| 95 | calculation on internal representation. Most of the string commands provide
|
---|
| 96 | a keyword argument :suppress-value which is by default set to T, but if it
|
---|
| 97 | is set to NIL, the corresponding internal form of the answer is returned.
|
---|
| 98 |
|
---|
| 99 | The ./tests subdirectory of the distribution directory contains
|
---|
| 100 | several files which can be used as examples of problem formulation
|
---|
| 101 | in the form acceptable to cgb-lisp
|
---|
| 102 |
|
---|
| 103 | For more examples, see the files colored-poly-tests.lisp and
|
---|
| 104 | colored-poly-tests.output. These files are used by me to test the
|
---|
| 105 | operation of the primary commands of the package.
|
---|
| 106 | ----------------------------------------------------------------
|
---|
| 107 | IV. INSTALLATION
|
---|
| 108 | ----------------------------------------------------------------
|
---|
| 109 | First make an empty directory of your choice, say /usr/local/CGBlisp.
|
---|
| 110 | The following instructions require a modification if you install
|
---|
| 111 | in a different directory.
|
---|
| 112 |
|
---|
| 113 | 0. Copy the tared and compressed source (cgb.tar.gz) into /usr/local/CGBlisp
|
---|
| 114 | Unpack the files:
|
---|
| 115 |
|
---|
| 116 | % zcat cgb.tar.gz | tar xvf -
|
---|
| 117 | 1. Change working directory to /usr/local/CGBlisp/src.
|
---|
| 118 |
|
---|
| 119 | 2. Start your Common Lisp in the src directory and do
|
---|
| 120 | > (load "defsystem.lisp")
|
---|
| 121 | > (in-package :make-cgb)
|
---|
| 122 | Then do
|
---|
| 123 | MAKE-CGB> (cgb-load)
|
---|
| 124 | to get an interpreted version of the package (slow!) or
|
---|
| 125 | make a compiled version with
|
---|
| 126 | MAKE-CGB> (cgb-compile-and-load)
|
---|
| 127 | If you want, you may create a custom binary by dumping
|
---|
| 128 | core and making it executable, in a fashion depending on your
|
---|
| 129 | lisp system. For instance, kcl/gcl uses
|
---|
| 130 | MAKE-CGB> (cgb-save "fileOfYourChoice")
|
---|
| 131 | and Allegro Common Lisp uses
|
---|
| 132 | MAKE-CGB> (dumplisp :name "fileofyourchoice")
|
---|
| 133 | If you do not create the custom binary, each time you start
|
---|
| 134 | your Lisp, you will need to repeat the first two steps, i.e.
|
---|
| 135 |
|
---|
| 136 | > (load "defsystem.lisp")
|
---|
| 137 | > (make-cgb::cgb-load)
|
---|
| 138 | > (in-package :cgb-lisp)
|
---|
| 139 | to get either an interpreted or compiled version of the package.
|
---|
| 140 |
|
---|
| 141 | NOTE: Some lisps use .lisp as extension of Lisp source code and others
|
---|
| 142 | .lsp, and perhaps others. You will need to rename and edit all files
|
---|
| 143 | if the extension .lisp is not accepted.
|
---|
| 144 |
|
---|
| 145 | Yet another compatibility issue may arise from the fact that this
|
---|
| 146 | package was developed before the ANSI standard was finalized. Thus,
|
---|
| 147 | compatibility issues arise, for instance with the current version of
|
---|
| 148 | Allegro Common Lisp because the package uses the "Cltl1" conventions
|
---|
| 149 | (the book of Guy Steele which was a de facto Common Lisp definition in
|
---|
| 150 | the 80's). The incompatibilities for Allegro were resolved in
|
---|
| 151 | defsystem.lisp by setting some Allegro switches which turn on "Cltl1"
|
---|
| 152 | conventions for package loading and compilation. You may need to
|
---|
| 153 | adapt the same strategy with other lisps, or rewrite the top of each
|
---|
| 154 | file to observe the new ANSI standard.
|
---|
| 155 |
|
---|
| 156 | ----------------------------------------------------------------
|
---|
| 157 | V. FINAL REMARKS
|
---|
| 158 | ----------------------------------------------------------------
|
---|
| 159 | Please send your comments to me, and I will try to improve your package
|
---|
| 160 | according to your suggestions.
|
---|
| 161 |
|
---|
| 162 | Enjoy,
|
---|
| 163 |
|
---|
| 164 | --Marek Rychlik (rychlik@math.arizona.edu)
|
---|
| 165 |
|
---|
| 166 |
|
---|