# Homomorphisms

## `hom<F -> R | g>: FldFun, Rng, RngElt -> Map`

## `hom<F -> R | cf, g>: FldFun, Rng, Map, RngElt -> Map`

The homomorphism from the function field $F$ to any ring $R$ where $g$ is the image of the generator of $F$ in $R$ and $cf$ is a map from the coefficient field of $F$ into $R$.

## `hom< O -> R | g >: RngFunOrd, Rng, RngElt -> Map`

## `hom< O -> R | cf, g >: RngFunOrd, Rng, Map, RngElt -> Map`

Create the map from the order $O$ of an algebraic function field to $R$ using $g$ as the image of the primitive element of $O$. If the map $cf$ is given it should be from the coefficient ring of $O$ into $R$, otherwise the coefficient ring of $O$ should be automatically coercible into $R$.

## `IsRingHomomorphism(m): Map -> BoolElt`

Return whether the vector space homomorphism $m$ is a homomorphism of rings.

## `Example: hom (ex-1107ee)`

A simple use of homomorphisms is shown.

```magma
> PR<x> := PolynomialRing(Rationals());
> P<y> := PolynomialRing(PR);
> FR1<a> := FunctionField(y^3 - x*y + 1);
> P<y> := PolynomialRing(FR1);
> FR2<c> := FunctionField(y^2 - a^5*x^3*y + 1);
> EFR2F := EquationOrderFinite(FR2);
> cf := hom<FR1 -> EFR2F | a + 1>;
> h := hom<FR2 -> EFR2F | cf, c + 1>;
> h(c) eq c + 1;
true
> h(a*c) eq a*c + a + c + 1;
true

```

## `hom< O -> R | b₁, ..., bₙ >: RngFunOrd, Rng, RngElt, ..., RngElt -> Map`

## `hom< O -> R | m, b₁, ..., bₙ >: RngFunOrd, Rng, Map, RngElt, ..., RngElt -> Map`

Return the map from the order $O$ of an algebraic function field into the ring $R$ which maps the basis elements of $O$ to $b_1, ..., b_n$. The map $m$, if given, should be from the coefficient ring of $O$ into $R$ and will be used to map the coefficients of the basis elements. If not given, the coefficient ring of $O$ should automatically coerce into $R$.
