# Structure Operations

The following generic ring functions are applicable to the ring of integers and its elements.

## Related Structures

### `Category(Z): RngInt -> Cat`

### `Parent(Z): RngInt -> PowerStructure`

### `PrimeRing(Z): RngInt -> RngInt`

### `Center(Z): RngInt -> RngInt`

### `AdditiveGroup(Z): RngInt -> GrpAb, Map`

Create the abelian group of integers under addition. This returns an infinite (additive) abelian group $A$ of rank 1 together with a map from $A$ to the ring of integers $Z$, sending $A.1$ to $1$.

### `MultiplicativeGroup(Z): RngInt -> GrpAb, Map`

### `UnitGroup(Z): RngInt -> GrpAb, Map`

Create the abelian group of invertible integers, that is, an abelian group isomorphic to the multiplicative subgroup $\langle -1\rangle$. This returns an (additive) abelian group $A$ of order $2$ together with a map from $A$ to the ring of integers $Z$, sending $A.1$ to $-1$.

### `ClassGroup(Z): RngInt -> GrpAb, Map`

The class group of the ring of ${\mathbb{Z}}$ (which is trivial).

### `FieldOfFractions(Z): RngInt -> FldRat`

Create the field of fractions ${\mathbb{Q}}$ of the ring of rational integers.

### `sub< Z | n >: RngInt, RngIntElt -> RngInt`

Given $Z$, the ring of integers or an ideal of it, and an element $n$ of $Z$, create the ideal $aZ\cap Z$ of the ring of integers. Note that this creates an ideal, not just a subring.

## Numerical Invariants

### `Characteristic(Z): RngInt -> RngIntElt`

### `Signature(Z): RngInt -> RngIntElt, RngIntElt`

The signature of ${\mathbb{Z}}$ as an order of ${\mathbb{Q}}$, i.e. `1, 0`.

## Ring Predicates and Booleans

### `IsCommutative(Z): RngInt -> BoolElt`

### `IsUnitary(Z): RngInt -> BoolElt`

### `IsFinite(Z): RngInt -> BoolElt`

### `IsOrdered(Z): RngInt -> BoolElt`

### `IsField(Z): RngInt -> BoolElt`

### `IsEuclideanDomain(Z): RngInt -> BoolElt`

### `IsPID(Z): RngInt -> BoolElt`

### `IsUFD(Z): RngInt -> BoolElt`

### `IsDivisionRing(Z): RngInt -> BoolElt`

### `IsEuclideanRing(Z): RngInt -> BoolElt`

### `IsPrincipalIdealRing(Z): RngInt -> BoolElt`

### `IsDomain(Z): RngInt -> BoolElt`

### `Z eq R: RngInt, Rng -> BoolElt`

### `Z ne R: RngInt, Rng -> BoolElt`
