Ticket #7978: trac_7978_fix_tabs_in_affine_py-jb.patch

File trac_7978_fix_tabs_in_affine_py-jb.patch, 31.7 KB (added by Jason Bandlow, 13 years ago)
  • sage/combinat/crystals/affine.py

    # HG changeset patch
    # User Jason Bandlow <jbandlow at gmail.com>
    # Date 1263826985 18000
    # Node ID d868ba3d22986ce18ba524e9e3bf57a381add801
    # Parent  728bb198638e46203fd6c93032599e03bdfcf4cd
    [mq]: trac_7978_fix_tabs_in_affine_py-jb.patch
    
    diff --git a/sage/combinat/crystals/affine.py b/sage/combinat/crystals/affine.py
    a b class AffineCrystalFromClassical(Crystal 
    5252
    5353        sage: n=2
    5454        sage: C=CrystalOfTableaux(['A',n],shape=[1])
    55         sage: pr=lambda x : C(x.to_tableau().promotion(n))
    56         sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    57         sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    58         sage: A.list()
    59         [[[1]], [[2]], [[3]]]
    60         sage: A.cartan_type()
    61         ['A', 2, 1]
    62         sage: A.index_set()
    63         [0, 1, 2]
    64         sage: b=A(rows=[[1]])
    65         sage: b.weight()
    66         -Lambda[0] + Lambda[1]
    67         sage: b.classical_weight()
    68         (1, 0, 0)
    69         sage: [x.s(0) for x in A.list()]
    70         [[[3]], [[2]], [[1]]]
    71         sage: [x.s(1) for x in A.list()]
    72         [[[2]], [[1]], [[3]]]
     55        sage: pr=lambda x : C(x.to_tableau().promotion(n))
     56        sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     57        sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     58        sage: A.list()
     59        [[[1]], [[2]], [[3]]]
     60        sage: A.cartan_type()
     61        ['A', 2, 1]
     62        sage: A.index_set()
     63        [0, 1, 2]
     64        sage: b=A(rows=[[1]])
     65        sage: b.weight()
     66        -Lambda[0] + Lambda[1]
     67        sage: b.classical_weight()
     68        (1, 0, 0)
     69        sage: [x.s(0) for x in A.list()]
     70        [[[3]], [[2]], [[1]]]
     71        sage: [x.s(1) for x in A.list()]
     72        [[[2]], [[1]], [[3]]]
    7373    """
    7474
    7575    @staticmethod
    7676    def __classcall__(cls, cartan_type, *args):
    77         ct = CartanType(cartan_type)
    78         return super(AffineCrystalFromClassical, cls).__classcall__(cls, ct, *args)
     77        ct = CartanType(cartan_type)
     78        return super(AffineCrystalFromClassical, cls).__classcall__(cls, ct, *args)
    7979
    8080    def __init__(self, cartan_type, classical_crystal):
    81         """
    82         Input is an affine Cartan type 'cartan_type', a classical crystal 'classical_crystal', and automorphism and its
    83         inverse 'automorphism' and 'inverse_automorphism', and the Dynkin node 'dynkin_node'
     81        """
     82        Input is an affine Cartan type 'cartan_type', a classical crystal 'classical_crystal', and automorphism and its
     83        inverse 'automorphism' and 'inverse_automorphism', and the Dynkin node 'dynkin_node'
    8484
    85         EXAMPLES::
     85        EXAMPLES::
    8686
    8787            sage: n=1
    88             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    89             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    90             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    91             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1) # indirect doctest
    92             sage: A.list()
    93             [[[1]], [[2]]]
    94             sage: A.cartan_type()
    95             ['A', 1, 1]
    96             sage: A.index_set()
    97             [0, 1]
    98         """
     88            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     89            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     90            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     91            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1) # indirect doctest
     92            sage: A.list()
     93            [[[1]], [[2]]]
     94            sage: A.cartan_type()
     95            ['A', 1, 1]
     96            sage: A.index_set()
     97            [0, 1]
     98        """
    9999        self._cartan_type = cartan_type
    100         if not hasattr(self, "_name"):
    101             self._name = "An affine crystal for type %s"%self.cartan_type()
     100        if not hasattr(self, "_name"):
     101            self._name = "An affine crystal for type %s"%self.cartan_type()
    102102        self.classical_crystal = classical_crystal;
    103103        self.module_generators = map( self.retract, self.classical_crystal.module_generators )
    104104
    105105    def __iter__(self):
    106         r"""
    107         Construct the iterator from the underlying classical crystal.
     106        r"""
     107        Construct the iterator from the underlying classical crystal.
    108108
    109         TESTS::
     109        TESTS::
    110110
    111111            sage: n=1
    112             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    113             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    114             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    115             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1) # indirect doctest
    116             sage: A.list() # indirect doctest
    117             [[[1]], [[2]]]
    118         """
    119         for x in self.classical_crystal:
    120             yield self.retract(x)
     112            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     113            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     114            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     115            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1) # indirect doctest
     116            sage: A.list() # indirect doctest
     117            [[[1]], [[2]]]
     118        """
     119        for x in self.classical_crystal:
     120            yield self.retract(x)
    121121
    122122    # should be removed once crystal defines __iter__ instead of list
    123123    def list(self):
    124         """
    125         Returns the list of all crystal elements using the underlying classical crystal
     124        """
     125        Returns the list of all crystal elements using the underlying classical crystal
    126126
    127         EXAMPLES::
    128 
    129             sage: n=2
    130             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    131             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    132             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    133             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    134             sage: A.list()
    135             [[[1]], [[2]], [[3]]]
    136         """
    137         return map( self.retract, self.classical_crystal.list() )
    138        
    139     def lift(self, affine_elt):
    140         """
    141         Lifts an affine crystal element to the corresponding classical crystal element
    142 
    143         EXAMPLES::
     127        EXAMPLES::
    144128
    145129            sage: n=2
    146             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    147             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    148             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    149             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    150             sage: b=A.list()[0]
    151             sage: type(A.lift(b))
    152             <class 'sage.combinat.crystals.tensor_product.CrystalOfTableauxElement'>
     130            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     131            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     132            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     133            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     134            sage: A.list()
     135            [[[1]], [[2]], [[3]]]
     136        """
     137        return map( self.retract, self.classical_crystal.list() )
     138       
     139    def lift(self, affine_elt):
     140        """
     141        Lifts an affine crystal element to the corresponding classical crystal element
     142
     143        EXAMPLES::
     144
     145            sage: n=2
     146            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     147            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     148            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     149            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     150            sage: b=A.list()[0]
     151            sage: type(A.lift(b))
     152            <class 'sage.combinat.crystals.tensor_product.CrystalOfTableauxElement'>
    153153        """
    154154        return affine_elt.lift()
    155155
    156156    def retract(self, classical_elt):
    157         """
    158         Transforms a classical crystal element to the corresponding affine crystal element
     157        """
     158        Transforms a classical crystal element to the corresponding affine crystal element
    159159
    160         EXAMPLES::
     160        EXAMPLES::
    161161
    162162            sage: n=2
    163             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    164             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    165             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    166             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    167             sage: t=C(rows=[[1]])
    168             sage: type(t)
    169             <class 'sage.combinat.crystals.tensor_product.CrystalOfTableauxElement'>
    170             sage: A.retract(t)
    171             [[1]]
    172             sage: type(A.retract(t))
    173             <class 'sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotionElement'>
     163            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     164            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     165            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     166            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     167            sage: t=C(rows=[[1]])
     168            sage: type(t)
     169            <class 'sage.combinat.crystals.tensor_product.CrystalOfTableauxElement'>
     170            sage: A.retract(t)
     171            [[1]]
     172            sage: type(A.retract(t))
     173            <class 'sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotionElement'>
    174174        """
    175175        return self.element_class(classical_elt, parent = self)
    176176   
    class AffineCrystalFromClassical(Crystal 
    181181        EXAMPLES:
    182182
    183183            sage: n=2
    184             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    185             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    186             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    187             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    188             sage: b=A(rows=[[1]])
    189             sage: b
    190             [[1]]
    191             sage: type(b)
    192             <class 'sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotionElement'>
    193             sage: A(b)
    194             [[1]]
    195             sage: type(A(b))
    196             <class 'sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotionElement'>
     184            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     185            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     186            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     187            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     188            sage: b=A(rows=[[1]])
     189            sage: b
     190            [[1]]
     191            sage: type(b)
     192            <class 'sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotionElement'>
     193            sage: A(b)
     194            [[1]]
     195            sage: type(A(b))
     196            <class 'sage.combinat.crystals.affine.AffineCrystalFromClassicalAndPromotionElement'>
    197197        """
    198198        if len(value) == 1 and isinstance(value[0], self.element_class) and value[0].parent() == self:
    199199            return value[0]
    class AffineCrystalFromClassical(Crystal 
    202202
    203203    def __contains__(self, x):
    204204        r"""
    205         Checks whether x is an element of self.
     205        Checks whether x is an element of self.
    206206
    207207        EXAMPLES:
    208208
    209209            sage: n=2
    210             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    211             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    212             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    213             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    214             sage: b=A(rows=[[1]])
    215             sage: A.__contains__(b)
    216             True
     210            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     211            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     212            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     213            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     214            sage: b=A(rows=[[1]])
     215            sage: A.__contains__(b)
     216            True
    217217        """
    218218        return x.parent() is self
    219219
    class AffineCrystalFromClassicalElement( 
    231231    EXAMPLES::
    232232
    233233        sage: n=2
    234         sage: C=CrystalOfTableaux(['A',n],shape=[1])
    235         sage: pr=lambda x : C(x.to_tableau().promotion(n))
    236         sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    237         sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    238         sage: b=A(rows=[[1]])
    239         sage: b.__repr__()
    240         '[[1]]'
     234        sage: C=CrystalOfTableaux(['A',n],shape=[1])
     235        sage: pr=lambda x : C(x.to_tableau().promotion(n))
     236        sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     237        sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     238        sage: b=A(rows=[[1]])
     239        sage: b.__repr__()
     240        '[[1]]'
    241241    """
    242242
    243243    def classical_weight(self):
    244         """
    245         Returns the classical weight corresponding to self.
     244        """
     245        Returns the classical weight corresponding to self.
    246246
    247         EXAMPLES::
     247        EXAMPLES::
    248248
    249             sage: n=2
    250             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    251             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    252             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    253             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    254             sage: b=A(rows=[[1]])
    255             sage: b.classical_weight()
    256             (1, 0, 0)
     249            sage: n=2
     250            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     251            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     252            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     253            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     254            sage: b=A(rows=[[1]])
     255            sage: b.classical_weight()
     256            (1, 0, 0)
    257257        """
    258         return self.lift().weight()
     258        return self.lift().weight()
    259259
    260260    def lift(self):
    261         """
    262         Lifts an affine crystal element to the corresponding classical crystal element
     261        """
     262        Lifts an affine crystal element to the corresponding classical crystal element
    263263
    264         EXAMPLES::
     264        EXAMPLES::
    265265
    266266            sage: n=2
    267             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    268             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    269             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    270             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    271             sage: b=A.list()[0]
    272             sage: type(b.lift())
    273             <class 'sage.combinat.crystals.tensor_product.CrystalOfTableauxElement'>
     267            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     268            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     269            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     270            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     271            sage: b=A.list()[0]
     272            sage: type(b.lift())
     273            <class 'sage.combinat.crystals.tensor_product.CrystalOfTableauxElement'>
    274274        """
    275275        return self.value
    276276
    277277    def pp(self):
    278         """
    279         Method for pretty printing
     278        """
     279        Method for pretty printing
    280280
    281         EXAMPLES::
     281        EXAMPLES::
    282282
    283             sage: K = KirillovReshetikhinCrystal(['D',3,2],1,1)
    284             sage: t=K(rows=[[1]])
    285             sage: t.pp()
    286             1
    287         """
    288         return self.lift().pp()
     283            sage: K = KirillovReshetikhinCrystal(['D',3,2],1,1)
     284            sage: t=K(rows=[[1]])
     285            sage: t.pp()
     286            1
     287        """
     288        return self.lift().pp()
    289289
    290290    @abstract_method
    291291    def e0(self):
    292         r"""
    293         Assumes that `e_0` is implemented separately.
    294         """
     292        r"""
     293        Assumes that `e_0` is implemented separately.
     294        """
    295295
    296296    @abstract_method
    297297    def f0(self):
    298         r"""
    299         Assumes that `f_0` is implemented separately.
    300         """
     298        r"""
     299        Assumes that `f_0` is implemented separately.
     300        """
    301301
    302302    def e(self, i):
    303303        r"""
    304304        Returns the action of `e_i` on self.
    305305
    306         EXAMPLES::
     306        EXAMPLES::
    307307
    308308            sage: n=2
    309             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    310             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    311             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    312             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    313             sage: b=A(rows=[[1]])
    314             sage: b.e(0)
    315             [[3]]
    316             sage: b.e(1)
     309            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     310            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     311            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     312            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     313            sage: b=A(rows=[[1]])
     314            sage: b.e(0)
     315            [[3]]
     316            sage: b.e(1)
    317317        """
    318318        if i == 0:
    319             return self.e0()
    320         else:
     319            return self.e0()
     320        else:
    321321            x = self.lift().e(i)
    322322            if (x == None):
    323323                return None
    class AffineCrystalFromClassicalElement( 
    328328        r"""
    329329        Returns the action of `f_i` on self.
    330330
    331         EXAMPLES::
     331        EXAMPLES::
    332332
    333333            sage: n=2
    334             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    335             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    336             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    337             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    338             sage: b=A(rows=[[3]])
    339             sage: b.f(0)
    340             [[1]]
    341             sage: b.f(2)
     334            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     335            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     336            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     337            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     338            sage: b=A(rows=[[3]])
     339            sage: b.f(0)
     340            [[1]]
     341            sage: b.f(2)
    342342        """
    343343        if i == 0:
    344             return self.f0()
    345         else:
     344            return self.f0()
     345        else:
    346346            x = self.lift().f(i)
    347347            if (x == None):
    348348                return None
    class AffineCrystalFromClassicalElement( 
    350350                return self.parent().retract(x)
    351351
    352352    def epsilon0(self):
    353         r"""
    354         Uses `epsilon_0` from the super class, but should be implemented if a faster implementation exists.
    355         """
    356         return super(AffineCrystalFromClassicalElement, self).epsilon(0)
     353        r"""
     354        Uses `epsilon_0` from the super class, but should be implemented if a faster implementation exists.
     355        """
     356        return super(AffineCrystalFromClassicalElement, self).epsilon(0)
    357357
    358358    def epsilon(self, i):
    359         """
    360         Returns the maximal time the crystal operator `e_i` can be applied to self.
     359        """
     360        Returns the maximal time the crystal operator `e_i` can be applied to self.
    361361
    362         EXAMPLES::
     362        EXAMPLES::
    363363
    364             sage: n=2
    365             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    366             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    367             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    368             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    369             sage: [x.epsilon(0) for x in A.list()]
    370             [1, 0, 0]
    371             sage: [x.epsilon(1) for x in A.list()]
    372             [0, 1, 0]
    373         """
     364            sage: n=2
     365            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     366            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     367            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     368            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     369            sage: [x.epsilon(0) for x in A.list()]
     370            [1, 0, 0]
     371            sage: [x.epsilon(1) for x in A.list()]
     372            [0, 1, 0]
     373        """
    374374        if i == 0:
    375375            return self.epsilon0()
    376376        else:
    377377            return self.lift().epsilon(i)
    378378
    379379    def phi0(self):
    380         r"""
    381         Uses `phi_0` from the super class, but should be implemented if a faster implementation exists.
    382         """
    383         return super(AffineCrystalFromClassicalElement, self).phi(0)
     380        r"""
     381        Uses `phi_0` from the super class, but should be implemented if a faster implementation exists.
     382        """
     383        return super(AffineCrystalFromClassicalElement, self).phi(0)
    384384
    385385    def phi(self, i):
    386         r"""
    387         Returns the maximal time the crystal operator `f_i` can be applied to self.
     386        r"""
     387        Returns the maximal time the crystal operator `f_i` can be applied to self.
    388388
    389         EXAMPLES::
     389        EXAMPLES::
    390390
    391             sage: n=2
    392             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    393             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    394             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    395             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    396             sage: [x.phi(0) for x in A.list()]
    397             [0, 0, 1]
    398             sage: [x.phi(1) for x in A.list()]
    399             [1, 0, 0]
     391            sage: n=2
     392            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     393            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     394            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     395            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     396            sage: [x.phi(0) for x in A.list()]
     397            [0, 0, 1]
     398            sage: [x.phi(1) for x in A.list()]
     399            [1, 0, 0]
    400400        """
    401401        if i == 0:
    402             return self.phi0()
     402            return self.phi0()
    403403        else:
    404404            return self.lift().phi(i)
    405405
    class AffineCrystalFromClassicalAndPromo 
    431431
    432432        sage: n=2
    433433        sage: C=CrystalOfTableaux(['A',n],shape=[1])
    434         sage: pr=lambda x : C(x.to_tableau().promotion(n))
    435         sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    436         sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    437         sage: A.list()
    438         [[[1]], [[2]], [[3]]]
    439         sage: A.cartan_type()
    440         ['A', 2, 1]
    441         sage: A.index_set()
    442         [0, 1, 2]
    443         sage: b=A(rows=[[1]])
    444         sage: b.weight()
    445         -Lambda[0] + Lambda[1]
    446         sage: b.classical_weight()
    447         (1, 0, 0)
    448         sage: [x.s(0) for x in A.list()]
    449         [[[3]], [[2]], [[1]]]
    450         sage: [x.s(1) for x in A.list()]
    451         [[[2]], [[1]], [[3]]]
     434        sage: pr=lambda x : C(x.to_tableau().promotion(n))
     435        sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     436        sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     437        sage: A.list()
     438        [[[1]], [[2]], [[3]]]
     439        sage: A.cartan_type()
     440        ['A', 2, 1]
     441        sage: A.index_set()
     442        [0, 1, 2]
     443        sage: b=A(rows=[[1]])
     444        sage: b.weight()
     445        -Lambda[0] + Lambda[1]
     446        sage: b.classical_weight()
     447        (1, 0, 0)
     448        sage: [x.s(0) for x in A.list()]
     449        [[[3]], [[2]], [[1]]]
     450        sage: [x.s(1) for x in A.list()]
     451        [[[2]], [[1]], [[3]]]
    452452    """
    453453
    454454    def __init__(self, cartan_type, classical_crystal, p_automorphism, p_inverse_automorphism, dynkin_node):
    455         """
    456         Input is an affine Cartan type 'cartan_type', a classical crystal 'classical_crystal', and automorphism and its
    457         inverse 'automorphism' and 'inverse_automorphism', and the Dynkin node 'dynkin_node'
     455        """
     456        Input is an affine Cartan type 'cartan_type', a classical crystal 'classical_crystal', and automorphism and its
     457        inverse 'automorphism' and 'inverse_automorphism', and the Dynkin node 'dynkin_node'
    458458
    459         EXAMPLES::
     459        EXAMPLES::
    460460
    461461            sage: n=1
    462             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    463             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    464             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    465             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    466             sage: A.list()
    467             [[[1]], [[2]]]
    468             sage: A.cartan_type()
    469             ['A', 1, 1]
    470             sage: A.index_set()
    471             [0, 1]
    472         """
    473         AffineCrystalFromClassical.__init__(self, cartan_type, classical_crystal)
     462            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     463            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     464            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     465            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     466            sage: A.list()
     467            [[[1]], [[2]]]
     468            sage: A.cartan_type()
     469            ['A', 1, 1]
     470            sage: A.index_set()
     471            [0, 1]
     472        """
     473        AffineCrystalFromClassical.__init__(self, cartan_type, classical_crystal)
    474474        self.p_automorphism = p_automorphism
    475475        self.p_inverse_automorphism = p_inverse_automorphism
    476         self.dynkin_node = dynkin_node
     476        self.dynkin_node = dynkin_node
    477477
    478478    def automorphism(self, x):
    479         """
    480         Gives the analogue of the affine Dynkin diagram automorphism on the level of crystals
     479        """
     480        Gives the analogue of the affine Dynkin diagram automorphism on the level of crystals
    481481
    482         EXAMPLES::
     482        EXAMPLES::
    483483
    484484            sage: n=2
    485             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    486             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    487             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    488             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    489             sage: b=A.list()[0]
    490             sage: A.automorphism(b)
    491             [[2]]
    492         """
     485            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     486            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     487            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     488            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     489            sage: b=A.list()[0]
     490            sage: A.automorphism(b)
     491            [[2]]
     492        """
    493493        return self.retract( self.p_automorphism( x.lift() ) )
    494494
    495495    def inverse_automorphism(self, x):
    496         """
    497         Gives the analogue of the inverse of the affine Dynkin diagram automorphism on the level of crystals
     496        """
     497        Gives the analogue of the inverse of the affine Dynkin diagram automorphism on the level of crystals
    498498
    499         EXAMPLES::
     499        EXAMPLES::
    500500
    501501            sage: n=2
    502             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    503             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    504             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    505             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    506             sage: b=A.list()[0]
    507             sage: A.inverse_automorphism(b)
    508             [[3]]
    509         """
     502            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     503            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     504            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     505            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     506            sage: b=A.list()[0]
     507            sage: A.inverse_automorphism(b)
     508            [[3]]
     509        """
    510510        return self.retract( self.p_inverse_automorphism( x.lift() ) )
    511511
    512512class AffineCrystalFromClassicalAndPromotionElement(AffineCrystalFromClassicalElement):
    class AffineCrystalFromClassicalAndPromo 
    526526    EXAMPLES::
    527527
    528528        sage: n=2
    529         sage: C=CrystalOfTableaux(['A',n],shape=[1])
    530         sage: pr=lambda x : C(x.to_tableau().promotion(n))
    531         sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    532         sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    533         sage: b=A(rows=[[1]])
    534         sage: b.__repr__()
    535         '[[1]]'
     529        sage: C=CrystalOfTableaux(['A',n],shape=[1])
     530        sage: pr=lambda x : C(x.to_tableau().promotion(n))
     531        sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     532        sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     533        sage: b=A(rows=[[1]])
     534        sage: b.__repr__()
     535        '[[1]]'
    536536    """
    537537
    538538    def e0(self):
    539         r"""
    540         Implements `e_0` using the automorphism as
    541         `e_0 = \pr^{-1} e_{dynkin_node} \pr`
     539        r"""
     540        Implements `e_0` using the automorphism as
     541        `e_0 = \pr^{-1} e_{dynkin_node} \pr`
    542542
    543         EXAMPLES::
     543        EXAMPLES::
    544544
    545             sage: n=2
    546             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    547             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    548             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    549             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    550             sage: b=A(rows=[[1]])
    551             sage: b.e0()
    552             [[3]]
    553         """
    554         x = self.parent().automorphism(self).e(self.parent().dynkin_node)
    555         if (x == None):
    556             return None
    557         else:
    558             return self.parent().inverse_automorphism(x)
     545            sage: n=2
     546            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     547            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     548            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     549            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     550            sage: b=A(rows=[[1]])
     551            sage: b.e0()
     552            [[3]]
     553        """
     554        x = self.parent().automorphism(self).e(self.parent().dynkin_node)
     555        if (x == None):
     556            return None
     557        else:
     558            return self.parent().inverse_automorphism(x)
    559559
    560560    def f0(self):
    561         r"""
    562         Implements `f_0` using the automorphism as
    563         `f_0 = \pr^{-1} f_{dynkin_node} \pr`
     561        r"""
     562        Implements `f_0` using the automorphism as
     563        `f_0 = \pr^{-1} f_{dynkin_node} \pr`
    564564
    565         EXAMPLES::
     565        EXAMPLES::
    566566
    567             sage: n=2
    568             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    569             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    570             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    571             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    572             sage: b=A(rows=[[3]])
    573             sage: b.f0()
    574             [[1]]
     567            sage: n=2
     568            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     569            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     570            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     571            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     572            sage: b=A(rows=[[3]])
     573            sage: b.f0()
     574            [[1]]
    575575        """
    576         x = self.parent().automorphism(self).f(self.parent().dynkin_node)
    577         if (x == None):
    578             return None
    579         else:
    580             return self.parent().inverse_automorphism(x)
     576        x = self.parent().automorphism(self).f(self.parent().dynkin_node)
     577        if (x == None):
     578            return None
     579        else:
     580            return self.parent().inverse_automorphism(x)
    581581
    582582    def epsilon0(self):
    583         r"""
    584         Implements `epsilon_0` using the automorphism.
     583        r"""
     584        Implements `epsilon_0` using the automorphism.
    585585
    586         EXAMPLES::
     586        EXAMPLES::
    587587
    588             sage: n=2
    589             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    590             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    591             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    592             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    593             sage: [x.epsilon0() for x in A.list()]
    594             [1, 0, 0]
    595         """
    596         x = self.parent().automorphism(self)
    597         return x.lift().epsilon(self.parent().dynkin_node)
     588            sage: n=2
     589            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     590            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     591            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     592            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     593            sage: [x.epsilon0() for x in A.list()]
     594            [1, 0, 0]
     595        """
     596        x = self.parent().automorphism(self)
     597        return x.lift().epsilon(self.parent().dynkin_node)
    598598
    599599    def phi0(self):
    600         r"""
    601         Implements `phi_0` using the automorphism.
     600        r"""
     601        Implements `phi_0` using the automorphism.
    602602
    603         EXAMPLES::
     603        EXAMPLES::
    604604
    605             sage: n=2
    606             sage: C=CrystalOfTableaux(['A',n],shape=[1])
    607             sage: pr=lambda x : C(x.to_tableau().promotion(n))
    608             sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
    609             sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
    610             sage: [x.phi0() for x in A.list()]
    611             [0, 0, 1]
    612         """
    613         x = self.parent().automorphism(self)
    614         return x.lift().phi(self.parent().dynkin_node)
     605            sage: n=2
     606            sage: C=CrystalOfTableaux(['A',n],shape=[1])
     607            sage: pr=lambda x : C(x.to_tableau().promotion(n))
     608            sage: pr_inverse = lambda x : C(x.to_tableau().promotion_inverse(n))
     609            sage: A=AffineCrystalFromClassicalAndPromotion(['A',n,1],C,pr,pr_inverse,1)
     610            sage: [x.phi0() for x in A.list()]
     611            [0, 0, 1]
     612        """
     613        x = self.parent().automorphism(self)
     614        return x.lift().phi(self.parent().dynkin_node)
    615615
    616616AffineCrystalFromClassicalAndPromotion.element_class = AffineCrystalFromClassicalAndPromotionElement