[sage-combinat-devel] Re: ABC

2018-06-13 Thread Andrew
Hi Bruce,

I think that what you  have is fine. Compare with:

{{{
sage: mu=Partition([3,2])
sage: type(mu)

}}}

If you try adding a method to `PathTableau`, such as with
{{{
 class PathTableau(ClonableList):

@abstract_method(optional=False)
def check(self):
pass

def test(self):
print('a test')
}}}
then you will see that it is inherited:
{{{sage: c=CatalanTableau([0,1,2])
sage: c
[0, 1, 2]
sage: c.test()
}}}


On Wednesday, 13 June 2018 14:08:55 UTC+2, Bruce wrote:
>
> I am trying to implement an Abstract Base Class, but have hit something I 
> don't understand.
>
> I have attached a file with a minimal example of what I am trying to do.
> There is an Element ABC PathTableau and a Parent ABC PathTableaux.
> I then inherit from these with Element CatalanTableau and Parent 
> CatalanTableaux.
>
> PathTableau inherits from CloneableList so I want to do some preprocessing 
> on the
> argument before creating the object. For this minimal example I have 
> removed the
> methods in PathTableau.
>
> My problem is that when I run this I get:
>
> sage: c = CatalanTableau([0,1,0])
> sage: type(c)
> 
>
> This is not what I want. I want c to be an instance of CatalanTableau
> and therefore to inherit the (missing) methods from PathTableau.
>
> I suspect it will only take a minor adjustment to get what I want but I 
> don't
> know what that would be.
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: Constructing elements in disjoint enumerated sets that are Cartesian products

2017-02-17 Thread Andrew


On Friday, 17 February 2017 17:18:20 UTC+11, Travis Scrimshaw wrote:
>
> Hey Andrew,
>>
>>  
>>
>> Yea, it comes from the fact that it is only a simple wrapped element and 
> doesn't do anything beyond forwarding the repr/latex/ascii-art outputs. I 
> go back and forth on whether or not to pass along some (all?) extra 
> methods. Probably the easiest thing to work with is the facade with the 
> ticket (at least if you don't care if the element belongs to this specific 
> parent).
>


There's certainly an argument for passing  magic methods along but then the 
question is where to you stop. One possibility would be to do something 
like:

def __getattr__(self,attr):
"""
Any unrecognised method calls/attributes get passed on to the wrapped
element
"""
try:
return getattr(self,attr)
except AttributeError:
pass

try:
return getattr(self.value,attr)
except AttributeError:
raise AttributeError, '%s has no attribute %s\n'%(self,attr)





Not sure what untended consequences something like this would have.

Anyway, your ticket solves my problem so thanks for that! (and my wrapped 
elements know their parents so a facade is fine)

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: Constructing elements in disjoint enumerated sets that are Cartesian products

2017-02-15 Thread Andrew

On Thursday, 16 February 2017 15:41:37 UTC+11, Andrew wrote:
>
> Thanks Travis! Obviously I didn't read the documentation well enough as I 
> thought `Facade` was `False` by default -- so I'd tried setting 
> `Facade=True` with no joy.
>
> Cheers,
> Andrew
>
>  
Unfortunately, now it seems that I can't access the elements of the tuple 
directly:

sage: tabs = DisjointUnionEnumeratedSets(Family(Partitions(3), lambda mu: 
cartesian_product([mu.standard_tableaux(),mu.standard_tableaux()])), facade=
False)
sage: s=StandardTableau([[1,2],[3]])
sage: ss=tabs( (s,s) )
sage: ss[0]
---
TypeError Traceback (most recent call last)
 in ()
> 1 ss[Integer(0)]

TypeError: 'sage.structure.element_wrapper.ElementWrapper' object has no 
attribute '__getitem__'
> (1)()
> 1 ss[Integer(0)]

On the other hand, the following works:


sage: ss.value[0], ss.value[1]
([[1, 2], [3]], [[1, 2], [3]])

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: Constructing elements in disjoint enumerated sets that are Cartesian products

2017-02-15 Thread Andrew
Thanks Travis! Obviously I didn't read the documentation well enough as I 
thought `Facade` was `False` by default -- so I'd tried setting 
`Facade=True` with no joy.

Cheers,
Andrew

pd. I will have a look at your ticket.

On Thursday, 16 February 2017 13:52:22 UTC+11, Travis Scrimshaw wrote:
>
> Hey Andrew,
>Well, I've recently been looking at DisjointUnionEnumeratedSets (see 
> https://trac.sagemath.org/ticket/22382) and came across this problem. The 
> first issue is that DisjointUnionEnumeratedSets does not behave like an 
> actual facade parent like it claims to be (at least with default values). 
> The second is that __call__ calls a morphism, which in turn calls 
> _element_constructor_ and expects a subclass of element to be returned. 
> Thus for facade parents that want to return a tuple, this causes a problem 
> (see the ticket).
>
>Actually, looking at what you want more closely now, you want this to 
> be a proper parent, so just pass the facade=False. This works with the 
> current Sage:
>
> sage: tabs = DisjointUnionEnumeratedSets(Family(Partitions(3), lambda mu: 
> cartesian_product([mu.standard_tableaux(),mu.standard_tableaux()])), 
> facade=False)
> sage: s = StandardTableau([[1,2],[3]])
> sage: (s,s) in tabs
> True
> sage: tabs((s,s))
> ([[1, 2], [3]], [[1, 2], [3]])
>
> Best,
> Travis
>
> On Wednesday, February 15, 2017 at 6:01:17 PM UTC-6, Andrew wrote:
>>
>> I am working with disjoint enumerated sets like the following
>>
>> sage: tabs = DisjointUnionEnumeratedSets(Family(Partitions(3), lambda mu: 
>> cartesian_product([mu.standard_tableaux(),mu.standard_tableaux()])))
>> sage: tabs[:]
>> [([[1, 2, 3]], [[1, 2, 3]]),
>>  ([[1, 3], [2]], [[1, 3], [2]]),
>>  ([[1, 3], [2]], [[1, 2], [3]]),
>>  ([[1, 2], [3]], [[1, 3], [2]]),
>>  ([[1, 2], [3]], [[1, 2], [3]]),
>>  ([[1], [2], [3]], [[1], [2], [3]])]
>>
>> I need to be able to construct elements of this set from a tuple of 
>> elements in the underlying sets but I can't work out a nice way to do this. 
>> I thought that the following would work but it doesn't:
>>
>> sage: s = StandardTableau([[1,2],[3]])
>> sage: (s, s) in tabs
>> True
>> sage: tabs( (s,s) )
>>
>> ---
>> NotImplementedError   Traceback (most recent call 
>> last)
>>  in ()
>> > 1 tabs( (s,s) )
>>
>> /usr/local/src/sage/src/sage/structure/parent.pyx in sage.structure.
>> parent.Parent.__call__ (build/cythonized/sage/structure/parent.c:9584)()
>> 934 self._element_init_pass_parent = 
>> guess_pass_parent(self, self._element_constructor)
>> 935 except (AttributeError, AssertionError):
>> --> 936 raise NotImplementedError
>> 937 cdef Py_ssize_t i
>> 938 cdef R = parent_c(x)
>>
>> NotImplementedError:
>>
>> One way around this is the following, but I would guess that this is far 
>> too inefficient to use inside an element_constructor method:
>>
>> sage: ss = tabs.unrank( tabs.rank( (s,s) ) )
>> sage: type(ss)
>> > 'sage.sets.cartesian_product.CartesianProduct_with_category.element_class'
>> >
>>
>> Is there a better way to do his?
>>
>> Andrew
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Constructing elements in disjoint enumerated sets that are Cartesian products

2017-02-15 Thread Andrew
I am working with disjoint enumerated sets like the following

sage: tabs = DisjointUnionEnumeratedSets(Family(Partitions(3), lambda mu: 
cartesian_product([mu.standard_tableaux(),mu.standard_tableaux()])))
sage: tabs[:]
[([[1, 2, 3]], [[1, 2, 3]]),
 ([[1, 3], [2]], [[1, 3], [2]]),
 ([[1, 3], [2]], [[1, 2], [3]]),
 ([[1, 2], [3]], [[1, 3], [2]]),
 ([[1, 2], [3]], [[1, 2], [3]]),
 ([[1], [2], [3]], [[1], [2], [3]])]

I need to be able to construct elements of this set from a tuple of 
elements in the underlying sets but I can't work out a nice way to do this. 
I thought that the following would work but it doesn't:

sage: s = StandardTableau([[1,2],[3]])
sage: (s, s) in tabs
True
sage: tabs( (s,s) )
---
NotImplementedError   Traceback (most recent call last)
 in ()
> 1 tabs( (s,s) )

/usr/local/src/sage/src/sage/structure/parent.pyx in sage.structure.parent.
Parent.__call__ (build/cythonized/sage/structure/parent.c:9584)()
934 self._element_init_pass_parent = guess_pass_parent(
self, self._element_constructor)
935 except (AttributeError, AssertionError):
--> 936 raise NotImplementedError
937 cdef Py_ssize_t i
938 cdef R = parent_c(x)

NotImplementedError:

One way around this is the following, but I would guess that this is far 
too inefficient to use inside an element_constructor method:

sage: ss = tabs.unrank( tabs.rank( (s,s) ) )
sage: type(ss)


Is there a better way to do his?

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: strange convention for column words of (skew) tableaux

2016-11-28 Thread Andrew
Hi Anne,

One of the problems with tableaux is that almost every possible variation 
of any definition is used by some one. With this in mind we probably should 
implement variations whenever possible. I don't know anything about the 
history of this particular method (git blame might help), but I suspect 
that some one just copied the code from tableaux to skew tableaux. I 
certainly have no objection either way as I don't use this method.

Andrew

On Tuesday, 29 November 2016 05:41:52 UTC+11, Anne Schilling wrote:
>
> Hi Combinat developers, 
>
> Who came up with these conventions: 
>
> sage: s=Tableau([[4,5],[6,7],[7],[8]]) 
> sage: s.to_word_by_column() 
> word: 876475 
> sage: s=SkewTableau([[4,5],[6,7],[7],[8]]) 
> sage: s.to_word_by_column() 
> word: 574678 
>
> The column word of a skew tableau is the reverse of that 
> of a regular tableau. I think we should make the convention 
> the same (using the tableau convention!!!). 
>
> What do you think? 
>
> Anne 
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: CartanTypes

2016-07-07 Thread Andrew
This is now https://trac.sagemath.org/ticket/20973.

Andrew

On Wednesday, 6 July 2016 22:34:00 UTC+1, Travis Scrimshaw wrote:
>
> We also should determine how we want to distinguish between (and input) 
> A_{+oo} and A_{oo}, i.e., index sets of NN and ZZ. In fact, the only 
> place where I really see this fundamentally breaking is the CartanMatrix 
> and DynkinDiagram. All of the root/weight lattice stuff should work since 
> those are based around Family and CombinatorialFreeModule (although 
> roots() and friends probably won't work so well).
>
> I don't really see a problem with just implementing a subclass of 
> CartanType_abstract for A_{+oo}/A_{oo} and allowing the methods to just 
> raise NotImplementedError's.
>
> Best,
> Travis
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] CartanTypes

2016-07-06 Thread Andrew
On Wednesday, 6 July 2016 16:20:12 UTC+1, Nicolas M. Thiery wrote:
>
> Dear Andrew, 
>
> Currently, there is no support for `A_\infty`. This is mostly because 
> most of the interesting stuff that a cartan type provides in Sage 
> (e.g. the Cartan matrix, ...) is returned as a non lazy object. 
>
> Could you provide a couple examples of use that you have in mind? 
>

Thanks Nicolas!

At this point I only need the rank and to be able differentiate A_oo from 
other types. Down the track it might be useful to have the weight and root 
lattices but again I don't really need them. Mostly I'd like CartanType() 
to support A_oo for compatibility with the other types that I am playing it.

>
> In the simplest form, returning a formal object with very few methods 
> implemented (maybe just `is_crystalographic` and friends) would be 
> straightforward: add a file type_A_infinity.py with a CartanType class 
> and whatever you want inside it, and update CartanType.__call__ to use 
> it as appropriate. 
>

Thanks for the description of what needs to be done. I'll throw something 
together and sort out the bug below.

Andrew
 

> >Whilst looking for this I came across the following, which I guess 
> are 
> >syntax errors on my part rather than bugs: 
> >sage: CartanType(['A',4,1])  # works 
> >['A', 4, 1] 
> >sage: CartanType(['A',infinity]) 
> >  File "", line unknown 
> >^ 
> >SyntaxError: unexpected EOF while parsing 
> >sage: CartanType(['A',-1]) 
> >  File "", line unknown 
> >^ 
> >SyntaxError: unexpected EOF while parsing 
> >sage: CartanType(['A',0]) 
> >['A', 0] 
>
> What's happening here is that the above does not fit within the 
> standard input formats that Cartan type accepts; and then it gets 
> confused and tries to parse the string in search of one of our 
> shortcuts like CartanType("A3*xA2~"). Yeah, this is a bug: it should 
> instead return a proper not implemented error. 
>
> Cheers, 
> Nicolas 
>  
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] CartanTypes

2016-07-05 Thread Andrew
Sorry if I should post this to sage-support ...

Does CartanType currently support A_\infty? I checked the docs and it seems 
not but I wanted to check because I need this. Well, actually, I only need 
some very rudimentary combinatorial data from the Cartan type, that I can 
easily manufacture myself, but thematically I really should index the 
objects that I am playing with by the appropriate Cartan types as I am 
hoping that what I am doing will work in types A^{(1)}_l, A^{(2)}_{2l}, 
C^{(1)}_l, D^{(2)}_l and A_\infty.

Whilst looking for this I came across the following, which I guess are 
syntax errors on my part rather than bugs:

sage: CartanType(['A',4,1])  # works
['A', 4, 1]
sage: CartanType(['A',infinity])
  File "", line unknown

^
SyntaxError: unexpected EOF while parsing

sage: CartanType(['A',-1])
  File "", line unknown

^
SyntaxError: unexpected EOF while parsing

sage: CartanType(['A',0])
['A', 0]



Andrew

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] ClonableIntArray

2016-03-19 Thread Andrew
Hi Travis,

I want this functionality too. I tried adding:

__metaclass__ = ClasscallMetaclass

but this produces the error:

TypeError: Error when calling the metaclass bases
metaclass conflict: the metaclass of a derived class must be a (non-
strict) subclass of the metaclasses of all its bases

I found that using
__metaclass__ = InheritComparisonClasscallMetaclass

works, although I am not yet sure if I need rich comparison.

Anyway, apart from this minor quibble about meta classes it seems to be 
working for now.

Cheers,

Andrew

On Wednesday, 16 March 2016 02:36:31 UTC+11, Travis Scrimshaw wrote:
>
> Hey Andrew,
> Just for reference, you do not need these lines as they are in the 
> Tableau code so you can call Tableau(...) directly without having to 
> explicitly create the parent object.
>
> @staticmethod
> def __classcall_private__(cls, elt):
> return MyParent().element_class(MyParent(), elt)
>
> Although considering that the metaclass has not been set to the classcall 
> metaclass, it should not be called.
>
> Best,
> Travis
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: ClonableIntArray

2016-03-19 Thread Andrew
Hi Simon and Travis,

Thanks for the explanations. I am not sure if there are that many 
additional use cases, but a meta meta class sounds reasonable to me:) As 
always the main problem is finding the right place to look in the 
documentation - or the right person to explain it to you.

Thanks again,
Andrew

On Thursday, 17 March 2016 01:10:44 UTC+11, Simon King wrote:
>
> Hi Andrew, 
>
> On 2016-03-16, Andrew wrote: 
> > I want this functionality too. I tried adding: 
> > 
> > __metaclass__ = ClasscallMetaclass 
> > 
> > but this produces the error: 
> > 
> > TypeError: Error when calling the metaclass bases 
> > metaclass conflict: the metaclass of a derived class must be a (non- 
> > strict) subclass of the metaclasses of all its bases 
>
> That's a general problem. The point is: If a class C with a meta-class M 
> has several base classes B1,...,Bn with meta-classes M1,...,Mn, then 
> Python will give you that error unless one of the meta-classes is 
> a sub-class of all other meta-classes. 
>
> By consequence, if we want to combine the features provided by the 
> meta-classes M, M1, M2,... then we need to explicitly create another 
> meta-class Mx that combines the features from the other meta-classes. 
> And then you have to explicitly invoke Mx for C, rather than just inherit 
> it from M and the meta-classes of C's base classes. 
>
> I once tried to solve that problem, by introducing a meta-meta-class MM. 
> I.e., each meta-class M, M1, M2,... in Sage would be instance of MM, and 
> when you try to combine their features, then MM would create a common 
> sub-meta-class Mx of M, M1, M2, ... on the fly (i.e., what we now have 
> to do manually would become automatic). 
>
> It did work. But I guess that idea is just too confusing and the use 
> cases (at that time) have been too few. Perhaps there are more use cases 
> now? 
>
> Best regards, 
> Simon 
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] ClonableIntArray

