packages feed

computational-algebra-0.1.3.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.Internal
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 qualified Numeric.Algebra as NA

var_x, var_y, var_z, var_t, var_u :: Variable
[var_c, var_s, var_x, var_y, var_z, var_t, var_u] = map (flip Variable Nothing) "csxyztu"

x, y, z, t, u :: Polynomial Rational
[c, s, x, y, z, t, u] = map injectVar [var_c, var_s, 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 = print $ eliminate [var_s, var_c] [x-c^3, y-s^3, c^2+s^2-1]