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