2016-03-14 Thread Andrew
Could some one please tell me ho to use ClonableIntArray? I am trying to 
write a new family of classes that wrap what is essentially an integer list 
(actually, possibly I should use an integer array but I would be happy with 
a list for now). As CombinatorialElement is slated for depreciation I 
thought that I should be a good citizen and use one of ClonableList, 
ClonableIntArray or ClonableArray but I can't get them to work, and the 
documentation doesn't provide any solace as I have not been able to find 
anywhere what is required (this is not to say that it isn't there, only 
that I haven't found it).

The general framework that I want is a factory class,

class MyElement(ClonableIntArray)
 
that has a generic parent

class MyParent(UniqueRepresentation,Parent):

This parent will then assign the elements to various derived classes 
depending on the input:

class MyParent_A(MyParent):
pass

class MyParent_B(MyParent):
pass

Looking at the code in tableau.py I thought that the following should get 
me started:

from sage.structure.list_clone import ClonableIntArray
from sage.structure.unique_representation import UniqueRepresentation
from sage.structure.parent import Parent

class MyElements(ClonableIntArray):
@staticmethod
def __classcall_private__(cls, elt):
return MyParent().element_class(MyParent(), elt)

class MyParent(UniqueRepresentation,Parent):
Element=MyElements

@staticmethod
def __classcall_private__(cls, *args):
return MyParent_A()


class MyParent_A(MyParent):
def __init__(self):
super(MyParent_A, self).__init__(category=Sets())

but this returns the following type error:

TypeError: __init__() takes at least 2 positional arguments (1 given)

Probably I also want to have class MyElements_A, MyElements_B, ... that the 
elements are automatically assigned to, but first I need to get the basic 
structure working. It's a bit frustrating that I can't even get the bare 
classes working...

Is any one able to point me in the right direction?

Andrew





-- 
You received this message because you are subscribed to the Google Groups 
"sage-combinat-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: combinat.math.washington.edu

2015-01-04 Thread Andrew
Hi William,

Is it possible to access beta code and git branches from SMC?

Last Year I was running calculations on the combinat server using some 
private git branches. Once I have brushed up the code a little I'd like to 
start these again. I can certainly push this code to trac but it will be a 
while before it is ready for review as I'll have a busy year. 

Andrew

On Sunday, 4 January 2015 15:23:56 UTC+11, William Stein wrote:

 Hi, 

 The computer combinat.math.washington.edu is down... again.  Sort of. 
 It responds to ping requests, but I can't ssh in. 

 I suspect that not a lot of people are actively using it lately, since 
 this is the second time it has gone down for over a week in the last 3 
 months, and nobody (except my student Hao Chen), seems to have 
 noticed. 

 I'm considering doing the following.  I'll shutdown combinat 
 completely, reformat the disk, and set it up as a node of the 
 cloud.sagemath.com (SMC).   It'll still have the amazing 64 cores and 
 huge (192GB) RAM.  However, instead of login in directly to it, people 
 can email me to request that I move a particular SMC project to 
 combinat.  It will then have access to expanded compute resources. 
 The advantage of this, is that it is much easier for me to maintain. 
 In particular, SMC has automated scripts to take care of using cgroups 
 to explicitly limit usage of compute resources by a given project, I 
 have extensive monitoring code in place so I know when things go down, 
 and I everything runs in virtual machines, so when there are problems 
 I can easily fix them in a few minutes remotely.  Also, it's much 
 easier to grant fair usage to projects.As it is now with default 
 linux on combinat, basically any user can just bring down the computer 
 by using too much memory/disk/whatever, which is probably what 
 happened in this case (I don't know). 

 Thoughts? 

 Obviously, this may be a bit slower and the max memory will be less 
 (as things are in a VM) for specific research-level computations. 
 However, a working computer is way better than a regularly-crashing 
 computer, in my opinion.Also, given the weeks of downtime that 
 nobody (except Hao) notices, maybe people aren't using combinat at all 
 anyways, due to it being only a remote linux box.   Personally, I 
 think SMC makes using remote Linux boxes much easier. 

 -- William 

 -- 
 William Stein 
 Professor of Mathematics 
 University of Washington 
 http://wstein.org 


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-23 Thread Andrew


On Saturday, 22 November 2014 12:23:31 UTC+11, Travis Scrimshaw wrote:

  Something which would be benefit from having a category for Hecke algebra 
 representations would be methods for constructing the Grothendieck group, a 
 list of simples (up to isomorphism), and a canonical place to look for 
 constructing examples (via ``an_element()``).


Yes, this would be a nice feature.
 

 For general representation categories, we'd have an abstract method 
 ``representation_action()``


Currently, I have this built into the class 
IwahoriHeckeAlgebraRepresentation.
 
This week will be a nightmare for me, so I'll try and finalise this patch 
next week. I now have the general framework in place and it remains to 
document and doc-test the code (always fun), to add the explicit formulas 
for the different actions (corresponding to the different bases). All of 
this is straightforward but will of course take longer than I expect:)

I have realised that I do have one issue that I am unsure what to do with: 
I am implementing seminormal representations for the the algebras of type 
G(r,1,n). As special cases these include the Iwahori-Hecke algebras 
algebras, with equal parameters, of types A and B. The action of the Hecke 
algebras of type A on my modules will be easy because the Hecke algebra 
generator T(r) corresponds to the simple reflection (r,r+1). 

Unfortunately, the action of the Hecke algebras of type B is going to be 
painful because the the subalgebra T(1),...,T(n-1) is isomorphic to a 
Hecke algebra of type A with the additional generator T(n) satisfying the 
relation T_{n-1}T_nT_{n-1}T_n=T_nT_{n-1}T_nT_{m-1}. The generator T(n) is 
conjugate to the generator that I would like to use: I would prefer the 
algebra to be generated by T_0, T_1,...,T_{n-1} where
T_0T_1T_0T_1=T_1T_0T_1T_1 etc., These two presentations differ by a diagram 
automorphism, but it is not entirely clear to me how T(n) acts on my 
representations...perhaps this is easy, but I need to think about this.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-21 Thread Andrew
I'm currently going around in circles with some CombinatorialFreeModule 
woes. The previous code for these alternating seminormal forms works, but 
in order to cope with the many variations of seminormal representations 
that I decided to implement working I've have had to jazz things up quite a 
lot. Now my basic class structure looks something like this:

from sage.combinat.free_module import CombinatorialFreeModule
from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing

class A(CombinatorialFreeModule):
def __init__(self, base_ring, basis_keys, prefix='a', **kwargs):
super(A,self).__init__(base_ring, basis_keys, prefix=prefix, **
kwargs)

class Element(CombinatorialFreeModule.Element):
pass

class B(A):
def __init__(self, base_ring, basis_keys, prefix='b', **kwargs):
super(B,self).__init__(base_ring, basis_keys, prefix=prefix, **
kwargs)

class C(B):
def __init__(self, shape, prefix='c', **kwargs):
base_ring=PolynomialRing(Integers(), 'q')
super(B,self).__init__(base_ring, shape.standard_tableaux(), prefix=
prefix, **kwargs)

This simplified code works fine. For example,

sage: C(Partition([3,2])).an_element()
2*c[[[1, 2, 5], [3, 4]]] + 3*c[[[1, 3, 4], [2, 5]]] + 2*c[[[1, 3, 5], [2, 4
]]]

Unfortunately my real code does not work, having issues like:

sage: rep=SeminormalRepresentation([2,1]); rep
SeminormalRepresentation([2,1])# seems to work OK
sage: rep.an_element() # try to construct an element
repr(sage.algebras.iwahori_hecke_algebras.
iwahori_hecke_algebra_representations.SeminormalRepresentation_with_category
.element_class at 0x119a88c80) failed: AttributeError: 
'SeminormalRepresentation_with_category' object has no attribute '_prefix'
sage: rep(StandardTableau([[1,2],[3]]))
AttributeErrorTraceback (most recent call last)
...
AttributeError: 'SeminormalRepresentation_with_category' object has no 
attribute '_basis_keys'

Does anyone have an idea of what is going wrong. Part of the issue might be 
all of the super calls, but I tried taking though ut and explcitly calling 
the previous class (they are linearly ordered), but this doesn't help.

For anyone feeling masochistic, the full code is at trac:17303 
http://trac.sagemath.org/ticket/17303 (it uses 6.5beta0)

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-21 Thread Andrew


On Saturday, 22 November 2014 10:24:43 UTC+11, Nicolas M. Thiery wrote:

 Hi Andrew, 
 Hmm, I haven't taken the time to think with a pen and paper, but I 
 don't guarantee that the what the super call do is as straightforward 
 as it ought to, given that the instance of A being initialized will 
 end up being in a subclass A_with_category, and similarly for the 
 others.  Does it work if instead you call explicitly A.__init__ in 
 B.__init__, and so on? 


Hi Nicolas,

I fixed my problem so the code is working now. It is possible that there 
are some issues with the super calls but as far as I can tell it is working 
as I expect.

One question that I should ask you, however, is the following. I have a 
suspicion that I should define a category for the Hecke algebra 
representations, however, I don't know what the benefits are of doing this 
or how to do it. Certainly the code seems to work without this (not that I 
have added extensive tests yet or properly implemented the mathematics), 
but if this is necessary, or desirable, I would like to understand what 
this gives me over and above having a dedicated class for Hecke algebra 
representations.

Andrew

 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-15 Thread Andrew


 I mean: without knowing something about the semantic of those methods, 
 how do we know that: 

 sage: x.antipode() 

 will return an element of the algebra, and therefore the result shall 
 be retracted back, whereas: 

 sage: x.counit() 

 will return an element of the ground field which needs no transformation? 


Ah, right, I agree (he says with a sheepish grin).
Andrew
 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-14 Thread Andrew


 Another disadvantage is that, given that methods in Python are not 
 typed, it's impossible to make a difference between methods that 
 return an element of G or of elsewhere, and add coercions as 
 appropriate.  Hence a brute-force approach as above is likely to give 
 out wrong results. I believe we really need to write the wrapper 
 methods by hand. 


I don't believe this: gap3 is less strongly typed than python and it is 
possible to do this there! :) The natural way to distinguish between 
different bases is using their prefix -- indeed this is effectively what 
chevie does and Eric's manifold's code does.


 The good news is that there already is infrastructure for this :-) 


Thanks. Will try to understand:)

Andrew 
 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-11 Thread Andrew


On Tuesday, 11 November 2014 17:20:32 UTC+11, Travis Scrimshaw wrote:

 Hey Andrew,

 One of the things that I don't like about (my understanding of) the 
 CombinatorialFreeModule approach to modules is that it is very hard for the 
 (uneducated/unenlightened/unwashed) user to construct their own bases for 
 modules: To construct a new basis you have to explicitly define it using 
 realisations hidden deep inside the code, together with the appropriate 
 coercion maps and I think that the average user won't be able to do this. 
 It would be nice if this provided a mechanism for doing this.

I feel that's somewhat unfair as construct *a* basis is easy, you just 
 need to pass an indexing set. However you want to construct multiple basis, 
 so multiple parents/classes, *and* change of basis coercions between them, 
 the latter part is what takes the work that Sage has default mechanisms for 
 doing so (Parent._coerce_map_from_ or Morphism.register_as_coercion).

That being said, the WithRealizations framework is a way to deal with 
 multiple but not necessarily a best basis that can be easily extended. 
 Yet IMO it feels slightly heavy-handed because of the categories involved 
 instead of just using ABC's (there could a reason for this that I'm not 
 seeing). For things with a best basis, I decided to just use the main 
 object as the global entry point with the other basis as methods, see the 
 free algebra and it's PBW basis. This is documented in 
 categories/with_realizations.py, but perhaps a modification/expansion as a 
 thematic tutorial would be beneficial. In either case, the hard work still 
 lies in the defining the COB coercions.


Hi Travis,

My comment wasn't intended as a criticism of the code or of anyone:  it is 
great that Mike, Nicolas, Christian and others developed this. Nor was it 
meat as a complaint as I think that our general philosophy is that if you 
don't like something then discuss and put a patch on trac.

Your second paragraph is really the point that I was making: given an 
existing CombinatorialFreeModule, which by definition already has at least 
one basis, it is hard for non-developers to define a new basis that plays 
well with the existing ones. For me the coercions aren't really the issue, 
it shouldn't be hard to streamline this and, in any case, to define a new 
basis for a given module you have to say how it relates to an existing 
basis. 

I have used the With Realizations framework quite a bit in my own code and, 
of course, in the KL-basis machinery. For people developing code  I think 
this is very workable, but I doubt that a non-developer would get very far 
with it.

Down the track, what I would like to see is a way of *dynamically* adding 
bases to a CombinatorialFreeModule without these new bases having to be 
part of the sage source code. For example, it is possible to do this in 
chevie. From my quick look at the manifold code, it seems that it allows 
something in this direction. When I have time I'll see if I can find a way 
of doing this...

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-11 Thread Andrew
On 12/11/2014 4:26 am, Nicolas M. Thiery wrote:
 
Is this close enough from what you would want?

sage: F = CombinatorialFreeModule(QQ, [1,2,3])
sage: G = CombinatorialFreeModule(QQ, [4,5,6])
sage: phi = F.module_morphism(lambda i: G.monomial(i+3), codomain=G)
sage: psi = G.module_morphism(lambda i: F.monomial(i-3), codomain=F)
sage: phi.register_as_coercion()
sage: psi.register_as_coercion()

sage: F(G.an_element())
2*B[1] + 2*B[2] + 3*B[3]
sage: G(F.an_element())
2*B[4] + 2*B[5] + 3*B[6]
sage: F.an_element() + G.an_element()
4*B[1] + 4*B[2] + 6*B[3]

 Hi Nicolas,

This is a good start but it is not enough: essentially the difference 
between what I want and what this does is the same as the difference 
between a vector space isomorphism and an A-module isomorphism. As you 
pointed out, there are limitations if these objects are algebras. The same 
limitations apply to modules because any interesting 
CombinatorialFreeModule will come equipped with endomorphisms, actions and 
other methods. I would like a mechanism for automatically transferring 
these methods to the new module by implicitly invoking the coercions above. 
These methods will be both module methods and module element methods and, 
more generally, algebra and algebra element methods.

I don't think this this should be hard to do within the existing framework, 
and the mechanism should be roughly what you have above. After all, this is 
easy enough to do by hand because if F has a nice method then

sage: G(F(G.an_element()).nice_method())

transfers the method to G. The trick is to find an efficient, and seamless, 
way of doing this. If F is the original CombinatorialFreeModule (with 
distinguished basis), then the simplest hack would be to make __getattr__ 
in the class for G call the methods of F whenever they are not defined. So 
something like:

def __getattr__(self, attr):
 try:
 return self(getattr(F(self), atttr))
 except AttributeError:
 pass
 raise AttributeError('{} has no attribute {}\n'.format(self,attr))

The disadvantage of this approach is that it does not respect 
tab-completion and documentation, so it's probably going to be better to 
play some inheritance tricks. 

In terms of interface, I'd like to set up something like this:

sage: G=F.new_basis([4,5,6],basis_to_new_basis=phi, new_basis_to_basis=psi
,...)

This should accept a subset of the CombinatorialFreeModule arguments (for 
example, basis_keys, prefix, ...), as well as coercions to other bases for 
the module. As I said I'll try and think more about this.

This would certainly be useful for me. Let me know if it is unlikely to be 
useful for others.
Andrew




-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: Left and right cells of Coxeter groups

2014-11-10 Thread Andrew
HI Travis,

I found this and I also managed to get a list of cells directly from Chevie 
but I haven't yet worked out how to convert this into something that sage 
recognises. I know that I have done this before, but I've forgotten:) Will 
investigate further.

Andrew

On Monday, 10 November 2014 17:48:56 UTC+11, Travis Scrimshaw wrote:

 Hey Andrew,
It may not be the best name, but if you pass 
 implementation=permutation, then it will go to the chevie implementation. 
 This isn't explicitly mentioned in the doc (and probably should be), but 
 the doctests testing this are marked as optional needing chevie. So I think 
 what you need is already there.

 Best,
 Travis




-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: Left and right cells of Coxeter groups

2014-11-10 Thread Andrew
OK, I have figured out how to make left cells but now the question is where 
to put this?

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Re: Left and right cells of Coxeter groups

2014-11-10 Thread Andrew
Hi Nicolas,

Yes, I agree, using coxeter3 will almost certainly be much more efficient. 
I had a brief look at this and thought it looked two hard since I have only 
a fleeting interest in this:)

In terms of syntax, chevie has a *LeftCells* function that returns all of 
the cells of the Coxeter group, together with the corresponding 
mu-coefficients -- this, I think, is equivalent to the information that 
coxeter3 returns as it sounds like coxeter3 returns the W-graph for the 
cell representation. 

In terms of the suggested syntax, I think that this is partly driven by 
what coxeter3 actually does. I was thinking of something like:

