Opened 7 years ago

Closed 6 years ago

#15560 closed enhancement (fixed)

Add methods to rigged configurations

Reported by: tscrim Owned by: sage-combinat
Priority: major Milestone: sage-6.3
Component: combinatorics Keywords: rigged configurations
Cc: sage-combinat, aschilling Merged in:
Authors: Travis Scrimshaw Reviewers: Anne Schilling
Report Upstream: N/A Work issues:
Branch: 1e15993 (Commits) Commit: 1e15993eed4b02fed79649aca88f6a6a6d7d843b
Dependencies: #13872 #15882 Stopgaps:

Description

Adds some extra methods to rigged configurations: the action of the left column splitting and the basic operation in the bijection with tensor product of KR tableaux.

Change History (38)

comment:1 Changed 7 years ago by tscrim

  • Branch set to public/combinat/rigged_configurations/methods-15560

comment:2 Changed 7 years ago by git

  • Commit set to 365b5201a63a1d03ee2e0669fb6e82661f2bc2f3

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

365b520Added methods to RC's.
c1cda2bMerge branch 'public/combinat/rigged_configurations/bijections-13872' into public/combinat/rigged_configurations/improvements
85b6446Reorded all.py to match original (so fewer changes).
a51b39fFixed minor typo in cobminat/crystals/letters.pyx.
17a04d7Added deprecatd classes back with warnings.
538c594Merge branch 'master' into public/combinat/rigged_configurations/bijections-13872
29c9d34[FIXUP] 5.13.beta5: update git specific files
0aa3fed5.13.beta5
8f2b1365.13.beta5
42bc8b6some edits to docs

comment:3 Changed 7 years ago by tscrim

  • Status changed from new to needs_review

comment:4 Changed 7 years ago by git

  • Commit changed from 365b5201a63a1d03ee2e0669fb6e82661f2bc2f3 to 0050d2e4bbeb579248437feaaf363d210a92a83f

Branch pushed to git repo; I updated commit sha1. New commits:

0050d2eForbade spinor cases.
21bf27fMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560

comment:5 Changed 7 years ago by vbraun_spam

  • Milestone changed from sage-6.1 to sage-6.2

comment:6 Changed 7 years ago by git

  • Commit changed from 0050d2e4bbeb579248437feaaf363d210a92a83f to bb910cca68181f5cfaf7eab5421f488592f4c195

Branch pushed to git repo; I updated commit sha1. New commits:

8bac0b2Merge branch 'develop' into public/combinat/rigged_configurations/methods-15560
e17c7c8Merge branch 'develop' into public/combinat/rigged_configurations/methods-15560
fd8b9c0Merge branch 'develop' into public/combinat/rigged_configurations/methods-15560
c7c399eMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560
d9a96c2Merge branch 'develop' into public/combinat/rigged_configurations/methods-15560
3ccd75dMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560
bf56c7fMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560
bb910ccMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560

comment:7 Changed 7 years ago by git

  • Commit changed from bb910cca68181f5cfaf7eab5421f488592f4c195 to 4695e88357ba2edac6f10127d8e4c7c6bb8c5d4a

Branch pushed to git repo; I updated commit sha1. New commits:

4695e88Implemented changes Anne and I discussed.

comment:8 follow-up: Changed 7 years ago by tscrim

Thanks in advance for doing the review.

comment:9 in reply to: ↑ 8 Changed 7 years ago by aschilling

Hi Travis,

Here are further comments:

+ If we are construction a rigged configuration from a rigged configuration
+ (say of another type) and we don't want to recompute the vacancy numbers,
+ we can use the ``use_vacancy_numbers`` to avoid the recomputation.

This is not a sentence. Perhaps you want "If we are constructing"?

Also, it would be great to add left_split as a method to KirillovReshetikhinTableaux? and possibly also the right_split method! This can be just done by using the bijection to rigged configurations, but it would be very handy to have these methods directly on KirillovReshetikhinTableaux? as well.

Thanks,

Anne

comment:10 Changed 7 years ago by aschilling

  • Status changed from needs_review to needs_work

comment:11 Changed 7 years ago by git

  • Commit changed from 4695e88357ba2edac6f10127d8e4c7c6bb8c5d4a to df3a9ebd23841479e05cd11b6a84d6807dfa3e4a

Branch pushed to git repo; I updated commit sha1. Last 10 new commits:

