úÎxuU+      !"#$%&'()*portable provisionalstefan@vectorfabrics.com Safe-Infered+,+,+,portable provisionalstefan@vectorfabrics.com Safe-Infered---portable provisionalstefan@vectorfabrics.com Safe-Infered+(An element of the free abelian group on a. (A signed multiset with elements of type a. O(1)?. The empty signed multiset, i.e., the multiset in which every  element has multiplicity zero. O(1)A. Create a signed multiset that contains exactly one copy of the  given element. O(log n)A. Insert a new copy of the given element into a signed multiset, 7 i.e., increment the multiplicity of the element by 1. O(log n)?. Insert a specified number of new copies of the given element L into a signed multiset, i.e., increment the multiplicity of the element by G the specified number. If the specified number is negative, copies are  deleted from the set. O(log n)=. Delete a copy of the given element from a signed multiset, 7 i.e., decrement the multiplicity of the element by 1. O(log n)@. Delete a specified number of copies of the given element from K a signed multiset, i.e., decrement the multiplicity of the element by the J specified number. If the specified number is negative, new copies of the $ element are inserted into the set. O(log n)A. Delete all copies of the given element from a signed multiset, 4 i.e., set the multiplicity of the element to zero. O(1)C. Return whether the signed multiset is empty, i.e., whether every  element has multiplicity zero. O(n)A. Return whether the signed multiset is a set, i.e., whether all @ elements have either multiplicity zero or else multiplicity 1. O(n)F. Return whether all elements in the signed multiset have nonnegative  multiplicities. O(n)F. Return whether all elements in the signed multiset have nonpositive  multiplicities. O(1)A. Return the number of members of the signed multiset, i.e., the 4 number of elements that have nonzero multiplicity. O(n)B. Return the cardinality of the signed multiset, i.e., the sum of % the multiplicities of all elements. O(log n)=. Return whether the given element is a member of the signed ? multiset, i.e., whether the element has nonzero multiplicity. O(log n)&. Return whether the given element is not a member of the C signed multiset, i.e., whether the element has multiplicity zero. O(log n)=. Return the multiplicity of the given element in the signed  multiset. O(n)C. Return whether the first signed multiset is a submultiset of the B second, i.e., whether each element that has nonzero multiplicity m in the ) first multiset has nonzero multiplicity n with m <= n in the second. O(n)7. Return whether the first signed multiset is a proper H submultiset of the second, i.e., whether each element that has nonzero  multiplicity m0 in the first multiset has nonzero multiplicity n with  m < n in the second. O(n)C. Return the union of two signed multisets. The multiplicity of an @ element in the returned multiset is the maximum of its nonzero * multiplicites in the argument multisets. O(n)9. Return the additive union of two signed multisets. The G multiplicity of an element in the returned multiset is the sum of its + multiplicities in the argument multisets. O(n)E. Return the intersection of two signed multisets. If an element has J nonzero multiplicity in both argument multisets, its multiplicity in the G returned multiset is the minimum of its multiplicites in the argument J multisets; otherwise, its multiplicity in the returned multiset is zero. O(n)E. Return the difference of two signed multisets. The multiplicity of C an element in the returned multiset is the difference between its A multiplicities in the first and second argument multiplicities. O(n)C. Return the shadow of the signed multiset. The multiplicity of an N element in the returned multiset is the additive inverse of its multiplicity  in the argument multiset. O(n)D. Return the modulus of the signed multiset. The multiplicity of an L element in the returned multiset is the absolute value of its multiplicity  in the argument multiset. O(n)C. Return the signum of the signed multiset. The multiplicity of an O element in the returned multiset is -1 if it has negative multiplicity in the O argument multiset, zero if its multiplicity in the argument multiset is zero, A and 1 if it has positive multiplicity in the argument multiset. O(n)C. Return the left-continuous unit step of the signed multiset. The G multiplicity of an element in the returned multiset is zero if it has B negative multiplicity in the argument multiset, and 1 otherwise. O(n)A. Return the additive union of the given number of copies of the  signed multiset.  O(n * log n)9. Apply the given function to all elements of the signed  multiset. O(n)F. Apply the given predicate to the members of the signed multiset and H their multiplicities. The returned multiset contains the copies of the % members that satisfy the predicate. !O(n)F. Apply the given predicate to the members of the signed multiset and L their multiplicity. The first returned multiset contains the copies of the H members that satisfy the predicate, while the second returned multiset G contains the copies of the members that do not satisfy the predicate. "O(n)E. Split the signed multiset into a multiset containing the copies of N the members with a multiplicity less than or equal to the given number and a K multiset containing the copies of the members with a multiplicity greater  than the given number. #O(n)@. Perform a right-associative fold on the members of the signed M multiset and their multiplicities using the given operator and start value. $O(n)@. Perform a strict right-associative fold on the members of the M signed multiset and their multiplicities using the given operator and start  value. %O(n)?. Perform a left-associative fold on the members of the signed M multiset and their multiplicities using the given operator and start value. &O(n)F. Perform a strict left-associative fold on the members of the signed M multiset and their multiplicities using the given operator and start value. 'O(n)D. Convert the signed multiset to a list that associates all members * of the multiset with their multiplicity. (O(n + k) (with k8 the combined length of the returned lists). Return two A lists, such that: for each element with a positive multiplicity m in the * signed multiset, the first list contains m copies and the second list E contains no copies of the element; for each element with a negative  multiplicity - n:, the first list contains no and the second list contains  nE copies of the element; and for each element with zero multiplicity, . neither list contains a copy of the element. ) O(k * log n) (with k/ the length of the argument list). Construct a ' signed multiset from a list of element/multiplicity pairs. * O(k * log n) (with k- the combined length of the argument lists). M Construct a signed multiset by, starting from the empty multiset, inserting H copies of elements from the first argument list and deleting copies of ) elements from the second argument list. . Monoid under . / Monoid under . 3  !"#$%&'()*.01/2345+  !"#$%&'()*+  !"#$%&'()*1  !"#$%&'()*.01/23456      !"#$%&'()*+,-./0123456789signed-multiset-0.2Data.SignedMultisetData.SignedMultiset.ReadData.SignedMultiset.ShowAdditive getAdditiveSignedMultisetempty singletoninsert insertManydelete deleteMany deleteAllnullisSet isPositive isNegativesize cardinalitymember notMember multiplicityisSubmultisetOfisProperSubmultisetOfunion additiveUnion intersection differenceshadowmodulussignumunitstepmultiplymapfilter partitionsplitfoldrfoldr'foldlfoldl'toListtoListsfromList fromLists readsMembersmapReadS showsMembers$fMonoidAdditive$fMonoidSignedMultiset$fDataSignedMultiset$fTypeable1SignedMultiset$fReadSignedMultiset$fShowSignedMultiset$fOrdSignedMultiset$fEqSignedMultiset