Dear Nicolas and Jason, I am happy to be the reviewer. Is there any documentation written about how all of this is about to work? I have looked a little for it without success. My impression is that the general structure is very well thought out but without having Nicolas or Florent sitting next to you it is hard to learn what the intended design is!
Andrew On Sep 1, 2:53 am, "Nicolas M. Thiery" <[email protected]> wrote: > Hi Jason! > > For once, I am trying hard to procrastinate on the Sage-Combinat > e-mails in order to focus on finishing our paper with Florent and > Anne, instead of the converse; hence my slow answer. > > Thanks for your long post! It sounds all fine to me. I'll just insert > a couple micro comments below. I hope someone goes on and implements > this! It would be great if you could do with Andrew as reviewer (or > the converse, or with whatever pair programming scheme fits you). > > On Thu, Aug 19, 2010 at 12:11:47PM -0400, Jason Bandlow wrote: > > The 'metaclass' trick is so that both of these will work, and the > > parents will be set appropriately. Anyway, here is what I roughly think > > the element classes should look. > > And I should mention that the "metaclass trick" is nothing but a > syntactic sugar so that one can use the same name Tableau for both: > > - the function used to create a tableau > - the base class for all tableaux. > > Currently in Sage, those two gadgets are usually distinct (think > Partition/Partition_class which makes it inconvenient for the user to > access Partition_class, say for an isinstance test. > > > class Tableaux(UniqueRepresentation, Parent): > > ... > > class SemistandardTableaux(UR, Parent, Tableaux): # similar > > class StandardTableaux(UR, Parent, SemistandardTableaux): # similar > > No need to specify again UR and Parent; those are inherited through > Tableaux. > > > Finally we have the specific parent classes. I think they should look > > roughly as follows. > > > **** The parent classes **** > > > class Tableaux_all(Tableaux): > > def __init__(self): > > super(Tableaux_all, self).__init__() > > # I don't know a good category, since general tableaux (which > > # allow, for example, real-number entries) are not enumerable. > > I guess Sets() is the best we can do. > > > class SemistandardTableaux_all(DisjointUnionEnumeratedSets, > > SemistandardTableaux): > > > def __init__(self): > > DisjointUnionEnumeratedSets.__init__( > > self, Family(NonNegativeIntegers(), > > SemistandardTableaux_size), > > facade=True, keepkey = False) > > # Note that I'm not clear on what facade and keepkey do. > > # They may not be necessary or advisable. > > * With keekkey = True, the elements of the disjoint union would be of > the form (5, Partition([3,2])). That's only useful when one wants > to construct the disjoint union of a collection of sets which are > not originally disjoint (e.g. building n copies of a given set). > > * facade = True/False controls whether, for x in > SemiStandardTableaux(), x.parent() is SemiStandardTableaux() or > SemiStandardTableaux(shape=...) > > > class SemistandardTableaux_size(SemistandardTableaux): > > > def __init__(self, size): > > super(SemistandardTableaux_size, self).__init__( > > category = InfiniteFiniteEnumeratedSets()) > > Interesting category :-) But yes, the category should be set to one or > the other depending on what makes sense. > > Nicolas > -- > Nicolas M. Thi ry "Isil" <[email protected]>http://Nicolas.Thiery.name/ -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
