Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fusion algebras from Weyl Character Rings #26440

Closed
dwbump mannequin opened this issue Oct 9, 2018 · 53 comments
Closed

Fusion algebras from Weyl Character Rings #26440

dwbump mannequin opened this issue Oct 9, 2018 · 53 comments

Comments

@dwbump
Copy link
Mannequin

dwbump mannequin commented Oct 9, 2018

Fusion algebras for WZW conformal field theories can be computed easily as instances of WeylCharacterRings. The WeylCharacterRing code is modified with an optional parameter k, the level. If k==None the behavior is unchanged. However if k is a positive integer the corresponding fusion ring is created. The reason this works is that the Kac-Walton algorithm for computing the fusion products is closely similar to the Brauer-Klimyk (aka Racah-Speiser) algorithm that is already used by the WeylCharacterRing. One has only to add an affine reflection to make the algorithm compute the fusion product.

I tested this for level 2 in types A2 and B2, comparing with tabulated formulas in Feingold, Fusion Rules for affine Kac-Moody algebras.

A related patch is #15485.

CC: @tscrim @sagetrac-sage-combinat @dwbump

Component: combinatorics

Keywords: Fusion Ring, Verlinde Algebra

Author: Daniel Bump

Branch/Commit: 7546a0d

Reviewer: Travis Scrimshaw

Issue created by migration from https://trac.sagemath.org/ticket/26440

@dwbump dwbump mannequin added this to the sage-8.4 milestone Oct 9, 2018
@dwbump dwbump mannequin added c: combinatorics labels Oct 9, 2018
@dwbump

This comment has been minimized.

@dwbump dwbump mannequin added the t: enhancement label Oct 9, 2018
@dwbump dwbump mannequin self-assigned this Oct 9, 2018
@dwbump
Copy link
Mannequin Author

dwbump mannequin commented Oct 9, 2018

Commit: ed039ba

@dwbump
Copy link
Mannequin Author

dwbump mannequin commented Oct 9, 2018

New commits:

ed039bafusion algebras from weyl character rings

@dwbump
Copy link
Mannequin Author

dwbump mannequin commented Oct 9, 2018

Branch: public/fusion-26440

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 10, 2018

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

2b75fb5contragredient or conjugation map

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 10, 2018

Changed commit from ed039ba to 2b75fb5

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 10, 2018

Changed commit from 2b75fb5 to cada3b3

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 10, 2018

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

cada3b3don't import Matrix

@dwbump
Copy link
Mannequin Author

dwbump mannequin commented Oct 10, 2018

comment:5

For fusion rings, we should have a method that returns the (finite) canonical basis as a list or an iterator. Actually WeylCharacterRing has a basis method that it inherits from CombinatorialFreeModule.

To avoid confusion with this basis method, the method that returns the basis as a list could then be called fusion_basis.

So, what is the best way to enumerate all dominant weights of level <= k?

@tscrim
Copy link
Collaborator

tscrim commented Oct 10, 2018

comment:6

Replying to @dwbump:

For fusion rings, we should have a method that returns the (finite) canonical basis as a list or an iterator. Actually WeylCharacterRing has a basis method that it inherits from CombinatorialFreeModule.

To avoid confusion with this basis method, the method that returns the basis as a list could then be called fusion_basis.

I am not sure I like the basis for the fusion ring being anything other than what you want to call the fusion_basis. More generally, I am not sure I like that the basis for WeylCharacterRing is not the set of dominant integral weights. Since the fusion algebra is finite-dimensional, I definite would rather have basis correspond to the dominant weights of level <= k (which we would give in the __init__ to CombinatorialFreeModule).

So, what is the best way to enumerate all dominant weights of level <= k?

I just constructed this as a RecursivelyEnumeratedSet, but we could also use WeightedIntegerVectors. Between those two, I have not run timings to determine which is faster. Both should take 2 lines to construct (one to get the levels, one to construct the parent to iterate over).

@dwbump
Copy link
Mannequin Author

dwbump mannequin commented Oct 10, 2018

comment:7

I am not sure I like the basis for the fusion ring being anything other than what you want to call the fusion_basis.

Does this mean we should overwrite the existing basis method (which, you are pointing out is already not correct)?

I just constructed this as a RecursivelyEnumeratedSet, but we could also use WeightedIntegerVectors. Between those two, I have not run timings to determine which is faster. Both should take 2 lines to construct (one to get the levels, one to construct the parent to iterate over).

I doubt whether speed is an issue for this. The user will run it once. So you could choose on the basis of elegance rather than timing.

@tscrim
Copy link
Collaborator

tscrim commented Oct 10, 2018

comment:8

Replying to @dwbump:

I am not sure I like the basis for the fusion ring being anything other than what you want to call the fusion_basis.

Does this mean we should overwrite the existing basis method (which, you are pointing out is already not correct)?

Well, sort of. What I think should be done is the correct indices needs to be passed to CombinatorialFreeModule.__init__ (instead of self._space). This will also automatically put it into the category of FiniteDimensionalModulesWithBasis and give it extra methods.

