# Operations with Linear Transformations

Throughout this section, $V$ is a subspace of $K^{(m)}$, $W$ is a subspace of $K^{(n)}$ and $a$ is a linear transformation belonging to ${\operatorname{Hom}}_{K}(V, W)$. See also the chapter on general matrices for many other functions applicable to such matrices (e.g., `EchelonForm)`.

## `v * a: ModTupFldElt, ModMatFldElt -> ModTupFldElt`

## `a(v): ModMatFldElt, ModTupFldElt -> ModTupFldElt`

Given an element $v$ belonging to the vector space $V$, and an element $a$ belonging to ${\operatorname{Hom}}_{K}(V, W)$, return the image of $v$ under the linear transformation $a$ as an element of the vector space $W$.

## `a * b: ModMatRngElt, ModMatRngElt -> ModMatRngElt`

Given a matrix $a$ belonging to $K^{(m \times n)}$ and a matrix $b$ belonging to $K^{(n \times p)}$, for some integers $m$, $n$, $p$, form the product of $a$ and $b$ as an element of $K^{(m \times p)}$.

## `Domain(a): ModMatRngElt -> ModTupRng`

The domain of the linear transformation $a$ belonging to ${\operatorname{Hom}}_{K}(V, W)$, returned as a subspace of $V$.

## `Codomain(a): ModMatRngElt -> ModTupRng`

The codomain of the linear transformation $a$ belonging to ${\operatorname{Hom}}_{K}(V, W)$, returned as a subspace of $W$.

## `Image(a): ModMatRngElt -> ModTupRng, Map, Map`

The image of the linear transformation $a$ belonging to ${\operatorname{Hom}}_{K}(V, W)$, returned as a subspace of $W$.

## `Rank(a): ModMatRngElt -> RngIntElt`

The dimension of the image of the linear transformation $a$, i.e., the rank of the matrix $a$.

## `Kernel(a): ModMatRngElt -> ModTupFld, Map`

## `NullSpace(a): ModMatRngElt -> ModTupFld, Map`

The kernel of the linear transformation $a$ belonging to ${\operatorname{Hom}}_{K}(V, W)$, returned as a subspace of $V$.

## `Cokernel(a): ModMatRngElt -> ModTupFld, Map`

The cokernel of the linear transformation $a$ belonging to ${\operatorname{Hom}}_{K}(V, W)$.

## `Example: Linear Trans (ex-135cf0)`

We illustrate the map operations for matrix spaces in the following example:

```magma
> Q := RationalField();
> Q2 := VectorSpace(Q, 2);
> Q3 := VectorSpace(Q, 3);
> Q4 := VectorSpace(Q, 4);
> H23 := Hom(Q2, Q3);
> H34 := Hom(Q3, Q4);
> x := Q2 ! [ -1, 2 ];
> a := H23 ! [ 1/2, 3, 0,  2/3, 4/5, -1 ];
> a;
[1/2   3   0]
[2/3 4/5  -1]
> Domain(a);
Full Vector space of degree 2 over Rational Field
> Codomain(a);
Full Vector space of degree 3 over Rational Field
> x*a;
( 5/6 -7/5   -2)
> b := H34 ! [ 2, 0, 1, -1/2,  1, 0, 3/2, 4,  4/5, 6/7, 0, -9/7];
> b;
[   2    0    1 -1/2]
[   1    0  3/2    4]
[ 4/5  6/7    0 -9/7]
> c := a*b;
> c;
[      4       0       5    47/4]
[    4/3    -6/7   28/15 436/105]
> x*c;
(     -4/3     -12/7    -19/15 -1447/420)
> Image(c);
Vector space of degree 4, dimension 2 over Rational Field
Echelonized basis:
(     1      0    5/4  47/16)
(     0      1  -7/30 -11/40)
> Kernel(c);
Vector space of degree 2, dimension 0 over Rational Field
> Rank(c);
2
> EchelonForm(c);
[     1      0    5/4  47/16]
[     0      1  -7/30 -11/40]

```
