#47 closed proposed feature (fixed)
Suggestion for an extension of std's functionality
Reported by: | dreyer | Owned by: | hannes |
---|---|---|---|
Priority: | trivial | Milestone: | Release 3-1-0 |
Component: | dontKnow | Version: | |
Keywords: | Cc: | king@… |
Description
From Simon King (Uni Jena):
Up to now, the input of std can be:
std(I)
, I an idealstd(I,hv)
, I a homogeneous ideal, hv == hilb(std(I),1)std(I,hv,rw)
, as in 2., but with degree vector rw- {{std(G,p)}}}, G a standard basis, p an additional polynomial (or ideal)
I would like to combine 3. and 4., hence:
std(G,p,hv,rw)
, G standard basis of a homogeneous ideal, p a homogeneous polynomial, hv == hilb(std(G+p),1,rw) --> Output: Standard basis of G+p
An example is below.
In my application, I frequently have a situation in which 5. would be very useful.
Michael showed me that in principle the functionality is present, but a wrapper was missing, and he introduced me to iparith.cc. That enabled me to implement it.
Here I'd just like to ask whether other people agree that the suggested extension of std would be nice to have. It seems that in my applications it improves the computation time, but I have to have a closer look on it.
I'll send my version of iparith.cc to Hans in a separate mail (I guess not everybody on the list wants to receive a long attachment).
Best regards,
Simon
Example
> option(redSB); > ring R = 0, (x,y,z,@t),(dp(3),wp(2));} > poly f = x2+yz;} > ideal id = z3+x3,yz2+x2y,y2z+x2z,y3+xy2,xz2+xyz; > id = std(id); > ideal id_f = id,f-@t; > ideal G1=std(id_f); > ideal G2=std(id,f-@t);
Now the Hilbert functions comes in play. Remark: In my application the
Hilbert function is very easy to obtain, I can compute it *without*
knowing G1
.
> intvec hv = hilb(G1,1,intvec(1,1,1,2)); > ideal G3 = std(id_f,hv,intvec(1,1,1,2)); > ideal G4 = std(id,f-@t,hv,intvec(1,1,1,2));
Comparison
> matrix(G1) == matrix(G2); 1 > matrix(G1) == matrix(G3); 1 > matrix(G1) == matrix(G4); 1
Application:
G1 helps to compute the intersection of id with (f).
Consider all generators of G1 which are divisible by @t, and replace @t with f:
> G4; G4[1]=@t^3 G4[2]=z*@t^2 G4[3]=y*@t+z*@t G4[4]=x*@t^2 G4[5]=z^2*@t+@t^2 G4[6]=x*z*@t+@t^2 G4[7]=x^2+y*z-@t G4[8]=x*z^2+z^3+x*@t G4[9]=y^2*z-y*z^2+z*@t G4[10]=x*y*z-z^3-x*@t G4[11]=x*y^2+y^3 G4[12]=2*z^4-@t^2 G4[13]=2*y*z^3+@t^2 G4[14]=2*y^4+@t^2
Hence, the intersection should be:
> interred(ideal(f^3,z*f^2,y*f+z*f,x*f^2,z^2*f+f^2,x*z*f+f^2)); _[1]=x^2*y+x^2*z+y^2*z+y*z^2 _[2]=x^3*z-x^2*z^2+x*y*z^2-y*z^3 _[3]=x^4-x^2*z^2-y^2*z^2-y*z^3 _[4]=x^2*z^3+y*z^4
Yes, it is!
> interred(intersect(id,f)); _[1]=x^2*y+x^2*z+y^2*z+y*z^2 _[2]=x^3*z-x^2*z^2+x*y*z^2-y*z^3 _[3]=x^4-x^2*z^2-y^2*z^2-y*z^3 _[4]=x^2*z^3+y*z^4
Change History (5)
comment:1 Changed 14 years ago by
Cc: | king@… added |
---|
comment:2 Changed 14 years ago by
Owner: | changed from somebody to hannes |
---|---|
Priority: | minor → trivial |
comment:3 Changed 14 years ago by
comment:4 Changed 14 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
is now included (inlusive description and fix).
comment:5 Changed 14 years ago by
Milestone: | → Release 3-1-0 |
---|
I wonder why this ticket got the assignment 'trivial'.
iparith.cc
. As I announced in my original message to singular-team (upon which this ticket is based), I sent my version ofiparith.cc
to Hannes (this was a few months ago and was based on the cvs version at that time).About usability
I implemented this functionality since it actually helped me in my applications.
If the user has background information (e.g., the Hilbert series or a partial Gröbner basis) that makes a Gröbner basis computation easier then Singular should clearly be able to use as much of this information as possible!
Currently, Singular is able to use only one of the two informations (either Hilbert series or partial Gröbner basis). But is there any reason why it should not use both informations at the same time??
Best regards