78489a6trac #15882: review (typos)
968f9f6Fixing broken links and other misc cleanup.
faa5507Fixed failing doctests.
207f38eFixed last doc errors.
007043bFixed failing doctests and some cleanup of classical_crystals.
6314a36Fixed doc of classical_crystals and added regular_crystals to doc.
ac1dcd5Merge branch 'public/combinat/crystals/catalog-15882' into public/combinat/rigged_configurations/methods-15560
2cc751eFixed doctest failures in rigged_configurations folder.
3be2a08Merge branch 'public/combinat/crystals/catalog-15882' into public/combinat/rigged_configurations/methods-15560
df3a9ebSome doctest fixes.

comment:12 Changed 7 years ago by tscrim

  • Dependencies changed from #13872 to #13872 #15882
  • Reviewers set to Anne Schilling
  • Status changed from needs_work to needs_review

Here's the major changes:

  • Added the Luzstig involution to (tensor products of) KR tableaux, KR crystals, and rigged configurations.
  • Added left/right splitting maps to (tensor products of) KR tableaux and rigged configurations. (The right splitting map is non-trivial on KR tableaux; look in type D4(1) at the B2,2 module generators.)
  • Moved opposition_automorphism() from the crystals category into Cartan types.
  • Fixed the typo noted above.

Best,
Travis

comment:13 Changed 7 years ago by git

  • Commit changed from df3a9ebd23841479e05cd11b6a84d6807dfa3e4a to e7e2ad537bb95324fe7c4806233bfd2295e96f3f

Branch pushed to git repo; I updated commit sha1. New commits:

b2b3fa6Merge branch 'develop' into public/combinat/crystals/catalog-15882
e7e2ad5Merge branch 'public/combinat/crystals/catalog-15882' into public/combinat/rigged_configurations/methods-15560

comment:14 Changed 7 years ago by git

  • Commit changed from e7e2ad537bb95324fe7c4806233bfd2295e96f3f to bc0a691b5b3eaa7b3b9c0be5736f2e358c4a5389

Branch pushed to git repo; I updated commit sha1. New commits:

d262371Merge branch 'develop' into public/combinat/rigged_configurations/methods-15560
6729c22Merge branch 'u/tscrim/q_dims' into public/combinat/crystals/catalog-15882
e9dd3a2Fixed doctests for q-dims.
d9e9370Merge branch 'develop' into public/combinat/crystals/catalog-15882
24216f8Merge branch 'develop' into public/combinat/crystals/catalog-15882
6328bf0Reworked the entry points to KR crystals.
a7f2e1eMoved the KR RiggedConfigurations to rigged_configurations.py.
8120e16Merge branch 'public/combinat/crystals/catalog' of trac.sagemath.org:sage into public/combinat/crystals/catalog-15882
bc0a691Merge branch 'public/combinat/crystals/catalog-15882' into public/combinat/rigged_configurations/methods-15560

comment:15 Changed 7 years ago by git

  • Commit changed from bc0a691b5b3eaa7b3b9c0be5736f2e358c4a5389 to 3fe79c76432fd685afc7337978c7de668ea5e47d

Branch pushed to git repo; I updated commit sha1. New commits:

e67176eMore changes to the catalog.
482ca9cFixed last bad link.
6402c54fixed some documentation issues
a596cddMerge branch 'public/combinat/crystals/catalog' of trac.sagemath.org:sage into public/combinat/crystals/catalog-15882
698ae7esome small changes to the documentation
eaf48a9Merge branch 'public/combinat/crystals/catalog' of trac.sagemath.org:sage into public/combinat/rigged_configurations/methods-15560
0942e81Fixed failing doctests.
3fe79c7Merge branch 'public/combinat/crystals/catalog' into public/combinat/rigged_configurations/methods-15560

comment:16 Changed 7 years ago by git

  • Commit changed from 3fe79c76432fd685afc7337978c7de668ea5e47d to 46a0d0af4c422f8fd7b11f334d6a814b8f1a16fb

Branch pushed to git repo; I updated commit sha1. New commits:

46a0d0aFixes for lusztig involution.

comment:17 Changed 7 years ago by vbraun_spam

  • Milestone changed from sage-6.2 to sage-6.3

comment:18 Changed 7 years ago by rws

  • Status changed from needs_review to needs_work

Based on 6.2beta1 it fails:

sage -t --long src/sage/combinat/rigged_configurations/rigged_configurations.py  # 1 doctest failed

