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

Reply via email to