Funcons-beta : Multisets.cbs | PRETTY | PDF
Multisets (bags)
[
Type multisets
Funcon multiset
Funcon multiset-elements
Funcon multiset-occurrences
Funcon multiset-insert
Funcon multiset-delete
Funcon is-submultiset
]Meta-variables
GT <: ground-valuesBuilt-in Type
multisets(GT)multisets(GT) is the type of possibly-empty finite multisets of elements
of GT.
Built-in Funcon
multiset(_:(GT)*) : =>multisets(GT)Note that multiset(...) is not a constructor operation. The order of
argument values is ignored, but duplicates are significant, e.g.,
multiset(1, 2, 2) is equivalent to multiset(2, 1, 2), but not to
multiset(1, 2) or multiset(2, 1).
Built-in Funcon
multiset-elements(_:multisets(GT)) : =>(GT)*For each multiset MS, the sequence of values V* returned by
multiset-elements(MS) contains each element of MS the same number of times
as MS does.
The order of the values in V* is unspecified, and may vary between multisets.
Assert
multiset(multiset-elements(S)) == SBuilt-in Funcon
multiset-occurrences(_:GT, _:multisets(GT)) : =>natural-numbersmultiset-occurrences(GV, MS) returns the number of occurrences of GV
in MS.
Built-in Funcon
multiset-insert(_:GT, _:natural-numbers, _:multisets(GT)) : =>multisets(GT)multiset-insert(GV, N, MS) returns the multiset that differs from MS
by containing N more copies of GV.
Built-in Funcon
multiset-delete(_:multisets(GT), _:GT, _:natural-numbers) : =>multisets(GT)multiset-delete(MS, GV, N) removes N copies of V from the multiset MS,
or all copies of GV if there are fewer than N in MS.
is-submultiset(MS1, MS2) tests whether every element of MS1 has equal or
fewer occurrences in MS1 than in MS2.