Opened 6 years ago

Closed 6 years ago

#15309 closed defect (fixed)

Symmetric group algebra creating algebra generators using _element_constructor_

Reported by: tscrim Owned by: sage-combinat
Priority: major Milestone: sage-5.13
Component: coercion Keywords:
Cc: sage-combinat, SimonKing, nthiery Merged in: sage-5.13.beta2
Authors: Travis Scrimshaw Reviewers: Darij Grinberg
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Description (last modified by tscrim)

When calling the algebra_generators(), SymmetricGroupAlgebra ends up setting the _coercions_used flag to True. This prevents us from creating coercions dynamically.

For example:

sage: S3 = SymmetricGroupAlgebra(QQ, 3)
sage: S3._coercions_used
False
sage: S3.algebra_generators()
[[2, 1, 3], [2, 3, 1]]
sage: S3._coercions_used
True

Apply: trac_15309-sga_alg_gens_fix-ts.patch

Attachments (2)

trac_15309-more-dg.patch (1.6 KB) - added by darij 6 years ago.
changes in a similar vein for (minor?) speedup
trac_15309-sga_alg_gens_fix-ts.patch (2.5 KB) - added by tscrim 6 years ago.

Download all attachments as: .zip

Change History (12)

comment:1 Changed 6 years ago by tscrim

This may not be the only instance of something like this happening, but it's one I found. In some respect, this is just a stopgap for https://groups.google.com/forum/?fromgroups=#!topic/sage-devel/pH-97DE41wA.

comment:2 Changed 6 years ago by tscrim

  • Status changed from new to needs_review

comment:3 Changed 6 years ago by darij

Did you miss some dependency or export the wrong phase?

darij@travis-virtualbox:~/sage-5.13.beta0$ ./sage -bt devel/sage-main/sage/combinat/symmetric_group_algebra.py 

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


Installing c_lib
scons: `install' is up to date.
Updating Cython code....
Finished compiling Cython code (time = 4.18366098404 seconds)
running install
running build
running build_py
copying sage/combinat/symmetric_group_algebra.py -> build/lib.linux-i686-2.7/sage/combinat
running build_ext
Executing 0 commands (using 1 thread)
Time to execute 0 commands: 0.00317311286926 seconds
Total time spent compiling C/C++ extensions:  0.187358856201 seconds.
running install_lib
copying build/lib.linux-i686-2.7/sage/combinat/symmetric_group_algebra.py -> /home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage/combinat
byte-compiling /home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage/combinat/symmetric_group_algebra.py to symmetric_group_algebra.pyc
running install_egg_info
Removing /home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage-0.0.0-py2.7.egg-info
Writing /home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage-0.0.0-py2.7.egg-info
Running doctests with ID 2013-10-24-19-33-22-3ec85cf5.
Doctesting 1 file.
sage -t devel/sage-main/sage/combinat/symmetric_group_algebra.py
**********************************************************************
File "devel/sage-main/sage/combinat/symmetric_group_algebra.py", line 447, in sage.combinat.symmetric_group_algebra.SymmetricGroupAlgebra_n.algebra_generators
Failed example:
    SymmetricGroupAlgebra(ZZ,5).algebra_generators()
Exception raised:
    Traceback (most recent call last):
      File "/home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 479, in _run
        self.execute(example, compiled, test.globs)
      File "/home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 838, in execute
        exec compiled in globs
      File "<doctest sage.combinat.symmetric_group_algebra.SymmetricGroupAlgebra_n.algebra_generators[0]>", line 1, in <module>
        SymmetricGroupAlgebra(ZZ,Integer(5)).algebra_generators()
      File "/home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage/combinat/symmetric_group_algebra.py", line 474, in algebra_generators
        return [self.monomial(self._indices(a)), self.monomial(self._indices(b))]
      File "parent.pyx", line 761, in sage.structure.parent.Parent.__getattr__ (sage/structure/parent.c:6823)
      File "misc.pyx", line 251, in sage.structure.misc.getattr_from_other_class (sage/structure/misc.c:1606)
    AttributeError: 'SymmetricGroupAlgebra_n_with_category' object has no attribute '_indices'
**********************************************************************
File "devel/sage-main/sage/combinat/symmetric_group_algebra.py", line 461, in sage.combinat.symmetric_group_algebra.SymmetricGroupAlgebra_n.algebra_generators
Failed example:
    S3.algebra_generators()
Exception raised:
    Traceback (most recent call last):
      File "/home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 479, in _run
        self.execute(example, compiled, test.globs)
      File "/home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 838, in execute
        exec compiled in globs
      File "<doctest sage.combinat.symmetric_group_algebra.SymmetricGroupAlgebra_n.algebra_generators[4]>", line 1, in <module>
        S3.algebra_generators()
      File "/home/darij/sage-5.13.beta0/local/lib/python2.7/site-packages/sage/combinat/symmetric_group_algebra.py", line 474, in algebra_generators
        return [self.monomial(self._indices(a)), self.monomial(self._indices(b))]
      File "parent.pyx", line 761, in sage.structure.parent.Parent.__getattr__ (sage/structure/parent.c:6823)
      File "misc.pyx", line 251, in sage.structure.misc.getattr_from_other_class (sage/structure/misc.c:1606)
    AttributeError: 'SymmetricGroupAlgebra_n_with_category' object has no attribute '_indices'
**********************************************************************
1 item had failures:
   2 of   9 in sage.combinat.symmetric_group_algebra.SymmetricGroupAlgebra_n.algebra_generators
    [222 tests, 2 failures, 5.22 s]
----------------------------------------------------------------------
sage -t devel/sage-main/sage/combinat/symmetric_group_algebra.py  # 2 doctests failed
----------------------------------------------------------------------
Total time for all tests: 5.3 seconds
    cpu time: 3.2 seconds
    cumulative wall time: 5.2 seconds

comment:4 Changed 6 years ago by tscrim

Hey Darij,

I forgot the dependency on #15305, but with the new version I've commuted this past it.

Best,
Travis

Changed 6 years ago by darij

changes in a similar vein for (minor?) speedup

comment:5 Changed 6 years ago by darij

Nice change (doubles the speed beyound fixing the bug). What do you say about the similar changes I suggest? (If they don't apply, please let me know -- I'm working on top of #15174.)

Changed 6 years ago by tscrim

comment:6 Changed 6 years ago by tscrim

  • Description modified (diff)

Hey Darij,

I'm somewhat surprised I get a 2x speedup; that's good to know for future reference.

I've folded in your review patch (it applied with some fuzz 2), but made one change. Instead of return self.monomial(self._one), I changed it to return self.one(). If you're happy with the patch, then it's positive review.

Best,
Travis

For patchbot:

Apply: trac_15309-sga_alg_gens_fix-ts.patch​

comment:7 Changed 6 years ago by darij

  • Status changed from needs_review to positive_review

Hi Travis,

Positive review then! The fuzz was probably due to #15174, which I'll now rebase over this.

Best regards,
Darij

comment:8 Changed 6 years ago by tscrim

Thanks Darij.

comment:9 Changed 6 years ago by tscrim

  • Reviewers set to Darij Grinberg

comment:10 Changed 6 years ago by jdemeyer

  • Merged in set to sage-5.13.beta2
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.