sage: W=CoxeterGroup(A3); w=W.an_element()
sage: W.left_cell( w )  # left cell containing w
sage: W.left_cells()  # all left cells -- as chevie's LeftCells(W) does now


In particular, rather the computing the complete decomposition of the 
Coxeter group into a disjoint union of cells I think that it would be 
useful to be able to compute only the cell containing a particular element. 
With the implementation in chevie this isn't really an option, but it might 
be with coxeter3. The right cells can be obtained from the left cells just 
by taking inverses. It is not clear to me if we need both. 

As coxeter 3 and chevie both seem to return the mu-coefficients as well 
perhaps this information should also be returned -- it seems silly to 
compute it and then discard it. In fact, I was thinking about the KL cells 
only because I thought that I would implement the cell representations of 
the Hecke algebras as anther example of Iwahori-Hecke algebta 
representations. I was planning to do this using the implementation of the 
KL-bases inside sage but if the full W-Graph data was available then this 
would be much more efficient.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-10 Thread Andrew


On Tuesday, 11 November 2014 01:08:08 UTC+11, Nicolas M. Thiery wrote:

 On Thu, Nov 06, 2014 at 04:51:40PM -0800, Anne Schilling wrote: 
  Wouldn't it make most sense to use the quadratic relation 
  
  $(T_r-q)(T_r-v)=0$ 
  
  since the other ones can be obtained by appropriate specialization? 

 I definitely vote for this as well. 


This is probably the most sensible thing to do, and certainly seems to be 
the consensus. Just for fun there are also degenerate and 
non-degenerate forms of these representations. 

I'm slightly bemused, however, because I'm fairly sure that, for the 
quadratic relation (T_r-u)(T_r-v), these representations do not exist in 
the literature.  Consequently, I suspect that this level of generality will 
never be used. There may also be a speed penalty because rational function 
fields in one variable are probably more efficient than function fields in 
two variables (for type B and higher this comment isn't relevant.). On the 
other hand, allowing a general quadratic relation is probably the easiest 
way to support the two most common forms of the quadratic relations: 
(T_r-q)(T_r+1)=0 and (T_r-q)(T_r+q^{-1})=0. (Btw, the same remarks apply to 
the implementation of the KL-bases in sage: what we have is more general 
than you will find in the literature and it automatically works for 
different quadratic relations and for arbitrary coefficient rings provided 
that the KL-bases are well-defined.)

sage/combinat/root_system/hecke_algebra_representation.py 


I didn't know about the HeckeAlgebraRepresentation class that is defined in 
this module. I have defined a class, IwahoriHeckeAlgebraRepresentation, 
that is meant to be a generic class for defining representations of an 
Iwahori-Hecke algebra as CombinatorialFreeModules. The class in root_system 
is mainly for affine Hecke algebras and it is quite different to what I am 
doing, but even so I am slightly uneasy about introducing a new class that 
has a similar name and functionality to an existing class. It seems to me 
that a better name for the root_system class is 
*Affine*HeckeAlgebraRepresentation, 
at least this would help distinguish between the two. Perhaps this code 
would also sit more naturally in the new directory 
sage.algebras.iwahori_hecke_algebras? Is there a better name for my class? 
Does anyone have any thoughts on this? (Particularly Anne and Nicolas as 
this is their code...)

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Re: Left and right cells of Coxeter groups

2014-11-10 Thread Andrew


On Tuesday, 11 November 2014 00:42:58 UTC+11, Jean Michel wrote:

 You should look at the latest version of chevie 

 http://webusers.imj-prg.fr/~jean.michel/gap3/gap3-jm4.tar.gz 

 or 

 http://webusers.imj-prg.fr/~jean.michel/gap3/gap3-jm5.tar.gz 

 where I implemented the latest stuff of Meinolf Geck and Abbie Hall. 
 I can give the elements of the left cell containing a given element of E8 
 in 
 less than 2 minutes. 

 Here is an example in E7: 

 gapW:=CoxeterGroup(E,7);; 
 gap LeftCell(W,Random(W));time; 
 LeftCellE7: duflo=18,21,45,53 character=phi{378,14} 
 40 

 40 milliseconds! 

 Dear Jean,

This sounds really impressive. Perhaps it is enough to use chevie...in 
which case we should update the version of chevie that ships with sage (or 
os gap3 still optional?).

Andrew 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Left and right cells of Coxeter groups

2014-11-09 Thread Andrew
Am I right in thinking that sage does not (yet) know about the left, right 
and two-sided Kazhdan-Lusztig cells of Coxeter groups? As sage can compute 
Kazhdan-Lusztig polynomials I assumed that it knew about cells as well, but 
it doesn't seem to. Please tell me if I am missing something.

Incidentally, I also noticed that we have some identity issues -- that I am 
sure are well known:

sage: WeylGroup(A5)
Weyl Group of type ['A', 5] (as a matrix group acting on the ambient space)
sage: CoxeterGroup(A5)
Coxeter group over Universal Cyclotomic Field with Coxeter matrix:
[1 3 2 2 2]
[3 1 3 2 2]
[2 3 1 3 2]
[2 2 3 1 3]
[2 2 2 3 1]

I am guessing that one of these is just wrapping code from chevie, but I 
haven't checked. Is there any reason not to amalgamate these two classes? 
Currently the CoxeterGroup code seems marginally faster but perhaps the 
WeylGroup classes have more functionality:

sage: WeylGroup(A5).cardinality()
720
sage: CoxeterGroup(A5).cardinality()
---
NotImplementedError   Traceback (most recent call last)
ipython-input-6-42496321af01 in module()
 1 CoxeterGroup(A5).cardinality()

/usr/local/src/sage/local/lib/python2.7/site-packages/sage/categories/
sets_cat.pyc in cardinality(self)
   1370 NotImplementedError: unknown cardinality
   1371 
- 1372 raise NotImplementedError(unknown cardinality)
   1373
   1374 # Functorial constructions

NotImplementedError: unknown cardinality

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: Left and right cells of Coxeter groups

2014-11-09 Thread Andrew
Hi Travis,

Thanks for the ultra quick reply. I'm impressed that so much work being 
done on this as I assumed that it was all in the too hard basket. I'll have 
a  quick look at calls and see how hard it is to wrap something around 
chevie's implementation.

Andrew

On Monday, 10 November 2014 15:43:30 UTC+11, Travis Scrimshaw wrote:

 Hey Andrew,

 Am I right in thinking that sage does not (yet) know about the left, right 
 and two-sided Kazhdan-Lusztig cells of Coxeter groups? As sage can compute 
 Kazhdan-Lusztig polynomials I assumed that it knew about cells as well, but 
 it doesn't seem to. Please tell me if I am missing something.


 AFAIK, there's no code in Sage or ticket about cells. +1 to adding them.


 Incidentally, I also noticed that we have some identity issues -- that I 
 am sure are well known:

 sage: WeylGroup(A5)
 Weyl Group of type ['A', 5] (as a matrix group acting on the ambient 
 space)
 sage: CoxeterGroup(A5)
 Coxeter group over Universal Cyclotomic Field with Coxeter matrix:
 [1 3 2 2 2]
 [3 1 3 2 2]
 [2 3 1 3 2]
 [2 2 3 1 3]
 [2 2 2 3 1]

 I am guessing that one of these is just wrapping code from chevie, but I 
 haven't checked. Is there any reason not to amalgamate these two classes? 
 Currently the CoxeterGroup code seems marginally faster but perhaps the 
 WeylGroup classes have more functionality:


I implemented the current CoxeterGroup and it uses Sage's (hence gap's) 
 matrix group code. However the WeylGroup does have more information 
 (features) since it is considered acting on the root/weight lattice, such 
 as reflection_to_root on elements. Combining these classes might be taken 
 care of by http://trac.sagemath.org/ticket/15703.


 sage: WeylGroup(A5).cardinality()
 720
 sage: CoxeterGroup(A5).cardinality()

 ---
 NotImplementedError   Traceback (most recent call 
 last)
 ipython-input-6-42496321af01 in module()
  1 CoxeterGroup(A5).cardinality()

 /usr/local/src/sage/local/lib/python2.7/site-packages/sage/categories/
 sets_cat.pyc in cardinality(self)
1370 NotImplementedError: unknown cardinality
1371 
 - 1372 raise NotImplementedError(unknown cardinality)
1373
1374 # Functorial constructions

 NotImplementedError: unknown cardinality

 There's currently http://trac.sagemath.org/ticket/16630 which should fix 
 some (all?) of these issues (and I will get to that after next week).

 Best,
 Travis



-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-06 Thread Andrew
Dear Bruce and Travis,

Thanks for your suggestions. I realised after reading your posts that a 
much better way to construct my coefficient ring is to start with a 
polynomial ring over Q(q) with n+1 indeterminants  and then quotient out by 
a suitable ideal. This constructs the ring directly and the factorisation 
properties that I wanted are now automatic:

sage: SeminormalRepresentation([2,2]).tau_character(1,2)
1/q*I*r3


Just a short answer for now: it's been in the TODO list for a while to 
 have representation matrices for the Hecke algebra (there might be a 
 ticket about this, and almost certainly a note in the road map). So 
 progress in this direction is surely welcome, especially if this can 
 be done uniformly for symmetric groups versus hecke algebras and type 
 A versus generic type. 


Yes, you're right, this is almost certainly on the roadmap. In any case, as 
Nicolas and Travis are both in favour I'll try and make time to properly 
wrap and prettify the code, create a ticket and push it to git and trac or 
comments and review. I'll first have to think a little harder about the 
best interface.I will probably end up implementing the seminormal 
representations simultaneously for the symmetric groups and, more 
generally, he Hecke algebras of type A, B, ..., G(r,1,n) as in the end thee 
are all the same.


 By the way, this could be an occasion to make those methods of the 
 symmetric group / hecke algebra. Something like: 

 sage: SymmetricGroup(5).representation([3,2], seminormal) 


Yes this is a good idea, but now there are some questions.

   1. Left modules or right modules, or both? (My current methods you can 
   interpret as either.)
   2. What is the best syntax for the action?

The first question is not a big deal. For the second the following is 
probably the most natural answer::
sage: A=SymmetricGroupAlgebra(QQ,3)
sage: rep=SeminormalRepresentation([2,1])
sage: a=A.an_element(); a
2*[1, 2, 3] + 2*[1, 3, 2] + 3*[2, 1, 3]
sage: r=rep.an_element(); r
2*f(1,2/3) + 2*f(1,3/2)
sage: a*r  # left action
???


Using a*r for the left action, and r*a for the right action, seems to be 
the natural syntax. Is there already a mechanism in place for doing this? I 
assume that there is, but I don't know it. Can some one point me in the 
right direction?
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-06 Thread Andrew
``_rmul_`` and ``_lmul_`` (it's the module element (i.e., ``self``) on the 
right or left respectively), and (somewhat unfortunately) I think you need 
to also inherit from ModuleElement (or copy the ``__mul__`` method).


 Or is it preferred to use ``_acted_upon_`` (see in 
 CombinatorialFreeModule)?


Thanks Travis. This is what I tried before I asked yesterday but I couldn't 
get it to work. The issue is that there is no multiplication defined on 
elements in a representation. In any case I have something working using 
sage.categories.action.Action.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Making code for some seminormal representations faster

2014-11-06 Thread Andrew


On Friday, 7 November 2014 03:56:16 UTC+11, Nicolas M. Thiery wrote:


 This might be the occasion to add a ``cartan type'' for G(r,1,n). 


Implementing these algebras properly would be painful...however, 
implementing their action on a representation in terms of the natural 
generators is not, which I guess is what you are suggesting.

I have realised that attaching the seminormal representations to the Hecke 
algebras creates a few additional headaches that are associated with the 
choice of base ring and the choice of parameters of the Iwahori-Hecke 
algebra. For example, the seminormal representations are naturally defined 
over Q(q), but the Hecke algebra defined over Z[q,q^-1] also acts on them 
since this algebra embeds in the algebra over Q(q). Technically, however, 
the seminormal representation is not a representation for the Hecke algebra 
defined over Z[q,q^-1].

The question here is whether we should follow the strict mathematical 
definitions and only allow the Hecke algebras with exactly the same base 
ring to act or should we be more flexible?  The former is easier in terms 
of coding whereas the latter is more useful (but technically incorrect).

Then there are other annoyances in that the seminormal representations for 
the algebras with different quadratic relations, for example 
$(T_r-q)(T_r+1)=0$, $(T_r-q)(T_r+q^{-1})=0$ or $(T_r-q)(T_r+v)=0$, are all 
different and, of course, there are several different flavours of 
seminormal representations. Any suggestions on what we should try and 
support here would be appreciated.

Another thought that occurs to me, which I don't promise to follow through 
on, is that I could use the seminormal representation to define Specht 
modules for these algebras over an arbitrary ring. It is possible to do 
this using some specialisation tricks. I am not sure how efficient this 
would be but I suspect that it would be at least as good as my 
implementation of the Murphy basis in chevie 
http://webusers.imj-prg.fr/~jean.michel/chevie/index.html that I wrote 
for the Hecke algebras of type A. 

In thinking about this it seems to me that currently there is no framework 
in sage for dealing with module that has more than one natural basis. Is 
this right? Of course, it is possible to define several different 
CombinatoriaFreeModules and coercions between them.

So, if you think of rep as a module, this could be: 

 rep.action(a, r) 

 Then we can optionally setup the following as syntactic sugar: 

 a*r or r*a 


I'll implement both. I have the second alternative working already, 
although some necessary sanity checks relating to the questions above are 
missing.

A final question: where should this code go? Currently the Iwahori-Hecke 
algebras are defined in sage.algebras and the seminormal matrix 
representations in sage.combinat. I think the best place might be to put 
all of this code in a new directory sage.algebras.iwahoriheckeagebras/

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Making code for some seminormal representations faster

2014-11-03 Thread Andrew
Sorry, this is a longish post...there are some questions at the end that 
roughly come down to can you see how to improve my code. If you don't care 
about representations of symmetric groups and Hecke algebras, or about 
CombinatorialFreeModules, then you may want to stop reading now!

Some time ago Franco (and possibly others?), wrote some code for 
constructing the irreducible matrix representations of the symmetric groups 
in characteristic zero. Recently I have been looking at the corresponding 
representations for the Hecke algebra of the symmetric group and the 
questions that I am interested in relate to how these representations 
restrict to the subalgebra of the Hecke algebra corresponding to the 
alternating group. The easiest way to answer this question is to work with 
slightly different matrix representations over slightly horrible rings 
where these representations split when restricted to the alternating Hecke 
algebra.

I have written some code that implements all of this in sage (see 
attached). For the symmetric groups this is roughly equivalent to the 
existing code in sage.combinat.symmetric_group_representations *except* 
that the existing computes the matrices that give the action for the 
symmetric groups on the ordinary irreducible representations whereas my 
code defines a `CombinatorialFreeModule` for computing inside these modules 
for the Hecke algebras (so the symmetric group is a special case):

sage: rep=SeminormalRepresentation([3,2,1]); rep
SeminormalRepresentation([3,2,1])
sage: rep([[1,2,3],[4,5],[6]]).T(1)
q*f(1,2,3/4,5/6)
sage: rep([[1,2,3],[4,5],[6]]).T(1,2)
q^2*f(1,2,3/4,5/6)

Currently the code is geared towards restricting to the alternating Hecke 
algebras (meaning that it works over quite horrible rings) but it would be 
easy enough to make it use nicer rings for the symmetric groups and their 
Hecke algebras. 

If people think this is interesting I would be happy to include this code 
in sage, however, the main reason that I am writing is because the code is 
much slower than I expected (I have similar code written in gap 3 that is 
faster). In addition, the output is quite horrible. I am fairly sure that 
the reason why the code is slow, and certainly the reason for the horrible 
output, is because of the rings that I have work over. If people are 
interested in having this ins sage then I'll make it possible to choose 
nicer rings (here the code should also be much faster).

To define the rings that I want to work over I start with the Laurent 
polynomial ring `Z[q,q^{-1}]` and then I adjoin the inverses and square 
roots of the Gaussian polynomials `[k]=1+q^2+q^4+\dots+q^{2k-2}`, for `1\le 
kn`, where `n` is the size of the partition that indexes the 
representation. The only way that I found to construct this ring in sage is 
by recursively adjoining more and more square roots to the Laurent 
polynomial ring (in gap I hacked their polynomial code to do roughly the 
same thing, but somehow it works better). Sadly because my rings are 
iterated extensions sage is no longer able to cancel common factors in the 
denominators and numerators of the polynomials that arise, so I get things 
like

sage: SeminormalRepresentation([2,2]).tau_character(1,2)
(((-1 - 2*q^2 - q^4)*r3)*I)/(-q - 2*q^3 - q^5)

Nothing that I have tried convinces sage to cancel the common factor of 
`(q^2-1)^2` here. What I am actually computing, `tau_character`, is a 
twisted character value that is the interesting part of the character of 
the alternating group --  and `r3` is shorthand for the square root of 
`[3]=1+q^2+q^4`. Of course, this actual character value is just `q*I*r3` 
but I can't see how to convince sage to do this simplification for me. (In 
fact, I alerady know these character values in general, but that's another 
story.)

