summaryrefslogtreecommitdiff
path: root/p/haskell-maths
diff options
context:
space:
mode:
authorIulian Udrea <iulian@physics.org>2012-02-16 22:59:47 +0400
committerIulian Udrea <iulian@physics.org>2012-02-16 22:59:47 +0400
commit25e21c5c40e9f48e509ec129c4176ace27a7ab29 (patch)
tree3786324907bd9c62668b9a99da31312faeec7063 /p/haskell-maths
parent7c867d3e3eac30ff9f4c19fbcf6bd5cded8a0252 (diff)
downloadDHG_packages-25e21c5c40e9f48e509ec129c4176ace27a7ab29.tar.gz
haskell-maths: Drop the add-Eq-constraints patch; applied upstream.
Diffstat (limited to 'p/haskell-maths')
-rw-r--r--p/haskell-maths/debian/changelog3
-rw-r--r--p/haskell-maths/debian/patches/add-Eq-Constraints1260
-rw-r--r--p/haskell-maths/debian/patches/series1
3 files changed, 2 insertions, 1262 deletions
diff --git a/p/haskell-maths/debian/changelog b/p/haskell-maths/debian/changelog
index 16c31d362..9d3e07dbd 100644
--- a/p/haskell-maths/debian/changelog
+++ b/p/haskell-maths/debian/changelog
@@ -1,9 +1,10 @@
haskell-maths (0.4.3-1) unstable; urgency=low
* New upstream release.
+ * Drop the add-Eq-constraints patch; applied upstream.
* Update debian/copyright.
- -- Iulian Udrea <iulian@physics.org> Thu, 16 Feb 2012 18:48:05 +0000
+ -- Iulian Udrea <iulian@physics.org> Thu, 16 Feb 2012 18:55:59 +0000
haskell-maths (0.4.1-2) unstable; urgency=low
diff --git a/p/haskell-maths/debian/patches/add-Eq-Constraints b/p/haskell-maths/debian/patches/add-Eq-Constraints
deleted file mode 100644
index fa3d2452f..000000000
--- a/p/haskell-maths/debian/patches/add-Eq-Constraints
+++ /dev/null
@@ -1,1260 +0,0 @@
-Description: Add Eq Constraints
- to make it compile with GHC 7.4.1
-Author: Joachim Breitner <nomeata@debian.org>
-
-Index: haskell-maths-0.4.1/Math/Algebras/VectorSpace.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/VectorSpace.hs 2012-02-04 12:19:38.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/VectorSpace.hs 2012-02-04 12:22:45.000000000 +0100
-@@ -19,7 +19,7 @@
- -- Elements of Vect k b consist of k-linear combinations of elements of b.
- newtype Vect k b = V [(b,k)] deriving (Eq,Ord)
-
--instance (Num k, Show b) => Show (Vect k b) where
-+instance (Show k, Eq k, Num k, Show b) => Show (Vect k b) where
- show (V []) = "0"
- show (V ts) = concatWithPlus $ map showTerm ts
- where showTerm (b,x) | show b == "1" = show x
-@@ -52,11 +52,11 @@
- zerov = V []
-
- -- |Addition of vectors
--add :: (Ord b, Num k) => Vect k b -> Vect k b -> Vect k b
-+add :: (Ord b, Eq k, Num k) => Vect k b -> Vect k b -> Vect k b
- add (V ts) (V us) = V $ addmerge ts us
-
- -- |Addition of vectors (same as add)
--(<+>) :: (Ord b, Num k) => Vect k b -> Vect k b -> Vect k b
-+(<+>) :: (Ord b, Eq k, Num k) => Vect k b -> Vect k b -> Vect k b
- (<+>) = add
-
- addmerge ((a,x):ts) ((b,y):us) =
-@@ -68,33 +68,33 @@
- addmerge [] us = us
-
- -- |Sum of a list of vectors
--sumv :: (Ord b, Num k) => [Vect k b] -> Vect k b
-+sumv :: (Ord b, Eq k, Num k) => [Vect k b] -> Vect k b
- sumv = foldl (<+>) zerov
-
- -- |Negation of vector
--neg :: (Num k) => Vect k b -> Vect k b
-+neg :: (Eq k, Num k) => Vect k b -> Vect k b
- neg (V ts) = V $ map (\(b,x) -> (b,-x)) ts
-
- -- |Subtraction of vectors
--(<->) :: (Ord b, Num k) => Vect k b -> Vect k b -> Vect k b
-+(<->) :: (Ord b, Eq k, Num k) => Vect k b -> Vect k b -> Vect k b
- (<->) u v = u <+> neg v
-
- -- |Scalar multiplication (on the left)
--smultL :: (Num k) => k -> Vect k b -> Vect k b
-+smultL :: (Eq k, Num k) => k -> Vect k b -> Vect k b
- smultL 0 _ = zero -- V []
- smultL k (V ts) = V [(ei,k*xi) | (ei,xi) <- ts]
-
- -- |Same as smultL. Mnemonic is \"multiply through (from the left)\"
--(*>) :: (Num k) => k -> Vect k b -> Vect k b
-+(*>) :: (Eq k, Num k) => k -> Vect k b -> Vect k b
- (*>) = smultL
-
- -- |Scalar multiplication on the right
--smultR :: (Num k) => Vect k b -> k -> Vect k b
-+smultR :: (Eq k, Num k) => Vect k b -> k -> Vect k b
- smultR _ 0 = zero -- V []
- smultR (V ts) k = V [(ei,xi*k) | (ei,xi) <- ts]
-
- -- |Same as smultR. Mnemonic is \"multiply through (from the right)\"
--(<*) :: (Num k) => Vect k b -> k -> Vect k b
-+(<*) :: (Eq k, Num k) => Vect k b -> k -> Vect k b
- (<*) = smultR
-
- -- same as return
-@@ -107,7 +107,7 @@
-
- -- |Convert an element of Vect k b into normal form. Normal form consists in having the basis elements in ascending order,
- -- with no duplicates, and all coefficients non-zero
--nf :: (Ord b, Num k) => Vect k b -> Vect k b
-+nf :: (Ord b, Eq k, Num k) => Vect k b -> Vect k b
- nf (V ts) = V $ nf' $ L.sortBy compareFst ts where
- nf' ((b1,x1):(b2,x2):ts) =
- case compare b1 b2 of
-@@ -135,7 +135,7 @@
- --
- -- If we have A = Vect k a, B = Vect k b, and f :: a -> Vect k b is a function from the basis elements of A into B,
- -- then @linear f@ is the linear map that this defines by linearity.
--linear :: (Ord b, Num k) => (a -> Vect k b) -> Vect k a -> Vect k b
-+linear :: (Ord b, Eq k, Num k) => (a -> Vect k b) -> Vect k a -> Vect k b
- linear f v = nf $ v >>= f
-
- newtype EBasis = E Int deriving (Eq,Ord)
-@@ -154,7 +154,7 @@
- -- but in the code, we need this if we want to be able to put k as one side of a tensor product.
- type Trivial k = Vect k ()
-
--wrap :: Num k => k -> Vect k ()
-+wrap :: (Eq k, Num k) => k -> Vect k ()
- wrap 0 = zero
- wrap x = V [( (),x)]
-
-Index: haskell-maths-0.4.1/Math/Algebras/TensorProduct.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/TensorProduct.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/TensorProduct.hs 2012-02-04 12:25:06.000000000 +0100
-@@ -27,7 +27,7 @@
-
- -- |The coproduct of two linear functions (with the same target).
- -- Satisfies the universal property that f == coprodf f g . i1 and g == coprodf f g . i2
--coprodf :: (Num k, Ord t) =>
-+coprodf :: (Eq k, Num k, Ord t) =>
- (Vect k a -> Vect k t) -> (Vect k b -> Vect k t) -> Vect k (DSum a b) -> Vect k t
- coprodf f g = linear fg' where
- fg' (Left a) = f (return a)
-@@ -35,33 +35,33 @@
-
-
- -- |Projection onto left summand from direct sum
--p1 :: (Num k, Ord a) => Vect k (DSum a b) -> Vect k a
-+p1 :: (Eq k, Num k, Ord a) => Vect k (DSum a b) -> Vect k a
- p1 = linear p1' where
- p1' (Left a) = return a
- p1' (Right b) = zero
-
- -- |Projection onto right summand from direct sum
--p2 :: (Num k, Ord b) => Vect k (DSum a b) -> Vect k b
-+p2 :: (Eq k, Num k, Ord b) => Vect k (DSum a b) -> Vect k b
- p2 = linear p2' where
- p2' (Left a) = zero
- p2' (Right b) = return b
-
- -- |The product of two linear functions (with the same source).
- -- Satisfies the universal property that f == p1 . prodf f g and g == p2 . prodf f g
--prodf :: (Num k, Ord a, Ord b) =>
-+prodf :: (Eq k, Num k, Ord a, Ord b) =>
- (Vect k s -> Vect k a) -> (Vect k s -> Vect k b) -> Vect k s -> Vect k (DSum a b)
- prodf f g = linear fg' where
- fg' b = fmap Left (f $ return b) <+> fmap Right (g $ return b)
-
-
- -- |The direct sum of two vector space elements
--dsume :: (Num k, Ord a, Ord b) => Vect k a -> Vect k b -> Vect k (DSum a b)
-+dsume :: (Eq k, Num k, Ord a, Ord b) => Vect k a -> Vect k b -> Vect k (DSum a b)
- -- dsume x y = fmap Left x <+> fmap Right y
- dsume x y = i1 x <+> i2 y
-
- -- |The direct sum of two linear functions.
- -- Satisfies the universal property that f == p1 . dsumf f g . i1 and g == p2 . dsumf f g . i2
--dsumf :: (Num k, Ord a, Ord b, Ord a', Ord b') =>
-+dsumf :: (Eq k, Num k, Ord a, Ord b, Ord a', Ord b') =>
- (Vect k a -> Vect k a') -> (Vect k b -> Vect k b') -> Vect k (DSum a b) -> Vect k (DSum a' b')
- dsumf f g ab = (i1 . f . p1) ab <+> (i2 . g . p2) ab
-
-@@ -80,7 +80,7 @@
-
- -- Implicit assumption - f and g are linear
- -- |The tensor product of two linear functions
--tf :: (Num k, Ord a', Ord b') => (Vect k a -> Vect k a') -> (Vect k b -> Vect k b')
-+tf :: (Eq k, Num k, Ord a', Ord b') => (Vect k a -> Vect k a') -> (Vect k b -> Vect k b')
- -> Vect k (Tensor a b) -> Vect k (Tensor a' b')
- tf f g (V ts) = sum [x *> te (f $ return a) (g $ return b) | ((a,b), x) <- ts]
- where sum = foldl add zero -- (V [])
-@@ -107,16 +107,16 @@
- unitOutR :: Vect k (Tensor a ()) -> Vect k a
- unitOutR = fmap ( \(a,()) -> a )
-
--twist :: (Num k, Ord a, Ord b) => Vect k (Tensor a b) -> Vect k (Tensor b a)
-+twist :: (Eq k, Num k, Ord a, Ord b) => Vect k (Tensor a b) -> Vect k (Tensor b a)
- twist v = nf $ fmap ( \(a,b) -> (b,a) ) v
- -- note the nf call, as f is not order-preserving
-
-
--distrL :: (Num k, Ord a, Ord b, Ord c)
-+distrL :: (Eq k, Num k, Ord a, Ord b, Ord c)
- => Vect k (Tensor a (DSum b c)) -> Vect k (DSum (Tensor a b) (Tensor a c))
- distrL v = nf $ fmap (\(a,bc) -> case bc of Left b -> Left (a,b); Right c -> Right (a,c)) v
-
--undistrL :: (Num k, Ord a, Ord b, Ord c)
-+undistrL :: (Eq k, Num k, Ord a, Ord b, Ord c)
- => Vect k (DSum (Tensor a b) (Tensor a c)) -> Vect k (Tensor a (DSum b c))
- undistrL v = nf $ fmap ( \abc -> case abc of Left (a,b) -> (a,Left b); Right (a,c) -> (a,Right c) ) v
-
-@@ -132,11 +132,11 @@
- -- Left (e1,e2)
-
-
--ev :: (Num k, Ord b) => Vect k (Tensor (Dual b) b) -> k
-+ev :: (Eq k, Num k, Ord b) => Vect k (Tensor (Dual b) b) -> k
- ev = unwrap . linear (\(Dual bi, bj) -> delta bi bj *> return ())
- -- slightly cheating, as delta i j is meant to compare indices, not the basis elements themselves
-
- delta i j = if i == j then 1 else 0
-
--reify :: (Num k, Ord b) => Vect k (Dual b) -> (Vect k b -> k)
-+reify :: (Eq k, Num k, Ord b) => Vect k (Dual b) -> (Vect k b -> k)
- reify f x = ev (f `te` x)
-Index: haskell-maths-0.4.1/Math/Algebras/Structures.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/Structures.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/Structures.hs 2012-02-04 12:26:59.000000000 +0100
-@@ -43,7 +43,7 @@
- antipode :: Vect k b -> Vect k b
-
-
--instance (Num k, Eq b, Ord b, Show b, Algebra k b) => Num (Vect k b) where
-+instance (Eq k, Num k, Eq b, Ord b, Show b, Algebra k b) => Num (Vect k b) where
- x+y = x <+> y
- negate x = neg x
- -- negate (V ts) = V $ map (\(b,x) -> (b, negate x)) ts
-@@ -66,7 +66,7 @@
- -}
-
-
--instance Num k => Algebra k () where
-+instance (Eq k, Num k) => Algebra k () where
- unit = wrap
- -- unit 0 = zero -- V []
- -- unit x = V [( (),x)]
-@@ -74,7 +74,7 @@
- -- mult (V [( ((),()), x)]) = V [( (),x)]
- -- mult (V []) = zerov
-
--instance Num k => Coalgebra k () where
-+instance (Eq k, Num k) => Coalgebra k () where
- counit = unwrap
- -- counit (V []) = 0
- -- counit (V [( (),x)]) = x
-@@ -82,10 +82,10 @@
- -- comult (V [( (),x)]) = V [( ((),()), x)]
- -- comult (V []) = zerov
-
--unit' :: (Num k, Algebra k b) => Trivial k -> Vect k b
-+unit' :: (Eq k, Num k, Algebra k b) => Trivial k -> Vect k b
- unit' = unit . unwrap -- where unwrap = counit :: Num k => Trivial k -> k
-
--counit' :: (Num k, Coalgebra k b) => Vect k b -> Trivial k
-+counit' :: (Eq k, Num k, Coalgebra k b) => Vect k b -> Trivial k
- counit' = wrap . counit -- where wrap = unit :: Num k => k -> Trivial k
-
- -- unit' and counit' enable us to form tensors of these functions
-@@ -94,7 +94,7 @@
- -- Kassel p4
- -- |The direct sum of k-algebras can itself be given the structure of a k-algebra.
- -- This is the product object in the category of k-algebras.
--instance (Num k, Ord a, Ord b, Algebra k a, Algebra k b) => Algebra k (DSum a b) where
-+instance (Eq k, Num k, Ord a, Ord b, Algebra k a, Algebra k b) => Algebra k (DSum a b) where
- unit k = i1 (unit k) <+> i2 (unit k)
- -- unit == (i1 . unit) <<+>> (i2 . unit)
- mult = linear mult'
-@@ -108,7 +108,7 @@
-
- -- |The direct sum of k-coalgebras can itself be given the structure of a k-coalgebra.
- -- This is the coproduct object in the category of k-coalgebras.
--instance (Num k, Ord a, Ord b, Coalgebra k a, Coalgebra k b) => Coalgebra k (DSum a b) where
-+instance (Eq k, Num k, Ord a, Ord b, Coalgebra k a, Coalgebra k b) => Coalgebra k (DSum a b) where
- counit = unwrap . linear counit'
- where counit' (Left a) = (wrap . counit) (return a)
- counit' (Right b) = (wrap . counit) (return b)
-@@ -123,7 +123,7 @@
-
- -- Kassel p32
- -- |The tensor product of k-algebras can itself be given the structure of a k-algebra
--instance (Num k, Ord a, Ord b, Algebra k a, Algebra k b) => Algebra k (Tensor a b) where
-+instance (Eq k, Num k, Ord a, Ord b, Algebra k a, Algebra k b) => Algebra k (Tensor a b) where
- -- unit 0 = V []
- unit x = x *> (unit 1 `te` unit 1)
- mult = linear m where
-@@ -131,7 +131,7 @@
-
- -- Kassel p42
- -- |The tensor product of k-coalgebras can itself be given the structure of a k-coalgebra
--instance (Num k, Ord a, Ord b, Coalgebra k a, Coalgebra k b) => Coalgebra k (Tensor a b) where
-+instance (Eq k, Num k, Ord a, Ord b, Coalgebra k a, Coalgebra k b) => Coalgebra k (Tensor a b) where
- counit = counit . (counit' `tf` counit')
- -- counit = counit . linear (\(T x y) -> counit' (return x) * counit' (return y))
- comult = assocL . (id `tf` assocR) . (id `tf` (twist `tf` id))
-@@ -139,20 +139,20 @@
-
-
- -- The set coalgebra - can be defined on any set
--instance Num k => Coalgebra k EBasis where
-+instance (Eq k, Num k) => Coalgebra k EBasis where
- counit (V ts) = sum [x | (ei,x) <- ts] -- trace
- comult = fmap ( \ei -> (ei,ei) ) -- diagonal
-
- newtype SetCoalgebra b = SC b deriving (Eq,Ord,Show)
-
--instance Num k => Coalgebra k (SetCoalgebra b) where
-+instance (Eq k, Num k) => Coalgebra k (SetCoalgebra b) where
- counit (V ts) = sum [x | (m,x) <- ts] -- trace
- comult = fmap ( \m -> (m,m) ) -- diagonal
-
-
- newtype MonoidCoalgebra m = MC m deriving (Eq,Ord,Show)
-
--instance (Num k, Ord m, Mon m) => Coalgebra k (MonoidCoalgebra m) where
-+instance (Eq k, Num k, Ord m, Mon m) => Coalgebra k (MonoidCoalgebra m) where
- counit (V ts) = sum [if m == MC munit then x else 0 | (m,x) <- ts]
- comult = linear cm
- where cm m = if m == MC munit then return (m,m) else return (m, MC munit) <+> return (MC munit, m)
-@@ -184,13 +184,13 @@
-
- -- Kassel p57-8
-
--instance (Num k, Ord a, Ord u, Ord v, Algebra k a, Module k a u, Module k a v)
-+instance (Eq k, Num k, Ord a, Ord u, Ord v, Algebra k a, Module k a u, Module k a v)
- => Module k (Tensor a a) (Tensor u v) where
- -- action x = nf $ x >>= action'
- action = linear action'
- where action' ((a,a'), (u,v)) = (action $ return (a,u)) `te` (action $ return (a',v))
-
--instance (Num k, Ord a, Ord u, Ord v, Bialgebra k a, Module k a u, Module k a v)
-+instance (Eq k, Num k, Ord a, Ord u, Ord v, Bialgebra k a, Module k a u, Module k a v)
- => Module k a (Tensor u v) where
- -- action x = nf $ x >>= action'
- action = linear action'
-@@ -200,7 +200,7 @@
- -- On the other hand, if a == Tensor u v, then we have overlapping instance with the earlier instance
-
- -- Kassel p63
--instance (Num k, Ord a, Ord m, Ord n, Bialgebra k a, Comodule k a m, Comodule k a n)
-+instance (Eq k, Num k, Ord a, Ord m, Ord n, Bialgebra k a, Comodule k a m, Comodule k a n)
- => Comodule k a (Tensor m n) where
- coaction = (mult `tf` id) . twistm . (coaction `tf` coaction)
- where twistm x = nf $ fmap ( \((h,m), (h',n)) -> ((h,h'), (m,n)) ) x
-Index: haskell-maths-0.4.1/Math/Algebra/Field/Extension.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebra/Field/Extension.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebra/Field/Extension.hs 2012-02-04 12:30:24.000000000 +0100
-@@ -18,7 +18,7 @@
-
- x = UP [0,1] :: UPoly Integer
-
--instance (Show a, Num a) => Show (UPoly a) where
-+instance (Show a, Eq a, Num a) => Show (UPoly a) where
- -- show (UP []) = "0"
- show (UP as) = showUP "x" as
-
-@@ -39,7 +39,7 @@
- | i == 1 = v -- "x"
- | i > 1 = v ++ "^" ++ show i -- "x^" ++ show i
-
--instance Num a => Num (UPoly a) where
-+instance (Eq a, Num a) => Num (UPoly a) where
- UP as + UP bs = toUPoly $ as <+> bs
- negate (UP as) = UP $ map negate as
- UP as * UP bs = toUPoly $ as <*> bs
-@@ -78,7 +78,7 @@
- monomial a i = UP $ replicate i 0 ++ [a]
-
- -- quotRem for UPolys over a field
--quotRemUP :: (Num k, Fractional k) => UPoly k -> UPoly k -> (UPoly k, UPoly k)
-+quotRemUP :: (Eq k, Num k, Fractional k) => UPoly k -> UPoly k -> (UPoly k, UPoly k)
- quotRemUP f g = qr 0 f where
- qr q r = if deg r < deg_g
- then (q,r)
-@@ -105,12 +105,12 @@
-
- data ExtensionField k poly = Ext (UPoly k) deriving (Eq,Ord)
-
--instance Num k => Show (ExtensionField k poly) where
-+instance (Show k, Eq k, Num k) => Show (ExtensionField k poly) where
- -- show (Ext f) = show f
- -- show (Ext (UP [])) = "0"
- show (Ext (UP as)) = showUP "a" as
-
--instance (Num k, Fractional k, PolynomialAsType k poly) => Num (ExtensionField k poly) where
-+instance (Eq k, Num k, Fractional k, PolynomialAsType k poly) => Num (ExtensionField k poly) where
- Ext x + Ext y = Ext $ (x+y) -- `modUP` pvalue (undefined :: (k,poly))
- Ext x * Ext y = Ext $ (x*y) `modUP` pvalue (undefined :: (k,poly))
- negate (Ext x) = Ext $ negate x
-@@ -118,7 +118,7 @@
- abs _ = error "Prelude.Num.abs: inappropriate abstraction"
- signum _ = error "Prelude.Num.signum: inappropriate abstraction"
-
--instance (Num k, Fractional k, PolynomialAsType k poly) => Fractional (ExtensionField k poly) where
-+instance (Eq k, Num k, Fractional k, PolynomialAsType k poly) => Fractional (ExtensionField k poly) where
- recip 0 = error "ExtensionField.recip 0"
- recip (Ext f) = let g = pvalue (undefined :: (k,poly))
- (u,v,d@(UP [c])) = extendedEuclidUP f g
-@@ -130,7 +130,7 @@
- c /> f@(UP as) | c == 1 = f
- | c /= 0 = UP (map (c' *) as) where c' = recip c
-
--instance (FiniteField k, PolynomialAsType k poly) => FiniteField (ExtensionField k poly) where
-+instance (Eq k, FiniteField k, PolynomialAsType k poly) => FiniteField (ExtensionField k poly) where
- eltsFq _ = map Ext (polys (d-1) fp) where
- fp = eltsFq (undefined :: k)
- d = deg $ pvalue (undefined :: (k,poly))
-@@ -243,4 +243,4 @@
- -- conjugate of a + b sqrt d is a - b sqrt d
- conjugate :: ExtensionField Q (Sqrt d) -> ExtensionField Q (Sqrt d)
- conjugate (Ext (UP [a,b])) = Ext (UP [a,-b])
--conjugate x = x -- the zero or constant cases
-\ No newline at end of file
-+conjugate x = x -- the zero or constant cases
-Index: haskell-maths-0.4.1/Math/Algebra/NonCommutative/NCPoly.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebra/NonCommutative/NCPoly.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebra/NonCommutative/NCPoly.hs 2012-02-04 12:32:06.000000000 +0100
-@@ -58,7 +58,7 @@
- then "+(" ++ c:cs ++ ")"
- else if c == '-' then c:cs else '+':c:cs
-
--instance (Ord v, Show v, Num r) => Num (NPoly r v) where
-+instance (Ord v, Show v, Eq r, Num r) => Num (NPoly r v) where
- NP ts + NP us = NP (mergeTerms ts us)
- negate (NP ts) = NP $ map (\(m,c) -> (m,-c)) ts
- NP ts * NP us = NP $ collect $ L.sortBy cmpTerm $ [(g*h,c*d) | (g,c) <- ts, (h,d) <- us]
-@@ -85,7 +85,7 @@
-
- -- Fractional instance so that we can enter fractional coefficients
- -- Only lets us divide by field elements (with unit monomial), not any other polynomials
--instance (Ord v, Show v, Fractional r) => Fractional (NPoly r v) where
-+instance (Ord v, Show v, Eq r, Fractional r) => Fractional (NPoly r v) where
- recip (NP [(1,c)]) = NP [(1, recip c)]
- recip _ = error "NPoly.recip: only supported for (non-zero) constants"
-
-@@ -210,4 +210,4 @@
- class Invertible a where
- inv :: a -> a
-
--x ^- k = inv x ^ k
-\ No newline at end of file
-+x ^- k = inv x ^ k
-Index: haskell-maths-0.4.1/Math/Algebras/Commutative.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/Commutative.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/Commutative.hs 2012-02-04 12:33:09.000000000 +0100
-@@ -47,7 +47,7 @@
- -}
-
- -- This is the monoid algebra for commutative monomials (which are the free commutative monoid)
--instance (Num k, Ord v) => Algebra k (GlexMonomial v) where
-+instance (Eq k, Num k, Ord v) => Algebra k (GlexMonomial v) where
- unit x = x *> return munit
- where munit = Glex 0 []
- mult xy = nf $ fmap (\(a,b) -> a `mmult` b) xy
-@@ -55,7 +55,7 @@
-
-
- -- GlexPoly can be given the set coalgebra structure, which is compatible with the monoid algebra structure
--instance Num k => Coalgebra k (GlexMonomial v) where
-+instance (Eq k, Num k) => Coalgebra k (GlexMonomial v) where
- counit = unwrap . nf . fmap (\m -> () ) -- trace
- -- counit (V ts) = sum [x | (m,x) <- ts] -- trace
- comult = fmap (\m -> (m,m) ) -- diagonal
-@@ -78,7 +78,7 @@
- -- |In effect, we have (Num k, Monomial m) => Monad (\v -> Vect k (m v)), with return = var, and (>>=) = bind.
- -- However, we can't express this directly in Haskell, firstly because of the Ord b constraint,
- -- secondly because Haskell doesn't support type functions.
--bind :: (Monomial m, Num k, Ord b, Show b, Algebra k b) =>
-+bind :: (Monomial m, Eq k, Num k, Ord b, Show b, Algebra k b) =>
- Vect k (m v) -> (v -> Vect k b) -> Vect k b
- V ts `bind` f = sum [c *> product [f x ^ i | (x,i) <- powers m] | (m, c) <- ts]
- -- flipbind f = linear (\m -> product [f x ^ i | (x,i) <- powers m])
-@@ -120,7 +120,7 @@
- infixl 7 %%
-
- -- |(%%) reduces a polynomial with respect to a list of polynomials.
--(%%) :: (Fractional k, Ord b, Show b, Algebra k b, DivisionBasis b)
-+(%%) :: (Eq k, Fractional k, Ord b, Show b, Algebra k b, DivisionBasis b)
- => Vect k b -> [Vect k b] -> Vect k b
- f %% gs = r where (_,r) = quotRemMP f gs
-
-Index: haskell-maths-0.4.1/Math/Algebras/GroupAlgebra.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/GroupAlgebra.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/GroupAlgebra.hs 2012-02-04 12:34:32.000000000 +0100
-@@ -20,7 +20,7 @@
- type GroupAlgebra k = Vect k (Permutation Int)
-
- -- Monoid Algebra instance
--instance Num k => Algebra k (Permutation Int) where
-+instance (Eq k, Num k) => Algebra k (Permutation Int) where
- unit 0 = zero -- V []
- unit x = V [(munit,x)]
- mult = nf . fmap (\(a,b) -> a `mmult` b)
-@@ -28,14 +28,14 @@
- -- Set Coalgebra instance
- -- instance SetCoalgebra (Permutation Int) where {}
-
--instance Num k => Coalgebra k (Permutation Int) where
-+instance (Eq k, Num k) => Coalgebra k (Permutation Int) where
- counit (V ts) = sum [x | (m,x) <- ts] -- trace
- comult = fmap (\m -> (m,m)) -- diagonal
-
--instance Num k => Bialgebra k (Permutation Int) where {}
-+instance (Eq k, Num k) => Bialgebra k (Permutation Int) where {}
- -- should check that the algebra and coalgebra structures are compatible
-
--instance (Num k) => HopfAlgebra k (Permutation Int) where
-+instance (Eq k, Num k) => HopfAlgebra k (Permutation Int) where
- antipode (V ts) = nf $ V [(g^-1,x) | (g,x) <- ts]
-
- -- inject permutation into group algebra
-@@ -43,7 +43,7 @@
- ip cs = return $ p cs
-
-
--instance Num k => Module k (Permutation Int) Int where
-+instance (Eq k, Num k) => Module k (Permutation Int) Int where
- action = nf . fmap (\(g,x) -> x .^ g)
-
- -- use *. instead
-Index: haskell-maths-0.4.1/Math/Algebras/LaurentPoly.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/LaurentPoly.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/LaurentPoly.hs 2012-02-04 12:35:17.000000000 +0100
-@@ -31,7 +31,7 @@
- munit = LM 0 []
- mmult (LM si xis) (LM sj yjs) = LM (si+sj) $ addmerge xis yjs
-
--instance Num k => Algebra k LaurentMonomial where
-+instance (Eq k, Num k) => Algebra k LaurentMonomial where
- unit 0 = zero -- V []
- unit x = V [(munit,x)]
- mult (V ts) = nf $ fmap (\(a,b) -> a `mmult` b) (V ts)
-@@ -49,7 +49,7 @@
-
- lvar v = V [(LM 1 [(v,1)], 1)] :: LaurentPoly Q
-
--instance Fractional k => Fractional (LaurentPoly k) where
-+instance (Eq k, Fractional k) => Fractional (LaurentPoly k) where
- recip (V [(LM si xis,c)]) = V [(LM (-si) $ map (\(x,i)->(x,-i)) xis, recip c)]
- recip _ = error "LaurentPoly.recip: only defined for single terms"
-
-Index: haskell-maths-0.4.1/Math/Algebras/Matrix.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/Matrix.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/Matrix.hs 2012-02-04 12:36:11.000000000 +0100
-@@ -22,7 +22,7 @@
- data Mat2 = E2 Int Int deriving (Eq,Ord,Show)
- -- E i j represents the elementary matrix with a 1 at the (i,j) position, and 0s elsewhere
-
--instance Num k => Algebra k Mat2 where
-+instance (Eq k, Num k) => Algebra k Mat2 where
- unit x = x *> V [(E2 i i, 1) | i <- [1..2] ]
- mult = linear mult' where
- mult' (E2 i j, E2 k l) = delta j k *> return (E2 i l)
-@@ -33,7 +33,7 @@
- -- mult (a1 b1) `te` (a2 b2) = (a1 b1) * (a2 b2) = (a b)
- -- (c1 d1) (c2 d2) (c1 d1) (c2 d2) (c d)
-
--instance Num k => Module k Mat2 EBasis where
-+instance (Eq k, Num k) => Module k Mat2 EBasis where
- -- action ax = nf $ ax >>= action' where
- action = linear action' where
- action' (E2 i j, E k) = delta j k `smultL` return (E i)
-@@ -55,7 +55,7 @@
- -- E2' i j represents the dual basis element corresponding to E i j
-
- -- Kassel p42
--instance Num k => Coalgebra k Mat2' where
-+instance (Eq k, Num k) => Coalgebra k Mat2' where
- counit (V ts) = sum [xij * delta i j | (E2' i j, xij) <- ts]
- -- comult (V ts) = V $ concatMap (\(E2' i j,xij) -> [(T (E2' i k) (E2' k j), xij) | k <- [1..2]]) ts
- comult = linear (\(E2' i j) -> foldl (<+>) zero [return (E2' i k, E2' k j) | k <- [1..2]])
-@@ -73,7 +73,7 @@
- data M3 = E3 Int Int deriving (Eq,Ord,Show)
- -- E i j represents the elementary matrix with a 1 at the (i,j) position, and 0s elsewhere
-
--instance Num k => Algebra k M3 where
-+instance (Eq k, Num k) => Algebra k M3 where
- unit 0 = zero -- V []
- unit x = V [(E3 i i, x) | i <- [1..3] ]
- -- mult (V ts) = nf $ V $ map (\((E3 i j, E3 k l), x) -> (E3 i l, delta j k * x)) ts
-@@ -87,4 +87,4 @@
- counit (V ts) = sum [xij * delta i j | (E3 i j, xij) <- ts]
- comult (V ts) = V $ concatMap (\(E3 i j,xij) -> [((E3 i k, E3 k j), xij) | k <- [1..3]]) ts
- -- (is this order preserving?)
---}
-\ No newline at end of file
-+-}
-Index: haskell-maths-0.4.1/Math/Algebras/NonCommutative.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/NonCommutative.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/NonCommutative.hs 2012-02-04 12:36:53.000000000 +0100
-@@ -29,7 +29,7 @@
- munit = NCM 0 []
- mmult (NCM i xs) (NCM j ys) = NCM (i+j) (xs++ys)
-
--instance (Num k, Ord v) => Algebra k (NonComMonomial v) where
-+instance (Eq k, Num k, Ord v) => Algebra k (NonComMonomial v) where
- unit 0 = zero -- V []
- unit x = V [(munit,x)]
- mult = nf . fmap (\(a,b) -> a `mmult` b)
-Index: haskell-maths-0.4.1/Math/Algebras/TensorAlgebra.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/TensorAlgebra.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/TensorAlgebra.hs 2012-02-04 12:42:03.000000000 +0100
-@@ -34,7 +34,7 @@
- munit = TA 0 []
- mmult (TA i xs) (TA j ys) = TA (i+j) (xs++ys)
-
--instance (Num k, Ord a) => Algebra k (TensorAlgebra a) where
-+instance (Eq k, Num k, Ord a) => Algebra k (TensorAlgebra a) where
- unit x = x *> return munit
- mult = nf . fmap (\(a,b) -> a `mmult` b)
-
-@@ -50,7 +50,7 @@
- -- The Num k context is not strictly necessary
-
- -- |Inject an element of the set\/type A\/a into the tensor algebra T(A) = Vect k (TensorAlgebra a).
--injectTA' :: Num k => a -> Vect k (TensorAlgebra a)
-+injectTA' :: (Eq k, Num k) => a -> Vect k (TensorAlgebra a)
- injectTA' = injectTA . return
- -- injectTA' a = return (TA 1 [a])
-
-@@ -59,7 +59,7 @@
- -- where T(A) is the tensor algebra Vect k (TensorAlgebra a).
- -- f' will agree with f on A itself (considered as a subspace of T(A)).
- -- In other words, f = f' . injectTA
--liftTA :: (Num k, Ord b, Show b, Algebra k b) =>
-+liftTA :: (Eq k, Num k, Ord b, Show b, Algebra k b) =>
- (Vect k a -> Vect k b) -> Vect k (TensorAlgebra a) -> Vect k b
- liftTA f = linear (\(TA _ xs) -> product [f (return x) | x <- xs])
- -- The Show b constraint is required because we use product (and Num requires Show)!!
-@@ -67,7 +67,7 @@
- -- |Given a set\/type A\/a, and a vector space B = Vect k b, where B is also an algebra,
- -- lift a function f: A -> B to an algebra morphism f': T(A) -> B.
- -- f' will agree with f on A itself. In other words, f = f' . injectTA'
--liftTA' :: (Num k, Ord b, Show b, Algebra k b) =>
-+liftTA' :: (Eq k, Num k, Ord b, Show b, Algebra k b) =>
- (a -> Vect k b) -> Vect k (TensorAlgebra a) -> Vect k b
- liftTA' = liftTA . linear
- -- liftTA' f = linear (\(TA _ xs) -> product [f x | x <- xs])
-@@ -77,7 +77,7 @@
- -- |Tensor algebra is a functor from k-Vect to k-Alg.
- -- The action on objects is Vect k a -> Vect k (TensorAlgebra a).
- -- The action on arrows is f -> fmapTA f.
--fmapTA :: (Num k, Ord b, Show b) =>
-+fmapTA :: (Eq k, Num k, Ord b, Show b) =>
- (Vect k a -> Vect k b) -> Vect k (TensorAlgebra a) -> Vect k (TensorAlgebra b)
- fmapTA f = liftTA (injectTA . f)
- -- fmapTA f = linear (\(TA _ xs) -> product [injectTA (f (return x)) | x <- xs])
-@@ -86,18 +86,18 @@
- -- we obtain a functor Set -> k-Alg, the free algebra functor.
- -- The action on objects is a -> Vect k (TensorAlgebra a).
- -- The action on arrows is f -> fmapTA' f.
--fmapTA' :: (Num k, Ord b, Show b) =>
-+fmapTA' :: (Eq k, Num k, Ord b, Show b) =>
- (a -> b) -> Vect k (TensorAlgebra a) -> Vect k (TensorAlgebra b)
- fmapTA' = fmapTA . fmap
- -- fmapTA' f = liftTA' (injectTA' . f)
- -- fmapTA' f = linear (\(TA _ xs) -> product [injectTA' (f x) | x <- xs])
-
-
--bindTA :: (Num k, Ord b, Show b) =>
-+bindTA :: (Eq k, Num k, Ord b, Show b) =>
- Vect k (TensorAlgebra a) -> (Vect k a -> Vect k (TensorAlgebra b)) -> Vect k (TensorAlgebra b)
- bindTA = flip liftTA
-
--bindTA' :: (Num k, Ord b, Show b) =>
-+bindTA' :: (Eq k, Num k, Ord b, Show b) =>
- Vect k (TensorAlgebra a) -> (a -> Vect k (TensorAlgebra b)) -> Vect k (TensorAlgebra b)
- bindTA' = flip liftTA'
- -- Another way to think about this is variable substitution
-@@ -121,14 +121,14 @@
- munit = Sym 0 []
- mmult (Sym i xs) (Sym j ys) = Sym (i+j) $ L.sort (xs++ys)
-
--instance (Num k, Ord a) => Algebra k (SymmetricAlgebra a) where
-+instance (Eq k, Num k, Ord a) => Algebra k (SymmetricAlgebra a) where
- unit x = x *> return munit
- mult = nf . fmap (\(a,b) -> a `mmult` b)
-
- -- |Algebra morphism from tensor algebra to symmetric algebra.
- -- The kernel of the morphism is the ideal generated by all
- -- differences of products u&#x2297;v - v&#x2297;u.
--toSym :: (Num k, Ord a) =>
-+toSym :: (Eq k, Num k, Ord a) =>
- Vect k (TensorAlgebra a) -> Vect k (SymmetricAlgebra a)
- toSym = linear toSym'
- where toSym' (TA i xs) = return $ Sym i (L.sort xs)
-@@ -147,31 +147,31 @@
- injectSym' = injectSym . return
- -- injectSym' a = return (Sym 1 [a])
-
--liftSym :: (Num k, Ord b, Show b, Algebra k b) =>
-+liftSym :: (Eq k, Num k, Ord b, Show b, Algebra k b) =>
- (Vect k a -> Vect k b) -> Vect k (SymmetricAlgebra a) -> Vect k b
- liftSym f = linear (\(Sym _ xs) -> product [f (return x) | x <- xs])
-
--liftSym' :: (Num k, Ord b, Show b, Algebra k b) =>
-+liftSym' :: (Eq k, Num k, Ord b, Show b, Algebra k b) =>
- (a -> Vect k b) -> Vect k (SymmetricAlgebra a) -> Vect k b
- liftSym' = liftSym . linear
- -- liftSym' f = linear (\(Sym _ xs) -> product [f x | x <- xs])
-
--fmapSym :: (Num k, Ord b, Show b) =>
-+fmapSym :: (Eq k, Num k, Ord b, Show b) =>
- (Vect k a -> Vect k b) -> Vect k (SymmetricAlgebra a) -> Vect k (SymmetricAlgebra b)
- fmapSym f = liftSym (injectSym . f)
- -- fmapSym f = linear (\(Sym _ xs) -> product [injectSym (f (return x)) | x <- xs])
-
--fmapSym' :: (Num k, Ord b, Show b) =>
-+fmapSym' :: (Eq k, Num k, Ord b, Show b) =>
- (a -> b) -> Vect k (SymmetricAlgebra a) -> Vect k (SymmetricAlgebra b)
- fmapSym' = fmapSym . fmap
- -- fmapSym' f = liftSym' (injectSym' . f)
- -- fmapSym' f = linear (\(Sym _ xs) -> product [injectSym' (f x) | x <- xs])
-
--bindSym :: (Num k, Ord b, Show b) =>
-+bindSym :: (Eq k, Num k, Ord b, Show b) =>
- Vect k (SymmetricAlgebra a) -> (Vect k a -> Vect k (SymmetricAlgebra b)) -> Vect k (SymmetricAlgebra b)
- bindSym = flip liftSym
-
--bindSym' :: (Num k, Ord b, Show b) =>
-+bindSym' :: (Eq k, Num k, Ord b, Show b) =>
- Vect k (SymmetricAlgebra a) -> (a -> Vect k (SymmetricAlgebra b)) -> Vect k (SymmetricAlgebra b)
- bindSym' = flip liftSym'
- -- Another way to think about this is variable substitution
-@@ -190,7 +190,7 @@
- show (Ext _ xs) = filter (/= '"') $ concat $ L.intersperse "^" $ map show xs
-
-
--instance (Num k, Ord a) => Algebra k (ExteriorAlgebra a) where
-+instance (Eq k, Num k, Ord a) => Algebra k (ExteriorAlgebra a) where
- unit x = x *> return (Ext 0 [])
- mult xy = nf $ xy >>= (\(Ext i xs, Ext j ys) -> signedMerge 1 (0,[]) (i,xs) (j,ys))
- where signedMerge s (k,zs) (i,x:xs) (j,y:ys) =
-@@ -206,7 +206,7 @@
- -- |Algebra morphism from tensor algebra to exterior algebra.
- -- The kernel of the morphism is the ideal generated by all
- -- self-products u&#x2297;u and sums of products u&#x2297;v + v&#x2297;u
--toExt :: (Num k, Ord a) =>
-+toExt :: (Eq k, Num k, Ord a) =>
- Vect k (TensorAlgebra a) -> Vect k (ExteriorAlgebra a)
- toExt = linear toExt'
- where toExt' (TA i xs) = let (sign,xs') = signedSort 1 True [] xs
-@@ -230,31 +230,31 @@
- injectExt' = injectExt . return
- -- injectExt' a = return (Ext 1 [a])
-
--liftExt :: (Num k, Ord b, Show b, Algebra k b) =>
-+liftExt :: (Eq k, Num k, Ord b, Show b, Algebra k b) =>
- (Vect k a -> Vect k b) -> Vect k (ExteriorAlgebra a) -> Vect k b
- liftExt f = linear (\(Ext _ xs) -> product [f (return x) | x <- xs])
-
--liftExt' :: (Num k, Ord b, Show b, Algebra k b) =>
-+liftExt' :: (Eq k, Num k, Ord b, Show b, Algebra k b) =>
- (a -> Vect k b) -> Vect k (ExteriorAlgebra a) -> Vect k b
- liftExt' = liftExt . linear
- -- liftExt' f = linear (\(Ext _ xs) -> product [f x | x <- xs])
-
--fmapExt :: (Num k, Ord b, Show b) =>
-+fmapExt :: (Eq k, Num k, Ord b, Show b) =>
- (Vect k a -> Vect k b) -> Vect k (ExteriorAlgebra a) -> Vect k (ExteriorAlgebra b)
- fmapExt f = liftExt (injectExt . f)
- -- fmapExt f = linear (\(Ext _ xs) -> product [injectExt (f (return x)) | x <- xs])
-
--fmapExt' :: (Num k, Ord b, Show b) =>
-+fmapExt' :: (Eq k, Num k, Ord b, Show b) =>
- (a -> b) -> Vect k (ExteriorAlgebra a) -> Vect k (ExteriorAlgebra b)
- fmapExt' = fmapExt . fmap
- -- fmapExt' f = liftExt' (injectExt' . f)
- -- fmapExt' f = linear (\(Ext _ xs) -> product [injectExt' (f x) | x <- xs])
-
--bindExt :: (Num k, Ord b, Show b) =>
-+bindExt :: (Eq k, Num k, Ord b, Show b) =>
- Vect k (ExteriorAlgebra a) -> (Vect k a -> Vect k (ExteriorAlgebra b)) -> Vect k (ExteriorAlgebra b)
- bindExt = flip liftExt
-
--bindExt' :: (Num k, Ord b, Show b) =>
-+bindExt' :: (Eq k, Num k, Ord b, Show b) =>
- Vect k (ExteriorAlgebra a) -> (a -> Vect k (ExteriorAlgebra b)) -> Vect k (ExteriorAlgebra b)
- bindExt' = flip liftExt'
- -- Another way to think about this is variable substitution
-@@ -265,7 +265,7 @@
- -- Kassel p67
- data TensorCoalgebra c = TC Int [c] deriving (Eq,Ord,Show)
-
--instance (Num k, Ord c) => Coalgebra k (TensorCoalgebra c) where
-+instance (Eq k, Num k, Ord c) => Coalgebra k (TensorCoalgebra c) where
- counit = unwrap . linear counit'
- where counit' (TC 0 []) = return () -- 1
- counit' _ = zerov
-@@ -278,14 +278,14 @@
- -- coliftTC f is a coalgebra morphism, and f == projectTC . coliftTC f
-
- -- projection onto the underlying vector space
--projectTC :: (Num k, Ord b) => Vect k (TensorCoalgebra b) -> Vect k b
-+projectTC :: (Eq k, Num k, Ord b) => Vect k (TensorCoalgebra b) -> Vect k b
- projectTC = linear projectTC' where projectTC' (TC 1 [b]) = return b; projectTC' _ = zerov
- -- projectTC t = V [(b,c) | (TC 1 [b], c) <- terms t]
-
-
- -- lift a vector space morphism C -> D to a coalgebra morphism C -> T'(D)
- -- this function returns an approximation, valid only up to second order terms
--coliftTC :: (Num k, Coalgebra k c, Ord d) =>
-+coliftTC :: (Eq k, Num k, Coalgebra k c, Ord d) =>
- (Vect k c -> Vect k d) -> Vect k c -> Vect k (TensorCoalgebra d)
- coliftTC f = sumf [coliftTC' i f | i <- [0..2] ]
-
-@@ -299,7 +299,7 @@
- fn' c = fmap (\(TC 1 [x], TC _ xs) -> TC n (x:xs)) $ ( (f1' `tf` fn1') . comult) (return c)
-
-
--cobindTC :: (Num k, Ord c, Ord d) =>
-+cobindTC :: (Eq k, Num k, Ord c, Ord d) =>
- (Vect k (TensorCoalgebra c) -> Vect k d) -> Vect k (TensorCoalgebra c) -> Vect k (TensorCoalgebra d)
- cobindTC = coliftTC
-
-Index: haskell-maths-0.4.1/Math/Projects/KnotTheory/LaurentMPoly.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Projects/KnotTheory/LaurentMPoly.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Projects/KnotTheory/LaurentMPoly.hs 2012-02-04 12:43:33.000000000 +0100
-@@ -77,7 +77,7 @@
- else if c == '-' then c:cs else '+':c:cs
- -- we don't attempt sign reversal within brackets in case we have expressions like t^-1 inside the brackets
-
--instance Num r => Num (LaurentMPoly r) where
-+instance (Eq r, Num r) => Num (LaurentMPoly r) where
- LP ts + LP us = LP (mergeTerms ts us)
- negate (LP ts) = LP $ map (\(m,c)->(m,-c)) ts
- LP ts * LP us = LP $ collect $ sortBy cmpTerm $ [(g*h,c*d) | (g,c) <- ts, (h,d) <- us]
-@@ -104,7 +104,7 @@
-
- -- Fractional instance so that we can enter fractional coefficients
- -- Only lets us divide by single terms, not any other polynomials
--instance Fractional r => Fractional (LaurentMPoly r) where
-+instance (Eq r, Fractional r) => Fractional (LaurentMPoly r) where
- recip (LP [(m,c)]) = LP [(recip m, recip c)]
- recip _ = error "LaurentMPoly.recip: only supported for (non-zero) constants or monomials"
-
-@@ -191,4 +191,4 @@
- in if any (==0) (concatMap (\(LM m,c) -> M.elems m) us)
- then Left f
- else Right f'
---}
-\ No newline at end of file
-+-}
-Index: haskell-maths-0.4.1/Math/Algebra/LinearAlgebra.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebra/LinearAlgebra.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebra/LinearAlgebra.hs 2012-02-04 12:47:43.000000000 +0100
-@@ -138,7 +138,7 @@
-
-
- -- |The inverse of a matrix (over a field), if it exists
--inverse :: (Fractional a) => [[a]] -> Maybe [[a]]
-+inverse :: (Eq a, Fractional a) => [[a]] -> Maybe [[a]]
- inverse m =
- let d = length m -- the dimension
- i = idMx d
-@@ -179,7 +179,7 @@
- r:_ -> rowEchelonForm (((x:xs) <+> r) : rs)
- rowEchelonForm zs@([]:_) = zs
-
--reducedRowEchelonForm :: (Fractional a) => [[a]] -> [[a]]
-+reducedRowEchelonForm :: (Eq a, Fractional a) => [[a]] -> [[a]]
- reducedRowEchelonForm m = reverse $ reduce $ reverse $ rowEchelonForm m where
- reduce (r:rs) = let r':rs' = reduceStep (r:rs) in r' : reduce rs' -- is this scanl or similar?
- reduce [] = []
-@@ -218,7 +218,7 @@
- -- t (M m) = M (L.transpose m)
-
- -- |The determinant of a matrix (over a field)
--det :: (Fractional a) => [[a]] -> a
-+det :: (Eq a, Fractional a) => [[a]] -> a
- det [[x]] = x
- det ((x:xs):rs) =
- if x /= 0
-@@ -240,4 +240,4 @@
- data S a
- instance IntegerAsType a => IntegerAsType (S a) where
- value _ = value (undefined :: a) + 1
---}
-\ No newline at end of file
-+-}
-Index: haskell-maths-0.4.1/Math/Algebras/Octonions.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/Octonions.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/Octonions.hs 2012-02-04 12:48:31.000000000 +0100
-@@ -43,7 +43,7 @@
- i_ :: Num k => Int -> Octonion k
- i_ n = return (O n)
-
--instance (Num k) => Algebra k OBasis where
-+instance (Eq k, Num k) => Algebra k OBasis where
- unit x = x *> return (O (-1))
- mult = linear m where
- m (O (-1), O n) = return (O n)
-@@ -57,7 +57,7 @@
- 5 -> -1 *> i_ ((a+4) `mod` 7) -- i_n+4 * i_n+2 == -i_n+1
- 6 -> -1 *> i_ ((a+2) `mod` 7) -- i_n+2 * i_n+1 == -i_n+4
-
--instance Num k => HasConjugation k OBasis where
-+instance (Eq k, Num k) => HasConjugation k OBasis where
- conj = (>>= conj') where
- conj' (O n) = (if n == -1 then 1 else -1) *> return (O n)
- -- ie conj = linear conj', but avoiding unnecessary nf call
-Index: haskell-maths-0.4.1/Math/Algebras/Quaternions.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Algebras/Quaternions.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Algebras/Quaternions.hs 2012-02-04 12:45:17.000000000 +0100
-@@ -27,7 +27,7 @@
- show J = "j"
- show K = "k"
-
--instance (Num k) => Algebra k HBasis where
-+instance (Eq k, Num k) => Algebra k HBasis where
- unit x = x *> return One
- mult = linear mult'
- where mult' (One,b) = return b
-@@ -69,7 +69,7 @@
-
- -- |If an algebra has a conjugation operation, then it has multiplicative inverses,
- -- via 1/x = conj x / sqnorm x
--instance (Fractional k, Ord a, Show a, HasConjugation k a) => Fractional (Vect k a) where
-+instance (Eq k, Fractional k, Ord a, Show a, HasConjugation k a) => Fractional (Vect k a) where
- recip 0 = error "recip 0"
- recip x = (1 / sqnorm x) *> conj x
- fromRational q = fromRational q *> 1
-@@ -79,10 +79,10 @@
- scalarPart = coeff One
-
- -- |The vector part of the quaternion w+xi+yj+zk is xi+yj+zk. Also called the pure part.
--vectorPart :: (Num k) => Quaternion k -> Quaternion k
-+vectorPart :: (Eq k, Num k) => Quaternion k -> Quaternion k
- vectorPart q = q - scalarPart q *> 1
-
--instance Num k => HasConjugation k HBasis where
-+instance (Eq k, Num k) => HasConjugation k HBasis where
- conj = (>>= conj') where
- conj' One = return One
- conj' imag = -1 *> return imag
-@@ -126,7 +126,7 @@
- -- This shows that the multiplicative group of unit quaternions is isomorphic to Spin3, the double cover of SO3.
- --
- -- @reprSO3 q@ returns the 3*3 matrix representing this map.
--reprSO3 :: (Fractional k) => Quaternion k -> [[k]]
-+reprSO3 :: (Eq k, Fractional k) => Quaternion k -> [[k]]
- reprSO3 q = reprSO3' q `asMatrix` [i,j,k]
- -- It's clear from the definition that repr3' q leaves scalars invariant
-
-@@ -145,7 +145,7 @@
- -- is isomorphic to Spin4, the double cover of SO4.
- --
- -- @reprSO4 (l,r)@ returns the 4*4 matrix representing this map.
--reprSO4 :: (Fractional k) => (Quaternion k, Quaternion k) -> [[k]]
-+reprSO4 :: (Eq k, Fractional k) => (Quaternion k, Quaternion k) -> [[k]]
- reprSO4 (l,r) = reprSO4' (l,r) `asMatrix` [1,i,j,k]
- -- could consider checking that l,r are unit length - except that this is hard to achieve working over Q
-
-@@ -164,7 +164,7 @@
-
- -- Coalgebra structure on the dual vector space to the quaternions
- -- The comult is the transpose of mult
--instance Num k => Coalgebra k (Dual HBasis) where
-+instance (Eq k, Num k) => Coalgebra k (Dual HBasis) where
- counit = unwrap . linear counit'
- where counit' (Dual One) = return ()
- counit' _ = zero
-@@ -204,4 +204,4 @@
- counit (V ts) = sum [x | (One,x) <- ts]
- comult = linear cm
- where cm m = if m == One then return (m,m) else return (m,One) <+> return (One,m)
---}
-\ No newline at end of file
-+-}
-Index: haskell-maths-0.4.1/Math/Combinatorics/FiniteGeometry.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Combinatorics/FiniteGeometry.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Combinatorics/FiniteGeometry.hs 2012-02-04 12:48:08.000000000 +0100
-@@ -148,7 +148,7 @@
- -- flatsAG :: (FiniteField a) => Int -> [a] -> Int -> [[[a]]]
-
- -- |flatsAG n fq k returns the k-flats in AG(n,Fq), where fq are the elements of Fq.
--flatsAG :: (Num a) => Int -> [a] -> Int -> [[[a]]]
-+flatsAG :: (Eq a, Num a) => Int -> [a] -> Int -> [[[a]]]
- flatsAG n fq k = [map tail (r : map (r <+>) rs) | r:rs <- flatsPG n fq k, head r == 1]
- -- The head r == 1 condition is saying that we want points which are in the "finite" part of PG(n,Fq), not points at infinity
- -- The reason we add r to each of the rs is to bring them into the "finite" part
-@@ -164,7 +164,7 @@
- -- linesAG :: (FiniteField a) => Int -> [a] -> [[[a]]]
-
- -- |The lines (1-flats) in AG(n,fq)
--linesAG :: (Num a) => Int -> [a] -> [[[a]]]
-+linesAG :: (Eq a, Num a) => Int -> [a] -> [[[a]]]
- linesAG n fq = flatsAG n fq 1
-
-
-@@ -228,4 +228,4 @@
-
-
- -- Heawood graph = incidence graph of Fano plane
--heawood = to1n $ incidenceGraphPG 2 f2
-\ No newline at end of file
-+heawood = to1n $ incidenceGraphPG 2 f2
-Index: haskell-maths-0.4.1/Math/Combinatorics/IncidenceAlgebra.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Combinatorics/IncidenceAlgebra.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Combinatorics/IncidenceAlgebra.hs 2012-02-04 12:50:00.000000000 +0100
-@@ -97,7 +97,7 @@
- -- with multiplication defined by concatenation of intervals.
- -- The incidence algebra can also be thought of as the vector space of functions from intervals to k, with multiplication
- -- defined by the convolution (f*g)(x,y) = sum [ f(x,z) g(z,y) | x <= z <= y ].
--instance (Num k, Ord a) => Algebra k (Interval a) where
-+instance (Eq k, Num k, Ord a) => Algebra k (Interval a) where
- -- |Note that we are not able to give a generic definition of unit for the incidence algebra,
- -- because it depends on which poset we are working in,
- -- and that information is encoded at the value level rather than the type level. See unitIA.
-@@ -111,14 +111,14 @@
-
-
- -- |The unit of the incidence algebra of a poset
--unitIA :: (Num k, Ord t) => Poset t -> Vect k (Interval t)
-+unitIA :: (Eq k, Num k, Ord t) => Poset t -> Vect k (Interval t)
- unitIA poset@(Poset (set,_)) = sumv [return (Iv poset (x,x)) | x <- set]
-
- basisIA :: Num k => Poset t -> [Vect k (Interval t)]
- basisIA poset = [return (Iv poset xy) | xy <- intervals poset]
-
- -- |The zeta function of a poset
--zetaIA :: (Num k, Ord t) => Poset t -> Vect k (Interval t)
-+zetaIA :: (Eq k, Num k, Ord t) => Poset t -> Vect k (Interval t)
- zetaIA poset = sumv $ basisIA poset
-
- -- Then for example, zeta^2 counts the number of points in each interval
-@@ -132,7 +132,7 @@
-
- -- calculate the mobius function of a poset, with memoization
- -- |The Mobius function of a poset
--muIA :: (Num k, Ord t) => Poset t -> Vect k (Interval t)
-+muIA :: (Eq k, Num k, Ord t) => Poset t -> Vect k (Interval t)
- muIA poset@(Poset (set,po)) = sumv [mus M.! (x,y) *> return (Iv poset (x,y)) | x <- set, y <- set]
- where mu (x,y) | x == y = 1
- | po x y = negate $ sum [mus M.! (x,z) | z <- set, po x z, po z y, z /= y]
-@@ -152,7 +152,7 @@
- -- Stanley, Enumerative Combinatorics I, p144
- -- |The inverse of an element in the incidence algebra of a poset.
- -- This is only defined for elements which are non-zero on all intervals (x,x)
--invIA :: (Fractional k, Ord t) => Vect k (Interval t) -> Maybe (Vect k (Interval t))
-+invIA :: (Eq k, Fractional k, Ord t) => Vect k (Interval t) -> Maybe (Vect k (Interval t))
- invIA f | f == zerov = Nothing -- error "invIA 0"
- | any (==0) [f' (x,x) | x <- set] = Nothing -- error "invIA: not invertible"
- | otherwise = Just g
-@@ -210,7 +210,7 @@
- -- INCIDENCE COALGEBRA
- -- Schmitt, Incidence Hopf Algebras
-
--instance (Num k, Ord a) => Coalgebra k (Interval a) where
-+instance (Eq k, Num k, Ord a) => Coalgebra k (Interval a) where
- counit = unwrap . linear counit'
- where counit' (Iv _ (x,y)) = (if x == y then 1 else 0) *> return ()
- comult = linear comult'
-@@ -228,7 +228,7 @@
- -- rather than of intervals themselves.
- -- Note that if this operation is to be performed repeatedly for the same poset,
- -- then it is more efficient to use @toIsoClasses' poset@, which memoizes the isomorphism class lookup table.
--toIsoClasses :: (Num k, Ord a) => Vect k (Interval a) -> Vect k (Interval a)
-+toIsoClasses :: (Eq k, Num k, Ord a) => Vect k (Interval a) -> Vect k (Interval a)
- toIsoClasses v
- | v == zerov = zerov
- | otherwise = toIsoClasses' poset v
-@@ -236,7 +236,7 @@
-
- -- |Given a poset, @toIsoClasses' poset@ is the linear map from the incidence Hopf algebra of the poset to itself,
- -- in which each interval is mapped to (the minimal representative of) its isomorphism class.
--toIsoClasses' :: (Num k, Ord a) => Poset a -> Vect k (Interval a) -> Vect k (Interval a)
-+toIsoClasses' :: (Eq k, Num k, Ord a) => Poset a -> Vect k (Interval a) -> Vect k (Interval a)
- toIsoClasses' poset = linear isoRep
- where isoRep iv = case isoMap M.! iv of
- Nothing -> return iv
-Index: haskell-maths-0.4.1/Math/Combinatorics/Matroid.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Combinatorics/Matroid.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Combinatorics/Matroid.hs 2012-02-04 12:51:10.000000000 +0100
-@@ -171,13 +171,13 @@
- -- |Given a matrix, represented as a list of rows, number the columns [1..],
- -- and construct the matroid whose independent sets correspond to those sets of columns which are linearly independent
- -- (or in case there are repetitions, those multisets of columns which are sets, and which are linearly independent).
--vectorMatroid :: (Fractional k) => [[k]] -> Matroid Int
-+vectorMatroid :: (Eq k, Fractional k) => [[k]] -> Matroid Int
- vectorMatroid = vectorMatroid' . L.transpose
-
- -- |Given a list of vectors (or rows of a matrix), number the vectors (rows) [1..], and construct the matroid whose independent sets
- -- correspond to those sets of vectors (rows) which are linearly independent
- -- (or in case there are repetitions, those multisets which are sets, and which are linearly independent).
--vectorMatroid' :: (Fractional k) => [[k]] -> Matroid Int
-+vectorMatroid' :: (Eq k, Fractional k) => [[k]] -> Matroid Int
- vectorMatroid' vs = fromBases (map fst vs') bs
- where vs' = zip [1..] vs
- bs = dfs [] [([],[],vs')]
-@@ -613,7 +613,7 @@
- --
- -- A multiset of points in k^n is said to be affinely dependent if it contains two identical points,
- -- or three collinear points, or four coplanar points, or ... - and affinely independent otherwise.
--affineMatroid :: (Fractional k) => [[k]] -> Matroid Int
-+affineMatroid :: (Eq k, Fractional k) => [[k]] -> Matroid Int
- affineMatroid vs = vectorMatroid' $ map (1:) vs
-
- -- |fromGeoRep returns a matroid from a geometric representation consisting of dependent flats of various ranks.
-@@ -790,11 +790,11 @@
- -- REPRESENTABILITY
-
- -- |@matroidPG n fq@ returns the projective geometry PG(n,Fq), where fq is a list of the elements of Fq
--matroidPG :: (Fractional a) => Int -> [a] -> Matroid Int
-+matroidPG :: (Eq a, Fractional a) => Int -> [a] -> Matroid Int
- matroidPG n fq = vectorMatroid' $ ptsPG n fq
-
- -- |@matroidAG n fq@ returns the affine geometry AG(n,Fq), where fq is a list of the elements of Fq
--matroidAG :: (Fractional a) => Int -> [a] -> Matroid Int
-+matroidAG :: (Eq a, Fractional a) => Int -> [a] -> Matroid Int
- matroidAG n fq = vectorMatroid' $ ptsAG n fq
-
-
-@@ -889,7 +889,7 @@
-
- -- |Find representations of the matroid m over fq. Specifically, this function will find one representative
- -- of each projective equivalence class of representation.
--representations :: (Fractional fq, Ord a) => [fq] -> Matroid a -> [[[fq]]]
-+representations :: (Eq fq, Fractional fq, Ord a) => [fq] -> Matroid a -> [[[fq]]]
- representations fq m = map L.transpose $ representations' (reverse $ zip b ir) (zip b' dhash')
- where fq' = tail fq -- fq \ {0}
- b = head $ bases m
-@@ -905,7 +905,7 @@
- representations' ls [] = [map snd $ reverse ls]
-
- -- |Is the matroid representable over Fq? For example, to find out whether a matroid m is binary, evaluate @isRepresentable f2 m@.
--isRepresentable :: (Fractional fq, Ord a) => [fq] -> Matroid a -> Bool
-+isRepresentable :: (Eq fq, Fractional fq, Ord a) => [fq] -> Matroid a -> Bool
- isRepresentable fq m = (not . null) (representations fq m)
-
- -- |A binary matroid is a matroid which is representable over F2
-Index: haskell-maths-0.4.1/Math/Combinatorics/Poset.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/Combinatorics/Poset.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/Combinatorics/Poset.hs 2012-02-04 12:48:52.000000000 +0100
-@@ -146,7 +146,7 @@
- -- This is the projective geometry PG(n,q)
- -- |posetL n fq is the lattice of subspaces of the vector space Fq^n, ordered by inclusion.
- -- Subspaces are represented by their reduced row echelon form.
--posetL :: FiniteField fq => Int -> [fq] -> Poset [[fq]]
-+posetL :: (Eq fq, FiniteField fq) => Int -> [fq] -> Poset [[fq]]
- posetL n fq = Poset ( subspaces fq n, isSubspace )
-
-
-Index: haskell-maths-0.4.1/Math/CommutativeAlgebra/GroebnerBasis.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/CommutativeAlgebra/GroebnerBasis.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/CommutativeAlgebra/GroebnerBasis.hs 2012-02-04 12:47:14.000000000 +0100
-@@ -281,10 +281,10 @@
- where h // g = let ([u],_) = quotRemMP h [g] in u
-
- -- |@eliminate vs gs@ returns the elimination ideal obtained from the ideal generated by gs by eliminating the variables vs.
--eliminate :: (Fractional k, Ord k, MonomialConstructor m, Monomial (m v), Ord (m v)) =>
-+eliminate :: (Eq k, Fractional k, Ord k, MonomialConstructor m, Monomial (m v), Ord (m v)) =>
- [Vect k (m v)] -> [Vect k (m v)] -> [Vect k (m v)]
- eliminate vs gs = let subs = subFst vs in eliminateFst [g `bind` subs | g <- gs]
-- where subFst :: (Num k, MonomialConstructor m, Eq (m v), Mon (m v)) =>
-+ where subFst :: (Eq k, Num k, MonomialConstructor m, Eq (m v), Mon (m v)) =>
- [Vect k (m v)] -> v -> Vect k (Elim2 (m v) (m v))
- subFst vs = (\v -> let v' = var v in if v' `elem` vs then toElimFst v' else toElimSnd v')
-
-@@ -386,4 +386,4 @@
- -- The dimension of a variety
- dim vs gs = 1 + deg (hilbertPolyQA vs gs)
-
--dim' gs = 1 + deg (hilbertPolyQA' gs)
-\ No newline at end of file
-+dim' gs = 1 + deg (hilbertPolyQA' gs)
-Index: haskell-maths-0.4.1/Math/CommutativeAlgebra/Polynomial.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/CommutativeAlgebra/Polynomial.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/CommutativeAlgebra/Polynomial.hs 2012-02-04 12:46:34.000000000 +0100
-@@ -157,7 +157,7 @@
- lexvar v = return $ Lex $ M 1 [(v,1)]
- -- lexvar = var
-
--instance (Num k, Ord v, Show v) => Algebra k (Lex v) where
-+instance (Eq k, Num k, Ord v, Show v) => Algebra k (Lex v) where
- unit x = x *> return munit
- mult xy = nf $ fmap (\(a,b) -> a `mmult` b) xy
-
-@@ -191,7 +191,7 @@
- glexvar v = return $ Glex $ M 1 [(v,1)]
- -- glexvar = var
-
--instance (Num k, Ord v, Show v) => Algebra k (Glex v) where
-+instance (Eq k, Num k, Ord v, Show v) => Algebra k (Glex v) where
- unit x = x *> return munit
- mult xy = nf $ fmap (\(a,b) -> a `mmult` b) xy
-
-@@ -227,7 +227,7 @@
- grevlexvar v = return $ Grevlex $ M 1 [(v,1)]
- -- grevlexvar = var
-
--instance (Num k, Ord v, Show v) => Algebra k (Grevlex v) where
-+instance (Eq k, Num k, Ord v, Show v) => Algebra k (Grevlex v) where
- unit x = x *> return munit
- mult xy = nf $ fmap (\(a,b) -> a `mmult` b) xy
-
-@@ -258,7 +258,7 @@
- mcoprime (Elim2 a1 b1) (Elim2 a2 b2) = mcoprime a1 a2 && mcoprime b1 b2
- mdeg (Elim2 a b) = mdeg a + mdeg b
-
--instance (Num k, Ord a, Mon a, Ord b, Mon b) => Algebra k (Elim2 a b) where
-+instance (Eq k, Num k, Ord a, Mon a, Ord b, Mon b) => Algebra k (Elim2 a b) where
- unit x = x *> return munit
- mult xy = nf $ fmap (\(a,b) -> a `mmult` b) xy
-
-@@ -286,7 +286,7 @@
- -- This is occasionally useful.
-
- -- |bind performs variable substitution
--bind :: (Num k, MonomialConstructor m, Ord a, Show a, Algebra k a) =>
-+bind :: (Eq k, Num k, MonomialConstructor m, Ord a, Show a, Algebra k a) =>
- Vect k (m v) -> (v -> Vect k a) -> Vect k a
- v `bind` f = linear (\m -> product [f x ^ i | (x,i) <- mindices m]) v
- -- V ts `bind` f = sum [c *> product [f x ^ i | (x,i) <- mindices m] | (m, c) <- ts]
-@@ -298,7 +298,7 @@
-
- -- |Evaluate a polynomial at a point.
- -- For example @eval (x^2+y^2) [(x,1),(y,2)]@ evaluates x^2+y^2 at the point (x,y)=(1,2).
--eval :: (Num k, MonomialConstructor m, Eq (m v), Show v) =>
-+eval :: (Eq k, Num k, MonomialConstructor m, Eq (m v), Show v) =>
- Vect k (m v) -> [(Vect k (m v), k)] -> k
- eval f vs = unwrap $ f `bind` sub
- where sub x = case lookup (var x) vs of
-@@ -307,7 +307,7 @@
-
- -- |Perform variable substitution on a polynomial.
- -- For example @subst (x*z-y^2) [(x,u^2),(y,u*v),(z,v^2)]@ performs the substitution x -> u^2, y -> u*v, z -> v^2.
--subst :: (Num k, MonomialConstructor m, Eq (m u), Show u, Ord (m v), Show (m v), Algebra k (m v)) =>
-+subst :: (Eq k, Num k, MonomialConstructor m, Eq (m u), Show u, Ord (m v), Show (m v), Algebra k (m v)) =>
- Vect k (m u) -> [(Vect k (m u), Vect k (m v))] -> Vect k (m v)
- subst f vs = f `bind` sub
- where sub x = case lookup (var x) vs of
-@@ -392,7 +392,7 @@
- -- In the case where the gs are a Groebner basis for an ideal I,
- -- then @f %% gs@ is the equivalence class representative of f in R/I,
- -- and is zero if and only if f is in I.
--(%%) :: (Fractional k, Monomial m, Ord m, Algebra k m) =>
-+(%%) :: (Eq k, Fractional k, Monomial m, Ord m, Algebra k m) =>
- Vect k m -> [Vect k m] -> Vect k m
- f %% gs = rewrite f gs
- -- f %% gs = r where (_,r) = quotRemMP f gs
-@@ -402,7 +402,7 @@
- -- The instance is well-defined only for scalars, and gives an error if used on other values.
- -- The purpose of this is to allow entry of fractional scalars, in expressions such as @x/2@.
- -- On the other hand, an expression such as @2/x@ will return an error.
--instance (Fractional k, Monomial m, Ord m, Algebra k m) => Fractional (Vect k m) where
-+instance (Eq k, Fractional k, Monomial m, Ord m, Algebra k m) => Fractional (Vect k m) where
- recip (V [(m,c)]) | m == munit = V [(m,1/c)]
- | otherwise = error "Polynomial recip: only defined for scalars"
- fromRational x = V [(munit, fromRational x)]
-Index: haskell-maths-0.4.1/Math/QuantumAlgebra/Tangle.hs
-===================================================================
---- haskell-maths-0.4.1.orig/Math/QuantumAlgebra/Tangle.hs 2011-11-10 22:38:12.000000000 +0100
-+++ haskell-maths-0.4.1/Math/QuantumAlgebra/Tangle.hs 2012-02-04 12:43:59.000000000 +0100
-@@ -24,7 +24,7 @@
-
- -- type TensorAlgebra k a = Vect k [a]
-
--instance (Num k, Ord a) => Algebra k [a] where
-+instance (Eq k, Num k, Ord a) => Algebra k [a] where
- unit 0 = zero -- V []
- unit x = V [(munit,x)]
- mult = nf . fmap (\(a,b) -> a `mmult` b)
diff --git a/p/haskell-maths/debian/patches/series b/p/haskell-maths/debian/patches/series
deleted file mode 100644
index fd671ff2e..000000000
--- a/p/haskell-maths/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-add-Eq-Constraints