comment:19 Changed 7 years ago by git

  • Commit changed from 46a0d0af4c422f8fd7b11f334d6a814b8f1a16fb to 695b0d9859d579d142b36551cc83fb04fd2c5585

Branch pushed to git repo; I updated commit sha1. New commits:

59260e8Merge branch 'public/combinat/rigged_configurations/methods-15560' of trac.sagemath.org:sage into public/combinat/rigged_configurations/methods-15560
695b0d9Fixed issue with type B bijection.

comment:20 Changed 7 years ago by tscrim

  • Status changed from needs_work to needs_review

comment:21 follow-up: Changed 7 years ago by git

  • Commit changed from 695b0d9859d579d142b36551cc83fb04fd2c5585 to e103d1ee41d9f2809fa74f71dfe35ddacbe2f313

Branch pushed to git repo; I updated commit sha1. New commits:

b5b442fMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560
43da3efMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560
c821bdeInitial graph viewing. Only for type D and types w/o special run() methods.
8d173eeMerge branch 'develop' into u/tscrim/rc_bij_pdf
e8011bdChanged input method and added constructions to other types.
54f1a4aMerge branch 'develop' into u/tscrim/rc_bij_pdf
e103d1eMerge branch 'u/tscrim/rc_bij_pdf' into public/combinat/rigged_configurations/methods-15560

comment:22 in reply to: ↑ 21 ; follow-up: Changed 7 years ago by aschilling

Hi Travis,

Here are some more comments:

  • The documentation of right_split has a ` missing. Please run the documentation to see that it actually compiles!
  • Please add the map \theta to rigged configuration and compare to lusztig_involution.
  • Please add tests and more explanations what build_graph does. Explain which graph it is computing. Also the following fails:
sage: RC = RiggedConfigurations(['D', 4, 1], [[2, 1]])
sage: from sage.combinat.rigged_configurations.bij_type_D import RCToKRTBijectionTypeD
sage: RCToKRTBijectionTypeD(RC(partition_list=[[1],[1],[1],[1]])).run()
[[2], [-3]]

sage: RCToKRTBijectionTypeD(RC(partition_list=[[1],[1],[1],[1]])).run(build_graph=True)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-10-1c82ae944c4d> in <module>()
----> 1 RCToKRTBijectionTypeD(RC(partition_list=[[Integer(1)],[Integer(1)],[Integer(1)],[Integer(1)]])).run(build_graph=True)

/Applications/sage/local/lib/python2.7/site-packages/sage/combinat/rigged_configurations/bij_type_D.pyc in run(self, verbose, build_graph)
    513 
    514                     if build_graph:
--> 515                         y = self.rigged_con.parent()(*[x._clone() for x in self.cur_partitions])
    516                         self._graph.append([self._graph[-1][1], (y, len(self._graph)), letters(b)])
    517 

/Applications/sage/local/lib/python2.7/site-packages/sage/structure/parent.so in sage.structure.parent.Parent.__call__ (sage/structure/parent.c:8924)()

/Applications/sage/local/lib/python2.7/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps.DefaultConvertMap_unique._call_with_args (sage/structure/coerce_maps.c:4637)()

/Applications/sage/local/lib/python2.7/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps.DefaultConvertMap_unique._call_with_args (sage/structure/coerce_maps.c:4501)()

/Applications/sage/local/lib/python2.7/site-packages/sage/combinat/rigged_configurations/rigged_configurations.pyc in _element_constructor_(self, *lst, **options)
    717             lst = lst[0]
    718 
--> 719         return self.element_class(self, list(lst), **options)
    720 
    721     def _calc_vacancy_number(self, partitions, a, i, **options):

/Applications/sage/local/lib/python2.7/site-packages/sage/combinat/rigged_configurations/rigged_configuration_element.pyc in __init__(self, parent, rigged_partitions, **options)
    289             nu[-1] = RiggedPartitionTypeB(nu[-1])
    290 
--> 291         ClonableArray.__init__(self, parent, nu)
    292 
    293     def _repr_(self):

/Applications/sage/local/lib/python2.7/site-packages/sage/structure/list_clone.so in sage.structure.list_clone.ClonableArray.__init__ (sage/structure/list_clone.c:3758)()

/Applications/sage/local/lib/python2.7/site-packages/sage/structure/list_clone.so in sage.structure.list_clone.ClonableArray.check (sage/structure/list_clone.c:5758)()

/Applications/sage/local/lib/python2.7/site-packages/sage/combinat/rigged_configurations/rigged_configuration_element.pyc in check(self)
    492             for i, vac_num in enumerate(partition.vacancy_numbers):
    493                 if vac_num < partition.rigging[i]:
--> 494                     raise ValueError("rigging can be at most the vacancy number")
    495 
    496     def to_tensor_product_of_kirillov_reshetikhin_tableaux(self, display_steps=False, build_graph=False):

ValueError: rigging can be at most the vacancy number

Anne

comment:23 Changed 6 years ago by git

  • Commit changed from e103d1ee41d9f2809fa74f71dfe35ddacbe2f313 to 2874083b12a083c3d644860e09079c1136915622

Branch pushed to git repo; I updated commit sha1. New commits:

c612e7fMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560
40c98dcMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560
56119bfAdded theta map, fixed bugs and expanded doc.
2874083Minor rewording of build_graph param in bijections.

comment:24 in reply to: ↑ 22 ; follow-up: Changed 6 years ago by tscrim

Replying to aschilling:

  • The documentation of right_split has a ` missing. Please run the documentation to see that it actually compiles!

