module Main (module Algebra.Algorithms.Groebner.Monomorphic, module Algebra.Ring.Polynomial
, module Algebra.Ring.Polynomial.Parser, module Algebra.Ring.Polynomial.Monomorphic
, module Data.Ratio, module Main, module Algebra.Internal) where
import Algebra.Algorithms.Groebner.Monomorphic
import Algebra.Ring.Polynomial (Grevlex (..),
Grlex (..), Lex (..),
ProductOrder (..),
WeightOrder (..),
WeightProxy (..),
eliminationOrder,
weightedEliminationOrder)
import Algebra.Ring.Polynomial.Monomorphic
import Algebra.Ring.Polynomial.Parser
import Data.Ratio
import Algebra.Internal
import qualified Numeric.Algebra as NA
var_x, var_y, var_z, var_t, var_u :: Variable
[var_x, var_y, var_z, var_t, var_u] = map (flip Variable Nothing) "xyztu"
x, y, z, t, u :: Polynomial Rational
[x, y, z, t, u] = map injectVar [var_x, var_y, var_z, var_t, var_u]
(.+), (.*), (.-) :: Polynomial Rational -> Polynomial Rational -> Polynomial Rational
(.+) = (NA.+)
(.*) = (NA.*)
(.-) = (NA.-)
infixl 6 .+, .-
infixl 7 .*
(^^^) :: Polynomial Rational -> NA.Natural -> Polynomial Rational
(^^^) = NA.pow
fromRight :: Either t t1 -> t1
fromRight (Right a) = a
parse :: String -> Polynomial Rational
parse = fromRight . parsePolyn
main :: IO ()
main = return ()