Safe Haskell | None |
---|
- type Polynomial r = OrderedPolynomial r Grevlex
- type Monomial n = Vector Int n
- type MonomialOrder = forall n. Monomial n -> Monomial n -> Ordering
- class (IsMonomialOrder ord, SingRep n) => EliminationType n ord
- type EliminationOrder n = ProductOrder n Grevlex Grevlex
- data WeightedEliminationOrder n ord
- eliminationOrder :: SNat n -> EliminationOrder n
- weightedEliminationOrder :: SNat n -> WeightedEliminationOrder n Grevlex
- lex :: MonomialOrder
- revlex :: Monomial n -> Monomial n -> Ordering
- graded :: (Monomial n -> Monomial n -> Ordering) -> Monomial n -> Monomial n -> Ordering
- grlex :: MonomialOrder
- grevlex :: MonomialOrder
- productOrder :: forall ord ord' n m. (IsOrder ord, IsOrder ord', SingRep n) => Proxy (ProductOrder n ord ord') -> Monomial m -> Monomial m -> Ordering
- productOrder' :: forall n ord ord' m. (IsOrder ord, IsOrder ord') => SNat n -> ord -> ord' -> Monomial m -> Monomial m -> Ordering
- transformMonomial :: (IsOrder o, IsPolynomial k n, IsPolynomial k m) => (Monomial n -> Monomial m) -> OrderedPolynomial k o n -> OrderedPolynomial k o m
- data WeightProxy v where
- NilWeight :: WeightProxy `[]`
- ConsWeight :: SNat n -> WeightProxy v -> WeightProxy (n : v)
- weightOrder :: forall ns ord m. (ToWeightVector ns, IsOrder ord) => Proxy (WeightOrder ns ord) -> Monomial m -> Monomial m -> Ordering
- totalDegree :: Monomial n -> Int
- totalDegree' :: OrderedPolynomial k ord n -> Int
- type IsPolynomial r n = (NoetherianRing r, SingRep n, Eq r)
- coeff :: (IsOrder order, IsPolynomial r n) => Monomial n -> OrderedPolynomial r order n -> r
- lcmMonomial :: Monomial n -> Monomial n -> Monomial n
- sPolynomial :: (IsPolynomial k n, Field k, IsOrder order) => OrderedPolynomial k order n -> OrderedPolynomial k order n -> OrderedPolynomial k order n
- polynomial :: (SingRep n, Eq r, NoetherianRing r, IsOrder order) => Map (OrderedMonomial order n) r -> OrderedPolynomial r order n
- castMonomial :: (IsOrder o, IsOrder o', SingRep m, n :<= m) => OrderedMonomial o n -> OrderedMonomial o' m
- castPolynomial :: (IsPolynomial r n, IsPolynomial r m, SingRep m, IsOrder o, IsOrder o', n :<= m) => OrderedPolynomial r o n -> OrderedPolynomial r o' m
- toPolynomial :: (IsOrder order, IsPolynomial r n) => (r, Monomial n) -> OrderedPolynomial r order n
- changeOrder :: (Eq (Monomial n), IsOrder o, IsOrder o', SingRep n) => o' -> OrderedPolynomial k o n -> OrderedPolynomial k o' n
- changeOrderProxy :: (Eq (Monomial n), IsOrder o, IsOrder o', SingRep n) => Proxy o' -> OrderedPolynomial k o n -> OrderedPolynomial k o' n
- scastMonomial :: n :<= m => SNat m -> OrderedMonomial o n -> OrderedMonomial o m
- scastPolynomial :: (IsOrder o, IsOrder o', IsPolynomial r n, IsPolynomial r m, n :<= m, SingRep m) => SNat m -> OrderedPolynomial r o n -> OrderedPolynomial r o' m
- data OrderedPolynomial r order n
- showPolynomialWithVars :: (Eq a, Show a, SingRep n, NoetherianRing a, IsOrder ordering) => [(Int, String)] -> OrderedPolynomial a ordering n -> String
- showPolynomialWith :: (Eq a, Show a, SingRep n, NoetherianRing a, IsOrder ordering) => [(Int, String)] -> (a -> Coefficient) -> OrderedPolynomial a ordering n -> String
- showRational :: (Integral a, Show a) => Ratio a -> Coefficient
- normalize :: (Eq r, IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> OrderedPolynomial r order n
- injectCoeff :: IsPolynomial r n => r -> OrderedPolynomial r order n
- varX :: (NoetherianRing r, SingRep n, One :<= n) => OrderedPolynomial r order n
- var :: (NoetherianRing r, SingRep m, S n :<= m) => SNat (S n) -> OrderedPolynomial r order m
- getTerms :: OrderedPolynomial k order n -> [(k, Monomial n)]
- shiftR :: forall k r n ord. (Field r, IsPolynomial r n, IsPolynomial r (k :+: n), IsOrder ord) => SNat k -> OrderedPolynomial r ord n -> OrderedPolynomial r ord (k :+: n)
- orderedBy :: IsOrder o => OrderedPolynomial k o n -> o -> OrderedPolynomial k o n
- divs :: Monomial n -> Monomial n -> Bool
- tryDiv :: Field r => (r, Monomial n) -> (r, Monomial n) -> (r, Monomial n)
- fromList :: SNat n -> [Int] -> Monomial n
- data Coefficient
- class ToWeightVector vs where
- calcOrderWeight :: Proxy' vs -> Vector Int n -> Int
- leadingTerm :: (IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> (r, Monomial n)
- leadingMonomial :: (IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> Monomial n
- leadingOrderedMonomial :: (IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> OrderedMonomial order n
- leadingCoeff :: (IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> r
- genVars :: forall k o n. (IsPolynomial k (S n), IsOrder o) => SNat (S n) -> [OrderedPolynomial k o (S n)]
- sArity :: OrderedPolynomial k ord n -> SNat n
- newtype OrderedMonomial ordering n = OrderedMonomial {
- getMonomial :: Monomial n
- newtype OrderedMonomial' ord = OM' {
- getMonomial' :: [Int]
- data Grevlex = Grevlex
- data Revlex = Revlex
- data Lex = Lex
- data Grlex = Grlex
- data Graded ord = Graded ord
- data ProductOrder n a b where
- ProductOrder :: SNat n -> ord -> ord' -> ProductOrder n ord ord'
- data WeightOrder v ord where
- WeightOrder :: WeightProxy (v :: [Nat]) -> ord -> WeightOrder v ord
- class IsOrder ordering where
- cmpMonomial :: Proxy ordering -> MonomialOrder
- class IsOrder name => IsMonomialOrder name
Documentation
type Polynomial r = OrderedPolynomial r GrevlexSource
type MonomialOrder = forall n. Monomial n -> Monomial n -> OrderingSource
Monomial order (of degree n). This should satisfy following laws: (1) Totality: forall a, b (a < b || a == b || b < a) (2) Additivity: a b == a + c <= b + c (3) Non-negative: forall a, 0 <= a
class (IsMonomialOrder ord, SingRep n) => EliminationType n ord Source
Monomial order which can be use to calculate n-th elimination ideal. This should judge it as bigger that contains variables to eliminate.
SingRep k n => EliminationType k n Lex | |
(SingRep Nat n, IsMonomialOrder ord) => EliminationType Nat n (WeightedEliminationOrder n ord) | |
IsMonomialOrder ord => EliminationType Nat Z (WeightOrder ([] Nat) ord) | |
(SingRep Nat n, IsMonomialOrder ord, IsMonomialOrder ord') => EliminationType Nat n (ProductOrder n ord ord') | |
(IsMonomialOrder ord, ToWeightVector ns, EliminationType Nat n (WeightOrder ns ord)) => EliminationType Nat (S n) (WeightOrder (: Nat One ns) ord) |
type EliminationOrder n = ProductOrder n Grevlex GrevlexSource
data WeightedEliminationOrder n ord Source
(SingRep Nat n, IsMonomialOrder ord) => EliminationType Nat n (WeightedEliminationOrder n ord) | |
(SingRep Nat n, IsMonomialOrder ord) => IsMonomialOrder (WeightedEliminationOrder n ord) | |
(SingRep Nat n, IsMonomialOrder ord) => IsOrder (WeightedEliminationOrder n ord) |
eliminationOrder :: SNat n -> EliminationOrder nSource
Lexicographical order. This *is* a monomial order.
revlex :: Monomial n -> Monomial n -> OrderingSource
Reversed lexicographical order. This is *not* a monomial order.
graded :: (Monomial n -> Monomial n -> Ordering) -> Monomial n -> Monomial n -> OrderingSource
Convert ordering into graded one.
Graded lexicographical order. This *is* a monomial order.
grevlex :: MonomialOrderSource
Graded reversed lexicographical order. This *is* a monomial order.
productOrder :: forall ord ord' n m. (IsOrder ord, IsOrder ord', SingRep n) => Proxy (ProductOrder n ord ord') -> Monomial m -> Monomial m -> OrderingSource
productOrder' :: forall n ord ord' m. (IsOrder ord, IsOrder ord') => SNat n -> ord -> ord' -> Monomial m -> Monomial m -> OrderingSource
transformMonomial :: (IsOrder o, IsPolynomial k n, IsPolynomial k m) => (Monomial n -> Monomial m) -> OrderedPolynomial k o n -> OrderedPolynomial k o mSource
data WeightProxy v whereSource
Data.Proxy provides kind-polymorphic Proxy
data-type, but due to bug of GHC 7.4.1,
It canot be used as kind-polymorphic. So I define another type here.
NilWeight :: WeightProxy `[]` | |
ConsWeight :: SNat n -> WeightProxy v -> WeightProxy (n : v) |
weightOrder :: forall ns ord m. (ToWeightVector ns, IsOrder ord) => Proxy (WeightOrder ns ord) -> Monomial m -> Monomial m -> OrderingSource
totalDegree :: Monomial n -> IntSource
totalDegree' :: OrderedPolynomial k ord n -> IntSource
type IsPolynomial r n = (NoetherianRing r, SingRep n, Eq r)Source
Type-level constraint to check whether it forms polynomial ring or not.
coeff :: (IsOrder order, IsPolynomial r n) => Monomial n -> OrderedPolynomial r order n -> rSource
coefficient for a degree.
lcmMonomial :: Monomial n -> Monomial n -> Monomial nSource
sPolynomial :: (IsPolynomial k n, Field k, IsOrder order) => OrderedPolynomial k order n -> OrderedPolynomial k order n -> OrderedPolynomial k order nSource
polynomial :: (SingRep n, Eq r, NoetherianRing r, IsOrder order) => Map (OrderedMonomial order n) r -> OrderedPolynomial r order nSource
castMonomial :: (IsOrder o, IsOrder o', SingRep m, n :<= m) => OrderedMonomial o n -> OrderedMonomial o' mSource
castPolynomial :: (IsPolynomial r n, IsPolynomial r m, SingRep m, IsOrder o, IsOrder o', n :<= m) => OrderedPolynomial r o n -> OrderedPolynomial r o' mSource
toPolynomial :: (IsOrder order, IsPolynomial r n) => (r, Monomial n) -> OrderedPolynomial r order nSource
changeOrder :: (Eq (Monomial n), IsOrder o, IsOrder o', SingRep n) => o' -> OrderedPolynomial k o n -> OrderedPolynomial k o' nSource
changeOrderProxy :: (Eq (Monomial n), IsOrder o, IsOrder o', SingRep n) => Proxy o' -> OrderedPolynomial k o n -> OrderedPolynomial k o' nSource
scastMonomial :: n :<= m => SNat m -> OrderedMonomial o n -> OrderedMonomial o mSource
scastPolynomial :: (IsOrder o, IsOrder o', IsPolynomial r n, IsPolynomial r m, n :<= m, SingRep m) => SNat m -> OrderedPolynomial r o n -> OrderedPolynomial r o' mSource
data OrderedPolynomial r order n Source
n-ary polynomial ring over some noetherian ring R.
showPolynomialWithVars :: (Eq a, Show a, SingRep n, NoetherianRing a, IsOrder ordering) => [(Int, String)] -> OrderedPolynomial a ordering n -> StringSource
showPolynomialWith :: (Eq a, Show a, SingRep n, NoetherianRing a, IsOrder ordering) => [(Int, String)] -> (a -> Coefficient) -> OrderedPolynomial a ordering n -> StringSource
showRational :: (Integral a, Show a) => Ratio a -> CoefficientSource
normalize :: (Eq r, IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> OrderedPolynomial r order nSource
injectCoeff :: IsPolynomial r n => r -> OrderedPolynomial r order nSource
varX :: (NoetherianRing r, SingRep n, One :<= n) => OrderedPolynomial r order nSource
var :: (NoetherianRing r, SingRep m, S n :<= m) => SNat (S n) -> OrderedPolynomial r order mSource
getTerms :: OrderedPolynomial k order n -> [(k, Monomial n)]Source
shiftR :: forall k r n ord. (Field r, IsPolynomial r n, IsPolynomial r (k :+: n), IsOrder ord) => SNat k -> OrderedPolynomial r ord n -> OrderedPolynomial r ord (k :+: n)Source
orderedBy :: IsOrder o => OrderedPolynomial k o n -> o -> OrderedPolynomial k o nSource
data Coefficient Source
class ToWeightVector vs whereSource
calcOrderWeight :: Proxy' vs -> Vector Int n -> IntSource
ToWeightVector ([] Nat) | |
(SingRep Nat n, ToWeightVector ns) => ToWeightVector (: Nat n ns) |
leadingTerm :: (IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> (r, Monomial n)Source
leadingMonomial :: (IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> Monomial nSource
leadingOrderedMonomial :: (IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> OrderedMonomial order nSource
leadingCoeff :: (IsOrder order, IsPolynomial r n) => OrderedPolynomial r order n -> rSource
genVars :: forall k o n. (IsPolynomial k (S n), IsOrder o) => SNat (S n) -> [OrderedPolynomial k o (S n)]Source
sArity :: OrderedPolynomial k ord n -> SNat nSource
newtype OrderedMonomial ordering n Source
A wrapper for monomials with a certain (monomial) order.
Monomorphicable Nat (OrderedMonomial ord) | |
Wrapped (Monomial n) (Monomial m) (OrderedMonomial o n) (OrderedMonomial o' m) | |
Eq (Monomorphic Nat (OrderedMonomial ord)) | |
Eq (Monomial n) => Eq (OrderedMonomial ordering n) | |
IsMonomialOrder ord => Ord (Monomorphic Nat (OrderedMonomial ord)) | |
(Eq (Monomial n), IsOrder name) => Ord (OrderedMonomial name n) | Special ordering for ordered-monomials. |
Wrapped (Map (OrderedMonomial order n) r) (Map (OrderedMonomial order' m) q) (OrderedPolynomial r order n) (OrderedPolynomial q order' m) |
newtype OrderedMonomial' ord Source
Monomorphic representation for monomial.
OM' | |
|
Eq (OrderedMonomial' k ord) | |
IsMonomialOrder ord => Ord (OrderedMonomial' * ord) | |
Read (OrderedMonomial' k ord) | |
Show (OrderedMonomial' k ord) |
Graded reversed lexicographical order. Same as Graded Revlex
.
Reversed lexicographical order
Lexicographical order
Graded lexicographical order. Same as Graded Lex
.
Graded order from another monomial order.
Graded ord |
data ProductOrder n a b whereSource
ProductOrder :: SNat n -> ord -> ord' -> ProductOrder n ord ord' |
(SingRep Nat n, IsMonomialOrder ord, IsMonomialOrder ord') => EliminationType Nat n (ProductOrder n ord ord') | |
(SingRep Nat n, IsMonomialOrder o, IsMonomialOrder o') => IsMonomialOrder (ProductOrder n o o') | |
(IsOrder ord, IsOrder ord', SingRep Nat n) => IsOrder (ProductOrder n ord ord') |
data WeightOrder v ord whereSource
WeightOrder :: WeightProxy (v :: [Nat]) -> ord -> WeightOrder v ord |
IsMonomialOrder ord => EliminationType Nat Z (WeightOrder ([] Nat) ord) | |
(IsMonomialOrder ord, ToWeightVector ns, EliminationType Nat n (WeightOrder ns ord)) => EliminationType Nat (S n) (WeightOrder (: Nat One ns) ord) | |
(ToWeightVector ws, IsMonomialOrder ord) => IsMonomialOrder (WeightOrder ws ord) | |
(ToWeightVector ws, IsOrder ord) => IsOrder (WeightOrder ws ord) |
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') |