#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 tscrim):
Replying to [comment:45 aschilling]:
> - 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)
> }}}
I will take a look at this in more detail and update
documentation/examples accordingly.
> - 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: <class
'sage.categories.highest_weight_crystals.HighestWeightCrystalHomset_with_category.element_class'>
> }}}
In general, this is an undecidable problem and should result in this
error. However, since this is a morphism of a finite crystal, this should
work at the very least by brute force. Will implement.
> {{{
> sage: psi.is_zero()
> [...]
> AttributeError:
'HighestWeightCrystalHomset_with_category_with_equality_by_id' object has
no attribute 'zero'
> }}}
This is easy enough to check as long as the crystals have a finite
generating set; otherwise it may run forever.
> - subcrystals now has options ``virtualization``, ``scaling_factors``,
but there are no examples on how to use them. Please add examples that
test all options.
Will do.
> - 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).
See comment:15. Overall it seems the caching and construction of the
morphisms I do is faster than before. However there seems to be some
slowdowns when there is no caching (and for some object creations, but
these are acceptable IMO as it is small in absolute time and the creation
of KR crystals is infrequent). I can try and optimize it more if you think
what is currently there is insufficient.
--
Ticket URL: <http://trac.sagemath.org/ticket/15463#comment:46>
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.