I couldn't find this and the documentation built without an issue and looks okay to me (although there was a missing 'u').

  • Please add the map \theta to rigged configuration and compare to lusztig_involution.

Added under the name complement. In general, it will be different than lusztig_involution, which fixes each classical component, whereas \theta fixes the classical structure but permutes the classical components. Or did you mean you wanted me to add a doctest showing this?

  • Please add tests and more explanations what build_graph does. Explain which graph it is computing. Also the following fails:

This was due to before, the element constructor always preserved the vacancy numbers and now it recomputes it unless explicitly stated. Fixed with added tests. I expanded the documentation in to_tensor_..._tableaux() as well.

comment:25 in reply to: ↑ 24 ; follow-up: Changed 6 years ago by aschilling

Replying to tscrim:

Replying to aschilling:

  • The documentation of right_split has a ` missing. Please run the documentation to see that it actually compiles!

I couldn't find this and the documentation built without an issue and looks okay to me (although there was a missing 'u').

There is a ` missing in

+ Let `\ast` denote the :meth:`Lusztig involution<lusztig_involution>`,
+ and `\mathrm{ls}` as the :meth:`left splitting map<left_split>`.
+ The right splitting map is defined as
+ \mathrm{rs} := \ast \circ \mathrm{ls} \circ \ast`.
  • Please add the map \theta to rigged configuration and compare to lusztig_involution.

Added under the name complement. In general, it will be different than lusztig_involution, which fixes each classical component, whereas \theta fixes the classical structure but permutes the classical components. Or did you mean you wanted me to add a doctest showing this?

Under \bar \Phi the map \star (which I guess is what you call lusztig_involution) intertwines with \theta. It would be good to add a check like that.

  • Please add tests and more explanations what build_graph does. Explain which graph it is computing. Also the following fails:

This was due to before, the element constructor always preserved the vacancy numbers and now it recomputes it unless explicitly stated. Fixed with added tests. I expanded the documentation in to_tensor_..._tableaux() as well.

Even though it is stated in the documentation, that build_graph is an optional parameter, it does not seem to take this input:

sage: rc = RC(partition_list=[[1],[1],[1],[1]])
sage: rc.to_tensor_product_of_kirillov_reshetikhin_crystals(build_graph=True)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-702cb808a701> in <module>()
----> 1 rc.to_tensor_product_of_kirillov_reshetikhin_crystals(build_graph=True)

TypeError: to_tensor_product_of_kirillov_reshetikhin_crystals() got an unexpected keyword argument 'build_graph'

What is the difference between build_graph and display_steps?

Anne

comment:26 Changed 6 years ago by git

  • Commit changed from 2874083b12a083c3d644860e09079c1136915622 to 6552c617321b50a8cf2123e9c85e0e4eaa8d8714

Branch pushed to git repo; I updated commit sha1. New commits:

6552c61Fixed doc, added intertwining doctest, and added build_graph to to_*_crystals.

comment:27 Changed 6 years ago by git

  • Commit changed from 6552c617321b50a8cf2123e9c85e0e4eaa8d8714 to a985081eb8bb47abb8e78546eaf7aa4638eddc77

Branch pushed to git repo; I updated commit sha1. New commits:

a985081Tweaked wording of param display_steps doc.

comment:28 in reply to: ↑ 25 ; follow-up: Changed 6 years ago by tscrim

Replying to aschilling:

There is a ` missing in ...

