#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.