So here are my questions:

   1. Is there a better way to define the rings that I need to work over?
   2. Is there a way to make sage cancel common factors in expressions like 
   the one above?
   3. Is there anything obviously inefficient in my code? For example, 
   would it be better to define the element method `T` as a linear 
   endomorphism? 
   4. Is there interest in putting this into sage?

Apologies for the long post, especially as I know that this will be of 
limited interest AND because I know that asking people to wade through my 
code is a huge ask. For what it's worth, the code is fully documented, and 
doctested, and the actual code is not so long.

Cheers,

Andrew



-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.
from sage.combinat.free_module

[sage-combinat-devel] Re: Sage grant

2014-10-29 Thread Andrew
Hi Anne,

I agree with Dima in that it would be great to have some of the basic ring 
theory available in improved. There are some basic deficiencies with 
(Laurent) polynomial rings, especially in more than one variable and it 
would great if all of the problems with quite basic rings could be ironed 
out. In addition, my life would be much easier if sage were able to 
efficiently compute in the location of a ring at a ideal -- what I would 
really like is to be able to calculate in modular systems with 
parameters, which is my way of saying that I would like to be able to 
explicit calculations in modular systems for Iwahori-Hecke algebras. 
Implementing all of these gadgets is, perhaps, not so exciting from the 
point of view of a grant application, but not having these basic ring 
constructions available limits what you can currently do with sage. So far 
I have always found way to get around these problems, but it has been much 
harder than I expected.

Regarding you suggested wish-list, I have already implemented graded Specht 
modules for  KLR algebras for quivers of type A and when I have time I can 
get the finite dimensional standards as well. My work on this has stalled, 
but I am hoping to be able to restart soon, so perhaps we should talk more 
about this aspect of what you are planning.

Andrew

On Wednesday, 29 October 2014 10:42:53 UTC+11, Anne Schilling wrote:

 Dear All! 

 Dan Bump, Ben Salisbury, Mark Shimozono and I are planning to apply 
 for an NSF grant for Sage (to fund Sage Days and other Sage related 
 activities). We will mostly focus on topics in combinatorics/algebra/ 
 representation theory. It would be great to hear from you what your 
 wishlists are in this area. What are features you would like to implement/ 
 see implemented? 

 Particular areas we would like to emphasis are representation theory of 
 semigroups, representations of affine Lie algebras and hyperbolic 
 Kac-Moody 
 Lie algebras, KLR algebras, the power of the category code and 
 functorial constructions to implement the DAHA and more. But we are 
 open to other suggestions. 

 Best, 

 Anne 


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Is combinat.math.washington.edu down?

2014-08-15 Thread Andrew
Is the combinat.math.washington.edu machine down? I just tried to ssh there 
and ping it and got no response.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-combinat-devel] Re: Extednding tableaux

2014-07-12 Thread Andrew
Thanks for your replies Travis and Nicholas. As  the tableaux space is 
already quite full I might implement a separate shuffles class instead as 
this is closer to my application anyway.

Cheers,
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Extednding tableaux

2014-07-10 Thread Andrew
I have this vague memory that some one was thinking of 
extending/rationalising/reorganising the tableaux code so that it fitted 
together better (whatever this might mean:). Does this ring any bells with 
anyone?

I ask because I think that I need to implement row standard tableaux 
(possibly of composition shape).

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


Re: [sage-devel] Re: [sage-combinat-devel] Re: About _element_constructor_ of CartesianProduct

2014-04-30 Thread Andrew


On Wednesday, 30 April 2014 16:12:33 UTC+10, Nathann Cohen wrote:

 There is also the problem of these __add__ and _add_. From just looking at 
 the names you have no idea what the difference is, except if you wrote the 
 code yourself.

 Now, in the graph classes we have function like add_vertex, 
 add_vertex_unsafe, stuff like that. Wouldn't it be much better if those 
 _add_ were renamed to something more meaningful, like 
 _add_coerced_elements_, i.e. something that describes better what they do 
 ? Noticing that a function is called _add_ instead of __add__ is not 
 exactly straightforward when you don't expect it.

 +1. I seem to remember that there are quite a few of these _blah_ and 
__blah__ variants and that, usually, I wasn't quite sure what the 
difference was and which one I should use.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/d/optout.


[sage-combinat-devel] Re: Computing the action of S_n over standard Tableaux

2014-02-17 Thread Andrew
Are you looking for something like this:

sage: StandardTableau([[1,2,4],[3,5]]).symmetric_group_action_on_entries( 
Permutation(((4,5))) )
  [[1, 2, 5], [3, 4]]

If you also wants straightening then I guess it is implicit in the action 
of implementation of seminormal forms.

Andrew

On Tuesday, 18 February 2014 03:52:46 UTC+11, Nicolas Borie wrote:

 Hi all, 

 Is there currently a way in Sage-combinat to compute the action of a 
 permutation over standard tableaux ? 

 For example, I would like something like : 

 Permutation([2,1,3,4]) * B([[1,2],[3,4]]) = B([[1,2],[3,4]]) - 
 B([[1,3],[2,4]]) 

 This thing is called in French algorithme de redressement (In the same 
 time, what is the equivalent in English ?) and is related to Ganir 
 identity (Or Garnir rules...). They are a lot of thing in combinat but I 
 didn't find it... Can someone confirm that or give my a pointer 
 otherwise... 

 Cheers, 
 Nicolas B. 



-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Computing the action of S_n over standard Tableaux

2014-02-17 Thread Andrew


I'm highly in favor of adding more meat to the representations of the 
 Specht modules in Sage. Currently, the way I understand them, they're 
 but a container for matrices. 

 At some point I will release my graded Specht module code (arbitrary 
level) which is IMHO is state of the art for representations of symmetric 
groups in positive characteristic. I'm not ready to do this yet...and I 
haven't had time to play with this for a long time...

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: list papers citing sage!

2014-02-17 Thread Andrew
I couldn't see how to edit the page. Sorry!

I wanted to add the following preprint/book chapter (book chapters don't 
seem to exist in the list yet):
Andrew Mathas, a href=http://front.math.ucdavis.edu/1310.2142;Cyclotomic 
quiver Hecke algebras of type A/A, 


*arXiv:1310.2142*
*Andrew*

On Monday, 17 February 2014 04:07:33 UTC+11, Anne Schilling wrote:

 Dear All! 

 It's the time of the year when we need to report to our funding 
 agencies. Please, if you have written papers that used sage or 
 sage-combinat, post them at 

 http://www.sagemath.org/library-publications-combinat.html 

 (or respond to this e-mail to get them posted)! 

 Thank you, 

 Anne 



-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Review request for group cycle index series

2013-12-25 Thread Andrew Gainer-Dewar
Hello, and happy holidays!

I'd be very grateful if someone would be willing to take the time to
review my patch at #14347. This code implements Γ-cycle indices, an
extension of the classical species-theoretic cycle index series which
incorporates information about structural group actions. I believe
this code is functional and complete--I'm actively using it in my
research, so everything should be reasonably well-tested. (In fact,
the reason I'm so eager to get the code into main is that I have some
papers in the pipeline which include code based on this patch, and I'd
very much like to have that code work!)

I'll be very happy to talk through the math involved with any
interested parties. In particular, I'm working on a draft of an
expository paper on the topic of Γ-species which I'd be glad to share.

Thanks!

--Andrew

-- 
Andrew Gainer-Dewar, Ph.D.
Visiting Assistant Professor of Mathematics (2012-2014)
Carleton College, Northfield, MN USA
http://people.carleton.edu/~againerdewar

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Fast Implementation for Character Values of Symmetric Groups

2013-12-21 Thread Andrew
Amri, this is quiet an impressive speed difference! If it's not too 
difficult I'd be interested in seeing the timings for computing the full 
character tables using your implemenentation of Murnaghan-Nakayama, 
symmetric functions and the in-built character_table() method for the 
symmetric groups..

Cheers,
Andrew

 Saturday, 21 December 2013 18:29:47 UTC+1, Amri wrote:

 Just to convince (myself and) Nicolas, I have a quick and dirty 
 implementation of the recursive Murnaghan-Nakayama formula.
 https://www.dropbox.com/s/8xfz4jo8bzjf7kf/mnr.py
 There are two functions implemented here, both of which compute a 
 character value of the symmetric group.
 The first uses symmetric functions exactly as suggested by Darij and is 
 called X
 The second used the recursive Murnaghan-Nakayama formula and is called MNR

 A typical timeit for a partition of 40:

 sage: la = Partitions(40).random_element()
 sage: mu = Partitions(40).random_element()
 sage: timeit('X(la,mu)')
 5 loops, best of 3: 854 ms per loop
 sage: timeit('MNR(la,mu)')
 125 loops, best of 3: 2.62 ms per loop

 And most importantly:

 sage: X(la,mu)==MNR(la,mu)
 True

 So if you just need one character value of a large symmetric group, the 
 recursive formula of Murnaghan-Nakayama is 300 times faster.

 Another question: what is a good name for this function?

 best,
 Amri.

 On Saturday, December 21, 2013 5:14:56 PM UTC+5:30, darijgrinberg wrote:

 Hi Nicolas, 

 the question is, I think, the one of doing it for one partition vs. 
 doing it for all partitions of n. In the latter case, I think we 
 should do what we say (replace Symmetrica if we can do it better, or 
 leave it be if we can't), but Amri has been talking about the former 
 case and there is definitely room for improvement there when n is 
 large. And I think it conceptually fits into partition.py, although 
 most people like myself probably won't ever use n's greater than 20 or 
 so. 

   Best regards, 
   Darij 

 On Fri, Dec 20, 2013 at 3:11 PM, Nicolas M. Thiery 
 nicolas...@u-psud.fr wrote: 
  Hi! 
  
  On Fri, Dec 20, 2013 at 12:37:51PM +0100, Darij Grinberg wrote: 
 But you are right in saying that this is not an optimal solution, 
 and it 
 might be better to implement the Murnaghan-Nakayama rule directly 
 as a 
 hook-removal algorithm rather than by building the whole s and p 
 bases of 
 Sym. 
  
  Well, building the whole s and p bases of Sym is not a deal as big 
  as the formulation may suggest :-) On a fresh Sage session: 
  
  sage: %time SymmetricFunctions(QQ).s() 
  CPU times: user 0.19 s, sys: 0.03 s, total: 0.23 s 
  Wall time: 0.27 s 
  Symmetric Functions over Rational Field in the Schur basis 
  sage: %time SymmetricFunctions(QQ).p() 
  CPU times: user 0.00 s, sys: 0.00 s, total: 0.00 s 
  Wall time: 0.00 s 
  Symmetric Functions over Rational Field in the powersum basis 
  
  And from now on the overhead of going through Sym to compute 
  characters is essentially negligible. If really you want to save on 
  this minimal overhead, look at the symmetric functions code, and call 
  Symmetrica directly. 
  
  On the other hand, what would be costly would be to have to maintain 
  two implementations of the MN rules just because they are used in 
  different places. If someone has an alternative implementation of MN 
  that is more efficient than that of Symmetrica, then we should drop 
  that piece of Symmetrica, and have the symmetric function code use the 
  alternative implementation. 
  
  Cheers, 
  Nicolas 
  -- 
  Nicolas M. Thiéry Isil nth...@users.sf.net 
  http://Nicolas.Thiery.name/ 
  
  -- 
  You received this message because you are subscribed to the Google 
 Groups sage-combinat-devel group. 
  To unsubscribe from this group and stop receiving emails from it, send 
 an email to sage-combinat-devel+unsubscr...@googlegroups.com. 
  To post to this group, send email to sage-comb...@googlegroups.com. 
  Visit this group at http://groups.google.com/group/sage-combinat-devel. 

  For more options, visit https://groups.google.com/groups/opt_out. 



-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: Fast Implementation for Character Values of Symmetric Groups

2013-12-20 Thread Andrew
If you want the full character table then you can also do:

sage:  SymmetricGroup(Integer(5)).character_table()
[ 1 -1  1  1 -1 -1  1]
[ 4 -2  0  1  1  0 -1]
[ 5 -1  1 -1 -1  1  0]
[ 6  0 -2  0  0  0  1]
[ 5  1  1 -1  1 -1  0]
[ 4  2  0  1 -1  0 -1]
[ 1  1  1  1  1  1  1]

From memory this calls gap in the background, so using symmetric functions 
as Darij suggests will definitely be faster for individual entries and it 
may even be faster for the whole character table. 

Andrew





 


 


 


 


 


 



On Friday, 20 December 2013 11:33:55 UTC+1, Amri wrote:

 Is there a fast implementation for characters values of symmetric groups 
 in Sage? It looks like 
 sage.combinat.symmetric_group_representations.pyconstructs the representation 
 explicitly to compute the character values. 
 In any case, it's not fast.

 I am looking for a function which, when fed two partitions ``la`` and 
 ``mu`` returns the value of the character of the Specht module 
 corresponding to ``la`` at a class with cycle type ``mu``.

 I would like something at least as fast as the Murnaghan-Nakayama formula 
 (Theorem 2.4.7 in *Representation Theory of the Symmetric Group* by James 
 and Kerber). I am also curious to know what the fastest known algorithm is.

 Thanks,
 Amri.


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: Bug in Core

2013-12-16 Thread Andrew
Hi Christian,

I agree that this probably is a bug, but looking at the class a little more 
closely I think that it needs some TLC. In particular, it seems to me that 
the object that Core returns does not really know that it is a core. 
Consider:

sage: Core([2],4) is Partition([2]).core(4)
False
sage: Core([2],4) == Partition([2]).core(4)
True
sage: Core([2],4) == Core([2],5)
True
sage: Cores([2],4) in Cores(5,2)
True

If core-ness is intrinsic to what is being returned here then I would 
think/hope that the first two return values should be True and that the 
last two should be False. The hash values seem to be consistent with what 
is happening above.

As some one obviously needs this class it is no doubt a good thing to to 
have but I think that it would be better if the implementation 
distinguished a little more between partitions and cores. Further, if
A=Core([2],4)
 then it wasn't obvious to me how to extract the fact that A is a 4-core 
from A. It turns out that
sage: A.parent().k
4
works but this took me a while to find.  I think that  it would also be 
better if A._repr_() said that A is a 4-core rather than just printing [2].

Finally, as this class is a little specialised, it probably shouldn't be in 
the global namespace.

Andrew



On Monday, 16 December 2013 11:24:05 UTC+1, Christian Stump wrote:

 Hi,

 do you consider the following a bug?

 sage: A = Core([2],4)
 sage: B = Core([2],5)
 sage: hash(A) == hash(B)
 True

 The hash of a core only depends on the list and not on the core. Since the 
 same list considered as an x- and as a y-core are fundamentally different 
 objects, I would rather suggest to have the hash depending not only on the 
 list.

 If others agree, I will provide a patch fixing that...

 Cheers, Christian


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: Bug in Core

2013-12-16 Thread Andrew
Yes, I agree. I noticed this after I posted but I GG doesn't allow me to 
edit:)
A.

On Monday, 16 December 2013 14:22:50 UTC+1, Christian Stump wrote:

 Thanks, Andrew!
  

 sage: Core([2],4) is Partition([2]).core(4)
 False


 I agree with all what you write, except that I would not expect this to be 
 true since two instances of the same core are not the same object (thus do 
 not lie in the same place in space, thus X is Y is not True).

 Best, Christian
  

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: A Partitions Pickle

2013-12-12 Thread Andrew


On Wednesday, 11 December 2013 21:11:00 UTC+1, Travis Scrimshaw wrote:

 I'm starting to think that we need is a better system for the global 
 options. I'm thinking what we could do is change thing around a bit by 
 having GlobalOptions inherit from UniqueRepresentation with a __classcall__ 
 method that takes no inputs and we subclass that with passing the necessary 
 data up via the __init__() method. For example, PartitionOptions would be a 
 subclass of GlobalOptions instead of an instance, and it then should pickle 
 properly with better separation between different global options.

 
Hi Travis,

I agree that this would be a better solution as having a non-pickleable 
class is distasteful - although I have this vague memory that we argued 
against subclassing during #13605:). If we're going to mess with 
GlobalOptons when probably we should also implement Volker's 
suggestionhttps://groups.google.com/forum/#!searchin/sage-devel/globaloptions/sage-devel/7ApZgwBTU4U/Qe6QoeuYgvAJthat
 we adopts the ipython syntax, although I guess this is slightly 
painful as we'd to do this in two steps starting with depreciation [sic].

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: A Partitions Pickle

2013-12-07 Thread Andrew
, can you please find a more informative 
class name than Partitions_constraints_new. A part from this name not 
telling me anything meaningful, the name will not be appropriate in a few 
years time.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: Wrongs results again

2013-12-02 Thread Andrew


On Monday, 2 December 2013 09:40:57 UTC+1, Nathann Cohen wrote:


 Oddly, knowing that it has been known for two years that this function 
 returned wrongs results, and that nobody cared enough to fix it is not 
 exactly a comforting thought.

 Oddly, given that the sage-combinat discussion referred to above was in 
