# Non Negative Integer Semiring¶

sage.rings.semirings.non_negative_integer_semiring.NN = Non negative integer semiring
class sage.rings.semirings.non_negative_integer_semiring.NonNegativeIntegerSemiring

A class for the semiring of the non negative integers

This parent inherits from the infinite enumerated set of non negative integers and endows it with its natural semiring structure.

EXAMPLES:

```sage: NonNegativeIntegerSemiring()
Non negative integer semiring
```

For convenience, `NN` is a shortcut for `NonNegativeIntegerSemiring()`:

```sage: NN == NonNegativeIntegerSemiring()
True

sage: NN.category()
Category of facade infinite enumerated commutative semirings
```

Here is a piece of the Cayley graph for the multiplicative structure:

```sage: G = NN.cayley_graph(elements=range(9), generators=[0,1,2,3,5,7])
sage: G
Looped multi-digraph on 9 vertices
sage: G.plot()
Graphics object consisting of 48 graphics primitives
```

This is the Hasse diagram of the divisibility order on `NN`.

sage: Poset(NN.cayley_graph(elements=[1..12], generators=[2,3,5,7,11])).show()

Note: as for `NonNegativeIntegers`, `NN` is currently just a “facade” parent; namely its elements are plain Sage `Integers` with `Integer Ring` as parent:

```sage: x = NN(15); type(x)
<class 'sage.rings.integer.Integer'>
sage: x.parent()
Integer Ring
sage: x+3
18
```
Returns the additive semigroup generators of `self`.
```sage: NN.additive_semigroup_generators()