!      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe,-478=>?@AHUVXk}n!rings A (potentially non-commutative)  under . ringsA commutative  under .ringsRings.A ring R9 is a commutative group with a second monoidal operation  that distributes over .BThe basic properties of a ring follow immediately from the axioms:  r  ! = ! = !  r  - "  r = - rYFurthermore, the binomial formula holds for any commuting pair of elements (that is, any a and b such that  a * b = b * a).If  zero = one in a ring R, then R has only one element, and is called the zero ring. Otherwise the additive identity, the additive inverse of each element, and the multiplicative identity are unique.See  0https://en.wikipedia.org/wiki/Ring_(mathematics).If the ring is  *https://en.wikipedia.org/wiki/Ordered_ringordered (i.e. has an ? instance), then the following additional properties must hold:  a  b ! a  c  b  c  !  a  !  b ! !  a  bCSee the properties module for a detailed specification of the laws.ringsRight semirings.GA right semiring is a pre-semiring with two distinct neutral elements, ! and " , such that ! is right-neutral wrt addition, "+ is right-neutral wrt multiplication, and !+ is right-annihilative wrt multiplication.  Neutrality !  r = r "  r = r  Absorbtion !  a = ! ringsARight pre-semirings. and (non-unital and unital) right semirings.HA right pre-semiring (sometimes referred to as a bisemigroup) is a type RD endowed with two associative binary (i.e. semigroup) operations:  and ?, along with a right-distributivity property connecting them:Distributivity (a  b)  c = (a  c)  (b  c) =Note that addition and multiplication needn't be commutative.CSee the properties module for a detailed specification of the laws.rings Direct sum.ringsTensor product.ringsHyphenation operator.rings+Additive semigroup operation on a semiring.!Dual [2] + Dual [3] :: Dual [Int]Dual {getDual = [3,2]}rings1Multiplicative semigroup operation on a semiring.!Dual [2] * Dual [3] :: Dual [Int]Dual {getDual = [5]}rings%Evaluate a non-empty presemiring sum.rings?Evaluate a non-empty presemiring sum using a given presemiring.<evalWith1 Max $ (1 :| [2..5 :: Int]) :| [1 :| [2..5 :: Int]]Y| Fold over a non-empty collection using the additive operation of an arbitrary semiring.<sumWith1 First $ (1 :| [2..5 :: Int]) * (1 :| [2..5 :: Int])First {getFirst = 1}?sumWith1 First $ Nothing :| [Just (5 :: Int), Just 6, Nothing]First {getFirst = Nothing}"sumWith1 Just $ 1 :| [2..5 :: Int]Just 15rings)Evaluate a non-empty presemiring product.ringsCEvaluate a non-empty presemiring product using a given presemiring.TAs the collection is non-empty this does not require a distinct multiplicative unit:&productWith1 Just $ 1 :| [2..5 :: Int]Just 120)productWith1 First $ 1 :| [2..(5 :: Int)]First {getFirst = 15}CproductWith1 First $ Nothing :| [Just (5 :: Int), Just 6, Nothing]First {getFirst = Just 11}rings)Cross-multiply two non-empty collections.Mxmult1 (Right 2 :| [Left "oops"]) (Right 2 :| [Right 3]) :: Either [Char] IntRight 4rings"Evaluate a presemiring expression. rings<Evaluate a presemiring expression using a given presemiring.FevalWith1 (Max . Down) $ (1 :| [2..5 :: Int]) :| [-5 :| [2..5 :: Int]]Max {getMax = Down 9}=evalWith1 Max $ (1 :| [2..5 :: Int]) :| [-5 :| [2..5 :: Int]]Max {getMax = 15}!ringsAdditive unit of a semiring."rings"Multiplicative unit of a semiring.#rings # = "  " $rings8Evaluate a natural-numbered power of a semiring element.  " = a $ 0 8 ^ 0 :: Int1%ringsEvaluate a semiring sum.sum [1..5 :: Int]15&rings/Evaluate a semiring sum using a given semiring.'ringsEvaluate a semiring product.product [1..5 :: Int]120(rings3Evaluate a semiring product using a given semiring. ' f =   (() . f) " productWith Just [1..5 :: Int]Just 120)ringsCross-multiply two collections.xmult (V3 1 2 3) (V3 1 2 3)14xmult [1,2,3 :: Int] [1,2,3]36xmult [1,2,3 :: Int] []0*ringsEvaluate a semiring expression. * (a11 * .. * a1m) + (a21 * .. * a2n) + ...-eval [[1, 2], [3, 4 :: Int]] -- 1 * 2 + 3 * 4148eval $ sequence [[1, 2], [3, 4 :: Int]] -- 1 + 2 * 3 + 421+rings6Evaluate a semiring expression using a given semiring.+evalWith Max [[1..4 :: Int], [0..2 :: Int]]Max {getMax = 24},ringsSubtract two elements. a  b = . b a -ringsReverse the sign of an element..ringsSubtract two elements./ringsAbsolute value of an element.  / r = r  (0 r)0ringsExtract the sign of an element.0 satisfies a trichotomy law:  0 r = - r || ! || rnThis follows from the fact that ordered rings are abelian, linearly ordered groups with respect to addition.See  4https://en.wikipedia.org/wiki/Linearly_ordered_group.1  !"#$%&'()*+,-./01 !"#$%&'()*+,.-/0  12667$8,6Safe,-478=>?@AHUVXk rings!A type modeling the real numbers.ringsA  1https://en.wikipedia.org/wiki/Field_(mathematics)field.rings*A semifield, near-field, or division ring.Instances needn't have commutative multiplication or additive inverses, however addition must be commutative, and addition and multiplication must be associative as usual.&See also the wikipedia definitions of: 'https://en.wikipedia.org/wiki/Semifield semifield 6https://en.wikipedia.org/wiki/Near-field_(mathematics) near-field +https://en.wikipedia.org/wiki/Division_ring division ringringsThe NaN value of the semifield.   = !  !rings'The positive infinity of the semifield.   = "  !rings-Reciprocal of a multiplicative group element. x  y = x   y x  y =  x  y "recip (3 :+ 4) :: Complex Rational3 % 25 :+ (-4) % 25 recip (3 :+ 4) :: Complex Double0.12 :+ (-0.16)recip (3 :+ 4) :: Complex Pico!0.120000000000 :+ -0.160000000000rings1Right division by a multiplicative group element.rings0Left division by a multiplicative group element.When  is commutative we must have:  x  y = y  xringsThe "  ! value of the field.   = - "  !rings1Integral power of a multiplicative group element.  " == a  08 ^^ 0 :: Double1.08 ^^ 0 :: Pico1.000000000000  778Safe+,-478=>?@AHUVXk !ringsA  'https://en.wikipedia.org/wiki/Bialgebra bialgebra over a semiring.rings#A bialgebra over a free semimodule f.rings%A counital coalgebra over a semiring.rings,A counital coalgebra over a free semimodule f.ringsA coalgebra over a semiring.rings  =   runLin  codiagonal rings#A coalgebra over a free semimodule f.ringsA  Ahttps://en.wikipedia.org/wiki/Algebra_over_a_field#Unital_algebraunital algebra over a semiring.rings  = runLin initial    rings(A unital algebra over a free semimodule f. ringsAn  Vhttps://en.wikipedia.org/wiki/Algebra_over_a_field#Generalization:_algebra_over_a_ringalgebra over a semiring.Note that the algebra  5https://en.wikipedia.org/wiki/Non-associative_algebraneedn't be associative. rings   = runLin diagonal    ringsAn algebra over a free module f."Note that this is distinct from a  *https://en.wikipedia.org/wiki/Free_algebra free algebra. rings &https://en.wikipedia.org/wiki/Bimodule Bisemimodule over a commutative semiring.  l .  r =  r .  l rings'Left and right-multiply by two scalars.rings (https://en.wikipedia.org/wiki/SemimoduleRight semimodule over a commutative semiring.JThe laws for right semimodules are analagous to those of left semimodules.7See the properties module for a detailed specification.ringsRight-multiply by a scalar.rings (https://en.wikipedia.org/wiki/SemimoduleLeft semimodule over a commutative semiring.4All instances must satisfy the following identities:  s (x  y) =  s x   s y  (s1  s2) x =  s1 x   s2 x  (s1  s2) =  s1 .  s2  ! = ! When the ring of coefficients s' is unital we must additionally have:   " =  CSee the properties module for a detailed specification of the laws.ringsLeft-multiply by a scalar.rings+Left-multiply a module element by a scalar.rings0Right-divide a vector by a scalar (on the left).rings!Left-divide a vector by a scalar.rings)Linearly interpolate between two vectors.0u = V3 (1 :% 1) (2 :% 1) (3 :% 1) :: V3 Rational0v = V3 (2 :% 1) (4 :% 1) (6 :% 1) :: V3 Rationalr = 1 :% 2 :: Rational lerp r u vV3 (6 % 4) (12 % 4) (18 % 4)ringsDefault definition of  for a free module.ringsDefault definition of  for a commutative group.rings,Right-multiply a module element by a scalar.rings"Right-divide a vector by a scalar. rings0Left-divide a vector by a scalar (on the right).!ringsDefault definition of  for a free module.8ringsTensor algebra on b.joined (<>) [1..3 :: Int][1,2,3,1,2,3,1,2,3,1,2,3],joined (\f g -> fold (f ++ g)) [1..3] :: Int24Crings,The free commutative band coalgebra over IntDrings#The free commutative band coalgebraFringsThe tensor coalgebra on c.#      !# !     777777 7!7Safe+,78=>?@AHSUVXk#Xrings'An endomorphism over a free semimodule. one + two !# V2 1 2 :: V2 Double V2 3.0 6.0YringsDA linear transformation between free semimodules indexed with bases b and c. f p x  y = (f p x) + (f p y) f p (r  x) = r  (f p x) CautionE: You must ensure these laws hold when using the default constructor.Prefer m or   where appropriate.\ringsBLinear functionals from elements of a free semimodule to a scalar. f b (x  y) = (f b x)  (f b y) f b (x  a) = a  (f b x) CautionE: You must ensure these laws hold when using the default constructor.>Co-vectors transform covariantly as a function of their bases.See  Qhttps://en.wikipedia.org/wiki/Covariance_and_contravariance_of_vectors#Definition._rings.A vector in a vector space or free semimodule.Equivalent to  Rhttps://hackage.haskell.org/package/base/docs/Data-Functor-Contravariant.html#t:OpOp.?Vectors transform contravariantly as a function of their bases.See  Qhttps://en.wikipedia.org/wiki/Covariance_and_contravariance_of_vectors#Definition.brings*Apply a covector to a vector on the right.crings)Apply a covector to a vector on the left.drings7Use a linear transformation to map over a vector space.Note that the basis transforms  Shttps://en.wikipedia.org/wiki/Covariant_transformation#Contravariant_transformation contravariantly.erings:Obtain a vector from a vector on the tensor product space.frings2Obtain a vector from the unit of a unital algebra. f a = d ~ (_ $ _ -> a) grings=Multiplication operator on an algebra over a free semimodule.3flip runVec E22 $ (vec $ V2 1 2) !*! (vec $ V2 7 4)8Caution in general mult) needn't be commutative, nor associative.hrings>Obtain a covector from a linear combination of basis elements.3images [(2, E31),(3, E32)] !* vec (V3 1 1 1) :: Int5irings5Use a linear transformation to map over a dual space.Note that the basis transforms  6https://en.wikipedia.org/wiki/Covariant_transformation covariantly.jrings>Obtain a covector from a covector on the tensor product space.krings:Obtain a covector from the counit of a counital coalgebra. k = i  (\ $ f -> f ()) lrings>Multiplication operator on a coalgebra over a free semimodule.;flip runCov (e2 1 1) $ comult (cov $ V2 1 2) (cov $ V2 7 4)11Caution in general l+ needn't be commutative, nor coassociative.mrings Create a Y, from a linear combination of basis vectors.?image (e2 [(2, E31),(3, E32)] [(1, E33)]) !# V3 1 1 1 :: V2 IntV2 5 1nringsY is an invariant functor. See also  .http://comonad.com/reader/2008/rotten-bananas/.oringsThe  4https://en.wikipedia.org/wiki/Augmentation_(algebra) augmentation ring homomorphism.prings#Apply a transformation to a vector.qrings#Apply a transformation to a vector.rringsCompose two transformations.r = srings$Swap components of a tensor product.)This is equivalent to a matrix transpose.trings Swap components of a direct sum.uringsTODO: DocumentvringsTODO: Documentwrings5Project onto the left-hand component of a direct sum.xrings6Project onto the right-hand component of a direct sum.yrings5Left (post) composition with a linear transformation.zrings5Right (pre) composition with a linear transformation.{rings8Left and right composition with a linear transformation.  { f g = y f  z g|rings  (((c1,()),(c2,())) -> (c1,c2))  (  ~)  | =   ((((),c1),((),c2)) -> (c1,c2))  (~  )  | =  }rings  ((c1,c2) -> ((c1,()),(c2,())))  (  )  } =   ((c1,c2) -> (((),c1),((),c2)))  (  )  } =  ~ringsTODO: DocumentringsTODO: DocumentringsCConvolution with an associative algebra and coassociative coalgebra*XYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~*_`adefbcg\]^hijklYZ[Xmnopqrstuvwxyz{|}~ ^3a3b7c7g7l7p2q2r2Safe+,-478=>?@AHSUVXk*rings+Retrieve the coefficient of a basis elementelt E21 (V2 1 2)1rings:Obtain a vector from an array of coefficients and a basis.rings<Obtain a covector from an array of coefficients and a basis.#cov (V2 7 4) !* vec (V2 1 2) :: Int11rings"Insert an element into an algebra.-When the algebra is trivial this is equal to .!V4 1 2 3 4 .*. unit two :: V4 Int V4 2 4 6 8rings:Unital element of a unital algebra over a free semimodule.unit' :: Complex Int1 :+ 0rings:Obtain an element from a coalgebra over a free semimodule.rings!Create a unit vector at an index.dirac E21 :: V2 IntV2 1 0dirac E42 :: V4 Int V4 0 1 0 0rings+Create a lens from a representable functor.rings5Create an indexed grate from a representable functor.rings=Multiplication operator on an algebra over a free semimodule.Caution in general ) needn't be commutative, nor associative.ringsInner product.3When the coalgebra is trivial this is a variant of ) restricted to free functors.V3 1 2 3 `inner` V3 1 2 314ringsOuter product.V2 1 1 `outer` V2 1 1Compose (V2 (V2 1 1) (V2 1 1))ringsSquared l2 norm of a vector.rings,Obtain a linear linsformation from a matrix.  () = (p) . rings Retrieve an element of a matrix.elt2 E21 E21 $ m22 1 2 3 41ringsRetrieve a row of a matrix.row E22 $ m23 1 2 3 4 5 6V3 4 5 6rings!Obtain a matrix by stacking rows.rows (V2 1 2) :: M22 IntV2 (V2 1 2) (V2 1 2)ringsRetrieve a column of a matrix.#elt E22 . col E31 $ m23 1 2 3 4 5 64rings$Obtain a matrix by stacking columns.cols (V2 1 2) :: M22 IntV2 (V2 1 1) (V2 2 2)ringsObtain a vector from a tensor.$When the algebra is trivial we have:   f =  $   ( .  ( f))diag $ m22 1.0 2.0 3.0 4.0 V2 1.0 4.0ringsObtain a tensor from a vector.&When the coalgebra is trivial we have:   =     rings Obtain a  ;https://en.wikipedia.org/wiki/Diagonal_matrix#Scalar_matrix scalar matrix from a scalar.scalar 4.0 :: M22 Double&Compose (V2 (V2 4.0 0.0) (V2 0.0 4.0))ringsObtain an identity matrix.identity :: M33 Int-Compose (V3 (V3 1 0 0) (V3 0 1 0) (V3 0 0 1))rings2Multiply a matrix on the right by a column vector.  () = (p) . +lin (m23 1 2 3 4 5 6) !# V3 7 8 9 :: V2 Int V2 50 122%m23 1 2 3 4 5 6 .# V3 7 8 9 :: V2 Int V2 50 1224m22 1 0 0 0 .# m23 1 2 3 4 5 6 .# V3 7 8 9 :: V2 IntV2 50 0rings.Multiply a matrix on the left by a row vector.V2 1 2 #. m23 3 4 5 6 7 8 V3 15 18 216V2 1 2 #. m23 3 4 5 6 7 8 #. m32 1 0 0 0 0 0 :: V2 IntV2 15 0ringsMultiply two matrices.&m22 1 2 3 4 .#. m22 1 2 3 4 :: M22 Int!Compose (V2 (V2 7 10) (V2 15 22)).m23 1 2 3 4 5 6 .#. m32 1 2 3 4 4 5 :: M22 Int"Compose (V2 (V2 19 25) (V2 43 58))ringsTrace of an endomorphism.trace $ m22 1.0 2.0 3.0 4.05.0ringsTranspose a matrix.&transpose $ m23 1 2 3 4 5 6 :: M32 IntV3 (V2 1 4) (V2 2 5) (V2 3 6)&bcdgipq&bcgdiqp76777Safe,=>?@AHSUVXk,Safe+,-478=>?@AHSUVXkd,rings A 4x4 matrix.rings A 4x3 matrix.rings A 4x2 matrix.rings A 3x4 matrix.rings A 3x3 matrix.rings A 3x2 matrix.rings A 2x4 matrix.rings A 2x3 matrix.rings A 2x2 matrix.rings A 4x1 matrix.rings A 3x1 matrix.rings A 2x1 matrix.rings A 1x4 matrix. rings A 1x3 matrix.!rings A 1x2 matrix."rings A 1x1 matrix.,ringsCross product. a `cross' a = ! a `cross' b = - ( b `cross' a ) , a `cross' ( b  c ) = ( a `cross' b )  ( a `cross' c ) , ( r a ) `cross' b = a `cross' ( r b ) = r ( a `cross' b ) . a `cross' ( b `cross' c )  b `cross' ( c `cross' a )  c `cross' ( a `cross' b ) = ! . See  -https://en.wikipedia.org/wiki/Jacobi_identityJacobi identity.-ringsScalar triple product. - x y z = - z x y = - y z x - x y z = -  - x z y = -  - y x z - x x y = - x y y = - x y x = ! (- x y z)  x = (x `cross' y) `cross' (x `cross' z) 1triple (V3 0 0 1) (V3 1 0 0) (V3 0 1 0) :: Double1.0.ringsConstruct a 1x1 matrix.m11 1 :: M11 IntCompose (V1 (V1 1))/ringsConstruct a 1x2 matrix.m12 1 2 :: M12 IntCompose (V1 (V2 1 2))0ringsConstruct a 1x3 matrix.m13 1 2 3 :: M13 IntCompose (V1 (V3 1 2 3))1ringsConstruct a 1x4 matrix.m14 1 2 3 4 :: M14 IntCompose (V1 (V4 1 2 3 4))2ringsConstruct a 2x1 matrix.m21 1 2 :: M21 IntCompose (V2 (V1 1) (V1 2))3ringsConstruct a 3x1 matrix.m31 1 2 3 :: M31 Int!Compose (V3 (V1 1) (V1 2) (V1 3))4ringsConstruct a 4x1 matrix.m41 1 2 3 4 :: M41 Int(Compose (V4 (V1 1) (V1 2) (V1 3) (V1 4))5ringsConstruct a 2x2 matrix.!Arguments are in row-major order.m22 1 2 3 4 :: M22 IntCompose (V2 (V2 1 2) (V2 3 4))6ringsConstruct a 2x3 matrix.!Arguments are in row-major order.7ringsConstruct a 2x4 matrix.!Arguments are in row-major order.8ringsConstruct a 3x2 matrix.!Arguments are in row-major order.9ringsConstruct a 3x3 matrix.!Arguments are in row-major order.:ringsConstruct a 3x4 matrix.!Arguments are in row-major order.;ringsConstruct a 4x2 matrix.!Arguments are in row-major order.<ringsConstruct a 4x3 matrix.!Arguments are in row-major order.=ringsConstruct a 4x4 matrix.!Arguments are in row-major order.>rings 1x1 matrix inverse over a field.inv1 $ m11 4.0 :: M11 DoubleCompose (V1 (V1 0.25))?rings42x2 matrix bdeterminant over a commutative semiring.bdet2 $ m22 1 2 3 4(4,6)@rings/2x2 matrix determinant over a commutative ring. @ =  () . ? det2 $ m22 1 2 3 4 :: Double-2.0Arings 2x2 matrix inverse over a field. inv2 $ m22 1 2 3 4 :: M22 Double,Compose (V2 (V2 (-2.0) 1.0) (V2 1.5 (-0.5)))Brings43x3 matrix bdeterminant over a commutative semiring.+bdet3 (V3 (V3 1 2 3) (V3 4 5 6) (V3 7 8 9)) (225, 225)Crings(3x3 double-precision matrix determinant. C =  () . B DImplementation uses a cofactor expansion to avoid loss of precision.det3 $ m33 1 2 3 4 5 6 7 8 90Drings3x3 matrix inverse.*inv3 $ m33 1 2 4 4 2 2 1 1 1 :: M33 DoubleMCompose (V3 (V3 0.0 0.5 (-1.0)) (V3 (-0.5) (-0.75) 3.5) (V3 0.5 0.25 (-1.5)))Erings44x4 matrix bdeterminant over a commutative semiring.2bdet4 $ m44 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (27728,27728)Frings/4x4 matrix determinant over a commutative ring. F =  () . E IThis implementation uses a cofactor expansion to avoid loss of precision.6det4 $ m44 1 0 3 2 2 0 2 1 0 0 0 1 0 3 4 0 :: Rational (-12) % 1Grings4x4 matrix inverse.Crow E41 . inv4 $ m44 1 0 3 2 2 0 2 1 0 0 0 1 0 3 4 0 :: V4 Rational8V4 (6 % (-12)) ((-9) % (-12)) ((-3) % (-12)) (0 % (-12))5 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG5)*+'(%&,-#$"! ./0123456789:;<=>A?@BCDEFGSafe =>?@AUVXkrings* \forall a, b \in R: a * b \sim a * b + b If R is non-unital (i.e. one is not distinct from zero>) then it will instead satisfy a right-absorbtion property. <This follows from right-neutrality and right-distributivity.When R# is also left-distributive we get: + \forall a, b \in R: a * b = a + a * b + b  See also    and  ;https://blogs.ncl.ac.uk/andreymokhov/united-monoids/#whatif.rings;Presemiring morphisms are distributive semigroup morphisms.6This is a required property for presemiring morphisms.rings; \forall a, b, c \in R: (a + b) * c \sim (a * c) + (b * c) R& must right-distribute multiplication.When R9 is a functor and the semiring structure is derived from  , this translates to:  (a   b)  c = (a  c)   (b  c) See  ?https://en.wikibooks.org/wiki/Haskell/Alternative_and_MonadPlus.This is a required property.rings\ \forall M \geq 1; a_1 \dots a_M, b \in R: (\sum_{i=1}^M a_i) * b \sim \sum_{i=1}^M a_i * b RC must right-distribute multiplication over finite (non-empty) sums.2For types with exact arithmetic this follows from  and the universality of folds.ringsC \forall a, b, c \in R: f ((a + b) * c) \sim f (a * c) + f (b * c) APresemiring morphisms must be compatible with right-distribution.rings6Semiring morphisms are monoidal presemiring morphisms.3This is a required property for semiring morphisms.rings! \forall a \in R: (z * a) \sim u A RF is semiring then its addititive one must be right-annihilative, i.e.: !  a = ! For  ' instances this property translates to:    a =   This is a required property.rings\ \forall M \geq 0; a_1 \dots a_M, b \in R: (\sum_{i=1}^M a_i) * b \sim \sum_{i=1}^M a_i * b R: must right-distribute multiplication between finite sums.2For types with exact arithmetic this follows from  & .rings \forall M,N \geq 0; a_1 \dots a_M, b_1 \dots b_N \in R: (\sum_{i=1}^M a_i) * (\sum_{j=1}^N b_j) \sim \sum_{i=1 j=1}^{i=M j=N} a_i * b_j If RA is also left-distributive then it supports xmult-multiplication.rings \forall M,N \geq 1; a_1 \dots a_M, b_1 \dots b_N \in R: (\sum_{i=1}^M a_i) * (\sum_{j=1}^N b_j) = \sum_{i=1 j=1}^{i=M j=N} a_i * b_j If RM is also left-distributive then it supports (non-empty) xmult-multiplication.rings5 \forall a, b, c \in R: (a + b) + c \sim a + (b + c) *A semigroup must right-associate addition.+This is a required property for semigroups.rings5 \forall a, b, c \in R: (a * b) * c \sim a * (b * c) 0A semigroup must right-associate multiplication.+This is a required property for semigroups.rings! \forall a \in R: (z + a) \sim a @A semigroup with a right-neutral additive identity must satisfy:  () ! r =  Or, equivalently: !  r = r 1This is a required property for additive monoids.rings! \forall a \in R: (o * a) \sim a FA semigroup with a right-neutral multiplicative identity must satisfy:  () " r =  Or, equivalently: "  r = r 7This is a required property for multiplicative monoids.rings& \forall a, b \in R: a + b \sim b + a UThis is a an optional property for semigroups, and a required property for semirings.rings& \forall a, b \in R: a * b \sim b * a _This is a an optional property for semigroups, and a optional property for semirings and rings.rings; \forall a, b, c \in R: b + a \sim c + a \Rightarrow b = c If R1 is right-cancellative wrt addition then for all a the section (a +) is injective.See 3https://en.wikipedia.org/wiki/Cancellation_propertyrings; \forall a, b, c \in R: b * a \sim c * a \Rightarrow b = c If R7 is right-cancellative wrt multiplication then for all a the section (a *) is injective.rings-Idempotency property for additive semigroups.See  0https://en.wikipedia.org/wiki/Band_(mathematics).<This is a an optional property for semigroups and semirings.)This is a required property for lattices.rings2Idempotency property for multplicative semigroups.See  0https://en.wikipedia.org/wiki/Band_(mathematics).<This is a an optional property for semigroups and semirings.)This is a required property for lattices.rings=This is a required property for additive semigroup morphisms.ringsCThis is a required property for multiplicative semigroup morphisms.rings:This is a required property for additive monoid morphisms.rings@This is a required property for multiplicative monoid morphisms.  !"#$%&'()*+,-./0123456789:;<=>?+@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkllmnnoppqrstuvwxyz{|}~UVWXDH`abcEIfghiFJ       !!""#$%&'()*+,-./0123456789:;<=>?@ABUVWXDHCDEFGHIJKL`abcEIMNOPQRSTUVfghiFJWXYZ[\]^_`almnoGKbcdefghijklmnopqrstuvwxyz{|}~"rings-0.1.3-BFdOLcheYTn8vzZgCGb7ir Data.SemiringData.SemifieldData.SemimoduleData.Semimodule.FreeData.Semimodule.CombinatorData.Semimodule.BasisData.Semimodule.FiniteData.Semiring.PropertyDatafoldr'tranWarningControl.Applicative Alternative<|>emptyData.Semigroupneutral_multiplication_on#magmas-0.0.1-FzolCgkBAHFLOlVBR8HROg Data.Group mreplicate greplicateinvGroupLoop Quasigroup Data.Magma<<MagmaMultiplicativeunMultiplicativeAdditive unAdditiveRingRingLawSemiring SemiringLaw PresemiringPresemiringLawFree++**-+*sum1sumWith1product1 productWith1xmult1eval1 evalWith1zeroonetwo^sumsumWithproduct productWithxmultevalevalWithnegatesubtractabssignum$fMonoidAdditive$fMonoidAdditive0$fMonoidAdditive1$fMonoidAdditive2$fSemigroupAdditive$fSemigroupAdditive0$fSemigroupAdditive1$fSemigroupAdditive2$fSemigroupAdditive3$fMonoidAdditive3$fSemigroupAdditive4$fMonoidAdditive4$fSemigroupAdditive5$fMonoidAdditive5$fSemigroupAdditive6$fMonoidAdditive6$fSemigroupAdditive7$fGroupAdditive$fLoopAdditive$fQuasigroupAdditive$fMagmaAdditive$fMonoidAdditive7$fSemigroupAdditive8$fMonoidAdditive8$fSemigroupAdditive9$fSemigroupAdditive10$fMonoidAdditive9$fSemigroupAdditive11$fGroupAdditive0$fLoopAdditive0$fQuasigroupAdditive0$fMagmaAdditive0$fMonoidAdditive10$fSemigroupAdditive12$fGroupAdditive1$fLoopAdditive1$fQuasigroupAdditive1$fMagmaAdditive1$fMonoidAdditive11$fSemigroupAdditive13$fGroupAdditive2$fLoopAdditive2$fQuasigroupAdditive2$fMagmaAdditive2$fMonoidAdditive12$fSemigroupAdditive14$fGroupAdditive3$fLoopAdditive3$fQuasigroupAdditive3$fMagmaAdditive3$fMonoidAdditive13$fSemigroupAdditive15$fGroupAdditive4$fLoopAdditive4$fQuasigroupAdditive4$fMagmaAdditive4$fMonoidAdditive14$fSemigroupAdditive16$fGroupAdditive5$fGroupAdditive6$fGroupAdditive7$fGroupAdditive8$fGroupAdditive9$fGroupAdditive10$fGroupAdditive11$fGroupAdditive12$fGroupAdditive13$fGroupAdditive14$fGroupAdditive15$fGroupAdditive16$fGroupAdditive17$fGroupAdditive18$fGroupAdditive19$fGroupAdditive20$fGroupAdditive21$fLoopAdditive5$fLoopAdditive6$fLoopAdditive7$fLoopAdditive8$fLoopAdditive9$fLoopAdditive10$fLoopAdditive11$fLoopAdditive12$fLoopAdditive13$fLoopAdditive14$fLoopAdditive15$fLoopAdditive16$fLoopAdditive17$fLoopAdditive18$fLoopAdditive19$fLoopAdditive20$fLoopAdditive21$fQuasigroupAdditive5$fQuasigroupAdditive6$fQuasigroupAdditive7$fQuasigroupAdditive8$fQuasigroupAdditive9$fQuasigroupAdditive10$fQuasigroupAdditive11$fQuasigroupAdditive12$fQuasigroupAdditive13$fQuasigroupAdditive14$fQuasigroupAdditive15$fQuasigroupAdditive16$fQuasigroupAdditive17$fQuasigroupAdditive18$fQuasigroupAdditive19$fQuasigroupAdditive20$fQuasigroupAdditive21$fMagmaAdditive5$fMagmaAdditive6$fMagmaAdditive7$fMagmaAdditive8$fMagmaAdditive9$fMagmaAdditive10$fMagmaAdditive11$fMagmaAdditive12$fMagmaAdditive13$fMagmaAdditive14$fMagmaAdditive15$fMagmaAdditive16$fMagmaAdditive17$fMagmaAdditive18$fMagmaAdditive19$fMagmaAdditive20$fMagmaAdditive21$fMonoidAdditive15$fMonoidAdditive16$fMonoidAdditive17$fMonoidAdditive18$fMonoidAdditive19$fMonoidAdditive20$fMonoidAdditive21$fMonoidAdditive22$fMonoidAdditive23$fMonoidAdditive24$fMonoidAdditive25$fMonoidAdditive26$fMonoidAdditive27$fMonoidAdditive28$fMonoidAdditive29$fMonoidAdditive30$fMonoidAdditive31$fMonoidAdditive32$fMonoidAdditive33$fMonoidAdditive34$fMonoidAdditive35$fMonoidAdditive36$fMonoidAdditive37$fSemigroupAdditive17$fSemigroupAdditive18$fSemigroupAdditive19$fSemigroupAdditive20$fSemigroupAdditive21$fSemigroupAdditive22$fSemigroupAdditive23$fSemigroupAdditive24$fSemigroupAdditive25$fSemigroupAdditive26$fSemigroupAdditive27$fSemigroupAdditive28$fSemigroupAdditive29$fSemigroupAdditive30$fSemigroupAdditive31$fSemigroupAdditive32$fSemigroupAdditive33$fSemigroupAdditive34$fSemigroupAdditive35$fSemigroupAdditive36$fSemigroupAdditive37$fSemigroupAdditive38$fSemigroupAdditive39$fRepresentableAdditive$fDistributiveAdditive$fApplicativeAdditive$fMonoidMultiplicative$fMonoidMultiplicative0$fSemigroupMultiplicative$fSemigroupMultiplicative0$fSemigroupMultiplicative1$fSemigroupMultiplicative2$fSemigroupMultiplicative3$fMonoidMultiplicative1$fSemigroupMultiplicative4$fMonoidMultiplicative2$fSemigroupMultiplicative5$fSemigroupMultiplicative6$fMonoidMultiplicative3$fSemigroupMultiplicative7$fMonoidMultiplicative4$fSemigroupMultiplicative8$fMonoidMultiplicative5$fSemigroupMultiplicative9$fMonoidMultiplicative6$fSemigroupMultiplicative10$fGroupMultiplicative$fLoopMultiplicative$fQuasigroupMultiplicative$fMagmaMultiplicative$fMonoidMultiplicative7$fSemigroupMultiplicative11$fGroupMultiplicative0$fLoopMultiplicative0$fQuasigroupMultiplicative0$fMagmaMultiplicative0$fMonoidMultiplicative8$fSemigroupMultiplicative12$fGroupMultiplicative1$fGroupMultiplicative2$fGroupMultiplicative3$fGroupMultiplicative4$fGroupMultiplicative5$fGroupMultiplicative6$fGroupMultiplicative7$fGroupMultiplicative8$fGroupMultiplicative9$fGroupMultiplicative10$fGroupMultiplicative11$fLoopMultiplicative1$fLoopMultiplicative2$fLoopMultiplicative3$fLoopMultiplicative4$fLoopMultiplicative5$fLoopMultiplicative6$fLoopMultiplicative7$fLoopMultiplicative8$fLoopMultiplicative9$fLoopMultiplicative10$fLoopMultiplicative11$fQuasigroupMultiplicative1$fQuasigroupMultiplicative2$fQuasigroupMultiplicative3$fQuasigroupMultiplicative4$fQuasigroupMultiplicative5$fQuasigroupMultiplicative6$fQuasigroupMultiplicative7$fQuasigroupMultiplicative8$fQuasigroupMultiplicative9$fQuasigroupMultiplicative10$fQuasigroupMultiplicative11$fMagmaMultiplicative1$fMagmaMultiplicative2$fMagmaMultiplicative3$fMagmaMultiplicative4$fMagmaMultiplicative5$fMagmaMultiplicative6$fMagmaMultiplicative7$fMagmaMultiplicative8$fMagmaMultiplicative9$fMagmaMultiplicative10$fMagmaMultiplicative11$fMonoidMultiplicative9$fMonoidMultiplicative10$fMonoidMultiplicative11$fMonoidMultiplicative12$fMonoidMultiplicative13$fMonoidMultiplicative14$fMonoidMultiplicative15$fMonoidMultiplicative16$fMonoidMultiplicative17$fMonoidMultiplicative18$fMonoidMultiplicative19$fMonoidMultiplicative20$fMonoidMultiplicative21$fMonoidMultiplicative22$fMonoidMultiplicative23$fMonoidMultiplicative24$fMonoidMultiplicative25$fMonoidMultiplicative26$fMonoidMultiplicative27$fMonoidMultiplicative28$fMonoidMultiplicative29$fMonoidMultiplicative30$fMonoidMultiplicative31$fSemigroupMultiplicative13$fSemigroupMultiplicative14$fSemigroupMultiplicative15$fSemigroupMultiplicative16$fSemigroupMultiplicative17$fSemigroupMultiplicative18$fSemigroupMultiplicative19$fSemigroupMultiplicative20$fSemigroupMultiplicative21$fSemigroupMultiplicative22$fSemigroupMultiplicative23$fSemigroupMultiplicative24$fSemigroupMultiplicative25$fSemigroupMultiplicative26$fSemigroupMultiplicative27$fSemigroupMultiplicative28$fSemigroupMultiplicative29$fSemigroupMultiplicative30$fSemigroupMultiplicative31$fSemigroupMultiplicative32$fSemigroupMultiplicative33$fSemigroupMultiplicative34$fSemigroupMultiplicative35$fMonoidMultiplicative32$fSemigroupMultiplicative36$fSemigroupMultiplicative37$fMonoidMultiplicative33$fSemigroupMultiplicative38$fGroupAdditive22$fLoopAdditive22$fQuasigroupAdditive22$fMagmaAdditive22$fMonoidAdditive38$fSemigroupAdditive40$fSemigroupMultiplicative39$fRepresentableMultiplicative$fDistributiveMultiplicative$fApplicativeMultiplicative$fPresemiringMap$fPresemiringIntMap$fPresemiringSet$fPresemiringIntSet$fPresemiringNonEmpty$fPresemiring[]$fPresemiringMaybe$fPresemiringEither$fPresemiring->$fPresemiringCDouble$fPresemiringCFloat$fPresemiringDouble$fPresemiringFloat$fPresemiringFixed$fPresemiringFixed0$fPresemiringFixed1$fPresemiringFixed2$fPresemiringFixed3$fPresemiringFixed4$fPresemiringFixed5$fPresemiringRatio$fPresemiringInteger$fPresemiringInt64$fPresemiringInt32$fPresemiringInt16$fPresemiringInt8$fPresemiringInt$fPresemiringRatio0$fPresemiringNatural$fPresemiringWord64$fPresemiringWord32$fPresemiringWord16$fPresemiringWord8$fPresemiringWord$fPresemiringBool$fPresemiring() $fSemiringMap$fSemiringIntMap $fSemiring[]$fSemiringMaybe $fSemiring->$fSemiringCDouble$fSemiringCFloat$fSemiringDouble$fSemiringFloat$fSemiringFixed$fSemiringFixed0$fSemiringFixed1$fSemiringFixed2$fSemiringFixed3$fSemiringFixed4$fSemiringFixed5$fSemiringRatio$fSemiringInteger$fSemiringInt64$fSemiringInt32$fSemiringInt16$fSemiringInt8 $fSemiringInt$fSemiringRatio0$fSemiringNatural$fSemiringWord64$fSemiringWord32$fSemiringWord16$fSemiringWord8$fSemiringWord$fSemiringBool $fSemiring()$fRing-> $fRingCDouble $fRingCFloat $fRingDouble $fRingFloat $fRingFixed $fRingFixed0 $fRingFixed1 $fRingFixed2 $fRingFixed3 $fRingFixed4 $fRingFixed5 $fRingRatio $fRingInteger $fRingInt64 $fRingInt32 $fRingInt16 $fRingInt8 $fRingInt$fRing()$fPresemiringComplex $fEqAdditive$fGenericAdditive $fOrdAdditive$fShowAdditive$fFunctorAdditive$fEqMultiplicative$fGenericMultiplicative$fOrdMultiplicative$fShowMultiplicative$fFunctorMultiplicativeRealFieldFieldLaw Semifield SemifieldLawananpinfrecip/\\ninf^^$fSemifieldCDouble$fSemifieldCFloat$fSemifieldDouble$fSemifieldFloat$fSemifieldFixed$fSemifieldFixed0$fSemifieldFixed1$fSemifieldFixed2$fSemifieldFixed3$fSemifieldFixed4$fSemifieldFixed5$fSemifieldRatio$fSemifieldRatio0 $fSemifield()$fFieldCDouble $fFieldCFloat $fFieldDouble $fFieldFloat $fFieldFixed $fFieldFixed0 $fFieldFixed1 $fFieldFixed2 $fFieldFixed3 $fFieldFixed4 $fFieldFixed5 $fFieldRatio $fField() $fRealCDouble $fRealCFloat $fRealDouble $fRealFloat $fRealFixed $fRealFixed0 $fRealFixed1 $fRealFixed2 $fRealFixed3 $fRealFixed4 $fRealFixed5 $fRealRatio Bialgebra FreeBialgebraCounitalcounital FreeCounital Coalgebracojoined FreeCoalgebraUnitalunital FreeUnitalAlgebrajoined FreeAlgebra BisemimodulediscaleFreeSemimodule FreeModuleBimoduleRightSemimodulerscale RightModuleLeftSemimodulelscale LeftModule*./.\.lerp lscaleDef negateDef.*./.\ rscaleDef$fLeftSemimoduleaComplex$fLeftSemimoduleaRatio$fLeftSemimodulel(,,)$fLeftSemimodulel(,)$fLeftSemimodulelOp$fLeftSemimodulel->$fLeftSemimoduleaa$fRightSemimoduleaRatio$fRightSemimoduler(,,)$fRightSemimoduler(,)$fRightSemimodulerOp$fRightSemimoduler->$fRightSemimoduleaa$fBisemimoduleaaRatio$fBisemimodulerr(,,)$fBisemimodulerr(,)$fBisemimodulerrOp$fBisemimodulerr->$fBisemimoduleaaa$fAlgebraaIntSet $fAlgebraaSet $fAlgebraaSeq $fAlgebraa[]$fAlgebraa(,,) $fAlgebraa(,) $fAlgebraa()$fUnitalaIntSet $fUnitalaSet $fUnitalaSeq $fUnitala[] $fUnitala(,,) $fUnitala(,) $fUnitala()$fCoalgebraaIntSet$fCoalgebraaSet$fCoalgebraaSeq$fCoalgebraa[]$fCoalgebraa->$fCoalgebraa(,,)$fCoalgebraa(,)$fCoalgebraa()$fCounitalaIntSet$fCounitalaSet$fCounitalaSeq $fCounitala[] $fCounitala->$fCounitala(,,)$fCounitala(,) $fCounitala()$fBialgebraaSeq$fBialgebraa[]$fBialgebraa(,,)$fBialgebraa(,)$fBialgebraa()EndLinrunLinCovrunCovVecrunVec!**!vmapjoininit!*!imagescmapcojoincoinitcomultimageinvmapaugment!##!!#!braidcobraidsplitcosplitprojlprojrcomplcomprcomplrdiagonal codiagonalinitial coinitialconvolve$fBisemimoduleaaVec$fRightSemimoduleaVec$fLeftSemimoduleaVec$fCategoryTYPEVec$fContravariantVec$fBisemimoduleaaCov$fRightSemimoduleaCov$fLeftSemimoduleaCov$fMonadPlusCov$fAlternativeCov $fMonadCov$fApplicativeCov $fFunctorCov$fBisemimoduleaaLin$fRightSemimoduleaLin$fBisemimoduleLinLinLin$fRightSemimoduleLinLin$fLeftSemimoduleaLin$fLeftSemimoduleLinLin$fArrowApplyLin$fArrowChoiceLin $fArrowLin $fMonadLin$fRepresentableLin $fSieveLinCov $fChoiceLin $fStrongLin$fProfunctorLin$fApplicativeLin $fApplyLin$fCategoryTYPELin $fFunctorLin $fRingLin $fSemiringLin$fPresemiringLin$fBisemimoduleLinLinCov$fRightSemimoduleLinCov$fLeftSemimoduleLinCov$fBisemimoduleLinLinVec$fRightSemimoduleLinVec$fLeftSemimoduleLinVeceltveccovunitunit'counitdiraclensRepgrateRep.*.innerouter quadrancelinelt2rowrowscolcolsdiagcodiagscalaridentity.##..#.trace transposeE4E41E42E43E44E3E31E32E33E2E21E22E1E11Basis3Basis2Basise1fillE1e2fillE2e3fillE3e4fillE4$fBialgebrarE1 $fCounitalrE1$fCoalgebrarE1 $fUnitalrE1 $fAlgebrarE1$fBialgebrarE2 $fCounitalrE2$fCoalgebrarE2 $fUnitalrE2 $fAlgebrarE2$fBialgebrarE3 $fCounitalrE3$fCoalgebrarE3 $fUnitalrE3 $fAlgebrarE3$fBialgebrarE4 $fCounitalrE4$fCoalgebrarE4 $fUnitalrE4 $fAlgebrarE4$fEqE1$fOrdE1$fShowE1$fEqE2$fOrdE2$fShowE2$fEqE3$fOrdE3$fShowE3$fEqE4$fOrdE4$fShowE4M44M43M42M34M33M32M24M23M22M41M31M21M14M13M12M11V4V3V2V1unV1crosstriplem11m12m13m14m21m31m41m22m23m24m32m33m34m42m43m44inv1bdet2det2inv2bdet3det3inv3bdet4det4inv4$fBisemimoduleaaV1$fRightSemimoduleaV1$fLeftSemimoduleaV1$fRepresentableV1$fDistributiveV1 $fFoldable1V1 $fFoldableV1$fApplicativeV1 $fFunctorV1 $fShow1V1$fBisemimoduleaaV2$fRightSemimoduleaV2$fLeftSemimoduleaV2$fRepresentableV2$fDistributiveV2 $fFoldable1V2 $fFoldableV2$fApplicativeV2 $fFunctorV2 $fShow1V2$fBisemimoduleaaV3$fRightSemimoduleaV3$fLeftSemimoduleaV3$fRepresentableV3$fDistributiveV3 $fFoldable1V3 $fFoldableV3$fApplicativeV3 $fFunctorV3 $fShow1V3$fEq1V3$fBisemimoduleaaV4$fRightSemimoduleaV4$fLeftSemimoduleaV4$fRepresentableV4$fDistributiveV4 $fFoldable1V4 $fFoldableV4$fApplicativeV4 $fFunctorV4 $fShow1V4 $fRingCompose$fSemiringCompose$fPresemiringCompose$fRightSemimoduleComposeCompose$fLeftSemimoduleComposeCompose$fLeftSemimoduleComposeCompose0$fLeftSemimoduleComposeCompose1$fLeftSemimoduleComposeCompose2 $fRightSemimoduleComposeCompose0 $fRightSemimoduleComposeCompose1 $fRightSemimoduleComposeCompose2$fRingCompose0$fSemiringCompose0$fPresemiringCompose0 $fRightSemimoduleComposeCompose3$fLeftSemimoduleComposeCompose3#$fBisemimoduleComposeComposeCompose $fRightSemimoduleComposeCompose4$$fBisemimoduleComposeComposeCompose0$fLeftSemimoduleComposeCompose4$fLeftSemimoduleComposeCompose5$fLeftSemimoduleComposeCompose6 $fRightSemimoduleComposeCompose5$fRingCompose1$fSemiringCompose1$fPresemiringCompose1 $fRightSemimoduleComposeCompose6$fLeftSemimoduleComposeCompose7$$fBisemimoduleComposeComposeCompose1 $fRightSemimoduleComposeCompose7$$fBisemimoduleComposeComposeCompose2 $fRightSemimoduleComposeCompose8$$fBisemimoduleComposeComposeCompose3$fLeftSemimoduleComposeCompose8$$fBisemimoduleComposeComposeCompose4$fLeftSemimoduleComposeCompose9 $fLeftSemimoduleComposeCompose10 $fRightSemimoduleComposeCompose9!$fRightSemimoduleComposeCompose10$fRingCompose2$fSemiringCompose2$fPresemiringCompose2!$fRightSemimoduleComposeCompose11 $fLeftSemimoduleComposeCompose11$$fBisemimoduleComposeComposeCompose5!$fRightSemimoduleComposeCompose12$$fBisemimoduleComposeComposeCompose6!$fRightSemimoduleComposeCompose13$$fBisemimoduleComposeComposeCompose7!$fRightSemimoduleComposeCompose14$$fBisemimoduleComposeComposeCompose8 $fLeftSemimoduleComposeCompose12$$fBisemimoduleComposeComposeCompose9 $fLeftSemimoduleComposeCompose13%$fBisemimoduleComposeComposeCompose10 $fLeftSemimoduleComposeCompose14$fEqV1$fOrdV1$fShowV1$fEqV2$fOrdV2$fShowV2$fEqV3$fOrdV3$fShowV3$fEqV4$fOrdV4$fShowV4 nonunital_onmorphism_presemiringdistributive_ondistributive_finite1_onmorphism_distribitive_onmorphism_semiringannihilative_multiplication_ondistributive_finite_ondistributive_xmult_ondistributive_xmult1_onassociative_addition_onassociative_multiplication_onneutral_addition_oncommutative_addition_oncommutative_multiplication_oncancellative_addition_oncancellative_multiplication_onidempotent_addition_onidempotent_multiplication_onmorphism_additive_onmorphism_multiplicative_onmorphism_additive_on'morphism_multiplicative_on'baseGHC.Base Semigroupghc-prim GHC.ClassesOrd<=&& Data.Tuplecurry.constuncurryidControl.Category<<<>>>&profunctors-5.3-8dCZ39QUQPeJjeVUVVdqIKData.Profunctor.Unsafermap$ Control.Arrow***lmap&adjunctions-4.4-1QpkJRjnAlWA94juAnfobcData.Functor.ReppureReptabulateindexData.Functor.Compose getComposeflipbindRep*>== GHC.TypesTrue