#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:                     |  1e0d2bf7030b598a24528a886ebc63211d3e57d6
  public/combinat/crystals/crystal_morphisms|     Stopgaps:
   Dependencies:  #15462 #15882      |
  #16001 #18453 #18722               |
-------------------------------------+-------------------------------------

Comment (by aschilling):

 Hi Travis,

 Here are some comments on the current branch:

 - I am not quite sure how to use the induced crystal. Either the code is
 wrong or the documentation needs to be updated
 {{{
 sage: X = Words(2,4)
 sage: L = crystals.Letters(['A',1])
 sage: T = crystals.TensorProduct(*[L]*4)
 sage: Phi = lambda x : Word([i.value for i in x])
 sage: I = crystals.Induced(T,Phi,preimage=X,from_crystal=True)
 sage: b = I[0]
 sage: b
 word: 1111
 sage: b.parent()
 Crystal induced by <function <lambda> at 0x1102d8c80> from Full tensor
 product of the crystals [The crystal of letters for type ['A', 1], The
 crystal of letters for type ['A', 1], The crystal of letters for type
 ['A', 1], The crystal of letters for type ['A', 1]]
 sage: b.f(1)
 ---------------------------------------------------------------------------
 AttributeError                            Traceback (most recent call
 last)
 <ipython-input-43-0a3acf464041> in <module>()
 ----> 1 b.f(Integer(1))

 /Applications/sage/local/lib/python2.7/site-
 packages/sage/combinat/crystals/induced_structure.pyc in f(self, i)
     593             """
     594             P = self.parent()
 --> 595             ret = P._preimage(self.value).f(i)
     596             if ret is None:
     597                 return None

 AttributeError: 'FiniteWord_list' object has no attribute 'f'
 }}}

 - The other way is really also not what one would expect
 {{{
 sage: X = Words(2,4)
 sage: L = crystals.Letters(['A',1])
 sage: T = crystals.TensorProduct(*[L]*4)
 sage: Phi = lambda x : T(*[L(i) for i in x])
 sage: I = crystals.Induced(X,Phi,preimage=T)
 sage: view(I)
 }}}

 - Many of the morphism methods do not work
 {{{
 sage: B = crystals.Tableaux(['C',2], shape=[1,1])
 sage: C = crystals.Tableaux(['C',2], ([2,1], [1,1]))
 sage: psi = B.crystal_morphism(C.module_generators[1:], codomain=C)
 sage: psi.is_surjective()
 ---------------------------------------------------------------------------
 NotImplementedError                       Traceback (most recent call
 last)
 <ipython-input-64-cf3b5c84f16e> in <module>()
 ----> 1 psi.is_surjective()

 /Applications/sage/src/sage/categories/map.pyx in
 sage.categories.map.Map.is_surjective
 (/Applications/sage/src/build/cythonized/sage/categories/map.c:8344)()
    1207             NotImplementedError: <type 'sage.categories.map.Map'>
    1208         """
 -> 1209         raise NotImplementedError, type(self)
    1210
    1211     def __pow__(Map self, n, dummy):

 NotImplementedError: <class
 
'sage.categories.highest_weight_crystals.HighestWeightCrystalHomset_with_category.element_class'>
 sage: psi.is_zero()
 ---------------------------------------------------------------------------
 AttributeError                            Traceback (most recent call
 last)
 <ipython-input-65-39b9856b43ed> in <module>()
 ----> 1 psi.is_zero()

 /Applications/sage/src/sage/structure/element.pyx in
 sage.structure.element.Element.is_zero
 (/Applications/sage/src/build/cythonized/sage/structure/element.c:8906)()
     905             implement ``__nonzero__`` instead.
     906         """
 --> 907         return not self
     908
     909     cdef int _cmp(self, other) except -2:

 /Applications/sage/src/sage/structure/element.pyx in
 sage.structure.element.Element.__nonzero__
 (/Applications/sage/src/build/cythonized/sage/structure/element.c:8819)()
     891             False
     892         """
 --> 893         return self != self._parent.zero()
     894
     895     def is_zero(self):

 /Applications/sage/src/sage/structure/parent.pyx in
 sage.structure.parent.Parent.__getattr__
 (/Applications/sage/src/build/cythonized/sage/structure/parent.c:7833)()
     839             return self.__cached_methods[name]
     840         except KeyError:
 --> 841             attr = getattr_from_other_class(self,
 self._category.parent_class, name)
     842             self.__cached_methods[name] = attr
     843             return attr

 /Applications/sage/src/sage/structure/misc.pyx in
 sage.structure.misc.getattr_from_other_class
 (/Applications/sage/src/build/cythonized/sage/structure/misc.c:1580)()
     251         dummy_error_message.cls = type(self)
     252         dummy_error_message.name = name
 --> 253         raise dummy_attribute_error
     254     try:
     255         attribute = getattr(cls, name)

 AttributeError:
 'HighestWeightCrystalHomset_with_category_with_equality_by_id' object has
 no attribute 'zero'
 }}}

 - subcrystals now has options ``virtualization``, ``scaling_factors``, but
 there are no examples on how to use them. Please add examples that test
 all options.

 - What is the status on the slow down that you mentioned earlier for KR
 crystals? I think such a huge slow down would not be acceptable (since
 they are anyway slow already).

 So much for now,

 Anne

--
Ticket URL: <http://trac.sagemath.org/ticket/15463#comment:45>
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