2012, I make it one year (definitely odd since two is even). Although I do 
share your annoyance when things don't work perfectly I don't find this in 
the least bit odd because trac lists some (sometimes serious) bugs in sage 
that have been known since 2007. There's even quite a few old graph theory 
tickets with your name directly attached to them. That's definitely odd!

To be honest Nathan, I also find your penchant for flaming sage-combinat 
slightly odd but I am sure that there is some rational explanation such as 
some childhood trauma associated with the counting large primes or the odd 
order theorem:) I'm sure that How to make friends and influence people 
warns against flaming in cooperative projects as it rarely achieves any of 
your desired aims, except possibly for short term amusement. Well, oddly, 
I've never read this book but I think it would be odd if it didn't say 
something like this. 

Any way, these odd issues aside of your aside, thanks for fixing the 
problem!
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: Wrongs results again

2013-12-01 Thread Andrew


On Friday, 29 November 2013 19:49:32 UTC+1, Nathann Cohen wrote:

 Oh.  And on top of everything, the documentation of RestrictedPartitions 
 (a deprecated class) says that the feature it implements is *NOT* available 
 through Partitions.

 So this thing has been deprecated while there was no other way to get the 
 result.

 So I guess it will stay there forever, deprecated. Good job.

 Nathann


 Hi Nathan,

RestrictedPartions were depreciated in 
trac5478http://trac.sagemath.org/ticket/5478, 
incorrectly as you point out. See the previous discussion about this point 
in 
sage-combinat-develhttps://groups.google.com/forum/#!topicsearchin/sage-combinat-devel/RestrictedPartitions|sort:date/sage-combinat-devel/utAsQzZQKLo,
 
particularly starting from 30/8//2012. It's listed on 
trac12278http://trac.sagemath.org/ticket/12278as an issue to be fixed.

