# Revision history [back]

My analysis is that this method is very broken

• first of all the inital error is because a __hash__ method is "missing" for FiniteDimensionalAlgebraElement
• next, the method central_orthogonal_idempotents assumes that the quasi-idempotents of a commutative algebra are defined over the base ring which is wrong in general (needs the base ring to be algebraically closed...)
• finally, even though we change QQ for QQbar in the definition of B, the subalgebras created along the way do not implement retract/lift so that the product is not working... For the example given in the documentation of central_orthogonal_idempotents it works by some black magic

sage: A4 = SymmetricGroup(4).algebra(QQ) sage: B4 = A4.submodule([A4.an_element()]) sage: B4.retract Generic morphism: From: Symmetric group algebra of order 4 over Rational Field To: Free module generated by {0} over Rational Field sage: B4.lift Generic morphism: From: Free module generated by {0} over Rational Field To: Symmetric group algebra of order 4 over Rational Field sage: C = B.submodule([B.an_element()]) sage: C.retract ... AttributeError: 'SubmoduleWithBasis_with_category' object has no attribute 'retract'

My conclusion is that the code is not written in a way that it works for generic commutative algebra.

My analysis is that this method is very broken

• first of all the inital error is because a __hash__ method is "missing" for FiniteDimensionalAlgebraElement
• next, the method central_orthogonal_idempotents assumes that the quasi-idempotents of a commutative algebra are defined over the base ring which is wrong in general (needs the base ring to be algebraically closed...)
• finally, even though we change QQ for QQbar in the definition of B, the subalgebras created along the way do not implement retract/lift so that the product is not working... For the example given in the documentation of central_orthogonal_idempotents it works by some black magic

Here is the black magic:

sage: A4 = SymmetricGroup(4).algebra(QQ)
sage: B4 = A4.submodule([A4.an_element()])
sage: B4.retract
Generic morphism:
From: Symmetric group algebra of order 4 over Rational Field
To:   Free module generated by {0} over Rational Field
sage: B4.lift
Generic morphism:
From: Free module generated by {0} over Rational Field
To:   Symmetric group algebra of order 4 over Rational Field
sage: C = B.submodule([B.an_element()])
sage: C.retract
...
AttributeError: 'SubmoduleWithBasis_with_category' object has no attribute 'retract' 'retract'


My conclusion is that the code is not written in a way that it works for generic commutative algebra.