Bidirectional map

In computer science, a bidirectional map is an associative data structure in which the $$(key, value)$$ pairs form a one-to-one correspondence. Thus the binary relation is functional in each direction: each $$value$$ can also be mapped to a unique $$key$$. A pair $$(a, b)$$ thus provides a unique coupling between $$a$$ and $$b$$ so that $$b$$ can be found when $$a$$ is used as a key and $$a$$ can be found when $$b$$ is used as a key.

Mathematically, a bidirectional map can be defined a bijection $$f: X \to Y$$ between two different sets of keys $$X$$ and $$Y$$ of equal cardinality, thus constituting an injective and surjective function:

$$\begin{cases} & \forall x, x' \in X, f(x) = f(x') \Rightarrow x = x' \\ & \forall y \in Y, \exists x \in X : y=f(x) \end{cases} \Rightarrow \exists f^{-1}(x)$$