Posts tagged ‘commutative algebra’
Computing Gröbner bases in Haskell
I wrote a small package to compute Gröbner bases in Haskell with the Buchberger algorithm (with applications to variable elimination). Performance is quite bad compared to specialised software like Macaulay, but it seems to work ! I put a Cabal package here. Maybe I’ll add several functions afterwards.
A testcase :
import Data.Polynomial
import Data.Ring
import Algebra.GroebnerBasis
import Algebra.Elimination
type R = Polynom QQ VarXYZ
[x,y,z,t,u,v] = map returnp [X,Y,Z,T,U,V] :: [R]
-- projection from a point on the intersection of quadrics
main = do
print $ step_eliminate [T] $ MakeIdeal
[x^2 - 3*y*z + z*t + 2*x*t,
z^2 + 5*y^2 + z*x - 2*t*z]
The output should be :
[x*y^2+2/5*x^2*z+1/2*y^2*z+3/10*x*z^2+-3/5*y*z^2+1/10*z^3]
Experimental algebraic geometry I : the grassmannian
I just began playing with Macaulay 2 to see how it could help doing algebraic geometry without manual tedious computations. Let’s try with the grassmannian: fortunately, the program comes with lots of pre-written functions, including the generation of Grassmanians.
Macaulay provides a command-line interface using the readline library (like many other command-line programs) : here is what input/output looks like
i1 : V = Grassmannian(1,3)
o1 = ideal(p p - p p + p p )
1,2 0,3 0,2 1,3 0,1 2,3
o1 : Ideal of ZZ[p , p , p , p , p , p ]
0,1 0,2 1,2 0,3 1,3 2,3
When I type a command at i1, I get an output o1 with a value and a type: this output is an ideal of the ring
. Many features of the Grassmannian as an algebraic variety are available: first define
i1 : V = Grassmannian(1,3,CoefficientRing => QQ);
o1 : Ideal of QQ[p , p , p , p , p , p ]
0,1 0,2 1,2 0,3 1,3 2,3
i2 : X = Proj(ring V / V)
o2 = X
o2 : ProjectiveVariety
the projective variety X over defined by the homogeneous ideal V : here
ring V denotes the ambient ring of V. We see that is a non-singular quadric in 5-dimensional projective space, and check several well-known facts (more…)
Recent Comments