#15463: Implement crystal morphisms, subcrystals, and virtual crystals
-------------------------------------+-------------------------------------
       Reporter:  tscrim             |        Owner:  sage-combinat
           Type:  enhancement        |       Status:  needs_review
       Priority:  major              |    Milestone:  sage-6.8
      Component:  combinatorics      |   Resolution:
       Keywords:  crystals,          |    Merged in:
  morphisms, subcrystals             |    Reviewers:
        Authors:  Travis Scrimshaw   |  Work issues:
Report Upstream:  N/A                |       Commit:
         Branch:                     |  3e866366015b114c04b55ca0b5718420ae3ce234
  public/combinat/crystals/crystal_morphisms|     Stopgaps:
   Dependencies:  #15462 #15882      |
  #16001 #18453 #18722               |
-------------------------------------+-------------------------------------

Comment (by tscrim):

 Replying to [comment:52 aschilling]:
 > Replying to [comment:51 tscrim]:
 > > Hmmm....that's an interesting way for an unhashable to be obtained and
 shows what I get for only testing by explicitly constructing the inverse
 map and passing that in. I've moved the logic for determining an inverse
 map when none is specified into the appropriate classes, so it should work
 now.
 >
 > Ok, it works better now. But why do you let the user input the inverse
 function? Is it checked that the function is the inverse and that the
 result is a crystal? The following gives the wrong results (I agree that
 Phi_inv is not the inverse of Phi, but this could happen by accident):
 > {{{
 > sage: X = Words(2,3)
 > sage: L = crystals.Letters(['A',1])
 > sage: T = crystals.TensorProduct(*[L]*3)
 > sage: Phi = lambda x : Word([i.value for i in x])
 > sage: Phi_inv = lambda x : T(*[L(i) for i in x.reversal()])
 > sage: I = crystals.Induced(T,Phi,Phi_inv,from_crystal=True)
 > sage: view(I)
 > }}}

 I made it this way because I wanted it to work with infinite sets. For
 finite sets, I could add an explicit check that it is the inverse function
 (with an optional check argument).

 > Also, I was able to input the wrong codomain and the code did not
 complain. Why should this be inputted?

 I guess I really don't need this since I'm operating under the assumption
 that the crystal is non-empty. Will change.

 Note for self, add examples for virtualization arguments to subcrystal.

--
Ticket URL: <http://trac.sagemath.org/ticket/15463#comment:53>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica, 
and MATLAB

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

Reply via email to