Andrew
 

 On 29 November 2013 17:17, Nathann Cohen nathan...@gmail.comjavascript:
  wrote:

 Okay, this time it did not take long. Quote from the constructor of 
 Partitions :

 if 'parts_in' in kwargs:
 return Partitions_parts_in(n, kwargs['parts_in'])
 elif 'starting' in kwargs:
 return Partitions_starting(n, kwargs['starting'])
 elif 'ending' in kwargs:
 return Partitions_ending(n, kwargs['ending'])

 From this code, we learn that we can build a partitions with a starting 
 parameter, an ending parameter, OR a parts_in parameter, but that those 
 arguments CAN NEVER BE COMBINED.

 Honestly, you cannot look at a code like that and not notice that 
 something wrong is going on. 

 I will create (as in #13742) a patch that screams when bad input is 
 given. Actually I just did, it is #15467.

 Nathann

   -- 
 You received this message because you are subscribed to a topic in the 
 Google Groups sage-combinat-devel group.
 To unsubscribe from this topic, visit 
 https://groups.google.com/d/topic/sage-combinat-devel/vyMs7PQ8KbA/unsubscribe
 .
 To unsubscribe from this group and all its topics, send an email to 
 sage-combinat-devel+unsubscr...@googlegroups.com javascript:.
 To post to this group, send email to 
 sage-comb...@googlegroups.comjavascript:
 .
 Visit this group at http://groups.google.com/group/sage-combinat-devel.
 For more options, visit https://groups.google.com/groups/opt_out.




-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: Some rebasing and the end of #10963?

2013-10-31 Thread Andrew Mathas


On Thursday, 31 October 2013 10:29:22 UTC+1, Nicolas M. Thiery wrote:


 Works for me for 5.13.beta1 (but we have a reject for 
 trac_Kleshchev-partitions-am.patch there ...). 


I've just rebased this patch so the full queue should apply now -- well, at 
least using 5.12.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: Some rebasing and the end of #10963?

2013-10-31 Thread Andrew Mathas
As you mentioned that you installed a new version of xcode the discussion 
on sage-dev about OS mavericks might be relevant. I haven't been reading 
this as I haven't touched xcode, but I don't think they've solved all of 
the issues yet so even if it is relevant it might only count as moral 
support at this this juncture...

A.

On Thursday, 31 October 2013 19:07:06 UTC+1, Mike Zabrocki wrote:

 Does anyone have any advice about what might be wrong with the compilation 
 or who to ask?  I doubt that I will be able to compile much of anything 
 until I get this fixed:

 The file 
 /Applications/sage/local/bin/../lib/gcc/x86_64-apple-darwin12.4.0/4.7.3/include-fixed/limits.h:169:61
 
 contains the lines at the end that are triggering the error fatal error: 
 limits.h: No such file or directory:

 #else /* not _GCC_LIMITS_H_ */

 #ifdef _GCC_NEXT_LIMITS_H
 #include_next limits.h /* recurse down to the real one */
 #endif

 #endif /* not _GCC_LIMITS_H_ */

 -
 If I remove the line  #include_next limits.h then it fixes the problem 
 in that file but the same problem pops up in other files.  The problem must 
 be that some path variables are not set correctly for my system.


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: StandardTableaux broken

2013-10-16 Thread Andrew Mathas
Sorry, Jean-Yves is correct: with the **full** queue applied 
StandardTableaux was broken.

This was my fault and it is now fixed:
┌┐
│ Sage Version 5.12, Release Date: 2013-10-07│
│ Type notebook() for the browser-based notebook interface.│
│ Type help() for help.│
└┘
sage: StandardTableaux(4)[:]
[[[1, 2, 3, 4]],
 [[1, 3, 4], [2]],
 [[1, 2, 4], [3]],
 [[1, 2, 3], [4]],
 [[1, 3], [2, 4]],
 [[1, 2], [3, 4]],
 [[1, 4], [2], [3]],
 [[1, 3], [2], [4]],
 [[1, 2], [3], [4]],
 [[1], [2], [3], [4]]]
On the plus side, there is a slight speed up when running through the list 
of all standard tableaux.

Jean-Yves, to fix your version of sage just type: 
sage -combinat update
from the shell.

Andrew


On Tuesday, 15 October 2013 16:53:59 UTC+2, Jean-Yves Thibon wrote:

 Salut Fred,

 J'ai la dernière (5.12). La précédente ne compilait pas sur ma nouvelle 
 machine (un mac).
 Je viens juste de la compiler et d'installer combinat ...

 Le mardi 15 octobre 2013 16:49:35 UTC+2, Frédéric Chapoton a écrit :

 Salut Jean-Yves

 chez moi, je n'ai pas ton problème non plus

 quelle version de sage tu as ? tape version() pour voir

 tu peux me telephoner au boulot si tu veux (voir mon tel sur 
 http://math.univ-lyon1.fr/~chapoton/)

 Fred

 Le mardi 15 octobre 2013 16:23:14 UTC+2, Jean-Yves Thibon a écrit :




 sage: tt=StandardTableaux(4)

 tt.list() hangs, and that's why:

 sage: tt[1]
 [[1, 2, 3, 4]]
 sage: tt[2]
 [[1, 2, 3, 4]]
 sage: tt[3]
 [[1, 2, 3, 4]]
 sage: 



-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Re: StandardTableaux broken

2013-10-16 Thread Andrew Mathas
This seems to come from the patch http://trac.sagemath.org/ticket/7983 
which was merged in 5.12.

Perhaps what you want is now given by standard_descents() which is included 
in the same patch:

sage: StandardTableau( [[1,3,4],[2,5]] ).standard_descents()
[1, 4]
sage: StandardTableau( [[1,2],[3,4]] ).standard_descents()
[2]
sage: StandardTableau( [[1,2,5],[3,4],[6,7],[8],[9]] ).standard_descents()
[2, 5, 7, 8]
sage: StandardTableau( [] ).standard_descents()
[]

Andrew

On Wednesday, 16 October 2013 17:51:11 UTC+2, Jean-Yves Thibon wrote:

 OK, thanks. It works now.
 But new problems arise. Now that I can get my hands on standard tableaux, 
 I call a function written a few months ago,
 which uses t.descents(). It does not work anymore, the output of 
 t.descents has changed type
 in the meantime, and the doc mentions 


Warning: This is not to be confused with the descents of a standard
  tableau.

  This leaves me voiceless ...


 Le mercredi 16 octobre 2013 16:35:25 UTC+2, Andrew Mathas a écrit :

 Sorry, Jean-Yves is correct: with the **full** queue applied 
 StandardTableaux was broken.

 This was my fault and it is now fixed:
 ┌┐
 │ Sage Version 5.12, Release Date: 2013-10-07│
 │ Type notebook() for the browser-based notebook interface.│
 │ Type help() for help.│
 └┘
 sage: StandardTableaux(4)[:]
 [[[1, 2, 3, 4]],
  [[1, 3, 4], [2]],
  [[1, 2, 4], [3]],
  [[1, 2, 3], [4]],
  [[1, 3], [2, 4]],
  [[1, 2], [3, 4]],
  [[1, 4], [2], [3]],
  [[1, 3], [2], [4]],
  [[1, 2], [3], [4]],
  [[1], [2], [3], [4]]]
 On the plus side, there is a slight speed up when running through the 
 list of all standard tableaux.

 Jean-Yves, to fix your version of sage just type: 
 sage -combinat update
 from the shell.

 Andrew


 On Tuesday, 15 October 2013 16:53:59 UTC+2, Jean-Yves Thibon wrote:

 Salut Fred,

 J'ai la dernière (5.12). La précédente ne compilait pas sur ma nouvelle 
 machine (un mac).
 Je viens juste de la compiler et d'installer combinat ...

 Le mardi 15 octobre 2013 16:49:35 UTC+2, Frédéric Chapoton a écrit :

 Salut Jean-Yves

 chez moi, je n'ai pas ton problème non plus

 quelle version de sage tu as ? tape version() pour voir

 tu peux me telephoner au boulot si tu veux (voir mon tel sur 
 http://math.univ-lyon1.fr/~chapoton/)

 Fred

 Le mardi 15 octobre 2013 16:23:14 UTC+2, Jean-Yves Thibon a écrit :




 sage: tt=StandardTableaux(4)

 tt.list() hangs, and that's why:

 sage: tt[1]
 [[1, 2, 3, 4]]
 sage: tt[2]
 [[1, 2, 3, 4]]
 sage: tt[3]
 [[1, 2, 3, 4]]
 sage: 



-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [sage-combinat-devel] Re: StandardTableaux broken

2013-10-16 Thread Andrew Mathas
Hi Darij,

I've not yet needed descent sets of tableaux in sage so I don't know what 
the code did previously or what it does now in this respect. I would hope, 
however, that a descents method for tableaux would return the descent set 
of a tableau, so if you have ensured that this is now happening I think 
that's great!

Andrew

On Wednesday, 16 October 2013 20:32:11 UTC+2, darijgrinberg wrote:

 Hello Jean-Yves, hello Andrew, 

 I guess I should have something to say about this but I don't really 
 understand what is happening. When I wrote the #7983 patch, I was 
 being annoyed by the fact that there was no method on the Tableaux 
 class computing what everyone in combinatorics calls the descents, 
 whereas the descents() method on tableaux was computing something 
 rather unrelated (that, moreover, depends only on the shape if the 
 tableau is semistandard). I suspect the descents() method was some 
 kind of helper function for Jack or H-L related code. Anyway, I 
 decided to rename the old descents() method into a less ambiguous name 
 and to make descents() compute the actual descents. But I've quickly 
 got talked out of this, as this would deprecate some userbase code, so 
 instead I added a standard_descents() method and left descents() 
 untouched (only adding the warning to its doc). I was working on 
 sage-main all the time. 

 Now, Jean-Yves (who, as far as I understand, has been using 
 sage-combinat) is saying he has been using descents() all the time and 
 since he is talking about standard tableaux, I assume that function 
 has been computing the actual descents rather than whatever it has 
 been computing on sage-main. Does this mean that the descents() 
 function on sage-combinat has been doing something completely 
 different from that on sage-main all the time before my #7983 patch? 
 That someone had done what I first had in mind (rename the old 
 descents() and reuse the name for the actual descents) long ago, and 
 now that my #7983 got merged in, the roles have switched? 

 Either way, sorry for contributing to this muckup and thanks a lot for 
 any help in understanding it. 

   Best regards, 
   Darij 


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.


[sage-combinat-devel] Review request(s): cycle index series code

2013-09-05 Thread Andrew Gainer-Dewar
Hello!

I currently have three open tickets with patches which add functionality
related to cycle index series. I'd really appreciate reviews, comments,
or other input!

* #14543: adds a compositional_inverse() method to CycleIndexSeries
which, naturally, computes a plethystic inverse for a given cycle index
series. I believe this one is all set to go, but it needs a review from
someone who is comfortable with the inner workings of CycleIndexSeries
and (possibly) LazyPowerSeries.

* #14846: shuffles things around so that the derivative() and
exponential() methods of CycleIndexSeries correspond to the
combinatorial definitions of those operations (which are different than
those inherited from LazyPowerSeries). The code works fine (as far as I
can tell), but this is a design decision, and I'm a new kid, so I'd
appreciate the input of more experienced folks on whether this is
appropriate.

* #14347: adds a GroupCycleIndexSeries class which implements Γ-cycle
index series, which allow for working with species which carry a
structural group action as in cf. [1]. I have some papers in draft
that use this code, and I'd love to be able to cite a shipped version of
Sage!

--Andrew

[1] http://www.combinatorics.org/ojs/index.php/eljc/article/view/v19i4p45



signature.asc
Description: OpenPGP digital signature


[sage-combinat-devel] Re: Should ClasscallMetaclass do a consistency test?

2013-07-31 Thread Andrew Mathas


On Tuesday, 30 July 2013 14:18:28 UTC+2, Simon King wrote:

 Hi all, 

 On 2013-07-29, Simon King simon...@uni-jena.de javascript: wrote: 
  After all, we have a class, and we call the class as if to create an 
  instance---but what we get is in fact not an instance of this class, but 
  is instance of a *totally* different class. 
  
  OK, it is possible, Python let's you do it. But not all what can be done 
  should be done. 
  
  I have nothing against the following pattern: 
  
  ... 
  
  And I think this pattern is totally fine, since C(...) returns instances 
  of sub-classes of C (namely of A resp. B)---hence, it returns instance 
  of C! I could imagine that a similar pattern would be available for 
  Partition versus PartitionTuple. 

 I determined all classes-with-ClasscallMetaclass that sometimes return 
 instances that are not instances of this class: 
sage.combinat.composition.Compositions 
   
  
 sage.combinat.integer_vectors_mod_permgroup.IntegerVectorsModPermutationGroup 

sage.combinat.partition.Partitions 
sage.combinat.partition_tuple.PartitionTuple 
sage.combinat.posets.poset_examples.Posets 
sage.combinat.root_system.type_relabel.CartanType 
sage.combinat.tableau_tuple.StandardTableauTuple 
sage.combinat.tableau_tuple.StandardTableauTuples 
sage.combinat.tableau_tuple.TableauTuple 
sage.combinat.tableau_tuple.TableauTuples 
 plus three classes that seem only to be made for doctests. 

 What do you think? These are relatively few classes. Would it be 
 reasonable to change them, such that when on tries to create instances 
 of these classes then one is guaranteed to actually get an instance of 
 these classes (or a sub-class, at least)? 


I have no objection provided that the new code continues to respect  the 
underlying *mathematical relationships* between these classes. I think that 
changing the classes so that they respect semantic niceities whilst 
breaking the underlying mathematical relationships, which these classes are 
meant to emulate, would be a mistake. It would also delay my porting into 
sage what I think is probably the best avilable code for working with 
representation theory of the symmetric groups in positive characteristic.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: Should ClasscallMetaclass do a consistency test?

2013-07-28 Thread Andrew Mathas


On Sunday, 28 July 2013 19:56:02 UTC+2, Simon King wrote:

 Am Sonntag, 28. Juli 2013 14:23:39 UTC+2 schrieb Simon King:

 It turns out that a lot of stuff in sage.combinat breaks. Apparently 
 some people really want that if C is a class then C(*args,**kwds) is not 
 an instance of this class. 


 Here is an example:

 sage: mu = PartitionTuple([3,2])
 sage: isinstance(mu, PartitionTuple)


HI Simon,

I wrote this and although I agree it is an abuse is it what I wanted and I 
think that, mathematically, it is the correct behaviour.  The point is that 
a partition is a 1-tuple of partitions and hence a partition tuple. On the 
other hand, in most applications (in mathematics or in sage) you don't want 
to think of a partition as  tuple of partitions. As such I think this is a 
mild abuse as the class s returning a closely related class.

In terms of implementation, this was discussed a ittle on sage-combinat. 
The general feeling was that the implementation of PartitonTuple should not 
compromise the Partition class because partitions are in so many places. To 
avoid code duplication I would have liked to have both classes inherit from 
a common super class (but still with the behaviour above that you don't 
like), but the general feeling was that this was a bad idea. As it stands 
now,the Partition and PartitionTuple classes play very well together , I 
think. Even though PartitionTuple does not always return a PartitionTuple 
it behaves as if it does. In my own applications I *need* Partition and 
PartitionTuple to behave identically -- the methods that I use exist in 
both classes -- and the current code achieves this. To continue your 
example:
sage: mu = PartitionTuple([3,2])
sage: mu in PartitionTuples()
True

I know your posts are more general than this one example, but hopefully 
having my (possibly misguided) rationale explained for this one example 
with help the discussion. If there are better ways to implement these 
classes Id be very pleased to hear them, but I do want the behaviour above.

Cheers,
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: Skew tableaux

2013-07-02 Thread Andrew Mathas


On Monday, 1 July 2013 21:06:46 UTC+2, darijgrinberg wrote:

 This isn't the only thing missing, and it seems that skew_tableau.py never 
 got the 
 love that tableau.py received during development. 


One many things that skew tableaux (and skew partitions) are currently 
missing is a latex method. As part of a review of Travis huge 
categorification patch for partitons I updated sage.combinat.output.py so 
that the routines there now work for skew tableaux (and diagrams of skew 
partitions) but we didn't add the corresponding methods to skew tableaux. 
If any one wants these, I think that it is enough to simply copy the 
corresponding routines across from the non-skew classes, although there 
will be some trickery due to the global option classes...I'm fairly snowed 
under at the minute, but if there is sufficient demand I could look in to 
this.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: Installing combinat queue

2013-07-02 Thread Andrew Mathas
Thank Travis. I am compiling from source of course. The problem might be 
that bash install function I wrote uses make all rarher than just make, 
which is what I used to do by handaccorrding to the makefile these 
should be equivalent but it is the only difference I can see. Will test 
when I have access to a proper internet connection again.
A.

On Friday, 28 June 2013 13:55:38 UTC+2, Travis Scrimshaw wrote:

 Hey Andrew,
Are you compiling it from source code or using the prebuilt? Because I 
 believe building the doc is built during the compilation. As for the 
 prebuilts, since sage now copies over the doc (previously it just rebuilt 
 it) and it may not be included in; so look in your sage/doc/output... to 
 see if there is doc already built. If not, then I guess you'll have to 
 build the doc first (or at least put a temp folder) and we'll need to make 
 a ticket on this (likely a blocker).

 Best,
 Travis


 On Friday, June 28, 2013 11:03:26 AM UTC+2, Andrew Mathas wrote:

 Hi All,

 Whenever I try installing the combinat queue on top of a new verion tehse 
 days I run into an error like this:

 MacAndrew-528-(sage-5.10)-combinat: sage -combinat install
 Creating sage-combinat branch:
   /usr/local/src/sage/sage-5.10/sage -b main

 --
 sage: Building and installing modified Sage library files.


 Installing c_lib
 /usr/local/src/sage/sage-5.10/devel/sage/c_lib
 g++ -o libcsage.dylib -single_module -flat_namespace -undefined 
 dynamic_lookup -dynamiclib src/convert.os src/interrupt.os src/memory.os 
 src/mpn_pylong.os src/mpz_pylong.os src/mpz_longlong.os src/stdsage.os 
 src/gmp_globals.os src/ZZ_pylong.os src/ntl_wrap.os 
 -L/usr/local/src/sage/sage-5.10/local/lib 
 -L/usr/local/src/sage/sage-5.10/local/lib/python2.7/config -lntl -lpari 
 -lgmp -lpython2.7
 Updating Cython code
 Compiling sage/libs/lrcalc/lrcalc.pyx because it changed.
 Cythonizing sage/libs/lrcalc/lrcalc.pyx
 Finished compiling Cython code (time = 10.7281630039 seconds)
 running install
 running build
 running build_py
 running build_ext
 building 'sage.libs.lrcalc.lrcalc' extension
 Executing 1 command (using 1 thread)
 gcc -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall 
 -I/usr/local/src/sage/sage-5.10/local/include/lrcalc/ 
 -I/usr/local/src/sage/sage-5.10/local/include 
 -I/usr/local/src/sage/sage-5.10/local/include/csage 
 -I/usr/local/src/sage/sage-5.10/devel/sage 
 -I/usr/local/src/sage/sage-5.10/devel/sage/sage/ext 
 -I/usr/local/src/sage/sage-5.10/local/include 
 -I/usr/local/src/sage/sage-5.10/local/include/csage 
 -I/usr/local/src/sage/sage-5.10/devel/sage 
 -I/usr/local/src/sage/sage-5.10/devel/sage/sage/ext 
 -I/usr/local/src/sage/sage-5.10/local/include/python2.7 -c 
 sage/libs/lrcalc/lrcalc.c -o 
 build/temp.macosx-10.7-x86_64-2.7/sage/libs/lrcalc/lrcalc.o -w
 gcc -bundle -undefined dynamic_lookup 
 -L/usr/local/src/sage/sage-5.10/local/lib 
 build/temp.macosx-10.7-x86_64-2.7/sage/libs/lrcalc/lrcalc.o 
 -L/usr/local/src/sage/sage-5.10/local/lib -lcsage -llrcalc -lstdc++ -lntl 
 -o build/lib.macosx-10.7-x86_64-2.7/sage/libs/lrcalc/lrcalc.so
 Time to execute 1 command: 2.87031507492 seconds
 Total time spent compiling C/C++ extensions:  3.05725002289 seconds.
 running install_lib
 copying build/lib.macosx-10.7-x86_64-2.7/sage/libs/lrcalc/lrcalc.so - 
 /usr/local/src/sage/sage-5.10/local/lib/python2.7/site-packages/sage/libs/lrcalc
 running install_egg_info
 Removing 
 /usr/local/src/sage/sage-5.10/local/lib/python2.7/site-packages/sage-0.0.0-py2.7.egg-info
 Writing 
 /usr/local/src/sage/sage-5.10/local/lib/python2.7/site-packages/sage-0.0.0-py2.7.egg-info

 real 21.433user 6.020sys 1.829pcpu 36.61

   /usr/local/src/sage/sage-5.10/sage -clone combinat
 Now cloning the current Sage library branch...
 hg clone  sage sage-combinat 
 updating to branch default
 2973 files updated, 0 files merged, 0 files removed, 0 files unresolved
 Copying over all Cython auto-generated .c, .cpp and .h files...
 Copying over hidden Cython version file...
 Copying over build directory...
 Copying over all auto-generated reference manual .rst files...
 Copying over documentation output...
 Traceback (most recent call last):
   File /usr/local/src/sage/sage-5.10/local/bin/sage-clone, line 101, in 
 module
 shutil.copytree('sage/doc/output', branch + '/doc/output', 
 symlinks=True)
   File /usr/local/src/sage/sage-5.10/local/lib/python/shutil.py, line 
 171, in copytree
 names = os.listdir(src)
 OSError: [Errno 2] No such file or directory: 'sage/doc/output'

 real 47.575user 5.615sys 3.598pcpu 19.36

 Abort

 Does this mean that I need to build the documentation before installing 
 the combinat queue or am I doing something else wrong?

 Andrew



-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email

[sage-combinat-devel] Installing combinat queue

2013-06-28 Thread Andrew Mathas
Hi All,

Whenever I try installing the combinat queue on top of a new verion tehse 
days I run into an error like this:

MacAndrew-528-(sage-5.10)-combinat: sage -combinat install
Creating sage-combinat branch:
  /usr/local/src/sage/sage-5.10/sage -b main

--
sage: Building and installing modified Sage library files.


Installing c_lib
/usr/local/src/sage/sage-5.10/devel/sage/c_lib
g++ -o libcsage.dylib -single_module -flat_namespace -undefined 
dynamic_lookup -dynamiclib src/convert.os src/interrupt.os src/memory.os 
src/mpn_pylong.os src/mpz_pylong.os src/mpz_longlong.os src/stdsage.os 
src/gmp_globals.os src/ZZ_pylong.os src/ntl_wrap.os 
-L/usr/local/src/sage/sage-5.10/local/lib 
-L/usr/local/src/sage/sage-5.10/local/lib/python2.7/config -lntl -lpari 
-lgmp -lpython2.7
Updating Cython code
Compiling sage/libs/lrcalc/lrcalc.pyx because it changed.
Cythonizing sage/libs/lrcalc/lrcalc.pyx
Finished compiling Cython code (time = 10.7281630039 seconds)
running install
running build
running build_py
running build_ext
building 'sage.libs.lrcalc.lrcalc' extension
Executing 1 command (using 1 thread)
gcc -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall 
-I/usr/local/src/sage/sage-5.10/local/include/lrcalc/ 
-I/usr/local/src/sage/sage-5.10/local/include 
-I/usr/local/src/sage/sage-5.10/local/include/csage 
-I/usr/local/src/sage/sage-5.10/devel/sage 
-I/usr/local/src/sage/sage-5.10/devel/sage/sage/ext 
-I/usr/local/src/sage/sage-5.10/local/include 
-I/usr/local/src/sage/sage-5.10/local/include/csage 
-I/usr/local/src/sage/sage-5.10/devel/sage 
-I/usr/local/src/sage/sage-5.10/devel/sage/sage/ext 
-I/usr/local/src/sage/sage-5.10/local/include/python2.7 -c 
sage/libs/lrcalc/lrcalc.c -o 
build/temp.macosx-10.7-x86_64-2.7/sage/libs/lrcalc/lrcalc.o -w
gcc -bundle -undefined dynamic_lookup 
-L/usr/local/src/sage/sage-5.10/local/lib 
build/temp.macosx-10.7-x86_64-2.7/sage/libs/lrcalc/lrcalc.o 
-L/usr/local/src/sage/sage-5.10/local/lib -lcsage -llrcalc -lstdc++ -lntl 
-o build/lib.macosx-10.7-x86_64-2.7/sage/libs/lrcalc/lrcalc.so
Time to execute 1 command: 2.87031507492 seconds
Total time spent compiling C/C++ extensions:  3.05725002289 seconds.
running install_lib
copying build/lib.macosx-10.7-x86_64-2.7/sage/libs/lrcalc/lrcalc.so - 
/usr/local/src/sage/sage-5.10/local/lib/python2.7/site-packages/sage/libs/lrcalc
running install_egg_info
Removing 
/usr/local/src/sage/sage-5.10/local/lib/python2.7/site-packages/sage-0.0.0-py2.7.egg-info
Writing 
/usr/local/src/sage/sage-5.10/local/lib/python2.7/site-packages/sage-0.0.0-py2.7.egg-info

real 21.433user 6.020sys 1.829pcpu 36.61

  /usr/local/src/sage/sage-5.10/sage -clone combinat
Now cloning the current Sage library branch...
hg clone  sage sage-combinat 
updating to branch default
2973 files updated, 0 files merged, 0 files removed, 0 files unresolved
Copying over all Cython auto-generated .c, .cpp and .h files...
Copying over hidden Cython version file...
Copying over build directory...
Copying over all auto-generated reference manual .rst files...
Copying over documentation output...
Traceback (most recent call last):
  File /usr/local/src/sage/sage-5.10/local/bin/sage-clone, line 101, in 
module
shutil.copytree('sage/doc/output', branch + '/doc/output', 
symlinks=True)
  File /usr/local/src/sage/sage-5.10/local/lib/python/shutil.py, line 
171, in copytree
names = os.listdir(src)
OSError: [Errno 2] No such file or directory: 'sage/doc/output'

real 47.575user 5.615sys 3.598pcpu 19.36

Abort

Does this mean that I need to build the documentation before installing the 
combinat queue or am I doing something else wrong?

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: Terminated jobs on combinat server?

2013-06-19 Thread Andrew Mathas
Thanks for letting me know. I should improve the code I was running anyway:)
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Terminated jobs on combinat server?

2013-06-17 Thread Andrew Mathas
Hi All,

I had some (very long and quite intensive but niced) jobs running on the 
combinat server but they have all been terminated. I'm not sure whether 
this was done accidentally or because they were hogging resources or for 
some other reason (although I was monitoring them and they seemed OK). This 
calculation has been all that I have had time for sagewise for the past few 
months:( Unfortunately I have lost some of the calculation but luckily I 
can restart them within a few days of when they died.

Before restarting them I thought that I should check to see if I was 
breaking the usage guidelines or etiquette. Please advise!

Cheers,
Andrew


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [sage-combinat-devel] Terminated jobs on combinat server?

2013-06-17 Thread Andrew Mathas


On Tuesday, 18 June 2013 11:26:13 UTC+10, William Stein wrote:

 I definitely didn't kill them, and the machine hasn't been rebooted in 
 2 months.  Your jobs might have used too much memory and been killed 
 by the Linux kernel. 

 Thanks William, that's probably what happened. I'll try and improve my 
memory management!

Andrew 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Sage 5.9 crashing when the queue is applied -- #9439 and #9557

2013-05-28 Thread Andrew Mathas
Hi All,

I just updated the combinat queue using version 5.9. The queue applies 
cleanly, sage builds without complaint but sadly sage crashes when you 
start it.

The patch that was causing the problem is 
trac_9439-hyperbolic_geometry-vd.patch. I have disabled this patch and 
trac_9557-fundamental_domains-vd.patch, which depends upon it. The queue 
now applies and sage builds and runs. Presumably the problem is caused by a 
whole bunch of Vincent's patches being disabled higher up in the queue.

The same problem affects sage-5.10.beta2. I don't know about beta3-5 as I 
don't have these to play with.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: an algorithm generating random young tableaux of given shape

2013-04-26 Thread Andrew Mathas
If you check tableau.py you'll find that some one (not sure who?) has 
already implemented this in sage: see the random element method of  
StandardTableau.

For a StandardableauTuple I implemented a different random_element - this 
was purely for my own amusement, however, and I have no idea how uniform 
etc the distribution is...

Andrew

On Friday, 26 April 2013 17:18:45 UTC+10, Christian Stump wrote:

 Just for the records, in case we / someone is interested in such an 
 algorithm: 


 http://mathoverflow.net/questions/128540/generating-random-young-tableaux-a-peculiar-probability-identity
  

 Cheers, Christian 


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: Wrong rebase...

2013-04-23 Thread Andrew Mathas
Oops, sorry, fixed now. 

Florent: thanks for cleaning up after me.

Andrew

On Tuesday, 23 April 2013 23:38:00 UTC+10, fhivert wrote:

  Dear Andrew, 

 During your last rebase you introduced the following lines in your patch: 

tableaux-combinatorics-am.patch:+del from tableau_tuple import 
 TableauTuple, StandardTableauTuple, TableauTuples, StandardTableauTuples 
trac_Kleshchev-partitions-am.patch:+del from partition_tuple import 
 PartitionTuple, PartitionTuples 

 This is probably due to some wrongly resolved conflict. I disabled 
 temporarily 
 your patches with the guard +wrong_rebase. Can you resolve the problem 
 or do 
 you need some help ? 

 Cheers, 

 Florent 


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: queue needs attention!

2013-04-20 Thread Andrew Mathas
Hi Anne,

It looks like the conflicts were caused by changes that some one made to 
../combinat/all.py.  

I rebased your trac_12250-ktableaux-as.patch,  
trac_14145-fix_contains_tableau-ts.patch and two of my patches further down 
the queue. The queue now applies.

Can everyone please remember to check that the whole queue applies before 
pushing the queue? :)

Cheers,
Andrew

On Friday, 19 April 2013 03:06:04 UTC+10, Anne Schilling wrote:

 Hi Travis, 

 I think your changes broke the queue due to some conflicts. 
 I fixed one, but now there is another reject: 

 applying tableaux-combinatorics-am.patch 
 patching file sage/combinat/all.py 
 Hunk #1 FAILED at 65 
 1 out of 1 hunks FAILED -- saving rejects to file sage/combinat/all.py.rej 
 patch failed, unable to continue (try -v) 
 patch failed, rejects left in working dir 
 errors during apply, please fix and refresh 
 tableaux-combinatorics-am.patch 

 Could you or Andrew please fix this? 

 Thank you, 

 Anne 


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: The reading tableau of a partition

2013-04-12 Thread Andrew Mathas
Hi Travis,

What confused me is that the example in the documentation seems to say that 
the reading tableau for the *partition* (3,2,1) should be
1 4 6
2 5
3
whereas the example in the doc-test says that it is
1 3 6
2 5
4
These two tableaux are different.

I need the first of these tableaux and I thought that this is what 
reading_tableau() was supposed to return. This isn't a big deal for me 
because I can get this tableau easily a different way. 

All these concerns aside, however, I am still confused by the documentation 
as it the example contained in the help for reading_tableau seems to 
contradict what the function actually does. Notice that this a method for a 
partition which returns a tableau -- there are no permutations in sight 
here.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] The reading tableau of a partition

2013-04-10 Thread Andrew Mathas
Good Morning!

I have been distracted from sage for quite some time but this morning I 
started playing again and I came across the *reading_tableau *method of a 
partition. The documentation for this method reads:

Return the reading tableau of the reading word under the
Robinson-Schensted correspondence of the (standard) tableau `T` 
labeled
down (in English convention) each column to the shape of ``self``.

For an example of the tableau `T`, consider the partition
`\lambda = (3,2,1)`, then we have::

1 4 6
2 5
3

For more, see :func:`~sage.combinat.rsk.RSK()`.

EXAMPLES::

sage: Partition([3,2,1]).reading_tableau()
[[1, 3, 6], [2, 5], [4]]

The example in the text and the example that is doc-test appear to 
disagree. My guess is that the example in the text is what is expected. Is 
this right?  [In 5.8 the behaviour is as in the doc-test.]

I suspect that this may have changed when partitions were made to play 
nicely with categories as I think that the order in which the partitions 
are generated may have changed then.

All this aside, if some one can confirm that this is a bug then I will file 
a ticket, and probably even a patch.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: Upcoming Sage workflow

2013-04-01 Thread Andrew Gainer-Dewar
I for one am delighted to hear about this plan!

As a newcomer to the Sage development community, I can say with some 
authority that the complexity of the development model is a huge barrier to 
entry. Heck, I still don't feel like I know for sure what I'm supposed to 
do with new code, and sometimes I'm not even sure which *repository* I 
should be interacting with. Moving Sage development to a DVCS branching 
model will be a terrific move forward for people like me.

I personally happen to be familiar with git already, so that's an extra 
bonus, but the rationalization of the community development model is (I 
think) the real prize here. Bravo, and cheers to the development team!

--Andrew

On Saturday, March 30, 2013 3:52:16 AM UTC-5, Nicolas M. Thiery wrote:

 Dear Sage-Combinat developers, 

 It's been quite an intensive Sage Days here in Portland working on the 
 upcoming Sage workflow! Here is a first update. 

 The core feature is that the interaction with the Sage official 
 repository will be done through our version control system: updating 
 to the latest version, sending a modification, reviewing a ticket, 
 ... No more manual posting or downloading patches from trac or 
 extracting a patch from an old version of Sage and manually rebasing 
 it onto a new version. 

 In practice this clears the main hurdle that was preventing us to use 
 standard version control features like branches. Gone should be the 
 Sage-Combinat queue which was isolating us from the other Sage devs 
 and forcing tedious rebasing and bookkeeping. Instead, each project 
 will be able to develop itself on its own branch without perturbing 
 the others. Much more flexibility and productivity. 

 In practice, the team has chosen to base the new workflow on top of 
 the DVCS git instead of mercurial previously. I am not necessarily 
 convinced by this choice, but I respect it: by doing the work they 
 earn the right to do the technical choices. For issue tracking, we 
 will still be using trac; however trac will now be aware of the 
 underlying DCVS and most operations will be doable from the command 
 line, if not offline. 

 The other good news is that, thanks to the hard work the team put into 
 this during all week and before, this could be coming relatively 
 fast. I for myself will be trying out the new workflow in the coming 
 weeks, and maybe a transition period around Sage Days 49? 

 So that all is pretty exciting and now you all should be longing to 
 switch to the new workflow. So I can state the bad news :-) 

 - The transition will require work! Migrating the current patches, 
   playing with the new workflow, smoothing out all the rough edges, 
   training our team, writing documentation and scripts, ... 

 - Experience tells that a key feature for Sage's development is the 
   handling of dependencies between tickets. For various reason we need 
   that more than most other software projects. This means that we are 
   on our own here. We will need to discover ourselves the best (and 
   worst!) practices and develop appropriate tools on top of our DCVS. 

 - How well this all will work in practice is quite open: 
   - How easy will it be to keep an overview of what everybody is 
 working on? To detect conflicts and opportunities of 
 collaborations early on? 
   - How smooth will it be to jump between branches? E.g. will 
 reviewing a branch which is based on the very latest version of 
 Sage require a lot of recompilation time? 
   - How easy and robust will it be to join branches in order to 
 combine all the in-development features that we need for our 
 calculations? 

 Anyway, let's move forward. Work is already in progress to try to 
 tackle those. 

 Beside participating to the many design discussions, I spent most of 
 the week automatizing the migration of the queue from a linear stack 
 of patches to a relatively flat graph of independently branches (see 
 attached file). At this point, I can import most of the queue. A good 
 chunk of the work was to recover the dependencies the hard way. And 
 this is only about the syntactic dependencies. There certainly are 
 semantic dependencies that I did not detect: in fact except for a few 
 branches, I haven't even tried to run Sage, let alone run the tests! I 
 encoded the dependency information in the series file; I'll push it 
 later on this week-end. Please add any dependency information you may 
 be aware of! Oh, and it will help the transition as well if you create 
 tickets for your patches and name your patches accordingly. 

 More information on the transition will come later. For now, a big 
 kudo to those who work hard on this for us: Andrew, Benjamin, 
 Christopher, David, Julyan, Jeroen, Keshav, Keith, Robert, Timo. 

 Cheers, 
 Nicolas 
 -- 
 Nicolas M. Thi�ry Isil nth...@users.sf.net javascript: 
 http://Nicolas.Thiery.name/ 


