A function takes in an element from its **domain**, transforms it in someway and outputs that transformed element, which is part of the **co-domain**.
Every element of the **domain** must map to a value in the **co-domain**, all values of the **co-domain** that are mapped to form the functions **image**.
A function must be **deterministic** - one input can only map to a single output.

## Notation
General function notation: $f: X -> Y$

> [!INFO]
> $f$: name of the function
> $X$: Domain
> $Y$: Co-domain
> $f(x)$: Image of $f$
> $X$, $f(x)$ and $Y$ are [[Set Theory | Set]]

For any $x in X$ the output $f(x)$ is an element of $Y$.

## Mapping Properties
### Injectivity
A function is _injective_ if every element in $y in f(x)$ has _at most_ one matching $x in X$.
- $forall y in Y,exists excl x in X : f(x) = y$
### Surjectivity
A function is _surjective_ if every element $y in Y$ has _at minimum_ one matching $x in X$
- $forall y in Y, exists x in X : f(x) = y$

### Bijectivity
A function is _bijective_ if every element $y in Y$ has _exactly_ one matching $x in X$ (it is _injective_ and _surjective_)
- $forall y in Y, exists excl x in X : f(x) = y$