Morphisms Between Finite Algebras - Algebras

Skip to content
Back to top
View this page
Edit this page

# Morphisms Between Finite Algebras

class sage.algebras.finite_dimensional_algebras.finite_dimensional_algebra_morphism.FiniteDimensionalAlgebraHomset(R, S, category=None)

  Bases: `RingHomset_generic`

  Set of morphisms between two finite-dimensional algebras.

  zero()

    Construct the zero morphism of `self`.

    EXAMPLES:

    Sage

        sage: A = FiniteDimensionalAlgebra(QQ, [Matrix([1])])
        sage: B = FiniteDimensionalAlgebra(QQ, [Matrix([[1, 0], [0, 1]]),
        ....:                                   Matrix([[0, 1], [0, 0]])])
        sage: H = Hom(A, B)
        sage: H.zero()
        Morphism from Finite-dimensional algebra of degree 1 over Rational Field to
         Finite-dimensional algebra of degree 2 over Rational Field given by matrix
        [0 0]

    Python

        >>> from sage.all import *
        >>> A = FiniteDimensionalAlgebra(QQ, [Matrix([Integer(1)])])
        >>> B = FiniteDimensionalAlgebra(QQ, [Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(1)]]),
        ...                                   Matrix([[Integer(0), Integer(1)], [Integer(0), Integer(0)]])])
        >>> H = Hom(A, B)
        >>> H.zero()
        Morphism from Finite-dimensional algebra of degree 1 over Rational Field to
         Finite-dimensional algebra of degree 2 over Rational Field given by matrix
        [0 0]

class sage.algebras.finite_dimensional_algebras.finite_dimensional_algebra_morphism.FiniteDimensionalAlgebraMorphism(parent, f, check=True, unitary=True)

  Bases: `RingHomomorphism_im_gens`

  Create a morphism between two `finite-dimensional algebras`.

  INPUT:

  - `parent` – the parent homset

  - `f` – matrix of the underlying \(k\)-linear map

  - `unitary` – boolean (default: `True`); if `True` and `check` is also `True`, raise a `ValueError` unless `A` and `B` are unitary and `f` respects unit elements

  - `check` – boolean (default: `True`); check whether the given \(k\)-linear map really defines a (not necessarily unitary) \(k\)-algebra homomorphism

  The algebras `A` and `B` must be defined over the same base field.

  EXAMPLES:

  Sage

      sage: from sage.algebras.finite_dimensional_algebras.finite_dimensional_algebra_morphism import FiniteDimensionalAlgebraMorphism
      sage: A = FiniteDimensionalAlgebra(QQ, [Matrix([[1, 0], [0, 1]]),
      ....:                                   Matrix([[0, 1], [0, 0]])])
      sage: B = FiniteDimensionalAlgebra(QQ, [Matrix([1])])
      sage: H = Hom(A, B)
      sage: f = H(Matrix([[1], [0]]))
      sage: f.domain() is A
      True
      sage: f.codomain() is B
      True
      sage: f(A.basis()[0])
      e
      sage: f(A.basis()[1])
      0

  Python

      >>> from sage.all import *
      >>> from sage.algebras.finite_dimensional_algebras.finite_dimensional_algebra_morphism import FiniteDimensionalAlgebraMorphism
      >>> A = FiniteDimensionalAlgebra(QQ, [Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(1)]]),
      ...                                   Matrix([[Integer(0), Integer(1)], [Integer(0), Integer(0)]])])
      >>> B = FiniteDimensionalAlgebra(QQ, [Matrix([Integer(1)])])
      >>> H = Hom(A, B)
      >>> f = H(Matrix([[Integer(1)], [Integer(0)]]))
      >>> f.domain() is A
      True
      >>> f.codomain() is B
      True
      >>> f(A.basis()[Integer(0)])
      e
      >>> f(A.basis()[Integer(1)])
      0

  Todo

  An example illustrating unitary flag.

  inverse_image(I)

    Return the inverse image of `I` under `self`.

    INPUT:

    - `I` – `FiniteDimensionalAlgebraIdeal`, an ideal of `self.codomain()`

    OUTPUT: `FiniteDimensionalAlgebraIdeal`, the inverse image of \(I\) under `self`

    EXAMPLES:

    Sage

        sage: cat = CommutativeAlgebras(QQ).FiniteDimensional().WithBasis()
        sage: A = FiniteDimensionalAlgebra(QQ, [Matrix([[1, 0], [0, 1]]),
        ....:                                   Matrix([[0, 1], [0, 0]])],
        ....:                              category=cat)
        sage: I = A.maximal_ideal()                                                 # needs sage.libs.pari
        sage: q = A.quotient_map(I)                                                 # needs sage.libs.pari
        sage: B = q.codomain()                                                      # needs sage.libs.pari
        sage: q.inverse_image(B.zero_ideal()) == I                                  # needs sage.libs.pari
        True

    Python

        >>> from sage.all import *
        >>> cat = CommutativeAlgebras(QQ).FiniteDimensional().WithBasis()
        >>> A = FiniteDimensionalAlgebra(QQ, [Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(1)]]),
        ...                                   Matrix([[Integer(0), Integer(1)], [Integer(0), Integer(0)]])],
        ...                              category=cat)
        >>> I = A.maximal_ideal()                                                 # needs sage.libs.pari
        >>> q = A.quotient_map(I)                                                 # needs sage.libs.pari
        >>> B = q.codomain()                                                      # needs sage.libs.pari
        >>> q.inverse_image(B.zero_ideal()) == I                                  # needs sage.libs.pari
        True

  matrix()

    Return the matrix of `self`.

    EXAMPLES:

    Sage

        sage: A = FiniteDimensionalAlgebra(QQ, [Matrix([[1, 0], [0, 1]]),
        ....:                                   Matrix([[0, 1], [0, 0]])])
        sage: B = FiniteDimensionalAlgebra(QQ, [Matrix([1])])
        sage: M = Matrix([[1], [0]])
        sage: H = Hom(A, B)
        sage: f = H(M)
        sage: f.matrix() == M
        True

    Python

        >>> from sage.all import *
        >>> A = FiniteDimensionalAlgebra(QQ, [Matrix([[Integer(1), Integer(0)], [Integer(0), Integer(1)]]),
        ...                                   Matrix([[Integer(0), Integer(1)], [Integer(0), Integer(0)]])])
        >>> B = FiniteDimensionalAlgebra(QQ, [Matrix([Integer(1)])])
        >>> M = Matrix([[Integer(1)], [Integer(0)]])
        >>> H = Hom(A, B)
        >>> f = H(M)
        >>> f.matrix() == M
        True