-- 
You received this message because you

[sage-combinat-devel] Review request: Implement multiplicative inverses of cycle index series (#14350)

2013-03-25 Thread Andrew Gainer-Dewar
Hello!

I've written some quick code to compute the multiplicative inverses of
cycle index series when that is possible and added a _div_ method to
CycleIndexSeries. This code is available as a patch on Trac ticket
#14350 [1]. I'd very much appreciate any feedback on this code and/or
your support to bring it into Sage!

--Andrew

[1] http://trac.sagemath.org/sage_trac/ticket/14350



signature.asc
Description: OpenPGP digital signature


[sage-combinat-devel] Re: WARNING: Docbuilder patch (#6495) going into combinat

2013-02-19 Thread Andrew Mathas


 You might have to add the patches from the dependency tickets listed at 
 #6495.

 All of the patches listed on the ticket are already included BUT there is 
also a dependency on 5.7.beta2, so I guess that in the series file the 
guards should really be

trac_6495-part1-moving-files-link.patch #+5_8_beta0 
#-5_7_beta2
trac_6495-part2-everything-else.patch  #+5_8_beta0 
#-5_7_beta2
...

Unfortunately, the queue still won't apply to 5.6 even with these guards in 
place because later the patches which rely on #6495 now fail. 

As a result, I don't see an easy way to make the queue apply to both 5.6 
and 5.7.beta2+.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Help in unconfusing hg and myself

2013-02-17 Thread Andrew Mathas
Hello!

I'm trying to push patches for #13605-review and  #1410[34] but I seem to 
have screwed up where hg thinks home is.

I think that what I must have done is somehow got hg to sync with a local 
repository rather than with the queue. The reason that I think this might 
be the problem is that ``hg log`` returns a list of changesets with the 
user being me even though I have nothing so do with the associated patches.

I have tried ``sage -combinat qselect`` but I am not able to sync because:

 sage -hg qpop -a
abort: popping would remove an immutable revision
(see hg help phases for details)

Nothing in the help on phases or on phase helped. Trying ``qpop -f`` 
doesn't move the queue either.

Does anyone have any ideas as to how I can fix this?

Cheers,
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [sage-combinat-devel] Re: Permutations... again.

2013-02-09 Thread Andrew Mathas
 the 
 documentation doing sage -docbuild reference html (with again hundreds of 
 modified files again!!!)


I haven't found this to be so painful. I move my patch to the place in the 
queue where I want it. I then try to reapply the queue. If something beaks 
I'll rebase the patch if it is obvious, especially if the patch is a slow 
patch (I'm never entirely comfortable rebasing other people's patches as 
officially this is frowned upon but it's easy and it keeps the queue 
healthy I do it and hoped not be get flamed. If the rebase looks too tricky 
then I put a guard on the patch. Once the queue applies I check to see if 
sage builds and usually it does. Once or twice I have had to track down a 
patch that is breaking the queue, but the error messages combined with a 
grep of the patch directory often identifies the culprit quite quickly.

Once a horribly broke the queue. When it became clear that I couldn't fix 
it quickly I posted on sage-combnat for suggestions ad the issue was soon 
resolved.

I agree that it would be good to make this process more efficient. Some are 
saying that the move to git will fix this (this is not reallty clear as 
some of this posts make it sound like git will even write the code for us). 
There was also a recent suggestion to have different themes in the 
combinat queue. Perhaps this would be an improvement. 

By in large, however, I think that the currently workflow is OK. If 
anything, once you get use to using hg, I think that the main issue is the 
(volunteer) review process. So far this has been ok for me (that Travis!), 
but I have a few patches sitting off the queue which may not be so lucky.

Cheers,
Andrew


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Bug in CombinatorialObject?

2013-02-09 Thread Andrew Mathas
Hi,

I came across this today:

sage: Partition(1)
Traceback (most recent call last)
...
TypeError: 'sage.rings.integer.Integer' object is not iterable
sage: Tableau(1)
Traceback (most recent call last)
...
TypeError: 'sage.rings.integer.Integer' object is not iterable

Even though in both cases the input is clearly garbage, I think that this 
is a bug because rather than failing ungracefully like this I think that a 
ValueError should be raised with an error message identifying the garbage 
input. (For what it's worth, I came across this when this error broke some 
of my code which was expecting a ValueError in such situations. Of course, 
I could also trap a TypeError and maybe another 20 possibilities but it 
would be better if I knew what error to expect.)

In both cases, the source of this problem iis that in 
CombinatorialObject.__init__ we have

if isinstance(l, list):
self._list = l
else:
self._list = list(l)

but it is never checked  that ``l`` can be turned into a list. On top of 
this, Tableau(), Partition() -- and I suspect many others -- never check to 
see if their calls to CombinatorialObject.__init__ (and Element.__init__) 
actually work. If CombinatorialObject.__init__ raises a ValueError I can 
live with the latter.

Please let me know if you think this is not a bug. If the consensus is that 
this is a bug the I will open a ticket and post a patch sometime next week.

Cheers,
Andrew







-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




[sage-combinat-devel] Re: Bug in CombinatorialObject?

2013-02-09 Thread Andrew Mathas


On Sunday, 10 February 2013 03:37:01 UTC+11, Simon King wrote:

 Hi Anne, 

 On 2013-02-09, Anne Schilling an...@math.ucdavis.edu javascript: 
 wrote: 
  Please let me know if you think this is not a bug. If the consensus is 
 that this is a bug the I will open a ticket and post a patch sometime next 
 week. 
  
  Yes, this looks like a bug. 

 I don't think so. A ValueError should be raised on wrong values of the 
 right type, and a TypeError should be raised on arguments of wrong type. 
 This is the case here, and this is also the case in many other 
 occasions, such as: 
   sage: P.x,y = ZZ[] 
   sage: P(1/2) 
   Traceback (most recent call last): 
   ... 
   TypeError: Could not find a mapping of the passed element to this ring. 

 So, no bug, but a behaviour that is consistent with the rest of Sage. 


I misdescribed how I came across the error. It is:

sage: 1 in Tableaux()
Traceback (most recent call last) 
...
TypeError: 'sage.rings.integer.Integer' object is not iterable

which I think is definitely a bug.

Simon is saying above that this is not a bug in CombinatorialObject because 
a TypeError is the right error to raise, but I think that this misses the 
point: I think that CombinatorialObject should raise an error when it gets 
bad input rather than letting something else fail later as a consequence. 
Whether it should raise a TypeError or a ValueError is a separate issue.

Cheers,
Andrew

ps. Blizzards nothwithstanding, I hope to be in ICERM. My plane leaves 
later today:)

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [sage-combinat-devel] Partition and tableau options in #13605

2013-01-29 Thread Andrew Mathas
Hi Anne,

Thanks for your comments!

Wouldn't it suffice to have a deprecation for sage.combinat.partition in 
 /combinat/partition.py and have an alias there to 
 sage.combinat.partition.partition. 
 That would hopefully not be too much deprecation work at all since the UI 
 does 
 not change. 


Given the dearth of replies, it is probably not worth the effort to 
rearrange the code as several files would be affected...but in any case, I 
couldn't see a way to deprecate a whole module like this. How do you do it?

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-combinat-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [sage-combinat-devel] Sage-combinat won't run with #12940 applied

2013-01-24 Thread Andrew Mathas


On Thursday, 24 January 2013 20:31:36 UTC+11, Anne Schilling wrote:

 Perhaps it should be disabled since *everyone* will have to remove those 
 files (which is annoying). I am not sure. 


Following Hugh's hint, I found that 
sage -sync-build  
took care of the problem.

A

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/maFK-VHmLBYJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



[sage-combinat-devel] Sage-combinat won't run with #12940 applied

2013-01-23 Thread Andrew Mathas
Hi All, 

I have just disabled #12940 because when 
trac_12940_affine_permutations-td.patch is applied and you start sage you 
hit the error:

*snip*
--- 26 from affine_permutations import AffinePermutationGroup
  27 
  28 #PerfectMatchings

ImportError: cannot import name AffinePermutationGroup
Error importing ipy_profile_sage - perhaps you should run %upgrade?
WARNING: Loading of ipy_profile_sage failed.

With #12940 out of the queue, everything applies, builds and runs so I have 
disabled this patch.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/Z55Xi2hU8YYJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Sage-Combinat poster

2013-01-14 Thread Andrew Mathas
Thanks Nicolas! The poster looks good.

Andrew

On Monday, 14 January 2013 07:50:55 UTC+11, Nicolas M. Thiery wrote:

 Hi Anne, 

 On Sun, Jan 13, 2013 at 09:21:10AM -0800, Anne Schilling wrote: 
  Very nice! 

 Thanks! 

  I like that you put the car with the tail. 

 :-) 

 I should add Andrew to the contributors to the poster! 

  One comment: perhaps it would be a good idea to put sagetex on the 
  server, so that people without it can still latex the source. 

 They are already in the poster's directory, so in principle the 
 compilation should work as is (it worked for Florent). 

 Cheers, 
 Nicolas 
 -- 
 Nicolas M. Thi�ry Isil nth...@users.sf.net javascript: 
 http://Nicolas.Thiery.name/ 


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/aSmyHR4QZoYJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



[sage-combinat-devel] Problem with CombinatorialFreeModule when queue is applied

2013-01-07 Thread Andrew Mathas
Hi Everyone,

Something in the sage-combinat queue appears to be break 
CombinatorialFreeModule.

Using the unpatched version of sage 5.5 I get the following expected 
behaviour:

--
| Sage Version 5.5, Release Date: 2012-12-22 |
| Type notebook() for the browser-based notebook interface.|
| Type help() for help.|
--
sage: CombinatorialFreeModule(QQ, [4,3,2,1]).sum_of_terms([(i,i) for i in 
[4,3,2,1]])
B[1] + 2*B[2] + 3*B[3] + 4*B[4]

If I now apply the complete queue and try exactly the same command then we 
get the AttributeError below.

It's late in Sydney so I haven't tracked down the patch which is causing 
the problem...but my guess is that (fixing and) unguarding 
trac_7980-multiple-realizations-nt.patch might help?

Cheers,
Andrew

---
The broken CombinatorialFreeModule call:

--
| Sage Version 5.5, Release Date: 2012-12-22 |
| Type notebook() for the browser-based notebook interface.|
| Type help() for help.|
--
Loading Sage library. Current Mercurial branch is: combinat
sage: CombinatorialFreeModule(QQ, [4,3,2,1]).sum_of_terms([(i,i) for i in 
[4,3,2,1]])
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (151, 0))

---
AttributeErrorTraceback (most recent call last)

/usr/local/src/sage/sage-5.5/devel/sage-combinat/sage/combinat/ipython 
console in module()

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/IPython/Prompts.pyc
 
in __call__(self, arg)
550 
551 # and now call a possibly user-defined print mechanism
-- 552 manipulated_val = self.display(arg)
553 
554 # user display hooks can change the variable to be 
stored in

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/IPython/Prompts.pyc
 
in _display(self, arg)
576 return IPython.generics.result_display(arg)
577 except TryNext:
-- 578 return self.shell.hooks.result_display(arg)
579 
580 # Assign the default display method:

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/IPython/hooks.pyc
 
in __call__(self, *args, **kw)
139 #print prio,prio,cmd,cmd #dbg
140 try:
-- 141 ret = cmd(*args, **kw)
142 return ret
143 except ipapi.TryNext, exc:

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/sage/misc/pretty_console_print.pyc
 
in result_display(ip_self, obj)
110 # IPython's default result_display() uses the 
IPython.genutils.Term.cout stream.
111 # See also local/lib/python2.6/site-packages/IPython/hooks.py.
-- 112 f_tmp( ip_self, obj )
113 
114 def displayhook( obj ):

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/sage/misc/pretty_console_print.pyc
 
in pretty_display(ip_self, obj)
100 # IPython's default result_display() uses the 
IPython.genutils.Term.cout stream.
101 # See also local/lib/python2.6/site-packages/IPython/hooks.py.
-- 102 print  IPython.genutils.Term.cout, pretty_console_repr( obj )
103 
104 f_tmp = pretty_display

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/sage/misc/pretty_console_print.pyc
 