Ah, I forgot about the right split for KR tableaux. :P Fixed.

Under \bar \Phi the map \star (which I guess is what you call lusztig_involution) intertwines with \theta. It would be good to add a check like that.

I've added a doctest.

Even though it is stated in the documentation, that build_graph is an optional parameter, it does not seem to take this input:

sage: rc = RC(partition_list=[[1],[1],[1],[1]])
sage: rc.to_tensor_product_of_kirillov_reshetikhin_crystals(build_graph=True)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-8-702cb808a701> in <module>()
----> 1 rc.to_tensor_product_of_kirillov_reshetikhin_crystals(build_graph=True)

TypeError: to_tensor_product_of_kirillov_reshetikhin_crystals() got an unexpected keyword argument 'build_graph'

This is because this was not a parameter in to_tensor_product_of_kirillov_reshetikhin_crystals, but in *_tableaux. I've also added the parameter (and doc/test) to the 'to TP of KR crystals' methods.

What is the difference between build_graph and display_steps?

The first one constructs and returns the graph, the latter outputs each step to the terminal. I've changed output to print to avoid some ambiguity.

comment:29 in reply to: ↑ 28 ; follow-up: Changed 6 years ago by aschilling

Why is the right_split that you implemented the correct map? I thought that rs = * ls * using the * map.

comment:30 in reply to: ↑ 29 ; follow-up: Changed 6 years ago by tscrim

Replying to aschilling:

Why is the right_split that you implemented the correct map? I thought that rs = * ls * using the * map.

right_split is implemented as * ls * (where * is the Lusztig involution) for both rigged configurations and KR tableaux.

comment:31 in reply to: ↑ 30 Changed 6 years ago by aschilling

With your current code

sage: RC = RiggedConfigurations(['D', 4, 1], [[2,2],[2, 2]])
sage: all((rc.right_split()).to_tensor_product_of_kirillov_reshetikhin_tableaux() == (rc.to_tensor_product_of_kirillov_reshetikhin_tableaux()).right_split() for rc in RC)
False

I think you need to use complement in the definition the RC side. Also, it might be better to rename complement to complement_rigging for a more descriptive name.

comment:32 Changed 6 years ago by git

  • Commit changed from a985081eb8bb47abb8e78546eaf7aa4638eddc77 to 51c8ba25219b7edf6c3fa69bd5cce931a12c799e

Branch pushed to git repo; I updated commit sha1. New commits:

dc3202eMerge branch 'develop' into public/combinat/rigged_configurations/methods-15560
51c8ba2Changed complement -> complement_rigging and fixed right_split on RC side.

comment:33 follow-up: Changed 6 years ago by git

  • Commit changed from 51c8ba25219b7edf6c3fa69bd5cce931a12c799e to 013737b07b3e0cb0edfc970bc9734035a7b7df08

Branch pushed to git repo; I updated commit sha1. New commits:

013737bAdded right_box method for symmetry.

comment:34 in reply to: ↑ 33 Changed 6 years ago by aschilling

Hi Travis,

Thanks for the changes. I get the following failure when trying to play with the code

sage: KRT = crystals.TensorProductOfKirillovReshetikhinTableaux(['D',4,1], [[2,2], [1,2]])
sage: all(b.to_rigged_configuration().lusztig_involution() == b.lusztig_involution().to_rigged_configuration() for b in KRT)
False

Anne

comment:35 Changed 6 years ago by git

  • Commit changed from 013737b07b3e0cb0edfc970bc9734035a7b7df08 to 1e15993eed4b02fed79649aca88f6a6a6d7d843b

Branch pushed to git repo; I updated commit sha1. New commits:

1e15993Removed lusztig_involution and right_box.

comment:36 follow-up: Changed 6 years ago by tscrim

Hey Anne,

I've removed the lusztig_involution() and right_box() methods for rigged configurations as per our discussion.

comment:37 in reply to: ↑ 36 Changed 6 years ago by aschilling

  • Status changed from needs_review to positive_review

Ok, looks good now!

Anne

comment:38 Changed 6 years ago by vbraun

  • Branch changed from public/combinat/rigged_configurations/methods-15560 to 1e15993eed4b02fed79649aca88f6a6a6d7d843b
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.