!d      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        ! " # $ % & ' ( ) * + , - . / 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 { | } ~                                                                                                                                                                   ! " # $ % & ' ( ) * + , - . / 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=>?@AHUVXkI 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 =>?@AUVXkk&Lrings5 \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.Mrings5 \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.Nrings! \forall a \in R: (z + a) \sim a @A semigroup with a right-neutral additive identity must satisfy: N ()  r =  Or, equivalently:   r = r 1This is a required property for additive monoids.Orings! \forall a \in R: (o * a) \sim a FA semigroup with a right-neutral multiplicative identity must satisfy: O ()  r =  Or, equivalently:   r = r 7This is a required property for multiplicative monoids.Prings& \forall a, b \in R: a + b \sim b + a UThis is a an optional property for semigroups, and a required property for semirings.Qrings& \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.Rrings; \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_propertySrings; \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.Trings-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.Urings2Idempotency 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.Vrings=This is a required property for additive semigroup morphisms.WringsCThis is a required property for multiplicative semigroup morphisms.Xrings:This is a required property for additive monoid morphisms.Yrings@This is a required property for multiplicative monoid morphisms.LMNOPQRSTUVWXYLMNOPQRSTUVWXYSafe,-478=>?@AHUVXkcZringsRings.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  q   r = q 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%Evaluate a non-empty presemiring sum.arings?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 15brings)Evaluate a non-empty presemiring product.cringsCEvaluate 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}drings)Cross-multiply two non-empty collections.Mxmult1 (Right 2 :| [Left "oops"]) (Right 2 :| [Right 3]) :: Either [Char] IntRight 4erings"Evaluate a presemiring expression.frings<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}grings g =    hrings8Evaluate a natural-numbered power of a semiring element.   = a h 0 8 ^ 0 :: Int1iringsEvaluate a semiring sum.sum [1..5 :: Int]15jrings/Evaluate a semiring sum using a given semiring.kringsEvaluate a semiring product.product [1..5 :: Int]120lrings3Evaluate a semiring product using a given semiring. k f =   (() . f)  productWith Just [1..5 :: Int]Just 120mringsCross-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] []0nringsEvaluate 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 + 421orings6Evaluate a semiring expression using a given semiring.+evalWith Max [[1..4 :: Int], [0..2 :: Int]]Max {getMax = 24}pringsSubtract two elements. a  b =  b a qringsReverse the sign of an element.rringsAbsolute value of an element.  r r = r  (s r)sringsExtract the sign of an element.s satisfies a trichotomy law:  s r = q 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.. Z[\]^_`abcdefghijklmnopqrs._^`abcdef]\ghijklmno[Zpqrs  h8p6Safe,-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.   = q   rings1Integral power of a multiplicative group element.   == a  08 ^^ 0 :: Double1.08 ^^ 0 :: Pico1.000000000000  8Safe+,-478=>?@AHUVXkش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)A direct sum of free semimodule elements.rings)A tensor product of semimodule morphisms.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.          12777777Safe+,-478=>?@AHSUVXk+~rings'An endomorphism over a free semimodule. one + two !# V2 1 2 :: V2 Double V2 3.0 6.0ringsDA linear transformation between free semimodules indexed with bases b and c. f  x  y = (f  x) + (f  y) f  (r  x) = r  (f  x) CautionE: You must ensure these laws hold when using the default constructor.Prefer  or  where appropriate.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  =     rings  ((c1,c2) -> ((c1,()),(c2,())))  (  )   =   ((c1,c2) -> (((),c1),((),c2)))  (  )   =  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  =     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.rings  =     rings  (((c1,()),(c2,())) -> (c1,c2))  (  )   =   ((((),c1),((),c2)) -> (c1,c2))  (  )   =  ringsAn algebra over a free module f."Note that this is distinct from a  *https://en.wikipedia.org/wiki/Free_algebra free algebra.rings4Obtain the diagonal of a tensor product as a vector.&When the coalgebra is trivial we have:   f =  $  ( .  ( getCompose f))diag $ m22 1.0 2.0 3.0 4.0 V2 1.0 4.0rings=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 .*. unit two :: V4 Int V4 2 4 6 8rings:Unital element of a unital algebra over a free semimodule.unit one :: Complex Int1 :+ 0ringsObtain a tensor from a vector.&When the coalgebra is trivial we have:   =      getComposeringsCConvolution with an associative algebra and coassociative coalgebrarings:Obtain an element from a coalgebra over a free semimodule.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/.rings$Swap components of a tensor product.rings Swap components of a direct sum.ringsTODO: DocumentringsTODO: Documentrings5Project 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   grings,The free commutative band coalgebra over Intrings#The free commutative band coalgebraringsThe tensor coalgebra on c.ringsTensor 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] :: Int24.~.~7222Safe+,78=>?@AHSUVXk ringsBLinear functionals from elements of a free semimodule to a scalar. f  (x  y) = (f  x)  (f  y) f  (x  a) = a  (f  x) CautionE: You must ensure these laws hold when using the default constructor.rings 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.ringsTODO: DocumentringsTODO: DocumentringsTODO: DocumentringsTODO: Document  =     ringsTODO: Document  333Safe+,-478=>?@AHSUVXk@3ringsTake the dual of a vector.dual (V2 3 4) !% V2 1 2 :: Int11 ringsDirac delta function. rings!Create a unit vector at an index.idx E21 :: V2 IntV2 1 0idx E42 :: V4 Int V4 0 1 0 0 rings Retrieve an element of a vector.elt E21 (V2 1 2)1 rings+Create a lens from a representable functor. rings5Create an indexed grate from a representable functor.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 0ringsInner product.This is a variant of m 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*Lift a matrix into a linear transformation  () = () . 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)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))ringsMultiply 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),        ,        7767 Safe=>?@AHSUVXkB !"#$%&'()*+,-./0123*+,-'()./#$%&01 !"23 Safe+,-478=>?@AHSUVXkzJ,Trings A 4x4 matrix.Urings A 4x3 matrix.Vrings A 4x2 matrix.Wrings A 3x4 matrix.Xrings A 3x3 matrix.Yrings A 3x2 matrix.Zrings 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.arings A 1x3 matrix.brings A 1x2 matrix.crings A 1x1 matrix.mringsCross product. a `cross' a =  a `cross' b = q ( 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.nringsScalar triple product. n x y z = n z x y = n y z x n x y z = q  n x z y = q  n y x z n x x y = n x y y = n x y x =  (n 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.0oringsConstruct a 1x1 matrix.m11 1 :: M11 IntCompose (V1 (V1 1))pringsConstruct a 1x2 matrix.m12 1 2 :: M12 IntCompose (V1 (V2 1 2))qringsConstruct a 1x3 matrix.m13 1 2 3 :: M13 IntCompose (V1 (V3 1 2 3))rringsConstruct a 1x4 matrix.m14 1 2 3 4 :: M14 IntCompose (V1 (V4 1 2 3 4))sringsConstruct a 2x1 matrix.m21 1 2 :: M21 IntCompose (V2 (V1 1) (V1 2))tringsConstruct a 3x1 matrix.m31 1 2 3 :: M31 Int!Compose (V3 (V1 1) (V1 2) (V1 3))uringsConstruct a 4x1 matrix.m41 1 2 3 4 :: M41 Int(Compose (V4 (V1 1) (V1 2) (V1 3) (V1 4))vringsConstruct a 2x2 matrix.!Arguments are in row-major order.m22 1 2 3 4 :: M22 IntCompose (V2 (V2 1 2) (V2 3 4))wringsConstruct a 2x3 matrix.!Arguments are in row-major order.xringsConstruct a 2x4 matrix.!Arguments are in row-major order.yringsConstruct a 3x2 matrix.!Arguments are in row-major order.zringsConstruct 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.0rings 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)))rings43x3 matrix bdeterminant over a commutative semiring.+bdet3 (V3 (V3 1 2 3) (V3 4 5 6) (V3 7 8 9)) (225, 225)rings(3x3 double-precision matrix determinant.  =  () .  DImplementation uses a cofactor expansion to avoid loss of precision.det3 $ m33 1 2 3 4 5 6 7 8 90rings3x3 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)))rings44x4 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)rings/4x4 matrix determinant over a commutative ring.  =  () .  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) % 1rings4x4 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))5TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~5jklhifgmndecba`_^]\[ZYXWVUTopqrstuvwxyz{|}~ Safe =>?@AUVXk zrings* \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.LMNOPQRSz{|}~z{LPM|}~NOQRS ! "##$%%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ABCD04ABCD04       ! " # $ % & ' ( ) * + , - . / 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 f g g h h i i j k l m n o p q r s t u v w x y z { | } ~            A B C D 0 4           M N O P 1 5           R S T U 2 6            X i z 3 7              Y j { 9 8  Z k | ; :  [ l } = <  \ m ~ ? >  ] n  E @  ^ o G F  _ p J H       ` q L I      a r V K  b s Q  c t W       d u          e v  f w  g x       h y                                        "rings-0.1.2-5cupeQ1NQKcKNC2Ls8OsAI Data.SemiringData.Semigroup.AdditiveData.Semigroup.PropertyData.SemifieldData.SemimoduleData.Semimodule.AlgebraData.Semimodule.DualData.Semimodule.OperatorData.Semimodule.BasisData.Semimodule.FreeData.Semiring.PropertyDatafoldr'tranlmap'rmap'WarningControl.Applicative Alternative<|>emptyData.Semigroupneutral_multiplication_on#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()EndoTranrunTran Bialgebra FreeBialgebraCounitalcounital coinitial FreeCounital Coalgebracojoined codiagonal FreeCoalgebraUnitalunitalinitial FreeUnitalAlgebrajoineddiagonal FreeAlgebradiag.*.unitunit'codiagconvolvecounitimage!##!!#!dimap'invmapbraidcobraidsplitcosplitprojlprojrcomplcomprcomplr$fRightSemimodulerTran$fLeftSemimodulerTran$fArrowPlusTran$fArrowZeroTran$fArrowApplyTran$fArrowChoiceTran $fArrowTran$fCategoryTYPETran $fMonadTran$fApplicativeTran $fFunctorTran$fPresemiringTran$fCoalgebraaIntSet$fCoalgebraaSet$fCoalgebraaSeq$fCoalgebraa[]$fCoalgebraa(,,)$fCoalgebraa(,)$fCoalgebraa() $fRingTran$fRightSemimoduleTranTran$fLeftSemimoduleTranTran$fSemiringTran$fCounitalaIntSet$fCounitalaSet$fCounitalaSeq $fCounitala[]$fCounitala(,,)$fCounitala(,) $fCounitala()$fCoalgebraa->$fAlgebraaIntSet $fAlgebraaSet $fAlgebraaSeq $fAlgebraa[]$fAlgebraa(,,) $fAlgebraa(,) $fAlgebraa() $fCounitala->$fUnitalaIntSet $fUnitalaSet $fUnitalaSeq $fUnitala[] $fUnitala(,,) $fUnitala(,) $fUnitala()$fBialgebraaSeq$fBialgebraa[]$fBialgebraa(,,)$fBialgebraa(,)$fBialgebraa()DualrunDualimage'toTranfromTran!**!initcoinitjoined' cojoined' convolve'$fRightSemimodulerDual$fRightSemimoduleDualDual$fLeftSemimodulerDual$fLeftSemimoduleDualDual $fRingDual$fSemiringDual$fPresemiringDual$fMonadPlusDual$fAlternativeDual $fMonadDual$fApplicativeDual $fFunctorDualdualdiracidxeltlensRepgrateRep.##.innerouter quadranceelt2rowrowscolcolsscalaridentity.#.trace transposeE4E41E42E43E44E3E31E32E33E2E21E22E1E11e1fillE1e2fillE2e3fillE3e4fillE4$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#$fBisemimoduleComposeComposeCompose$fRightSemimoduleComposeCompose$fLeftSemimoduleComposeCompose$fLeftSemimoduleComposeCompose0$fLeftSemimoduleComposeCompose1$fLeftSemimoduleComposeCompose2 $fRightSemimoduleComposeCompose0 $fRightSemimoduleComposeCompose1 $fRightSemimoduleComposeCompose2$fRingCompose0$fSemiringCompose0$fPresemiringCompose0$$fBisemimoduleComposeComposeCompose0 $fRightSemimoduleComposeCompose3$fLeftSemimoduleComposeCompose3$$fBisemimoduleComposeComposeCompose1 $fRightSemimoduleComposeCompose4$$fBisemimoduleComposeComposeCompose2$fLeftSemimoduleComposeCompose4$fLeftSemimoduleComposeCompose5$fLeftSemimoduleComposeCompose6 $fRightSemimoduleComposeCompose5$fRingCompose1$fSemiringCompose1$fPresemiringCompose1$$fBisemimoduleComposeComposeCompose3 $fRightSemimoduleComposeCompose6$fLeftSemimoduleComposeCompose7$$fBisemimoduleComposeComposeCompose4 $fRightSemimoduleComposeCompose7$$fBisemimoduleComposeComposeCompose5 $fRightSemimoduleComposeCompose8$$fBisemimoduleComposeComposeCompose6$fLeftSemimoduleComposeCompose8$$fBisemimoduleComposeComposeCompose7$fLeftSemimoduleComposeCompose9 $fLeftSemimoduleComposeCompose10 $fRightSemimoduleComposeCompose9!$fRightSemimoduleComposeCompose10$fRingCompose2$fSemiringCompose2$fPresemiringCompose2$$fBisemimoduleComposeComposeCompose8!$fRightSemimoduleComposeCompose11 $fLeftSemimoduleComposeCompose11$$fBisemimoduleComposeComposeCompose9!$fRightSemimoduleComposeCompose12%$fBisemimoduleComposeComposeCompose10!$fRightSemimoduleComposeCompose13%$fBisemimoduleComposeComposeCompose11!$fRightSemimoduleComposeCompose14%$fBisemimoduleComposeComposeCompose12 $fLeftSemimoduleComposeCompose12%$fBisemimoduleComposeComposeCompose13 $fLeftSemimoduleComposeCompose13%$fBisemimoduleComposeComposeCompose14 $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_onbaseGHC.Base Semigroupghc-prim GHC.Classes== GHC.TypesTrueOrd<=&&id Data.Tuplecurry.$Control.Category Control.Arrow***constuncurry&adjunctions-4.4-1QpkJRjnAlWA94juAnfobcData.Functor.ReptabulateindexflipbindRep>>>*>