A module providing an efficient implementation of the Buchberger algorithm for calculating the (reduced) Groebner basis for an ideal, together with some straightforward applications.
- gb :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => [Vect k m] -> [Vect k m]
- memberI :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => Vect k m -> [Vect k m] -> Bool
- sumI :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => [Vect k m] -> [Vect k m] -> [Vect k m]
- productI :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => [Vect k m] -> [Vect k m] -> [Vect k m]
- intersectI :: (Fractional k, Ord k, Monomial m, Ord m) => [Vect k m] -> [Vect k m] -> [Vect k m]
- quotientI :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => [Vect k m] -> [Vect k m] -> [Vect k m]
Documentation
gb :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => [Vect k m] -> [Vect k m]Source
Given a list of polynomials over a field, return a Groebner basis for the ideal generated by the polynomials.
memberI :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => Vect k m -> [Vect k m] -> BoolSource
memberI f gs
returns whether f is in the ideal generated by gs
sumI :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => [Vect k m] -> [Vect k m] -> [Vect k m]Source
Given ideals I and J, their sum is defined as I+J = {f+g | f <- I, g <- J}.
If fs and gs are generators for I and J, then sumI fs gs
returns generators for I+J.
The geometric interpretation is that the variety of the sum is the intersection of the varieties, ie V(I+J) = V(I) intersect V(J)
productI :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => [Vect k m] -> [Vect k m] -> [Vect k m]Source
Given ideals I and J, their product I.J is the ideal generated by all products {f.g | f <- I, g <- J}.
If fs and gs are generators for I and J, then productI fs gs
returns generators for I.J.
The geometric interpretation is that the variety of the product is the union of the varieties, ie V(I.J) = V(I) union V(J)
intersectI :: (Fractional k, Ord k, Monomial m, Ord m) => [Vect k m] -> [Vect k m] -> [Vect k m]Source
The intersection of ideals I and J is the set of all polynomials which belong to both I and J.
If fs and gs are generators for I and J, then intersectI fs gs
returns generators for the intersection of I and J
The geometric interpretation is that the variety of the intersection is the union of the varieties, ie V(I intersect J) = V(I) union V(J).
The reason for prefering the intersection over the product is that the intersection of radical ideals is radical, whereas the product need not be.
quotientI :: (Fractional k, Ord k, Monomial m, Ord m, Algebra k m) => [Vect k m] -> [Vect k m] -> [Vect k m]Source
Given ideals I and J, their quotient is defined as I:J = {f | f <- R, f.g is in I for all g in J}.
If fs and gs are generators for I and J, then quotientI fs gs
returns generators for I:J.
The ideal quotient is the algebraic analogue of the Zariski closure of a difference of varieties. V(I:J) contains the Zariski closure of V(I)-V(J), with equality if k is algebraically closed and I is a radical ideal.