# Casting

In mathematics, natural numbers are a strict subset of integers, and
can be used in any context where an integer is expected. In LIGO, this
property does not hold true in general. Instead, a given binary
arithmetic operation, say, is defined four times, so it can apply to
any combination of natural numbers and integers: this is called
*overloading*, and some programming languages extend it to
user-defined functions (e.g. members in C++) -- but not LIGO.

So there are no implicit type casts in LIGO, but we can *explicitly
cast* natural numbers to integers (this is safe in all contexts where
an integer is valid) by calling the predefined function `int`

. The
inverse cast, from `int`

to `nat`

is called in mathematics the
*absolute value*, or `abs`

in LIGO.

const one : int = int(1n); // Explicit cast from nat to int

const two : nat = abs(2); // Explicit cast from int to nat