!ۧ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHI J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ Safe,-478=>?@AHUVXkH rings A (potentially non-commutative)  under .ringsA commutative  under .ringsHyphenation operator.ringsAdditive unit of a semiring.rings+Additive semigroup operation on a semiring.!Dual [2] + Dual [3] :: Dual [Int]Dual {getDual = [3,2]}ringsSubtract two elements.rings"Multiplicative unit of a semiring.rings1Multiplicative semigroup operation on a semiring.!Dual [2] * Dual [3] :: Dual [Int]Dual {getDual = [5]}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  x  16777Safe =>?@AUVXkjQrings5 \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.Rrings5 \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.Srings! \forall a \in R: (z + a) \sim a @A semigroup with a right-neutral additive identity must satisfy: S ()  r =  Or, equivalently:   r = r 1This is a required property for additive monoids.Trings! \forall a \in R: (o * a) \sim a FA semigroup with a right-neutral multiplicative identity must satisfy: T ()  r =  Or, equivalently:   r = r 7This is a required property for multiplicative monoids.Urings& \forall a, b \in R: a + b \sim b + a UThis is a an optional property for semigroups, and a required property for semirings.Vrings& \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.Wrings; \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_propertyXrings; \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.Yrings-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.Zrings2Idempotency 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.QRSTUVWXYZ[\]^QRSTUVWXYZ[\]^Safe,-478=>?@AHUVXk"_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  v   r = v 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.aringsRight 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 =  cringsARight 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.erings%Evaluate a non-empty presemiring sum.frings?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 15grings)Evaluate a non-empty presemiring product.hringsCEvaluate 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}irings)Cross-multiply two non-empty collections.Mxmult1 (Right 2 :| [Left "oops"]) (Right 2 :| [Right 3]) :: Either [Char] IntRight 4jrings"Evaluate a presemiring expression.krings<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}lrings l =    mrings8Evaluate a natural-numbered power of a semiring element.   = a m 0 8 ^ 0 :: Int1nringsEvaluate a semiring sum.sum [1..5 :: Int]15orings/Evaluate a semiring sum using a given semiring.pringsEvaluate a semiring product.product [1..5 :: Int]120qrings3Evaluate a semiring product using a given semiring. p f =   (() . f)  productWith Just [1..5 :: Int]Just 120rringsCross-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] []0sringsEvaluate 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 + 421trings6Evaluate a semiring expression using a given semiring.+evalWith Max [[1..4 :: Int], [0..2 :: Int]]Max {getMax = 24}uringsSubtract two elements. a  b =  b a vringsReverse the sign of an element.wringsAbsolute value of an element.  w r = r  (x r)xringsExtract the sign of an element.x satisfies a trichotomy law:  x r = v 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.. _`abcdefghijklmnopqrstuvwx.dcefghijkbalmnopqrst`_uvwx  m8u6Safe,-478=>?@AHUVXkrings!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.   =   ringsThe    value of the field.   = v   rings1Integral power of a multiplicative group element.   == a  08 ^^ 0 :: Double1.08 ^^ 0 :: Pico1.000000000000  8Safe+,-478=>?@AHUVXkrings &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.          777777Safe+,-478=>?@AHSUVXkringsA  '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.B( id *** coempty ) . coappend = id = ( coempty *** id ) . coappendrings#A coalgebra over a free semimodule f.ringsA  Ahttps://en.wikipedia.org/wiki/Algebra_over_a_field#Unital_algebraunital algebra over a semiring.rings(A unital algebra over a free semimodule f.rings An algebra  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.ringsAn algebra over a free module f."Note that this is distinct from a  *https://en.wikipedia.org/wiki/Free_algebra free algebra.rings=Multiplication operator on an algebra over a free semimodule.Caution: in general (.*.) needn't be commutative, nor associative.rings"Insert an element into an algebra.#V4 1 2 3 4 .*. unital two :: V4 Int V4 2 4 6 8rings:Unital element of a unital algebra over a free semimodule.unit :: Complex Int1 :+ 0 unit :: QuatDQuaternion 1.0 (V3 0.0 0.0 0.0)rings:Obtain an element from a coalgebra over a free semimodule.ringsThe tensor algebraringsTensor algebraappend (<>) [1..3 :: Int][1,2,3,1,2,3,1,2,3,1,2,3],append (\f g -> fold (f ++ g)) [1..3] :: Int24rings,the free commutative band coalgebra over Intrings#the free commutative band coalgebraringsThe tensor Hopf algebraringsCThe tensor Hopf algebra (x) = x " 1 + 1 " x, x in V, (1) = 1 " 17Safe+,78=>?@AHSUVXk36ringsDA linear transformation between free semimodules indexed with bases b and c. Nf '!#' x '+' y = (f '!#' x) + (f '!#' y) f '!#' (r '.*' x) = r '.*' (f '!#' x)rings'An endomorphism over a free semimodule. one + two !# V2 1 2 :: V2 Double V2 3.0 6.0ringsBLinear functionals from elements of a free semimodule to a scalar. f  (x  y) = (f  x)  (f  y) f  (x  a) = a  (f  x) rings)A direct sum of free semimodule elements.rings)A tensor product of semimodule morphisms.ringsTake the dual of a vector.dual (V2 3 4) !% V2 1 2 :: Int11rings Create a , from a linear combination of basis vectors.-image' [(2, E31),(3, E32)] !* V3 1 1 1 :: Int5rings3Obtain a linear transfrom from a linear functional.rings3Obtain a linear functional from a linear transform.rings&Apply a linear functional to a vector.rings&Apply a linear functional to a vector.rings*Lift a matrix into a linear transformation  () = () . rings Create a , from a linear combination of basis vectors.?image (e2 [(2, E31),(3, E32)] [(1, E33)]) !# V3 1 1 1 :: V2 IntV2 5 1rings#Apply a transformation to a vector.rings#Apply a transformation to a vector.ringsCompose two transformations.rings0 is a profunctor in the category of semimodules.Caution4: Arbitrary mapping functions may violate linearity.:dimap id (e3 True True False) (arr id) !# 4 :+ 5 :: V3 IntV3 5 5 4rings is an invariant functor. See also  .http://comonad.com/reader/2008/rotten-bananas/.ringsTODO: DocumentringsTODO: DocumentringsTODO: DocumentringsTODO: Documentrings$Swap components of a tensor product.rings Swap components of a direct sum.ringsTODO: DocumentringsTODO: DocumentringsTODO: DocumentringsTODO: DocumentringsTODO: DocumentringsTODO: DocumentringsCConvolution with an associative algebra and coassociative coalgebraringsTODO: Documentrings:Commutator or Lie bracket of two semimodule endomorphisms.rings2Multiply a matrix on the right by a column vector.  () = () . ,tran (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))ringsOuter product.V2 1 1 `outer` V2 1 1Compose (V2 (V2 1 1) (V2 1 1))ringsInner product.This is a variant of r restricted to free functors.V3 1 2 3 `inner` V3 1 2 314ringsSquared l2 norm of a vector.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)rings Obtain a  -https://en.wikipedia.org/wiki/Diagonal_matrixdiagonal matrix from a vector.   =     rings,Obtain the diagonal of a matrix as a vector.   f =  $  ( .  ( f))codiag $ m22 1.0 2.0 3.0 4.0 V2 1.0 4.0rings 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))ringsRetrieve 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)rings5Project onto the left-hand component of a direct sum.rings6Project onto the right-hand component of a direct sum.rings5Left (post) composition with a linear transformation.rings5Right (pre) composition with a linear transformation.rings8Left and right composition with a linear transformation.   f g =  f   g;; 312332227776Safe=>?@AHSUVXk7: !"#$%&'( !"#$%&'( Safe+,-478=>?@AHSUVXkt2Qrings A 4x4 matrix.Rrings A 4x3 matrix.Srings A 4x2 matrix.Trings A 3x4 matrix.Urings A 3x3 matrix.Vrings A 3x2 matrix.Wrings A 2x4 matrix.Xrings A 2x3 matrix.Yrings A 2x2 matrix.Zrings 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.aringsCross product. a `cross' a =  a `cross' b = v ( 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.bringsScalar triple product. b x y z = b z x y = b y z x b x y z = v  b x z y = v  b y x z b x x y = b x y y = b x y x =  (b 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.0cringsDirac delta function.drings!Create a unit vector at an index.idx E21 :: V2 IntV2 1 0idx E42 :: V4 Int V4 0 1 0 0erings Retrieve an element of a vector.elt E21 (V2 1 2)1frings+Create a lens from a representable functor.grings5Create an indexed grate from a representable functor.hrings 1x1 matrix inverse over a field.inv1 $ m11 4.0 :: M11 DoubleCompose (V1 (V1 0.25))irings42x2 matrix bdeterminant over a commutative semiring.bdet2 $ m22 1 2 3 4(4,6)jrings/2x2 matrix determinant over a commutative ring. j =  () . i det2 $ m22 1 2 3 4 :: Double-2.0krings 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)))lrings43x3 matrix bdeterminant over a commutative semiring.+bdet3 (V3 (V3 1 2 3) (V3 4 5 6) (V3 7 8 9)) (225, 225)mrings(3x3 double-precision matrix determinant. m =  () . l DImplementation uses a cofactor expansion to avoid loss of precision.det3 $ m33 1 2 3 4 5 6 7 8 90nrings3x3 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)))orings44x4 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)prings/4x4 matrix determinant over a commutative ring. p =  () . o 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) % 1qrings4x4 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))rrings Retrieve an element of a matrix.elt2 E21 E21 $ m22 1 2 3 41sringsConstruct a 1x1 matrix.m11 1 :: M11 IntCompose (V1 (V1 1))tringsConstruct a 1x2 matrix.m12 1 2 :: M12 IntCompose (V1 (V2 1 2))uringsConstruct a 1x3 matrix.m13 1 2 3 :: M13 IntCompose (V1 (V3 1 2 3))vringsConstruct a 1x4 matrix.m14 1 2 3 4 :: M14 IntCompose (V1 (V4 1 2 3 4))wringsConstruct a 2x1 matrix.m21 1 2 :: M21 IntCompose (V2 (V1 1) (V1 2))xringsConstruct a 3x1 matrix.m31 1 2 3 :: M31 Int!Compose (V3 (V1 1) (V1 2) (V1 3))yringsConstruct a 4x1 matrix.m41 1 2 3 4 :: M41 Int(Compose (V4 (V1 1) (V1 2) (V1 3) (V1 4))zringsConstruct a 2x2 matrix.!Arguments are in row-major order.m22 1 2 3 4 :: M22 IntCompose (V2 (V2 1 2) (V2 3 4)){ringsConstruct a 2x3 matrix.!Arguments are in row-major order.|ringsConstruct a 2x4 matrix.!Arguments are in row-major order.}ringsConstruct a 3x2 matrix.!Arguments are in row-major order.~ringsConstruct 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.YIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~YabcdefghkijlmnopqrOPMNKLIJ`_^]\[ZYXWVUTSRQstuvwxyz{|}~ Safe =>?@AUVXk9 urings* \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.vrings;Presemiring morphisms are distributive semigroup morphisms.6This is a required property for presemiring morphisms.wrings; \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.xrings\ \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 w and the universality of folds.yringsC \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.zrings6Semiring 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 w & .}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.QRSTUVWXuvwxyz{|}~uvQURwxyzST{|}~VWX !"#$%&%'(()**+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~,      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~FGHI59  RSTU   6: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO P P Q Q R R S S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~            F G H I 5 9              R S T U 6 :    W X Y Z 7 ;              ] n  8 <    ^ o > =    _ p @ ?    ` q B A               a r D C    b s J E    c t L K    d u O M    e v Q N    f w [ P              g x V    h y \    i z    j {    k |    l }    m ~                           $rings-0.1.1.1-HjPEUfIuns6IU3TfoJ5ndsData.Semimodule.Transform Data.SemiringData.Semigroup.AdditiveData.Semigroup.PropertyData.SemifieldData.Semimodule Data.AlgebraData.Semimodule.BasisData.Semimodule.FreeData.Semiring.PropertyDatafoldr'WarningControl.Applicative Alternative<|>emptyData.Semigroupneutral_multiplication_onbase Control.Arrowarr&adjunctions-4.4-1QpkJRjnAlWA94juAnfobcData.Functor.RepindextabulateRep Representable#magmas-0.0.1-FzolCgkBAHFLOlVBR8HROg Data.Group mreplicate greplicateinvGroupLoop Quasigroup Data.Magma<<MagmaMultiplicativeunMultiplicativeAdditive unAdditive-zero+subtractone*recip/\\$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$fMonoidAdditive10$fGroupAdditive0$fLoopAdditive0$fQuasigroupAdditive0$fMagmaAdditive0$fSemigroupAdditive12$fGroupAdditive1$fLoopAdditive1$fQuasigroupAdditive1$fMagmaAdditive1$fMonoidAdditive11$fSemigroupAdditive13$fGroupAdditive2$fGroupAdditive3$fGroupAdditive4$fGroupAdditive5$fGroupAdditive6$fGroupAdditive7$fGroupAdditive8$fGroupAdditive9$fGroupAdditive10$fGroupAdditive11$fGroupAdditive12$fGroupAdditive13$fGroupAdditive14$fGroupAdditive15$fGroupAdditive16$fGroupAdditive17$fGroupAdditive18$fLoopAdditive2$fLoopAdditive3$fLoopAdditive4$fLoopAdditive5$fLoopAdditive6$fLoopAdditive7$fLoopAdditive8$fLoopAdditive9$fLoopAdditive10$fLoopAdditive11$fLoopAdditive12$fLoopAdditive13$fLoopAdditive14$fLoopAdditive15$fLoopAdditive16$fLoopAdditive17$fLoopAdditive18$fQuasigroupAdditive2$fQuasigroupAdditive3$fQuasigroupAdditive4$fQuasigroupAdditive5$fQuasigroupAdditive6$fQuasigroupAdditive7$fQuasigroupAdditive8$fQuasigroupAdditive9$fQuasigroupAdditive10$fQuasigroupAdditive11$fQuasigroupAdditive12$fQuasigroupAdditive13$fQuasigroupAdditive14$fQuasigroupAdditive15$fQuasigroupAdditive16$fQuasigroupAdditive17$fQuasigroupAdditive18$fMagmaAdditive2$fMagmaAdditive3$fMagmaAdditive4$fMagmaAdditive5$fMagmaAdditive6$fMagmaAdditive7$fMagmaAdditive8$fMagmaAdditive9$fMagmaAdditive10$fMagmaAdditive11$fMagmaAdditive12$fMagmaAdditive13$fMagmaAdditive14$fMagmaAdditive15$fMagmaAdditive16$fMagmaAdditive17$fMagmaAdditive18$fMonoidAdditive12$fMonoidAdditive13$fMonoidAdditive14$fMonoidAdditive15$fMonoidAdditive16$fMonoidAdditive17$fMonoidAdditive18$fMonoidAdditive19$fMonoidAdditive20$fMonoidAdditive21$fMonoidAdditive22$fMonoidAdditive23$fMonoidAdditive24$fMonoidAdditive25$fMonoidAdditive26$fMonoidAdditive27$fMonoidAdditive28$fMonoidAdditive29$fMonoidAdditive30$fMonoidAdditive31$fMonoidAdditive32$fMonoidAdditive33$fMonoidAdditive34$fSemigroupAdditive14$fSemigroupAdditive15$fSemigroupAdditive16$fSemigroupAdditive17$fSemigroupAdditive18$fSemigroupAdditive19$fSemigroupAdditive20$fSemigroupAdditive21$fSemigroupAdditive22$fSemigroupAdditive23$fSemigroupAdditive24$fSemigroupAdditive25$fSemigroupAdditive26$fSemigroupAdditive27$fSemigroupAdditive28$fSemigroupAdditive29$fSemigroupAdditive30$fSemigroupAdditive31$fSemigroupAdditive32$fSemigroupAdditive33$fSemigroupAdditive34$fSemigroupAdditive35$fSemigroupAdditive36$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$fGroupAdditive19$fLoopAdditive19$fQuasigroupAdditive19$fMagmaAdditive19$fMonoidAdditive35$fSemigroupAdditive37$fGroupMultiplicative12$fLoopMultiplicative12$fQuasigroupMultiplicative12$fMagmaMultiplicative12$fMonoidMultiplicative34$fSemigroupMultiplicative39$fRepresentableMultiplicative$fDistributiveMultiplicative$fApplicativeMultiplicative $fEqAdditive$fGenericAdditive $fOrdAdditive$fShowAdditive$fFunctorAdditive$fEqMultiplicative$fGenericMultiplicative$fOrdMultiplicative$fShowMultiplicative$fFunctorMultiplicativeassociative_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'RingRingLawSemiring SemiringLaw PresemiringPresemiringLawsum1sumWith1product1 productWith1xmult1eval1 evalWith1two^sumsumWithproduct productWithxmultevalevalWithnegateabssignum$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() $fRingComplex $fRingCDouble $fRingCFloat $fRingDouble $fRingFloat $fRingFixed $fRingFixed0 $fRingFixed1 $fRingFixed2 $fRingFixed3 $fRingFixed4 $fRingFixed5 $fRingRatio $fRingInteger $fRingInt64 $fRingInt32 $fRingInt16 $fRingInt8 $fRingInt$fRing()$fSemiringComplex$fPresemiringComplexRealFieldFieldLaw Semifield SemifieldLawananpinfninf^^$fSemifieldCDouble$fSemifieldCFloat$fSemifieldDouble$fSemifieldFloat$fSemifieldFixed$fSemifieldFixed0$fSemifieldFixed1$fSemifieldFixed2$fSemifieldFixed3$fSemifieldFixed4$fSemifieldFixed5$fSemifieldRatio$fSemifieldRatio0 $fSemifield()$fFieldComplex$fFieldCDouble $fFieldCFloat $fFieldDouble $fFieldFloat $fFieldFixed $fFieldFixed0 $fFieldFixed1 $fFieldFixed2 $fFieldFixed3 $fFieldFixed4 $fFieldFixed5 $fFieldRatio $fField()$fSemifieldComplex $fRealCDouble $fRealCFloat $fRealDouble $fRealFloat $fRealFixed $fRealFixed0 $fRealFixed1 $fRealFixed2 $fRealFixed3 $fRealFixed4 $fRealFixed5 $fRealRatio BisemimodulediscaleBimoduleRightSemimodulerscale RightModuleLeftSemimodulelscale LeftModuleFreeSemimodule FreeModuleBasis3Basis2BasisFree*./.\.lerp lscaleDef negateDef.*./.\ rscaleDef$fLeftSemimoduleRatioRatio$fLeftSemimoduleRatioRatio0$fLeftSemimoduleCDoubleCDouble$fLeftSemimoduleCFloatCFloat$fLeftSemimoduleDoubleDouble$fLeftSemimoduleFloatFloat$fLeftSemimoduleFixedFixed$fLeftSemimoduleFixedFixed0$fLeftSemimoduleFixedFixed1$fLeftSemimoduleFixedFixed2$fLeftSemimoduleFixedFixed3$fLeftSemimoduleFixedFixed4$fLeftSemimoduleFixedFixed5$fLeftSemimoduleWord64Word64$fLeftSemimoduleWord32Word32$fLeftSemimoduleWord16Word16$fLeftSemimoduleWord8Word8$fLeftSemimoduleWordWord$fLeftSemimoduleInt64Int64$fLeftSemimoduleInt32Int32$fLeftSemimoduleInt16Int16$fLeftSemimoduleInt8Int8$fLeftSemimoduleIntInt$fLeftSemimoduleBoolBool$fLeftSemimoduleComplexComplex$fLeftSemimoduleaComplex$fLeftSemimoduleaRatio$fLeftSemimodulel(,,)$fLeftSemimodulel(,)$fLeftSemimodulel->$fLeftSemimoduleIntegera$fLeftSemimoduleNaturala$fLeftSemimodule()a$fLeftSemimodulel()$fRightSemimoduleRatioRatio$fRightSemimoduleRatioRatio0$fRightSemimoduleCDoubleCDouble$fRightSemimoduleCFloatCFloat$fRightSemimoduleDoubleDouble$fRightSemimoduleFloatFloat$fRightSemimoduleFixedFixed$fRightSemimoduleFixedFixed0$fRightSemimoduleFixedFixed1$fRightSemimoduleFixedFixed2$fRightSemimoduleFixedFixed3$fRightSemimoduleFixedFixed4$fRightSemimoduleFixedFixed5$fRightSemimoduleWord64Word64$fRightSemimoduleWord32Word32$fRightSemimoduleWord16Word16$fRightSemimoduleWord8Word8$fRightSemimoduleWordWord$fRightSemimoduleInt64Int64$fRightSemimoduleInt32Int32$fRightSemimoduleInt16Int16$fRightSemimoduleInt8Int8$fRightSemimoduleIntInt$fRightSemimoduleBoolBool$fRightSemimoduleComplexComplex$fRightSemimoduleaComplex$fRightSemimoduleaRatio$fRightSemimoduler(,,)$fRightSemimoduler(,)$fRightSemimoduler->$fRightSemimoduleIntegera$fRightSemimoduleNaturala$fRightSemimodule()a$fRightSemimoduler()$fBisemimoduleRatioRatioRatio$fBisemimoduleRatioRatioRatio0#$fBisemimoduleCDoubleCDoubleCDouble $fBisemimoduleCFloatCFloatCFloat $fBisemimoduleDoubleDoubleDouble$fBisemimoduleFloatFloatFloat$fBisemimoduleFixedFixedFixed$fBisemimoduleFixedFixedFixed0$fBisemimoduleFixedFixedFixed1$fBisemimoduleFixedFixedFixed2$fBisemimoduleFixedFixedFixed3$fBisemimoduleFixedFixedFixed4$fBisemimoduleFixedFixedFixed5 $fBisemimoduleWord64Word64Word64 $fBisemimoduleWord32Word32Word32 $fBisemimoduleWord16Word16Word16$fBisemimoduleWord8Word8Word8$fBisemimoduleWordWordWord$fBisemimoduleInt64Int64Int64$fBisemimoduleInt32Int32Int32$fBisemimoduleInt16Int16Int16$fBisemimoduleInt8Int8Int8$fBisemimoduleIntIntInt$fBisemimoduleBoolBoolBool#$fBisemimoduleComplexComplexComplex$fBisemimoduleaaComplex$fBisemimoduleaaRatio$fBisemimodulerr(,,)$fBisemimodulerr(,)$fBisemimodulerr->$fBisemimodulerr() Bialgebra FreeBialgebraCounitalcoempty FreeCounital Coalgebracoappend FreeCoalgebraUnitalaempty FreeUnitalAlgebraappend FreeAlgebra.*.unitalunitcounital$fAlgebrarIntSet $fAlgebrarSet $fAlgebrarSeq $fAlgebraa[]$fAlgebraa(,,) $fAlgebraa(,) $fAlgebraa()$fUnitalrIntSet $fUnitalrSet $fUnitalrSeq $fUnitala[] $fUnitala(,,) $fUnitala(,) $fUnitala()$fCoalgebrarIntSet$fCoalgebrarSet$fCoalgebrarSeq$fCoalgebrar[]$fCoalgebrar->$fCoalgebrar(,,)$fCoalgebrar(,)$fCoalgebrar()$fCounitalrIntSet$fCounitalrSet$fCounitalrSeq $fCounitalr[] $fCounitalr->$fCounitalr(,,)$fCounitalr(,) $fCounitalr()TranEndoDual++**dualimage'toTranfromTran!**!tranimage!##!!#!dimapinvmapinitinit'coinitcoinit'braidcobraidjoinjoin'cojoincojoin'splitcosplitconvolve convolve' commutator.##..#.outerinner quadrancetrace transposediagcodiagscalaridentityrowrowscolcolsprojlprojrcomplcomprcomplr$fRightSemimodulerDual$fRightSemimoduleDualDual$fLeftSemimodulerDual$fLeftSemimoduleDualDual $fRingDual$fSemiringDual$fPresemiringDual$fMonadPlusDual$fAlternativeDual $fMonadDual$fApplicativeDual $fFunctorDual $fRingTran$fRightSemimodulerTran$fRightSemimoduleTranTran$fLeftSemimodulerTran$fLeftSemimoduleTranTran$fSemiringTran$fPresemiringTran$fArrowPlusTran$fArrowZeroTran$fArrowApplyTran$fArrowChoiceTran $fArrowTran$fCategoryTYPETran $fMonadTran$fApplicativeTran $fFunctorTranE4E41E42E43E44E3E31E32E33E2E21E22E1E11e1fillE1e2fillE2e3fillE3e4fillE4$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$fShowE4V4V3V2V1M44M43M42M34M33M32M24M23M22M41M31M21M14M13M12M11crosstriplediracidxeltlensRepgrateRepinv1bdet2det2inv2bdet3det3inv3bdet4det4inv4elt2m11m12m13m14m21m31m41m22m23m24m32m33m34m42m43m44unV1$fBisemimoduleaaV1$fRightSemimoduleaV1$fLeftSemimoduleaV1$fRepresentableV1$fDistributiveV1 $fFoldable1V1 $fFoldableV1$fApplicativeV1 $fFunctorV1 $fShow1V1 $fRingCompose$fSemiringCompose$fPresemiringCompose#$fBisemimoduleComposeComposeCompose$fRightSemimoduleComposeCompose$fLeftSemimoduleComposeCompose$fBisemimoduleaaV2$fRightSemimoduleaV2$fLeftSemimoduleaV2$fRepresentableV2$fDistributiveV2 $fFoldable1V2 $fFoldableV2$fApplicativeV2 $fFunctorV2 $fShow1V2$fRingCompose0$fSemiringCompose0$fPresemiringCompose0$$fBisemimoduleComposeComposeCompose0 $fRightSemimoduleComposeCompose0$fLeftSemimoduleComposeCompose0$$fBisemimoduleComposeComposeCompose1 $fRightSemimoduleComposeCompose1$fLeftSemimoduleComposeCompose1$$fBisemimoduleComposeComposeCompose2 $fRightSemimoduleComposeCompose2$fLeftSemimoduleComposeCompose2$fBisemimoduleaaV3$fRightSemimoduleaV3$fLeftSemimoduleaV3$fRepresentableV3$fDistributiveV3 $fFoldable1V3 $fFoldableV3$fApplicativeV3 $fFunctorV3 $fShow1V3$fEq1V3$fRingCompose1$fSemiringCompose1$fPresemiringCompose1$$fBisemimoduleComposeComposeCompose3 $fRightSemimoduleComposeCompose3$fLeftSemimoduleComposeCompose3$$fBisemimoduleComposeComposeCompose4 $fRightSemimoduleComposeCompose4$fLeftSemimoduleComposeCompose4$$fBisemimoduleComposeComposeCompose5 $fRightSemimoduleComposeCompose5$fLeftSemimoduleComposeCompose5$$fBisemimoduleComposeComposeCompose6 $fRightSemimoduleComposeCompose6$fLeftSemimoduleComposeCompose6$$fBisemimoduleComposeComposeCompose7 $fRightSemimoduleComposeCompose7$fLeftSemimoduleComposeCompose7$fBisemimoduleaaV4$fRightSemimoduleaV4$fLeftSemimoduleaV4$fRepresentableV4$fDistributiveV4 $fFoldable1V4 $fFoldableV4$fApplicativeV4 $fFunctorV4 $fShow1V4$fRingCompose2$fSemiringCompose2$fPresemiringCompose2$$fBisemimoduleComposeComposeCompose8 $fRightSemimoduleComposeCompose8$fLeftSemimoduleComposeCompose8$$fBisemimoduleComposeComposeCompose9 $fRightSemimoduleComposeCompose9$fLeftSemimoduleComposeCompose9%$fBisemimoduleComposeComposeCompose10!$fRightSemimoduleComposeCompose10 $fLeftSemimoduleComposeCompose10%$fBisemimoduleComposeComposeCompose11!$fRightSemimoduleComposeCompose11 $fLeftSemimoduleComposeCompose11%$fBisemimoduleComposeComposeCompose12!$fRightSemimoduleComposeCompose12 $fLeftSemimoduleComposeCompose12%$fBisemimoduleComposeComposeCompose13!$fRightSemimoduleComposeCompose13 $fLeftSemimoduleComposeCompose13%$fBisemimoduleComposeComposeCompose14!$fRightSemimoduleComposeCompose14 $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_onGHC.Base Semigroupghc-prim GHC.Classes== GHC.TypesTrueOrd<=&&idflipbindRep.Data.Functor.Compose getComposeControl.Category>>>runDual$ Data.Tupleuncurry*>