!1Qd      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcSafe=?@AXk'ringsA  is a d plus a function,  , such that:  g << negate g "a mempty negate g << g "a mempty6Safe ,478=?@AXkFrings Monoid under  . Analogous to , but uses the   constraint, rather than e.rings Infinite closures of a semiring. adds a Kleene  operator to a  $, with an infinite closure property:  x "a  x   x   "a x    x  If r is a dioid then  must be monotonic:@x <~ y ==>  x <~  y See also 7https://en.wikipedia.org/wiki/Semiring#Kleene_semiringsclosed semiring rings@Right pre-semirings and (non-unital and unital) right semirings.HA right pre-semiring (sometimes referred to as a bisemigroup) is a type R endowed with two associative binary (i.e. semigroup) operations: (<>) and (><), along with a right-distributivity property connecting them: (a  b)   c "a (a   c)  (b   c) ]A non-unital right semiring (sometimes referred to as a bimonoid) is a pre-semiring with a fJ element that is neutral with respect to both addition and multiplication.NA unital right semiring is a pre-semiring with two distinct neutral elements, f and  , such that f is right-neutral wrt addition, , is right-neutral wrt multiplication, and f+ is right-annihilative wrt multiplication.  Note that  needn't be distinct from fT, moreover addition and multiplication needn't be commutative or left-distributive.CSee the properties module for a detailed specification of the laws. ringsMultiplicative operation. rings3Semiring homomorphism from the Boolean semiring to r.If this map is injective then r$ has a distinct multiplicative unit. rings/Constraint kind representing a unital semiring.cUsed for convenience and to distinguish unital semirings from semirings with only an additive unit.rings$Multiplicative unit of the semiring.ringsDefault implementation of   given a multiplicative unit.ringsHFold over a collection using the multiplicative operation of a semiring.  f "a  ((><) . f)  D(foldMap . product) id [[1, 2], [3, (4 :: Int)]] -- 1 >< 2 <> 3 >< 414D(product . foldMap) id [[1, 2], [3, (4 :: Int)]] -- 1 <> 2 >< 3 <> 421LFor semirings without a distinct multiplicative sunit this is equivalent to  const mempty:product Just [1..(5 :: Int)]Just 0.In this situation you most likely want to use .ringsRFold over a non-empty collection using the multiplicative operation of a semiring.TAs the collection is non-empty this does not require a distinct multiplicative unit:$product1 Just $ 1 :| [2..(5 :: Int)]Just 120ringsCross-multiply two collections.cross [1,2,3 :: Int] [1,2,3]36cross [1,2,3 :: Int] []0rings)Cross-multiply two non-empty collections.Mcross1 (Right 2 :| [Left "oops"]) (Right 2 :| [Right 3]) :: Either [Char] IntRight 4ringsA generalization of  to an arbitrary d.  Adapted from  Jhttp://augustss.blogspot.com/2008/07/lost-and-found-if-i-write-108-in.html.-rings1'First a' forms a pre-semiring for any semigroup a.=foldMap1 First $ 1 :| [2..(5 :: Int)] >< 1 :| [2..(5 :: Int)]First {getFirst = 1}%product1 First $ 1 :| [2..(5 :: Int)]First {getFirst = 15}?foldMap1 First $ Nothing :| [Just (5 :: Int), Just 6, Nothing]First {getFirst = Nothing}?product1 First $ Nothing :| [Just (5 :: Int), Just 6, Nothing]First {getFirst = Just 11}     78Safe=?@AXkW=>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   f "a f "a f   r      r "a  rYFurthermore, the binomial formula holds for any commuting pair of elements (that is, any a and b such that a > b= b< a).If mempty = sunit 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 g? instance), then the following additional properties must hold:  a  =b == a <> c  =b < c  mempty  =a && mempty <= b == mempty  =a< bCSee the properties module for a detailed specification of the laws.?rings)A ring homomorphism from the integers to r.@ringsAbsolute value of an element.  abs r "a r >< signum r >?@A >?@ASafe =?@AXkWSafe =?@AXkXySafe =?@AXkXSafe =?@AXkYuSafe ,=?@AXk`ringsRight pre-dioids and dioids.RA right-dioid is a semiring with a right-canonical pre-order relation relative to : a <~ b iff  b "a a <> c for some c.In other words we have that: a h (a  b) "a i  Consequently h" is both reflexive and transitive: a h a "a i a h b && b h c ==> a h c "a i Finally h is an order relation: (a j b)  == (a k b)See rings*A dioid homomorphism from the naturals to r. Safe=?@AXka- Safe=?@AXka Safe,=>?@AHPSVXkn= rings&Free semimodule over a generating set.See  )https://en.wikipedia.org/wiki/Free_module and  (https://en.wikipedia.org/wiki/Semimodule.ringsThe zero vector.ringsNegation of a vector. neg (V2 2 4) V2 (-2) (-4)ringsSum of two vectors.V2 1 2 `sum` V2 3 4V2 4 6V2 1 2 <> V2 3 4V2 4 6,V2 (V2 1 2) (V2 3 4) <> V2 (V2 1 2) (V2 3 4)V2 (V2 2 4) (V2 6 8)ringsDifference between two vectors.V2 4 5 `diff` V2 3 1V2 1 4V2 4 5 << V2 3 1V2 1 4ringsOuter (tensor) product.rings Dot product.ringsSquared l2 norm of a vector.ringsSquared l2, norm of the difference between two vectors.rings)Linearly interpolate between two vectors.ringsDirac delta function.ringsCreate a unit vector.unit I21 :: V2 IntV2 1 0unit I42 :: V4 Int V4 0 1 0 0666 Safe =?@AXkrings! \forall a \in R: (z + a) \sim a BA (pre-)semiring with a right-neutral additive sunit must satisfy: neutral_addition f ~~ const True Or, equivalently: f  r ~~ r This is a required property.rings! \forall a \in R: (o * a) \sim a HA (pre-)semiring with a right-neutral multiplicative sunit must satisfy: neutral_multiplication  ~~ const True Or, equivalently:    r ~~ r This is a required property.rings5 \forall a, b, c \in R: (a + b) + c \sim a + (b + c) R must right-associate addition.*This should be verified by the underlying l2 instance, but is included here for completeness.This is a required property.rings5 \forall a, b, c \in R: (a * b) * c \sim a * (b * c) R% must right-associate multiplication.This is a required property.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) m c = (a m c) <|> (b m c) See  ?https://en.wikibooks.org/wiki/Haskell/Alternative_and_MonadPlus.This is a required property.rings* \forall a, b \in R: a * b \sim a * b + b If R is non-unital (i.e. sunit is not distinct from mempty>) then it will instead satisfy a right-absorbtion property. <This follows from right-neutrality and right-distributivity.Compare codistributive and  closed_stable.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! \forall a \in R: (z * a) \sim u A RF is unital then its addititive sunit must be right-annihilative, i.e.: f   a ~~ f For  Alternative' instances this property translates to: empty m a ~~ empty hAll right semirings must have a right-absorbative addititive sunit, however note that depending on the PrdF instance this does not preclude IEEE754-mandated behavior such as:  f   NaN ~~ NaN This is a required property.rings & must be a semiring homomorphism into R.This is a required property.rings; \forall a, b, c \in R: b + a \sim c + a \Rightarrow b = c If R1 is right-cancellative wrt addition then for all a the section (a <>) is injective.rings; \forall a, b, c \in R: b * a \sim c * a \Rightarrow b = c If R7 is right-cancellative wrt multiplication then for all a the section (a ><) is injective.rings& \forall a, b \in R: a + b \sim b + a rings& \forall a, b \in R: a * b \sim b * a 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 \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 n.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 cross-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) cross-multiplication. Safe =?@AXkringsh& is a preordered relation relative to .This is a required property.ringsf" is a minimal or least element of r.This is a required property.rings4( forall a, b, c: b leq c Rightarrow b + a leq c + aDIn an ordered semiring this follows directly from the definition of h.Compare cancellative_addition.This is a required property.rings8 \forall a, b: a + b = 0 \Rightarrow a = 0 \wedge b = 0 This is a required property.rings4( forall a, b, c: b leq c Rightarrow b * a leq c * a2In an ordered semiring this follows directly from  distributive and the definition of h.Compare cancellative_multiplication.This is a required property.ringsh# is consistent with annihilativity.OThis means that a dioid with an annihilative multiplicative sunit must satisfy: (one <~) "a (one ==) rings+( forall a, b: a leq b Rightarrow a + b = brings6 \forall a, b: a * b = 0 \Rightarrow a = 0 \vee b = 0 rings# \forall a, b \in R: a * b + b = b BRight-additive absorbativity is a generalized form of idempotency:   a ~~ a <> a ~~ a rings# \forall a, b \in R: b + b * a = b ALeft-additive absorbativity is a generalized form of idempotency:   a ~~ a <> a ~~ a rings% \forall a, b \in R: (a + b) * b = b HRight-mulitplicative absorbativity is a generalized form of idempotency:  f a ~~ a   a ~~ a See  ,https://en.wikipedia.org/wiki/Absorption_law.rings% \forall a, b \in R: b * (b + a) = b GLeft-mulitplicative absorbativity is a generalized form of idempotency:  f a ~~ a   a ~~ a See  ,https://en.wikipedia.org/wiki/Absorption_law.rings \forall a \in R: o + a = o MA unital semiring with a right-annihilative muliplicative sunit must satisfy:  <> a ~~  "For a dioid this is equivalent to: ( h) ~~ ( o) For  Alternative/ instances this is known as the left-catch law: p a <|> _ ~~ p a rings \forall a \in R: a + o = o LA unital semiring with a left-annihilative muliplicative sunit must satisfy: a   ~~  Note that the left-annihilative property is too strong for many instances. This is because it requires that any effects that r generates be undsunit.See  0https://winterkoninkje.dreamwidth.org/90905.html.rings= \forall a, b, c \in R: c + (a * b) \equiv (c + a) * (c + b) MA right-codistributive semiring has a right-annihilative muliplicative sunit:    a f ~~  ~~   aidempotent mulitiplication:   f f a ~~ a ~~ a   aand idempotent addition:   a f a ~~ a ~~ a  aFurthermore if R8 is commutative then it is a right-distributive lattice.rings3 1 + \sum_{i=1}^{P+1} a^i = 1 + \sum_{i=1}^{P} a^i If a is p-stable for some p, then we have:  p a ~~ a    p a   ~~  p a   a   If  and  / are idempotent then every element is 1-stable:  a   a  a   = a  a   = a  rings< x = a * x + b \Rightarrow x = (1 + \sum_{i=1}^{P} a^i) * b If a is p-stable for some p, then we have:rings% \forall a \in R : a^* = a^* * a + 1  Closure is p-stability for all a in the limit as  p \to \infinity .KOne way to think of this property is that all geometric series "converge":1 \forall a \in R : 1 + \sum_{i \geq 1} a^i \in R Safe,=>?@AHPSVXkyrings(Entry-wise vector or matrix subtraction.4V2 (V3 1 2 3) (V3 4 5 6) << V2 (V3 7 8 9) (V3 1 2 3)!V2 (V3 (-6) (-6) (-6)) (V3 3 3 3)rings+Entry-wise vector or matrix multiplication.4V2 (V3 1 2 3) (V3 4 5 6) >< V2 (V3 7 8 9) (V3 1 2 3)V2 (V3 7 16 27) (V3 4 10 18)rings%Entry-wise vector or matrix addition.4V2 (V3 1 2 3) (V3 4 5 6) <> V2 (V3 7 8 9) (V3 1 2 3)V2 (V3 8 10 12) (V3 5 7 9)Safe,=>?@AHPSVXkringsCross product.V3 1 1 1 <@> V3 (-2) 1 1 V3 0 (-3) 35The cross product satisfies the following properties: a  a = 0 a  b = " ( b  a ) , a  ( b + c ) = ( a  b ) + ( a  c ) , ( r a )  b = a  ( r b ) = r ( a  b ) . a  ( b  c ) + b  ( c  a ) + c  ( a  b ) = 0 . ringsScalar triple product.7Safe,=>?@AHPSVXk          Safe,=>?@AHPSVXk *#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.,ringsConstruct a 2x2 matrix.!Arguments are in row-major order.-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.0ringsConstruct a 3x3 matrix.!Arguments are in row-major order.1ringsConstruct a 3x4 matrix.!Arguments are in row-major order.2ringsConstruct a 4x2 matrix.!Arguments are in row-major order.3ringsConstruct a 4x3 matrix.!Arguments are in row-major order.4ringsConstruct a 4x4 matrix.!Arguments are in row-major order.5rings'Index into a row of a matrix or vector.row I21 (V2 1 2)16rings Index into a column of a matrix.,row I22 . col I31 $ V2 (V3 1 2 3) (V3 4 5 6)47ringsMatrix-scalar product.The <& arrow points towards the return type.m22 1 2 3 4 <. 5V2 (V2 5 10) (V2 15 20)m22 1 2 3 4 <. 5 <. 2V2 (V2 10 20) (V2 30 40)8ringsScalar-matrix product.The >& arrow points towards the return type.5 .> V2 (V2 1 2) (V2 3 4)V2 (V2 5 10) (V2 15 20)9rings.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 0:rings2Multiply a matrix on the right by a column vector.m23 1 2 3 4 5 6 #> V3 7 8 9 V2 50 122*m22 1 0 0 0 #> m23 1 2 3 4 5 6 #> V3 7 8 9V2 50 0;ringsMultiply two matrices.&m22 1 2 3 4 <#> m22 1 2 3 4 :: M22 IntV2 (V2 7 10) (V2 15 22).m23 1 2 3 4 5 6 <#> m32 1 2 3 4 4 5 :: M22 IntV2 (V2 19 25) (V2 43 58)<rings'Obtain a diagonal matrix from a vector.scale (V2 2 3)V2 (V2 2 0) (V2 0 3)=ringsIdentity matrix.identity :: M44 Int6V4 (V4 1 0 0 0) (V4 0 1 0 0) (V4 0 0 1 0) (V4 0 0 0 1)identity :: V3 (V3 Int)#V3 (V3 1 0 0) (V3 0 1 0) (V3 0 0 1)>ringsTranspose a matrix. )transpose (V3 (V2 1 2) (V2 3 4) (V2 5 6))V2 (V3 1 3 5) (V3 2 4 6)?ringsCompute the trace of a matrix.trace (V2 (V2 a b) (V2 c d))a <> d@rings!Compute the diagonal of a matrix.diagonal (V2 (V2 a b) (V2 c d))V2 a dArings52x2 matrix bideterminant over a commutative semiring.bdet2 $ m22 1 2 3 4(4,6)Brings/2x2 matrix determinant over a commutative ring. B "a q () . A Crings(2x2 double-precision matrix determinant.det2d $ m22 1 2 3 4-2.0Drings$2x2 double-precision matrix inverse.inv2d $ m22 1 2 3 4"V2 (V2 (-2.0) 1.0) (V2 1.5 (-0.5))Erings53x3 matrix bideterminant over a commutative semiring.+bdet3 (V3 (V3 1 2 3) (V3 4 5 6) (V3 7 8 9)) (225, 225)Frings/3x3 matrix determinant over a commutative ring. F "a q () . E Grings(3x3 double-precision matrix determinant.IThis implementation uses a cofactor expansion to avoid loss of precision.Hrings$3x3 double-precision matrix inverse.inv3d $ m33 1 2 4 4 2 2 1 1 1CV3 (V3 0.0 0.5 (-1.0)) (V3 (-0.5) (-0.75) 3.5) (V3 0.5 0.25 (-1.5))Irings54x4 matrix bideterminant over a commutative semiring.Ebdet4 (V4 (V4 1 2 3 4) (V4 5 6 7 8) (V4 9 10 11 12) (V4 13 14 15 16)) (27728,27728)Jrings/4x4 matrix determinant over a commutative ring. J "a q () . I Krings(4x4 double-precision matrix determinant.IThis implementation uses a cofactor expansion to avoid loss of precision.Lrings$4x4 double-precision matrix inverse.*#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL*+*)('&%$#,-./012345687:9;<=>?@ABCDEFGHIJKL778797:7;7Safe =?@AXkMr !!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~         !"#$%&&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~#rings-0.0.2.4-9dBg3spVdomqRKHFxJllu Data.Ring Data.Group Data.SemiringData.Int.InstanceData.Float.InstanceData.Fixed.InstanceData.Double.Instance Data.DioidData.Complex.InstanceData.Bool.InstanceData.Semiring.ModuleData.Semiring.PropertyData.Dioid.PropertyData.Semiring.V2Data.Semiring.V3Data.Semiring.V4Data.Semiring.MatrixData.Word.Instance Data.MonoidProductDatafoldr' Data.List replicatePropertyWarningbaseGHC.Base<>Groupnegate<<ProdgetProdKleenestarplusSemiring>< fromBooleanUnitalsunitfromBooleanDefproductproduct1crosscross1 replicate'^powers$fSemiringIntMap $fSemiringMap $fSemiringSeq $fSemiringSet$fSemiringEquivalence$fSemiringPredicate $fSemiringIO $fSemiringAll $fSemiringAny$fSemiringIdentity$fSemiringConst$fSemiringDual$fSemiringMaybe $fSemiring[]$fSemiringOrdering $fSemiring()$fSemiringNonEmpty$fSemiringEither $fSemiringMin $fSemiringMax$fSemiringLast$fSemiringFirst$fSemiring(,,) $fSemiring(,) $fSemiringOp $fSemiring-> $fKleene-> $fKleene() $fMonoidProd$fSemigroupProd$fApplicativeProd$fEqProd $fOrdProd $fShowProd $fBoundedProd $fGenericProd$fGeneric1Prod $fFunctorProdRing fromIntegerabssignum $fRingInteger $fRingInt64 $fRingInt32 $fRingInt16 $fRingInt8 $fRingInt$fSemiringInteger$fSemiringInt64$fSemiringInt32$fSemiringInt16$fSemiringInt8 $fSemiringInt$fGroupInteger $fGroupInt64 $fGroupInt32 $fGroupInt16 $fGroupInt8 $fGroupInt$fMonoidInteger $fMonoidInt64 $fMonoidInt32 $fMonoidInt16 $fMonoidInt8 $fMonoidInt$fSemigroupInteger$fSemigroupInt64$fSemigroupInt32$fSemigroupInt16$fSemigroupInt8$fSemigroupInt$fSemiringCFloat$fSemiringFloat$fMonoidCFloat $fMonoidFloat$fSemigroupCFloat$fSemigroupFloat $fRingFixed $fRingFixed0 $fRingFixed1 $fRingFixed2 $fRingFixed3 $fRingFixed4 $fRingFixed5$fSemiringFixed$fSemiringFixed0$fSemiringFixed1$fSemiringFixed2$fSemiringFixed3$fSemiringFixed4$fSemiringFixed5 $fGroupFixed $fGroupFixed0 $fGroupFixed1 $fGroupFixed2 $fGroupFixed3 $fGroupFixed4 $fGroupFixed5 $fMonoidFixed$fMonoidFixed0$fMonoidFixed1$fMonoidFixed2$fMonoidFixed3$fMonoidFixed4$fMonoidFixed5$fSemigroupFixed$fSemigroupFixed0$fSemigroupFixed1$fSemigroupFixed2$fSemigroupFixed3$fSemigroupFixed4$fSemigroupFixed5$fSemiringCDouble$fSemiringDouble$fMonoidCDouble$fMonoidDouble$fSemigroupCDouble$fSemigroupDoubleDioid fromNatural Topological $fDioid(,,) $fDioid(,) $fRingComplex$fSemiringComplex$fGroupComplex$fMonoidComplex$fSemigroupComplex $fDioidBool $fKleeneBool$fSemiringBool $fMonoidBool$fSemigroupBoolFreelensRepgrateRepfemptynegsumdiffouter<.> quadranceqdlerpdiracunitneutral_addition_onneutral_addition_on'neutral_multiplication_onneutral_multiplication_on'associative_addition_onassociative_multiplication_ondistributive_on nonunital_onannihilative_multiplication_onhomomorphism_booleancancellative_addition_oncancellative_multiplication_oncommutative_addition_oncommutative_multiplication_ondistributive_finite_ondistributive_finite1_ondistributive_cross_ondistributive_cross1_onordered_preorderedordered_monotone_zeroordered_monotone_additionordered_positive_additionordered_monotone_multiplicationordered_annihilative_sunitordered_idempotent_additionordered_positive_multiplicationabsorbative_additionidempotent_additionabsorbative_addition'absorbative_multiplicationabsorbative_multiplication'annihilative_additionannihilative_addition'codistributivekleene_pstablekleene_paffine kleene_stable kleene_affineidempotent_starI2I21I22V2$fDistributiveV2 $fFoldable1V2 $fFoldableV2 $fFunctorV2 $fGroupV2 $fDioidV2 $fSemiringV2 $fMonoidV2 $fSemigroupV2$fPrdV2 $fMaximalI2 $fMinimalI2$fPrdI2$fRepresentableV2$fEqV2$fOrdV2$fShowV2$fEqI2$fOrdI2$fShowI2I3I31I32I33V3<@>triple$fDistributiveV3 $fFoldable1V3 $fFoldableV3 $fFunctorV3 $fGroupV3 $fDioidV3 $fSemiringV3 $fMonoidV3 $fSemigroupV3$fPrdV3 $fMaximalI3 $fMinimalI3$fPrdI3$fRepresentableV3$fEqV3$fOrdV3$fShowV3$fEqI3$fOrdI3$fShowI3I4I41I42I43I44V4$fDistributiveV4 $fFoldable1V4 $fFoldableV4 $fFunctorV4 $fGroupV4 $fDioidV4 $fSemiringV4 $fMonoidV4 $fSemigroupV4$fPrdV4 $fMaximalI4 $fMinimalI4$fPrdI4$fRepresentableV4$fEqV4$fOrdV4$fShowV4$fEqI4$fOrdI4$fShowI4M44M43M42M34M33M32M24M23M22m22m23m24m32m33m34m42m43m44rowcol<..><##><#>scaleidentity transposetracediagbdet2det2det2dinv2dbdet3det3det3dinv3dbdet4det4det4dinv4d$fDioidNatural $fDioidWord64 $fDioidWord32 $fDioidWord16 $fDioidWord8$fSemiringNatural$fSemiringWord64$fSemiringWord32$fSemiringWord16$fSemiringWord8$fSemiringWord$fMonoidNatural$fMonoidWord64$fMonoidWord32$fMonoidWord16 $fMonoidWord8 $fMonoidWord$fSemigroupNatural$fSemigroupWord64$fSemigroupWord32$fSemigroupWord16$fSemigroupWord8$fSemigroupWordMonoidGHC.NumNummemptyghc-prim GHC.ClassesOrd*connections-0.0.2.2-9eCV40x07nE3p59NQCJX08Data.Prd<~ GHC.TypesTrue=~== Semigroup*>*semigroupoids-5.3.3-9Yf62O0pnLUGl5oOly5FW5Data.Semigroup.Foldable.Classfold1~~pure Data.Tupleuncurry