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]