Safe Haskell | None |
---|
Monomorphic interface for Groenber basis.
- class (Eq r, Field r, NoetherianRing r) => Groebnerable r
- divModPolynomial :: Groebnerable r => Polynomial r -> [Polynomial r] -> ([(Polynomial r, Polynomial r)], Polynomial r)
- divPolynomial :: Groebnerable r => Polynomial r -> [Polynomial r] -> [(Polynomial r, Polynomial r)]
- modPolynomial :: Groebnerable r => Polynomial r -> [Polynomial r] -> Polynomial r
- divModPolynomialWith :: forall ord r. (IsMonomialOrder ord, Groebnerable r) => ord -> Polynomial r -> [Polynomial r] -> ([(Polynomial r, Polynomial r)], Polynomial r)
- divPolynomialWith :: Groebnerable r => IsMonomialOrder ord => ord -> Polynomial r -> [Polynomial r] -> [(Polynomial r, Polynomial r)]
- modPolynomialWith :: (Groebnerable r, IsMonomialOrder ord) => ord -> Polynomial r -> [Polynomial r] -> Polynomial r
- calcGroebnerBasis :: Groebnerable r => [Polynomial r] -> [Polynomial r]
- calcGroebnerBasisWith :: forall ord r. (Groebnerable r, IsMonomialOrder ord) => ord -> [Polynomial r] -> [Polynomial r]
- syzygyBuchberger :: Groebnerable r => [Polynomial r] -> [Polynomial r]
- syzygyBuchbergerWith :: forall ord r. (Groebnerable r, IsMonomialOrder ord) => ord -> [Polynomial r] -> [Polynomial r]
- syzygyBuchbergerWithStrategy :: forall strategy ord r. (Groebnerable r, IsMonomialOrder ord, SelectionStrategy strategy, Ord (Weight strategy ord)) => strategy -> ord -> [Polynomial r] -> [Polynomial r]
- primeTestBuchberger :: Groebnerable r => [Polynomial r] -> [Polynomial r]
- primeTestBuchbergerWith :: forall ord r. (Groebnerable r, IsMonomialOrder ord) => ord -> [Polynomial r] -> [Polynomial r]
- simpleBuchberger :: Groebnerable r => [Polynomial r] -> [Polynomial r]
- simpleBuchbergerWith :: forall ord r. (Groebnerable r, IsMonomialOrder ord) => ord -> [Polynomial r] -> [Polynomial r]
- isIdealMember :: forall r. Groebnerable r => Polynomial r -> [Polynomial r] -> Bool
- intersection :: forall r. Groebnerable r => [[Polynomial r]] -> [Polynomial r]
- thEliminationIdeal :: Groebnerable r => Int -> [Polynomial r] -> [Polynomial r]
- eliminate :: forall r. Groebnerable r => [Variable] -> [Polynomial r] -> [Polynomial r]
- thEliminationIdealWith :: (IsMonomialOrder ord, Groebnerable r) => ord -> Int -> [Polynomial r] -> [Polynomial r]
- eliminateWith :: forall r ord. (IsMonomialOrder ord, Groebnerable r) => ord -> [Variable] -> [Polynomial r] -> [Polynomial r]
- quotIdeal :: Groebnerable r => [Polynomial r] -> [Polynomial r] -> [Polynomial r]
- quotByPrincipalIdeal :: Groebnerable r => [Polynomial r] -> Polynomial r -> [Polynomial r]
- saturationIdeal :: Groebnerable r => [Polynomial r] -> [Polynomial r] -> [Polynomial r]
- saturationByPrincipalIdeal :: Groebnerable r => [Polynomial r] -> Polynomial r -> [Polynomial r]
- resultant :: forall r. Groebnerable r => Polynomial r -> Polynomial r -> r
- hasCommonFactor :: (Eq r, Division r, NoetherianRing r) => Polynomial r -> Polynomial r -> Bool
- data Lex = Lex
- data Revlex = Revlex
- data Grlex = Grlex
- data Grevlex = Grevlex
- class IsOrder ordering where
- cmpMonomial :: Proxy ordering -> MonomialOrder
- class IsOrder name => IsMonomialOrder name
- class SelectionStrategy s where
- type Weight s ord :: *
- calcWeight :: (IsPolynomial r n, IsMonomialOrder ord) => Proxy s -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n -> Weight s ord
- data NormalStrategy = NormalStrategy
- data SugarStrategy s = SugarStrategy s
- data GrevlexStrategy = GrevlexStrategy
- data GradedStrategy = GradedStrategy
- calcWeight' :: (SelectionStrategy s, IsPolynomial r n, IsMonomialOrder ord, Ord (Weight s ord)) => s -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n -> Weight s ord
Documentation
class (Eq r, Field r, NoetherianRing r) => Groebnerable r Source
Synonym
(Eq r, Field r, NoetherianRing r) => Groebnerable r |
Polynomial division
divModPolynomial :: Groebnerable r => Polynomial r -> [Polynomial r] -> ([(Polynomial r, Polynomial r)], Polynomial r)Source
divPolynomial :: Groebnerable r => Polynomial r -> [Polynomial r] -> [(Polynomial r, Polynomial r)]Source
modPolynomial :: Groebnerable r => Polynomial r -> [Polynomial r] -> Polynomial rSource
divModPolynomialWith :: forall ord r. (IsMonomialOrder ord, Groebnerable r) => ord -> Polynomial r -> [Polynomial r] -> ([(Polynomial r, Polynomial r)], Polynomial r)Source
divPolynomialWith :: Groebnerable r => IsMonomialOrder ord => ord -> Polynomial r -> [Polynomial r] -> [(Polynomial r, Polynomial r)]Source
modPolynomialWith :: (Groebnerable r, IsMonomialOrder ord) => ord -> Polynomial r -> [Polynomial r] -> Polynomial rSource
Groebner basis
calcGroebnerBasis :: Groebnerable r => [Polynomial r] -> [Polynomial r]Source
calcGroebnerBasisWith :: forall ord r. (Groebnerable r, IsMonomialOrder ord) => ord -> [Polynomial r] -> [Polynomial r]Source
syzygyBuchberger :: Groebnerable r => [Polynomial r] -> [Polynomial r]Source
syzygyBuchbergerWith :: forall ord r. (Groebnerable r, IsMonomialOrder ord) => ord -> [Polynomial r] -> [Polynomial r]Source
syzygyBuchbergerWithStrategy :: forall strategy ord r. (Groebnerable r, IsMonomialOrder ord, SelectionStrategy strategy, Ord (Weight strategy ord)) => strategy -> ord -> [Polynomial r] -> [Polynomial r]Source
primeTestBuchberger :: Groebnerable r => [Polynomial r] -> [Polynomial r]Source
primeTestBuchbergerWith :: forall ord r. (Groebnerable r, IsMonomialOrder ord) => ord -> [Polynomial r] -> [Polynomial r]Source
simpleBuchberger :: Groebnerable r => [Polynomial r] -> [Polynomial r]Source
simpleBuchbergerWith :: forall ord r. (Groebnerable r, IsMonomialOrder ord) => ord -> [Polynomial r] -> [Polynomial r]Source
Ideal operations
isIdealMember :: forall r. Groebnerable r => Polynomial r -> [Polynomial r] -> BoolSource
intersection :: forall r. Groebnerable r => [[Polynomial r]] -> [Polynomial r]Source
Calculate a intersection of given ideals.
thEliminationIdeal :: Groebnerable r => Int -> [Polynomial r] -> [Polynomial r]Source
Computes nth elimination ideal.
eliminate :: forall r. Groebnerable r => [Variable] -> [Polynomial r] -> [Polynomial r]Source
thEliminationIdealWith :: (IsMonomialOrder ord, Groebnerable r) => ord -> Int -> [Polynomial r] -> [Polynomial r]Source
eliminateWith :: forall r ord. (IsMonomialOrder ord, Groebnerable r) => ord -> [Variable] -> [Polynomial r] -> [Polynomial r]Source
Computes the ideal with specified variables eliminated.
quotIdeal :: Groebnerable r => [Polynomial r] -> [Polynomial r] -> [Polynomial r]Source
Calculate the ideal quotient of I of J.
quotByPrincipalIdeal :: Groebnerable r => [Polynomial r] -> Polynomial r -> [Polynomial r]Source
Calculate ideal quotient of I by principal ideal
saturationIdeal :: Groebnerable r => [Polynomial r] -> [Polynomial r] -> [Polynomial r]Source
Calculate saturation ideal.
saturationByPrincipalIdeal :: Groebnerable r => [Polynomial r] -> Polynomial r -> [Polynomial r]Source
Calculate saturation ideal by the principal ideal generated by the second argument.
Resultant
resultant :: forall r. Groebnerable r => Polynomial r -> Polynomial r -> rSource
Calculates resultants for given two unary-polynomials.
hasCommonFactor :: (Eq r, Division r, NoetherianRing r) => Polynomial r -> Polynomial r -> BoolSource
Determin if given two unary polynomials have common factor.
Re-exports
Lexicographical order
Reversed lexicographical order
Graded lexicographical order. Same as Graded Lex
.
Graded reversed lexicographical order. Same as Graded Revlex
.
class IsOrder ordering whereSource
Class to lookup ordering from its (type-level) name.
cmpMonomial :: Proxy ordering -> MonomialOrderSource
IsOrder Grlex | |
IsOrder Grevlex | |
IsOrder Revlex | |
IsOrder Lex | |
IsOrder ord => IsOrder (Graded ord) | |
(SingRep Nat n, IsMonomialOrder ord) => IsOrder (WeightedEliminationOrder n ord) | |
(ToWeightVector ws, IsOrder ord) => IsOrder (WeightOrder ws ord) | |
(IsOrder ord, IsOrder ord', SingRep Nat n) => IsOrder (ProductOrder n ord ord') |
class IsOrder name => IsMonomialOrder name Source
Class for Monomial orders.
IsMonomialOrder Grlex | |
IsMonomialOrder Grevlex | |
IsMonomialOrder Lex | |
IsMonomialOrder ord => IsMonomialOrder (Graded ord) | |
(SingRep Nat n, IsMonomialOrder ord) => IsMonomialOrder (WeightedEliminationOrder n ord) | |
(ToWeightVector ws, IsMonomialOrder ord) => IsMonomialOrder (WeightOrder ws ord) | |
(SingRep Nat n, IsMonomialOrder o, IsMonomialOrder o') => IsMonomialOrder (ProductOrder n o o') |
class SelectionStrategy s whereSource
Type-class for selection strategies in Buchberger's algorithm.
calcWeight :: (IsPolynomial r n, IsMonomialOrder ord) => Proxy s -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n -> Weight s ordSource
SelectionStrategy GradedStrategy | Choose the pair with the least LCM(LT(f), LT(g)) w.r.t. graded current ordering. |
SelectionStrategy GrevlexStrategy | |
SelectionStrategy NormalStrategy | |
SelectionStrategy s => SelectionStrategy (SugarStrategy s) |
data NormalStrategy Source
Buchberger's normal selection strategy. This selects the pair with the least LCM(LT(f), LT(g)) w.r.t. current monomial ordering.
data SugarStrategy s Source
Sugar strategy. This chooses the pair with the least phantom homogenized degree and then break the tie with the given strategy (say s
).
Eq s => Eq (SugarStrategy s) | |
Ord s => Ord (SugarStrategy s) | |
Read s => Read (SugarStrategy s) | |
Show s => Show (SugarStrategy s) | |
SelectionStrategy s => SelectionStrategy (SugarStrategy s) |
data GrevlexStrategy Source
Choose the pair with the least LCM(LT(f), LT(g)) w.r.t. Grevlex
order.
data GradedStrategy Source
Eq GradedStrategy | |
Ord GradedStrategy | |
Read GradedStrategy | |
Show GradedStrategy | |
SelectionStrategy GradedStrategy | Choose the pair with the least LCM(LT(f), LT(g)) w.r.t. graded current ordering. |
calcWeight' :: (SelectionStrategy s, IsPolynomial r n, IsMonomialOrder ord, Ord (Weight s ord)) => s -> OrderedPolynomial r ord n -> OrderedPolynomial r ord n -> Weight s ordSource
Calculate the weight of given polynomials w.r.t. the given strategy.
Buchberger's algorithm proccesses the pair with the most least weight first.
This function requires the Ord
instance for the weight; this constraint is not required
in the calcWeight
because of the ease of implementation. So use this function.