# Bidirectional map

In computer science, a bidirectional map, or hash bag, is an associative data structure in which the ${\displaystyle (key,value)}$ pairs form a one-to-one correspondence. Thus the binary relation is functional in each direction: each ${\displaystyle value}$ can also be mapped to a unique ${\displaystyle key}$. A pair ${\displaystyle (a,b)}$ thus provides a unique coupling between ${\displaystyle a}$ and ${\displaystyle b}$ so that ${\displaystyle b}$ can be found when ${\displaystyle a}$ is used as a key and ${\displaystyle a}$ can be found when ${\displaystyle b}$ is used as a key.
Mathematically, a bidirectional map can be defined a bijection ${\displaystyle f:X\to Y}$ between two different sets of keys ${\displaystyle X}$ and ${\displaystyle Y}$ of equal cardinality, thus constituting a injective and surjective function:
${\displaystyle {\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)}$