With the existing basis method, the actual basis is too big as it says that, e.g., -\Lambda1 is a basis elements. However, this is not allowed through more standard constructions. For simplicity of the implementation, this is nice. Although for the style='coroots', you can get a fair bit of speed by using weights expressed as linear combinations of fundamental weights rather than in the ambient basis (I have some really hacked together code to get some computations at a reasonable speed and memory usage I need in E7 that I need to cleanup to get into Sage). Although it means some code duplication and added complexity. However, this makes it more ameable to the "correct" basis. Unless I am misunderstanding something about what this should be able to compute.

I just constructed this as a RecursivelyEnumeratedSet, but we could also use WeightedIntegerVectors. Between those two, I have not run timings to determine which is faster. Both should take 2 lines to construct (one to get the levels, one to construct the parent to iterate over).

I doubt whether speed is an issue for this. The user will run it once. So you could choose on the basis of elegance rather than timing.

Timing might matter if someone wants to construct a "large" rank and level example. In terms of elegance, I would say WeightedIntegerVectors is better and more inline with the output as sums of fundamental weights (as dense vectors).

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 10, 2018

Changed commit from cada3b3 to e8dec30

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 10, 2018

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

e8dec30bugfix: reducible cartan types have no opposition involution

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 10, 2018

Changed commit from e8dec30 to cda3cce

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 10, 2018

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

cda3ccefusion_basis method

@dwbump
Copy link
Mannequin Author

dwbump mannequin commented Oct 10, 2018

comment:11

I implemented fusion_basis method using RecursivelyEnumeratedSet. Travis, feel free to change basis per comments 6 and 8.

I also fixed a bug that broke WeylCharacterRing for reducible types.

@dwbump
Copy link
Mannequin Author

dwbump mannequin commented Oct 11, 2018

Changed work issues from The conjugation method needs to be created. to none

@dwbump
Copy link
Mannequin Author

dwbump mannequin commented Oct 11, 2018

Changed keywords from none to Fusion Ring, Verlinde Algebra

@dwbump dwbump mannequin added the s: needs review label Oct 11, 2018
@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 19, 2018

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

0555717FusionRing becomes a class

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 19, 2018

Changed commit from cda3cce to 0555717

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 20, 2018

Changed commit from 0555717 to d4166cc

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 20, 2018

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

d4166ccnames of basis elements can be customized

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 24, 2018

Changed commit from d4166cc to e52606e

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 25, 2018

Changed commit from 02fb238 to 6736b8c

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 25, 2018

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

6736b8cfusion_weight element is made a method of WeylCharacterRing Elements and renamed highest_weight.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 25, 2018

Changed commit from 6736b8c to d18b3d8

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 25, 2018

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

d18b3d8doctest for _dual_helper

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 26, 2018

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

102b00bAdded some doctets, fixed bug with some_elements, moved the refences to master ref file.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 26, 2018

Changed commit from d18b3d8 to 102b00b

@tscrim
Copy link
Collaborator

tscrim commented Oct 26, 2018

comment:25

I added some additional doctests, which led me to finding a bug with some_elements returning elements that are not basis elements of the fusion ring because the level of the fundamental weight is too large. I also moved the references to the masted reference file (and added a bit more details to them). If my changes are good, then you can set a positive review.

@tscrim
Copy link
Collaborator

tscrim commented Oct 27, 2018

Changed author from bump to Daniel Bump

@tscrim
Copy link
Collaborator

tscrim commented Oct 27, 2018

Reviewer: Travis Scrimshaw

@vbraun
Copy link
Member

vbraun commented Oct 27, 2018

comment:28

Test failures (see patchbot)

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 27, 2018

Changed commit from 102b00b to 768ca32

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 27, 2018

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

768ca32Test for reducibility rather than atomicness for dual.

@tscrim
Copy link
Collaborator

tscrim commented Oct 27, 2018

comment:30

The failures come from the difference between is_atomic and is_irreducible. I changed this to the appropriate tests. Please check.

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 27, 2018

Changed commit from 768ca32 to 7546a0d

@sagetrac-git
Copy link
Mannequin

sagetrac-git mannequin commented Oct 27, 2018

Branch pushed to git repo; I updated commit sha1. This was a forced push. New commits:

7546a0dTest for reducibility rather than atomicness for dual.

@tscrim
Copy link
Collaborator

tscrim commented Oct 27, 2018

comment:32

I also did some small tweaks for speed.

@dwbump
Copy link
Mannequin Author

dwbump mannequin commented Oct 28, 2018

comment:33

This passes the tests in weyl_characters.py and I am also able to build the documentation. May I change the status back to positive_review?

@tscrim
Copy link
Collaborator

tscrim commented Oct 28, 2018

comment:34

Thank you. They also pass for me.

@vbraun
Copy link
Member

vbraun commented Oct 29, 2018

Changed branch from public/fusion-26440 to 7546a0d

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants