In school, we understand a function $\mathrm{f} :\mathrm{X\to Y}$ by its graph: the relation of inputs $\mathrm{x:X}$ to outputs $\mathrm{f(x):Y}$.
$$ \mathrm{graph}f \;\equiv\;\; [f(\mathrm{x}) = \mathrm{y}]:\{0,1\} $$
The graph of $\mathrm{f}$ relates each input $\mathrm{x:X}$ to its image $\mathrm{f(x):Y}$. **We can understand this as “pushing forward” by $\mathrm{f}$.
The mirror image is the cograph:
$$ \mathrm{cograph}f\;\equiv\;\; [\mathrm{y}=f(\mathrm{x})]:\{0,1\} $$
The cograph of $\mathrm{f}$ relates each output $\mathrm{y:Y}$ to its preimage $\{\mathrm{x:X} \,|\, \mathrm{f(x)=y}\}$. We can understand this as “pulling backward” by $\mathrm{f}$.
example.
The graph can be drawn as follows.
The cograph can be drawn as follows.
So, every function gives a “dual pair” of relations: in fact, there are special inferences which connect the two, which define how we use processes to “push and pull” relations.
[bends]