packages feed

computational-algebra-0.1.2.0: examples/sandpit.hs

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 ()