in pretty_console_repr(elem)
142 return pretty_repr_set( elem )
143 if hasattr( elem, __pretty_repr__ ):
-- 144 return elem.__pretty_repr__()
145 return PrettyConsoleRepr( repr(elem).splitlines() )
146 

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/sage/misc/pcp_monkey_patch.pyc
 
in __pretty_repr__(self)
164 all_atomic = True
165 for (monomial,c) in terms:
-- 166 b = repr_monomial(monomial) # PCR
167 if c != 0:
168 break_points = []

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/sage/misc/pcp_monkey_patch.pyc
 
in _pretty_repr_term(self, el)
 71  o
 72 
--- 73 if el == self.one_basis():
 74 return PrettyConsoleRepr( [1])
 75 pref = PrettyConsoleRepr( [self.prefix()] )

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/sage/structure/parent.so
 
in sage.structure.parent.Parent.__getattr__ (sage/structure/parent.c:6081)()

/usr/local/src/sage/sage-5.5/local/lib/python2.7/site-packages/sage/structure/misc.so

[sage-combinat-devel] Re: conflicts in 5.5.rc0

2012-12-21 Thread Andrew Mathas
Sorry, that's be me. Fixed now.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/IjdTpTChI6cJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] partitions

2012-12-14 Thread Andrew Mathas
Hi Alex,

The best/easiest way is probably to use the max_slope option for Partitions:

sage: Partitions(16,max_slope=-1)[:]
[[16], [15, 1], [14, 2], [13, 3], [13, 2, 1], [12, 4], [12, 3, 1], [11, 5], 
[11, 4, 1], [11, 3, 2], [10, 6], [10, 5, 1], [10, 4, 2], [10, 3, 2, 1], [9, 
7], [9, 6, 1], [9, 5, 2], [9, 4, 3], [9, 4, 2, 1], [8, 7, 1], [8, 6, 2], 
[8, 5, 3], [8, 5, 2, 1], [8, 4, 3, 1], [7, 6, 3], [7, 6, 2, 1], [7, 5, 4], 
[7, 5, 3, 1], [7, 4, 3, 2], [6, 5, 4, 1], [6, 5, 3, 2], [6, 4, 3, 2, 1]]

Cheers,
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/muZq70Aamw4J.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] partitions

2012-12-14 Thread Andrew Mathas
Oops, sorry I didn't see your length requirement:

sage: Partitions(16,max_slope=-1, length=4)[:]
[[10, 3, 2, 1], [9, 4, 2, 1], [8, 5, 2, 1], [8, 4, 3, 1], [7, 6, 2, 1], [7, 
5, 3, 1], [7, 4, 3, 2], [6, 5, 4, 1], [6, 5, 3, 2]]
sage: Partitions(10,max_slope=-1, length=3)[:]
[[7, 2, 1], [6, 3, 1], [5, 4, 1], [5, 3, 2]]

Andrew

On Friday, 14 December 2012 20:15:49 UTC+11, Andrew Mathas wrote:

 Hi Alex,

 The best/easiest way is probably to use the max_slope option for 
 Partitions:

 sage: Partitions(16,max_slope=-1)[:]
 [[16], [15, 1], [14, 2], [13, 3], [13, 2, 1], [12, 4], [12, 3, 1], [11, 
 5], [11, 4, 1], [11, 3, 2], [10, 6], [10, 5, 1], [10, 4, 2], [10, 3, 2, 1], 
 [9, 7], [9, 6, 1], [9, 5, 2], [9, 4, 3], [9, 4, 2, 1], [8, 7, 1], [8, 6, 
 2], [8, 5, 3], [8, 5, 2, 1], [8, 4, 3, 1], [7, 6, 3], [7, 6, 2, 1], [7, 5, 
 4], [7, 5, 3, 1], [7, 4, 3, 2], [6, 5, 4, 1], [6, 5, 3, 2], [6, 4, 3, 2, 1]]

 Cheers,
 Andrew


-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/p637RNmLhOcJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Re: problems with documentation build

2012-12-13 Thread Andrew Mathas
I am using macosx 10.7.5 and firefox 17.0.1 and the page displays properly 
for me. So the problem is also operating system dependent.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/0NEjtuUHIx0J.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Partition options and cleanup patch

2012-12-11 Thread Andrew Mathas



 I will do reverse lex (lex order read from right to left) and reverse 
 dominance (which I presume is partial sums from right to left). However 
 what is reverse containment?


AH, I guess that  reverse lexicographic is ambiguous as it could mean 
either reading the words in the reverse order or simply reversing the 
partial order. 

For me, and what I meant with all of these orderings, is simply taking the 
same order but in the reverse order: 
x \le_{rev} y  == y \le x
Of course, this is a very trivial difference but it is still a significant 
one in terms of the poset and the order in which the partitions are 
generated. In my work, the reverse orderings in this sense play a very 
important role: they reflect contragredient duality and also the duality 
arising from tensoring with the sign representations. 

I have never seen an application of the right to left lexicographic 
ordering, although I have this vague feeling that it appears in Stanley's 
book (but then, so do most things!:).  I don't remember ever seeing the 
right to left dominance order...

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/YN8MMBbDsgsJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Partition options and cleanup patch

2012-12-10 Thread Andrew Mathas
Hi Travis,

I have twos questions about the order options that have appeared in your 
partition clean-ups.

The easy one first: should the reverse ordering also exist? That is, 
reverse lex, reverse dominance, reverse containment? If people agree 
that it is worth including these explicitly it would be good if there was a 
systematic way to organise all of the orderings...will let you know if I 
come up with something.

The second question is harder: is it intended that, ultimately, the order 
in which the partitions are generated by the iterator will be compatible 
with the order on the parent? If the ordering is part of the parent then I 
think that this is a reasonable expectation but, of course, it would be 
painful implement. 

What do people think is the ideal way this should work for any parent 
that comes equipped with an (optionable) ordering?

Cheers,
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/wjZucoM2tB8J.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Partition options and cleanup patch

2012-12-10 Thread Andrew Mathas


 Basically you would like the iterator to return a linear extension of the 
 ordering? That might be possible if by considering the poset given by 
 the partial order. 

 Yes, that's right. This is most sensible for total orderings, but for 
partial orders the iterator could return a non-canonical (and presumably 
not completely guaranteed) linear extension.

I think that this would be a useful feature, unfortunately, to do it 
efficiently would probably require separate iterators for each ordering. 
Throwing efficiency to the wind, you could of course generate any 
FiniteEnumerateSet component and then sort this using the already 
implemented comparision methods.

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/jRCWedLaWS8J.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



[sage-combinat-devel] Re: End(CombinatorialFreeModule)?

2012-12-06 Thread Andrew Mathas
I think that without some extra information this is bound to be difficult. 
For the modules that I am working with at the moment I can do this and I am 
in the process of making this more explicit.

The modules that I am working with have the following features which make 
this tractable:

   - they are cyclic: G = zA for some z (they are all A-modules)
   - (more importantly) I have a presentation for the modules 
   - the presentation that I have is very efficient in the sense that if 
   I am looking for maps f:G-H then the dimension of the vector subspace of H 
   which can contain f(z) is quite small. This makes it tractable to look at 
   the kernel of the modules relations on this subspace to find a basis for 
   Hom_A(G,H).

Currently, I have code which computes a basis for Hom_A(G,H) and returns 
sage morphisms f:G-H which you can apply to either arbitrary elements of G 
or to the indexing set of the basis for G. Next I plan to have the the code 
automatically write compositions f*g in terms of the distinguished bases 
that I have for these hom-spaces.

As a special case, of course, I can compute End_A(G) an work with this. 
(Although for my examples this is only interesting in characteristic 2.)

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/HeFrlWzYFXQJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Re: combinat out again?

2012-12-06 Thread Andrew Mathas


 Are they related to Sage combinatorics research? 


Of course, otherwise I wouldn't ask. (I'm computing the graded dimensions 
of simple modules and the graded dimensions of hom-spaces (for some 
reducible modules).)

Andrew 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/YgHntXOrxdYJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Constructing homs

2012-12-05 Thread Andrew Mathas


 - Matrices with rows and columns indexed by whatever objects 

 
I have a (very) rough prototype for this as it is one of the things that I 
need. Rather than matrices, however, I am thinking of making the underlying 
object just an array/table as for my applications the full matrix is often 
not known and more entries are added as the calculations proceed whereas 
matrices are immutable. Perhaps I should finally learn about these 
cloneable arrays...


 - Morphisms between two finite dimensional free modules G and H (using the 
 above) 
   with arithmetic, ... 


For what I am doing at the moment the following would be useful:

   - MorphismOfCombinatorialFreeModule
   - HomSpaceWthBasis
   - MorphismFromCyclicModule 

and graded versions of all of the above. I mainly care about (graded) homs 
between CombinatorialFreeModules and i f is such a hom, and t indexes a 
basis element of G then I'd like to have f(t)=f(G(t)). I have a hacked 
version of this, combining the three categories above, for my modules, 
without that many features. I'll have make this palatable for human 
consumption before I release this code:)
 

   I.e. the analogue of sage.modules.matrix_morphism.MatrixMorphism. 

 - A parent for those. 

   I.e the analogue of sage.modules.free_module_homspace.HomSpace 

 What would be missing would be the shortcuts so that we could just do 
 Hom(G,H), as well as generic methods that could be shared between. 


I think that I still don't really undestand what Hom(G,H) represents inside 
sage. Is it simply supposed to be the parent for all homs from G to H? 

Typically, it seems to me that Hom(G,H) doesn't -- and, in fact, can't -- 
do very much: if G and H are (free) modules then Hom(G,H) is just a bunch 
of matrices, which is easy.  But if G and H have any extra structure which 
these homs should preserve then there often won't even be an algorithm for 
computing Hom(G,H), and in many cases there won't even be a practical 
algorithm for determining when a linear map belongs to Hom(G,H). So what is 
Hom(G,H) suppose to do?

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/29S9CF9anMwJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



[sage-combinat-devel] Re: Constructing homs

2012-12-05 Thread Andrew Mathas


 huh? 
 sage: m=matrix([[1,2],[3,4]]) 
 sage: m 
 [1 2] 
 [3 4] 
 sage: m[1,1]=100 
 sage: m 
 [  1   2] 
 [  3 100] 
 sage: 


Yes, you're right. My issue with matrices is that I can't write something 
like:

sage: matrix([[1,0],[None,0]])

(Unless, of course, you want to correct me again:)

A.
 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/6Qm7YHqf5g8J.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Re: Constructing homs

2012-12-05 Thread Andrew Mathas
Here's a related question: suppose I have an object G in sage. Is there a 
correct way to ask G if is it a CombinatorialFreeModule? I can check for

if hasattr(G,'_basis_keys'): ...

but I would have thought that there was a better way to do this...

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/8axqoe8vKCQJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



[sage-combinat-devel] Re: Constructing homs

2012-12-05 Thread Andrew Mathas
Yes, I worked it out and deleted my question bot before you replied it 
seems. 

Thanks anyway,
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/wWxrvtdzHRoJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



[sage-combinat-devel] Constructing homs

2012-12-04 Thread Andrew Mathas
Good morning! I have been trolling through the manuals trying to understand 
how to construct a basis for a hom-space but I keep going around in 
circles. Can anyone help me out?

I have two CombinatorialFreeModules G and H which are modules for some 
algebra A. (The algebra A is not implemented in sage, although its action 
on G and H is.) The module G is cyclic, generated by z say, so every 
homomorphism f:G-H is determined by f(z). The basis of G takes the form 
{G(t) = z.psi( t )}, where t runs through a set of tableaux. (In case you 
are interested, G and H are Specht modules.) That is, the psi method tells 
me how to write G(t)=z*\phi_t so that f(G(t))=f(z).psi(t) as H also has a 
psi method.

I can construct a set of elements {h_1,...,h_d} in H such that the maps 
{f_1,,f_d} determined by f_i(z)=h_i, for 1\le i\le d, is a basis for 
Hom_A(G,H).

My questions are: how do I construct the maps f_i in sage and how do I tell 
sage that these maps are a basis of Hom_A(G,H)? 

Cheers,
Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/AacB6s8D0U8J.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Constructing homs

2012-12-04 Thread Andrew Mathas
Thanks Nicolas. I appreciate your efforts in putting the category framework 
in place! It's beginning to grow on me:) Depending how far my explorations 
go I may end up adding some of the missing pieces...

A.

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/5wsvHl8VwcYJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] combinat out again?

2012-12-04 Thread Andrew Mathas
Is there any news on when sage-combinat is likely to be up again?

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/SZXjOtU8BhoJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



[sage-combinat-devel] Re: tableaux in 5.4.1

2012-11-30 Thread Andrew Mathas
Hi Anne,

The problem appears after trac_13605-partition_options-ts.patch is applied.

Andrew

--

--
| Sage Version 5.4.1, Release Date: 2012-11-15   |
| Type notebook() for the browser-based notebook interface.|
| Type help() for help.|
--
Loading Sage library. Current Mercurial branch is: combinat
sage: StandardTableaux(3).list() 
[[[1, 2, 3]], [[1, 3], [2]], [[1, 2], [3]], [[1], [2], [3]]]
sage: 
Exiting Sage (CPU time 0m0.03s, Wall time 0m25.64s).
combinat: sage -hg qpush
applying trac_13605-partition_options-ts.patch
now at: trac_13605-partition_options-ts.patch
combinat: sage -br
...
--
| Sage Version 5.4.1, Release Date: 2012-11-15   |
| Type notebook() for the browser-based notebook interface.|
| Type help() for help.|
--
Loading Sage library. Current Mercurial branch is: combinat
sage: StandardTableaux(3).list() 
ERROR: An unexpected error occurred while tokenizing input
The following traceback may be corrupted or invalid
The error message is: ('EOF in multi-line statement', (505, 0))

---
NotImplementedError   Traceback (most recent call last)

/usr/local/src/sage/sage-5.4.1/devel/sage-combinat/sage/combinat/ipython 
console in module()

/usr/local/src/sage/sage-5.4.1/local/lib/python2.7/site-packages/sage/combinat/tableau.pyc
 
in list(self)
   2566 NotImplementedError
   2567 
- 2568 raise NotImplementedError
   2569 
   2570 def __iter__(self):

NotImplementedError: 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/k-UpGbWMyOoJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



[sage-combinat-devel] Re: tableaux in 5.4.1

2012-11-30 Thread Andrew Mathas
Sorry, correction: there are currently two problems with the queue:

   - trac_13605-partition_options-ts.patch causes StandardTableaux() and 
   friends to die.
   - finite_semigroup-nt.patch is causing the weakref warnings. (In fact, 
   sage won't run when the queue is applied up to this patch but applying the 
   next patch in the queue fixes this.)

Btw, rebuilding sage after moving up and down the queue is taking a huge 
amount of time now. Does anyone know why?

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/2utdr9B9giQJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Re: Permutations... again.

2012-11-24 Thread Andrew Mathas


 YES, but if you were working with the Sage TRAC server the patches would 
 HAVE to be finalised. Please please, that's the whole point !

 Nathan, I think that this is the whole point that you are not seeing: we 
do work with sage and we do use trac. Extensively. Personally, I want my 
patches posted to trac as quickly as possible and merged into sage. 

Andrew

ps As I am sure you know, putting a patch up on trac in no way guarantees 
that it will ever be finalised. 

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/m7NE3uytN6YJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



Re: [sage-combinat-devel] Re: Permutations... again.

2012-11-23 Thread Andrew Mathas
H Nathan,

I share your frustrations. I think we all do, to some extent. It would be 
very nice if all of these problems, major an minor, could be fixed but the 
reality is that until some one cares enough about a particular problem 
then, as you say, it isn't going to happen. I think this is called 
open-source.

The absent or poor documentation is what I like least about sage. It's 
annoying that quite a lot of basic things need to be implemented and that 
others have been done badly. I have fixed the things that I really need, or 
worked around them. The responsiveness of sage-devel and sage-combinat is 
nice.

I switched to sage because it is the best platform that I found. Sure, many 
things could be better, but I don't like gap4, magma, malple, mathematica, 
matlab, C, ... In spite of its many warts and problems I do like writing in 
python and working with sage. Using sage, I have been able to compute 
things much more quickly and painless than before when I was writing in 
gap. I'm happy with that.

Does anyone have any *concrete suggestions* for how we could improve the 
development model? There is definitely room for improvement but short of 
paying someone I don't have any good suggestions. The problem is that what 
I want implemented is often different to what everyone else wants, but 
thankfully there is some overlap and so some give and take. Ideas anyone?

Andrew

-- 
You received this message because you are subscribed to the Google Groups 
sage-combinat-devel group.
To view this discussion on the web visit 
https://groups.google.com/d/msg/sage-combinat-devel/-/eSgox25xV_cJ.
To post to this group, send email to sage-combinat-devel@googlegroups.com.
To unsubscribe from this group, send email to 
sage-combinat-devel+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sage-combinat-devel?hl=en.



  1   2   >