| """Special exception classes for numberfields. """ | |
| class ClosureFailure(Exception): | |
| r""" | |
| Signals that a :py:class:`ModuleElement` which we tried to represent in a | |
| certain :py:class:`Module` cannot in fact be represented there. | |
| Examples | |
| ======== | |
| >>> from sympy.polys import Poly, cyclotomic_poly, ZZ | |
| >>> from sympy.polys.matrices import DomainMatrix | |
| >>> from sympy.polys.numberfields.modules import PowerBasis, to_col | |
| >>> T = Poly(cyclotomic_poly(5)) | |
| >>> A = PowerBasis(T) | |
| >>> B = A.submodule_from_matrix(2 * DomainMatrix.eye(4, ZZ)) | |
| Because we are in a cyclotomic field, the power basis ``A`` is an integral | |
| basis, and the submodule ``B`` is just the ideal $(2)$. Therefore ``B`` can | |
| represent an element having all even coefficients over the power basis: | |
| >>> a1 = A(to_col([2, 4, 6, 8])) | |
| >>> print(B.represent(a1)) | |
| DomainMatrix([[1], [2], [3], [4]], (4, 1), ZZ) | |
| but ``B`` cannot represent an element with an odd coefficient: | |
| >>> a2 = A(to_col([1, 2, 2, 2])) | |
| >>> B.represent(a2) | |
| Traceback (most recent call last): | |
| ... | |
| ClosureFailure: Element in QQ-span but not ZZ-span of this basis. | |
| """ | |
| pass | |
| class StructureError(Exception): | |
| r""" | |
| Represents cases in which an algebraic structure was expected to have a | |
| certain property, or be of a certain type, but was not. | |
| """ | |
| pass | |
| class MissingUnityError(StructureError): | |
| r"""Structure should contain a unity element but does not.""" | |
| pass | |
| __all__ = [ | |
| 'ClosureFailure', 'StructureError', 'MissingUnityError', | |
| ] | |