! [_      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~          Safe,-478=>?@AHUVXk;rrings A (potentially non-commutative)  under . ringsA commutative  under .ringsHyphenation operator.rings0Left division by a multiplicative group element.When  is commutative we must have:  x  y = y  xrings1Integral power of a multiplicative group element.    a  08 ^^ 0 :: Double1.08 ^^ 0 :: Pico1.000000000000rings-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.160000000000   167778Safe =>?@AUVXk[H Irings5 \forall a, b, c \in R: (a + b) + c \sim a + (b + c) -All semigroups must right-associate addition.This is a required property.Jrings5 \forall a, b, c \in R: (a * b) * c \sim a * (b * c) 3All semigroups must right-associate multiplication.This is a required property.Krings! \forall a \in R: (z + a) \sim a @A semigroup with a right-neutral additive identity must satisfy: neutral_addition  = const True Or, equivalently:   r = r 1This is a required property for additive monoids.Lrings! \forall a \in R: (o * a) \sim a FA semigroup with a right-neutral multiplicative identity must satisfy: neutral_multiplication  = const True Or, equivalently:   r = r 6This is a required propert for multiplicative monoids.Mrings& \forall a, b \in R: a + b \sim b + a  This is a an optional property for semigroups, and a required property for semirings.Nrings& \forall a, b \in R: a * b \sim b * a  This is a an optional property for semigroups, and a optional" property for semirings. It is a required property for rings.Orings; \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_propertyPrings; \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.Qrings-Idempotency property for additive semigroups.  idempotent_addition = absorbative_addition See  0https://en.wikipedia.org/wiki/Band_(mathematics).)This is a required property for lattices.Rrings2Idempotency property for multplicative semigroups.  idempotent_multiplication = absorbative_multiplication See  0https://en.wikipedia.org/wiki/Band_(mathematics). This is a an optional property for semigroups, and a optional property for semirings. This is a required property for lattices.IJKLMNOPQRSTUVIJKLMNOPQRSTUVSafe,-478=>?@AHUVXkWringsRings.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  n   r = n 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.YringsRight 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.^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 15_rings)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}arings)Cross-multiply two non-empty collections.Mxmult1 (Right 2 :| [Left "oops"]) (Right 2 :| [Right 3]) :: Either [Char] IntRight 4brings"Evaluate a presemiring expression.crings<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}drings d =    erings8Evaluate a natural-numbered power of a semiring element.   = a e 0 8 ^ 0 :: Int1fringsEvaluate a semiring sum.sum [1..5 :: Int]15grings/Evaluate a semiring sum using a given semiring.hringsEvaluate a semiring product.product [1..5 :: Int]120irings3Evaluate a semiring product using a given semiring. h f =   (() . f)  productWith Just [1..5 :: Int]Just 120jringsCross-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] []0kringsEvaluate 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 + 421lrings6Evaluate a semiring expression using a given semiring.+evalWith Max [[1..4 :: Int], [0..2 :: Int]]Max {getMax = 24}oringsAbsolute value of an element.  o r = mul r (p r) 4https://en.wikipedia.org/wiki/Linearly_ordered_group- WXYZ[\]^_`abcdefghijklmnop-\[]^_`abcZYdefghijklXWmnop  e8m6Safe,-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.   = n     Safe+,-478=>?@AHUVXk` rings &https://en.wikipedia.org/wiki/Bimodule Bisemimodule over a commutative semiring.  l .  r =  r .  l 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. ringsDefault definition of  for a free module. ringsDefault definition of  for a commutative group. 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.          777777Safe+,478=>?@AHSUVXk.0rings7A morphism between free semimodules indexed with bases b and c.3rings'An endomorphism over a free semimodule.4rings2A dimensional (binary) relation between two bases. 4 b c d relations correspond to (compositions of) permutation, projection, and embedding transformations. See also  ,https://en.wikipedia.org/wiki/Logical_matrix.7rings#Apply a transformation to a vector.8rings7Lift a function on basis indices into a transformation.  8 f =  f 9rings Tran a b c is an invariant functor on a. See also  .http://comonad.com/reader/2008/rotten-bananas/.:rings!Obtain a matrix by stacking rows.rows (V2 1 2) :: M22 IntV2 (V2 1 2) (V2 1 2);rings$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  ? gWhen  f . g = id* this induces a similarity transformation:perm1 = arr (+ E32)perm2 = arr (+ E33)$m = m33 1 2 3 4 5 6 7 8 9 :: M33 Intcomplr perm1 perm2 m :: M33 Int#V3 (V3 5 6 4) (V3 8 9 7) (V3 2 3 1) See also  /https://en.wikipedia.org/wiki/Matrix_similarity &  -https://en.wikipedia.org/wiki/Conjugacy_class.AringsTranspose a matrix.)transpose (V3 (V2 1 2) (V2 3 4) (V2 5 6))V2 (V3 1 3 5) (V3 2 4 6)&transpose $ m23 1 2 3 4 5 6 :: M32 IntV3 (V2 1 4) (V2 2 5) (V2 3 6)Brings$Swap components of a tensor product.Crings Swap components of a direct sum.Drings5Lift a transform into a transform on tensor products.Erings5Lift a transform into a transform on tensor products.Frings1Lift a transform into a transform on direct sums.Grings1Lift a transform into a transform on direct sums.Hrings6Create a transform on a tensor product of semimodules.Irings2Create a transform on a direct sum of semimodules.Mrings  M  = Orings  O  = !0123456789:;<=>?@ABCDEFGHIJKLMNOP!6543012789:;<=>?@ABCDEFGHIJKLMNOP5162H3I2J3K2L0Safe=>?@AHSUVXkiTUVWXYZ[\]^_`abcdefghijklmnopghijdefkl`abcmn[\]^_opTUVWXYZSafe+,-478=>?@AHSUVXk2@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.rings.Multiply a matrix on the left by a row vector.V2 1 2 #. m23 3 4 5 6 7 8 V3 15 18 21.(V2 1 2 #. m23 3 4 5 6 7 8) #. m32 1 0 0 0 0 0V2 15 0rings2Multiply a matrix on the right by a column vector.  () = 7 . 1app (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 122,m22 1 0 0 0 .# (m23 1 2 3 4 5 6 .# V3 7 8 9)V2 50 0rings Dot product.This is a variant of j restricted to free functors.V3 1 2 3 `dot` V3 1 2 314ringsSquared l2 norm of a vector.ringsSquared l2, norm of the difference between two vectors.rings Cross product a `cross' a =  a `cross' b = n ( 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 = n   x z y = n   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.0ringsDirac delta function.rings!Create a unit vector at an index.idx E21 :: V2 IntV2 1 0idx E42 :: V4 Int V4 0 1 0 0rings Retrieve an element of a vector.elt E21 (V2 1 2)1rings+Create a lens from a representable functor.rings5Create an indexed grate from a representable functor.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))ringsCompute the trace of a matrix.trace $ m22 1.0 2.0 3.0 4.05.0rings 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))rings*Lift a matrix into a linear transformation  () = 7 . 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 6ringsRetrieve a column of a matrix.#elt E22 . col E31 $ m23 1 2 3 4 5 64rings'Obtain a diagonal matrix from a vector. diag $ V2 2 3Compose (V2 (V2 2 0) (V2 0 3))ringsOuter product of two vectors.V2 1 1 `outer` V2 1 1Compose (V2 (V2 1 1) (V2 1 1))ringsIdentity matrix.identity :: M33 Int-Compose (V3 (V3 1 0 0) (V3 0 1 0) (V3 0 0 1))rings,Obtain the diagonal of a matrix as a vector.diagonal $ m22 1.0 2.0 3.0 4.0 V2 1.0 4.0ringsConstruct a 1x1 matrix.m11 1 :: M11 IntCompose (V1 (V1 1))ringsConstruct a 1x2 matrix.m12 1 2 :: M12 IntCompose (V1 (V2 1 2))ringsConstruct a 1x3 matrix.m13 1 2 3 :: M13 IntCompose (V1 (V3 1 2 3))ringsConstruct a 1x4 matrix.m14 1 2 3 4 :: M14 IntCompose (V1 (V4 1 2 3 4))ringsConstruct a 2x1 matrix.m21 1 2 :: M21 IntCompose (V2 (V1 1) (V1 2))ringsConstruct a 3x1 matrix.m31 1 2 3 :: M31 Int!Compose (V3 (V1 1) (V1 2) (V1 3))ringsConstruct a 4x1 matrix.m41 1 2 3 4 :: M41 Int(Compose (V4 (V1 1) (V1 2) (V1 3) (V1 4))ringsConstruct 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.S   :;AS   A:;7767 Safe =>?@AUVXkZ rings* \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  Alternative, 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  distributive and the universality of fold1.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  Alternative' instances this property translates to: empty  a ~~ empty 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  distributive & neutral_multiplication.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.IJKLMNOPIMJKLNOP         !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<==>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrsstuvwxyz{|}~789:&*DEFG'+J[l}(,K\m~)-L]n/.M^o10N_p32 O`q54   Par;6 Qbs=<Rct@>SduB?TevHA !"#$%UfwC&'(VgxI)*+Why,-.Xiz/01Yj{234Zk|567>?@A89:;<=>?@ABC D E F G H I J K L MNOPQRSQRTQRUQRVNOWXYZN[WN[\]^_]^`NOaNbcNOde rings-0.1-7remCgDRSh7DAtEu8SmhAL Data.SemiringData.Semigroup.AdditiveData.Semigroup.PropertyData.SemifieldData.SemimoduleData.Semimodule.TransformData.Semimodule.BasisData.Semimodule.FreeData.Semiring.PropertyDatafoldr'Warning#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$fSemigroupAdditive12$fGroupAdditive0$fLoopAdditive0$fQuasigroupAdditive0$fMagmaAdditive0$fMonoidAdditive11$fSemigroupAdditive13$fGroupAdditive1$fGroupAdditive2$fGroupAdditive3$fGroupAdditive4$fGroupAdditive5$fGroupAdditive6$fGroupAdditive7$fGroupAdditive8$fGroupAdditive9$fGroupAdditive10$fGroupAdditive11$fGroupAdditive12$fGroupAdditive13$fGroupAdditive14$fGroupAdditive15$fGroupAdditive16$fGroupAdditive17$fLoopAdditive1$fLoopAdditive2$fLoopAdditive3$fLoopAdditive4$fLoopAdditive5$fLoopAdditive6$fLoopAdditive7$fLoopAdditive8$fLoopAdditive9$fLoopAdditive10$fLoopAdditive11$fLoopAdditive12$fLoopAdditive13$fLoopAdditive14$fLoopAdditive15$fLoopAdditive16$fLoopAdditive17$fQuasigroupAdditive1$fQuasigroupAdditive2$fQuasigroupAdditive3$fQuasigroupAdditive4$fQuasigroupAdditive5$fQuasigroupAdditive6$fQuasigroupAdditive7$fQuasigroupAdditive8$fQuasigroupAdditive9$fQuasigroupAdditive10$fQuasigroupAdditive11$fQuasigroupAdditive12$fQuasigroupAdditive13$fQuasigroupAdditive14$fQuasigroupAdditive15$fQuasigroupAdditive16$fQuasigroupAdditive17$fMagmaAdditive1$fMagmaAdditive2$fMagmaAdditive3$fMagmaAdditive4$fMagmaAdditive5$fMagmaAdditive6$fMagmaAdditive7$fMagmaAdditive8$fMagmaAdditive9$fMagmaAdditive10$fMagmaAdditive11$fMagmaAdditive12$fMagmaAdditive13$fMagmaAdditive14$fMagmaAdditive15$fMagmaAdditive16$fMagmaAdditive17$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$fGroupAdditive18$fLoopAdditive18$fQuasigroupAdditive18$fMagmaAdditive18$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_onneutral_multiplication_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 lscaleDef negateDeflerp*./.\. rscaleDef.*./.\$fLeftSemimoduleComplexComplex$fLeftSemimoduleaComplex$fLeftSemimoduleaRatio$fLeftSemimodulel(,,)$fLeftSemimodulel(,)$fLeftSemimodulel->$fLeftSemimoduleIntegera$fLeftSemimoduleNaturala$fLeftSemimodule()a$fLeftSemimodulel()$fRightSemimoduleComplexComplex$fRightSemimoduleaComplex$fRightSemimoduleaRatio$fRightSemimoduler(,,)$fRightSemimoduler(,)$fRightSemimoduler->$fRightSemimoduleIntegera$fRightSemimoduleNaturala$fRightSemimodule()a$fRightSemimoduler()#$fBisemimoduleComplexComplexComplex$fBisemimoduleaaComplex$fBisemimoduleaaRatio$fBisemimodulerr(,,)$fBisemimodulerr(,)$fBisemimodulerr->$fBisemimodulerr()TranrunTranEndoDim++**apparrinvmaprowscolsprojlprojrcomplcomprcomplr transposebraidsbraidfirstsecondleftright***+++&&&|||$$$adivideadivide'aselectaselect'$fProfunctorTran$fCategoryTYPETran $fFunctorTranE6E61E62E63E64E65E66E4E41E42E43E44E3E31E32E33E2E21E22E1e1fillE1e2fillE2e3fillE3e4fillE4$fEqE1$fOrdE1$fShowE1$fEqE2$fOrdE2$fShowE2$fEqE3$fOrdE3$fShowE3$fEqE4$fOrdE4$fShowE4$fEqE5$fOrdE5$fShowE5$fEqE6$fOrdE6$fShowE6V4V3V2V1M44M43M42M34M33M32M24M23M22M41M31M21M14M13M12M11#..#dot quadranceqdcrosstriplediracidxeltlensRepgrateRep.#.traceinv1bdet2det2inv2bdet3det3inv3bdet4det4inv4tranelt2rowcoldiagouteridentitydiagonalm11m12m13m14m21m31m41m22m23m24m32m33m34m42m43m44unV1$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_onbaseGHC.Base Semigroupghc-prim GHC.Classes==Ord<=&&id&profunctors-5.3-8dCZ39QUQPeJjeVUVVdqIKData.Profunctor.UnsafermapControl.Category>>> lawz-0.1.1-Jbwgb6q8naYJD2GaCKcac Test.Logicforkjoin$ Data.Tupleuncurry*>