I have worked a little on mspecies.as.nw. Multiset and MultiSubset now behave well. Find an example below.
I mainly use the idea to represent a multisorted species as a List Wrapped SomeSpecies where Wrapped(S: SPECIES) is roughly Record(L: LabelType, l: S L). This works quite well. Ralf, is it ok for you if I check this in? Martin Example: import from List Z, SetSpecies Z, Wrapped SetSpecies, List Wrapped SetSpecies; s1: SetSpecies Z := set [1,2,3]; r1: Wrapped SetSpecies := object(Z, s1); import from String, List String, SetSpecies String; s2: SetSpecies String := set ["a", "b"]; r2: Wrapped SetSpecies := object(String, s2); m : List Wrapped SetSpecies := [r1, r2]; L == MultiLabel(Integer, String); import from Multiset(L); k := multiset(m)$Multiset(L); k2 := structures(k)$MultiSubset(L); import from List MultiSubset L; [k2] yields [String: Subset([], [a,b])AldorInteger: Subset([], [1,2,3]), String: Subset([], [a,b])AldorInteger: Subset([1], [2,3]), String: Subset([], [a,b])AldorInteger: Subset([2], [1,3]), String: Subset([], [a,b])AldorInteger: Subset([1,2], [3]), String: Subset([], [a,b])AldorInteger: Subset([3], [1,2]), String: Subset([], [a,b])AldorInteger: Subset([1,3], [2]), String: Subset([], [a,b])AldorInteger: Subset([2,3], [1]), String: Subset([], [a,b])AldorInteger: Subset([1,2,3], []), String: Subset([a], [b])AldorInteger: Subset([], [1,2,3]), String: Subset([a], [b])AldorInteger: Subset([1], [2,3]), String: Subset([a], [b])AldorInteger: Subset([2], [1,3]), String: Subset([a], [b])AldorInteger: Subset([1,2], [3]), String: Subset([a], [b])AldorInteger: Subset([3], [1,2]), String: Subset([a], [b])AldorInteger: Subset([1,3], [2]), String: Subset([a], [b])AldorInteger: Subset([2,3], [1]), String: Subset([a], [b])AldorInteger: Subset([1,2,3], []), String: Subset([b], [a])AldorInteger: Subset([], [1,2,3]), String: Subset([b], [a])AldorInteger:Subset([1], [2,3]), String: Subset([b], [a])AldorInteger: Subset([2],[1,3]), String: Subset([b], [a])AldorInteger: Subset([1,2], [3]), String:Subset([b], [a])AldorInteger: Subset([3], [1,2]), String: Subset([b],[a])AldorInteger: Subset([1,3], [2]), String: Subset([b], [a])AldorInteger:Subset([2,3], [1]), String: Subset([b], [a])AldorInteger: Subset([1,2,3],[]), String: Subset([a,b], [])AldorInteger: Subset([], [1,2,3]), String:Subset([a,b], [])AldorInteger: Subset([1], [2,3]), String: Subset([a,b],[])AldorInteger: Subset([2], [1,3]), String: Subset([a,b], [])AldorInteger:Subset([1,2], [3]), String: Subset([a,b], [])AldorInteger: Subset([3],[1,2]), String: Subset([a,b], [])AldorInteger: Subset([1,3], [2]), String:Subset([a,b], [])AldorInteger: Subset([2,3], [1]), String: Subset([a,b],[])AldorInteger: Subset([1,2,3], [])] @ List(MultiSubset(L)) Hm, I just realised that it should be first the Integers, then the Strings... ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ Aldor-combinat-devel mailing list Aldor-combinat-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/aldor-combinat-devel