1 | head 1.1;
|
---|
2 | access;
|
---|
3 | symbols;
|
---|
4 | locks; strict;
|
---|
5 | comment @;;; @;
|
---|
6 |
|
---|
7 |
|
---|
8 | 1.1
|
---|
9 | date 2009.01.19.18.19.51; author marek; state Exp;
|
---|
10 | branches;
|
---|
11 | next ;
|
---|
12 |
|
---|
13 |
|
---|
14 | desc
|
---|
15 | @@
|
---|
16 |
|
---|
17 |
|
---|
18 | 1.1
|
---|
19 | log
|
---|
20 | @Initial revision
|
---|
21 | @
|
---|
22 | text
|
---|
23 | @#|
|
---|
24 | SccsId="@@(#)tests.lisp, version 1.7 of 5/14/94(11:23:03)
|
---|
25 | *--------------------------------------------------------------------------*
|
---|
26 | | Copyright (C) 1994, Marek Rychlik (e-mail: rychlik@@math.arizona.edu) |
|
---|
27 | | Department of Mathematics, University of Arizona, Tucson, AZ 85721 |
|
---|
28 | | |
|
---|
29 | | Everyone is permitted to copy, distribute and modify the code in this |
|
---|
30 | | directory, as long as this copyright note is preserved verbatim. |
|
---|
31 | *--------------------------------------------------------------------------*
|
---|
32 | |#
|
---|
33 |
|
---|
34 | ;;(load "grobner-front-end")
|
---|
35 |
|
---|
36 | (defun run (test)
|
---|
37 | (format t "Test ~a ~:[failed~;succeeded~]...~%" test (time (funcall test))))
|
---|
38 |
|
---|
39 | (defun test-1 ()
|
---|
40 | (let* ((vars '(x y)))
|
---|
41 | (equalp
|
---|
42 | (mapcar #'(lambda (pred)
|
---|
43 | (let* ((f (poly "4*x^2-3*x*y" vars pred))
|
---|
44 | (g (poly "4*x+5*y" vars pred)))
|
---|
45 | (spoly f g pred)))
|
---|
46 | (list #'lex> #'grlex> #'grevlex>))
|
---|
47 | (list
|
---|
48 | (poly "-32*x*y" vars #'lex>)
|
---|
49 | (poly "-32*x*y" vars #'grlex>)
|
---|
50 | (poly "-32*x*y" vars #'grevlex>)))))
|
---|
51 |
|
---|
52 | (defun test-2 ()
|
---|
53 | (let* ((vars '(x y z)))
|
---|
54 | (equalp
|
---|
55 | (mapcar #'(lambda (pred)
|
---|
56 | (let* ((f (poly "4*x^5-3*x*y-z^2" vars pred))
|
---|
57 | (g (poly-list "[4*x^3+5*y+z^2,y^2+z]" vars pred)))
|
---|
58 | (normal-form f g pred)))
|
---|
59 | (list #'lex> #'grlex> #'grevlex>))
|
---|
60 | (list
|
---|
61 | (poly "-5*x^2*y-x^2*z^2-3*x*y-z^2" vars #'lex>)
|
---|
62 | (poly "-X^2*Z^2-5*X^2*Y-3*X*Y-Z^2" vars #'grlex>)
|
---|
63 | (poly "-X^2*Z^2-5*X^2*Y-3*X*Y-Z^2" vars #'grevlex>)))))
|
---|
64 |
|
---|
65 |
|
---|
66 | ;; Find the equation of the Enneper surface
|
---|
67 | (defun test-3 ()
|
---|
68 | (let* ((vars '(u v x y z))
|
---|
69 | (eqns (poly-list
|
---|
70 | "[x-3*u-3*u*v^2+u^3,y-3*v-3*u^2*v+v^3,z-3*u^2+3*v^2]"
|
---|
71 | vars))
|
---|
72 | (ans (poly-list
|
---|
73 | "[X^6 - 3 * X^4 * Y^2 + 5/9 * X^4 * Z^3 + 6 * X^4 * Z^2 - 3 *
|
---|
74 | X^4 * Z + 3 * X^2 * Y^4 + 26/9 * X^2 * Y^2 * Z^3 + 6 * X^2 *
|
---|
75 | Y^2 * Z + 16/243 * X^2 * Z^6 + 16/9 * X^2 * Z^5 + 80/9 * X^2 *
|
---|
76 | Z^4 - 16 * X^2 * Z^3 - Y^6 + 5/9 * Y^4 * Z^3 - 6 * Y^4 * Z^2 -
|
---|
77 | 3 * Y^4 * Z - 16/243 * Y^2 * Z^6 + 16/9 * Y^2 * Z^5 - 80/9 *
|
---|
78 | Y^2 * Z^4 - 16 * Y^2 * Z^3 - 64/19683 * Z^9 + 128/243 * Z^7 -
|
---|
79 | 64/3 * Z^5]"
|
---|
80 | vars)))
|
---|
81 | (set-coefficient-ring nil) ;char=0
|
---|
82 | (equalp (elimination-ideal eqns 2) ans)))
|
---|
83 |
|
---|
84 | (defun test-4 ()
|
---|
85 | (let* ((vars '(x y))
|
---|
86 | (id1 (poly-list "[x-y^2,y^2*x]" vars))
|
---|
87 | (id2 (poly-list "[x^2-x*y^2,y^2]" vars))
|
---|
88 | (ans (poly-list "[x^2,y^4,x*y^2]" vars)))
|
---|
89 | (equalp (ideal-intersection id1 id2) ans)))
|
---|
90 |
|
---|
91 | (defun test-5 ()
|
---|
92 | (let* ((vars '(x y z))
|
---|
93 | (f (poly-list "[x^5+y^4+z^3-1, x^3+y^2+z^2-1]" vars))
|
---|
94 | (ans (poly-list
|
---|
95 | "[ X^2 * Z^4 + X^2 * Z^3 - 2 * X^2 * Z^2 - 1/6 * X * Z^10 - 2/3
|
---|
96 | * X * Z^9 - 1/4 * X * Z^8 + 7/6 * X * Z^7 - 1/12 * X * Z^6 - X
|
---|
97 | * Z^5 + X * Z^4 + 1/2 * Y^10 * Z^2 + 1/3 * Y^10 * Z - 5/12 *
|
---|
98 | Y^10 - 1/6 * Y^8 * Z^4 + 1/3 * Y^8 * Z^3 + 1/4 * Y^8 * Z^2 +
|
---|
99 | 1/2 * Y^8 + Y^6 * Z^5 - 5/3 * Y^6 * Z^4 - 17/6 * Y^6 * Z^3 +
|
---|
100 | 17/6 * Y^6 * Z^2 + 2/3 * Y^6 * Z - 1/3 * Y^6 - 1/3 * Y^4 * Z^7
|
---|
101 | - 7/2 * Y^4 * Z^6 - 3 * Y^4 * Z^5 + 131/12 * Y^4 * Z^4 + 23/4 *
|
---|
102 | Y^4 * Z^3 - 13 * Y^4 * Z^2 - 8/3 * Y^4 * Z + 29/6 * Y^4 - 17/6
|
---|
103 | * Y^2 * Z^8 - 4 * Y^2 * Z^7 + 119/12 * Y^2 * Z^6 + 17/2 * Y^2 *
|
---|
104 | Z^5 - 16 * Y^2 * Z^4 - 14/3 * Y^2 * Z^3 + 12 * Y^2 * Z^2 + 5/3
|
---|
105 | * Y^2 * Z - 55/12 * Y^2 - 7/6 * Z^10 - 7/6 * Z^9 + 55/12 * Z^8
|
---|
106 | + 21/4 * Z^7 - 31/4 * Z^6 - 15/2 * Z^5 + 83/12 * Z^4 + 41/12 *
|
---|
107 | Z^3 - 31/12 * Z^2, X * Y^2 * Z - X * Y^2 - 1/8 * X * Z^10 -
|
---|
108 | 7/24 * X * Z^9 + 1/2 * X * Z^8 + 7/8 * X * Z^7 - 23/24 * X *
|
---|
109 | Z^6 + 1/2 * X * Z^4 - 1/2 * X * Z^3 - X * Z + X + 3/8 * Y^10 *
|
---|
110 | Z^2 - 3/8 * Y^10 * Z - 7/24 * Y^10 - 1/8 * Y^8 * Z^4 + 11/24 *
|
---|
111 | Y^8 * Z^3 - 3/8 * Y^8 * Z^2 + 1/4 * Y^8 * Z - 1/4 * Y^8 + 3/4 *
|
---|
112 | Y^6 * Z^5 - 5/2 * Y^6 * Z^4 + 5/6 * Y^6 * Z^3 + 31/12 * Y^6 *
|
---|
113 | Z^2 - Y^6 * Z - 1/3 * Y^6 - 1/4 * Y^4 * Z^7 - 53/24 * Y^4 * Z^6
|
---|
114 | + 11/6 * Y^4 * Z^5 + 113/12 * Y^4 * Z^4 - 55/8 * Y^4 * Z^3 -
|
---|
115 | 29/4 * Y^4 * Z^2 + 15/4 * Y^4 * Z + 19/12 * Y^4 - 17/8 * Y^2 *
|
---|
116 | Z^8 + 13/24 * Y^2 * Z^7 + 239/24 * Y^2 * Z^6 - 59/12 * Y^2 *
|
---|
117 | Z^5 - 151/12 * Y^2 * Z^4 + 85/12 * Y^2 * Z^3 + 43/8 * Y^2 * Z^2
|
---|
118 | - 29/8 * Y^2 * Z + 7/24 * Y^2 - 7/8 * Z^10 + 7/12 * Z^9 + 31/8
|
---|
119 | * Z^8 - 11/12 * Z^7 - 103/12 * Z^6 + 17/6 * Z^5 + 127/24 * Z^4
|
---|
120 | - 3/2 * Z^3 - 17/24 * Z^2 + Z - 1, X * Z^11 + 4 * X * Z^10 + X
|
---|
121 | * Z^9 - 10 * X * Z^8 - 4 * X * Z^7 + 8 * X * Z^6 - 3 * Y^10 *
|
---|
122 | Z^3 - 2 * Y^10 * Z^2 + 4 * Y^10 * Z + 4 * Y^10 + Y^8 * Z^5 - 2
|
---|
123 | * Y^8 * Z^4 - 2 * Y^8 * Z^3 - 6 * Y^6 * Z^6 + 10 * Y^6 * Z^5 +
|
---|
124 | 20 * Y^6 * Z^4 - 16 * Y^6 * Z^3 - 24 * Y^6 * Z^2 + 8 * Y^6 * Z
|
---|
125 | + 8 * Y^6 + 2 * Y^4 * Z^8 + 21 * Y^4 * Z^7 + 17 * Y^4 * Z^6 -
|
---|
126 | 78 * Y^4 * Z^5 - 64 * Y^4 * Z^4 + 90 * Y^4 * Z^3 + 76 * Y^4 *
|
---|
127 | Z^2 - 32 * Y^4 * Z - 32 * Y^4 + 17 * Y^2 * Z^9 + 24 * Y^2 * Z^8
|
---|
128 | - 68 * Y^2 * Z^7 - 80 * Y^2 * Z^6 + 106 * Y^2 * Z^5 + 108 * Y^2
|
---|
129 | * Z^4 - 77 * Y^2 * Z^3 - 70 * Y^2 * Z^2 + 20 * Y^2 * Z + 20 *
|
---|
130 | Y^2 + 7 * Z^11 + 7 * Z^10 - 31 * Z^9 - 42 * Z^8 + 55 * Z^7 + 77
|
---|
131 | * Z^6 - 39 * Z^5 - 62 * Z^4 + 8 * Z^3 + 20 * Z^2, Y^12 - Y^10 +
|
---|
132 | 3 * Y^8 * Z^3 - 5 * Y^8 * Z^2 + 2 * Y^8 - 10 * Y^6 * Z^4 + 20 *
|
---|
133 | Y^6 * Z^2 - 10 * Y^6 - 7 * Y^4 * Z^6 + 30 * Y^4 * Z^4 - 6 * Y^4
|
---|
134 | * Z^3 - 30 * Y^4 * Z^2 + 13 * Y^4 - 5 * Y^2 * Z^8 + 20 * Y^2 *
|
---|
135 | Z^6 - 30 * Y^2 * Z^4 + 20 * Y^2 * Z^2 - 5 * Y^2 - Z^10 + Z^9 +
|
---|
136 | 5 * Z^8 - 13 * Z^6 + 10 * Z^4 + 3 * Z^3 - 5 * Z^2, X * Y^4 + X
|
---|
137 | * Z^3 - X + Y^4 + 2 * Y^2 * Z^2 - 2 * Y^2 + Z^4 - 2 * Z^2 + 1,
|
---|
138 | X^2 * Y^2 + X^2 * Z^2 - X^2 - Y^4 - Z^3 + 1, X^3 + Y^2 + Z^2 -
|
---|
139 | 1 ]" vars)))
|
---|
140 | (equalp (grobner f :reduce t) ans)))
|
---|
141 |
|
---|
142 | (defun test-6 ()
|
---|
143 | (let* ((vars '(x y z))
|
---|
144 | (f (poly-list "[x^5+y^4+z^3-1,x^3+y^3+z^2-1]" vars))
|
---|
145 | (ans (poly-list "[x]" vars))) ;unknown yet
|
---|
146 | (equalp (grobner f :reduce t) ans)))
|
---|
147 |
|
---|
148 | ;;----------------------------------------------------------------
|
---|
149 |
|
---|
150 | (defun run-short-tests ()
|
---|
151 | (dolist (test '(test-1 test-2 test-4))
|
---|
152 | (run test)))
|
---|
153 |
|
---|
154 | (defun run-long-tests ()
|
---|
155 | (dolist (test '(test-3 test-5))
|
---|
156 | (run test)))
|
---|
157 |
|
---|
158 | @
|
---|