Anafunctor

An anafunctor is a notion introduced by for ordinary categories that is a generalization of functors. In category theory, some statements require the axiom of choice, but the axiom of choice can sometimes be avoided when using an anafunctor. For example, the statement "every fully faithful and essentially surjective functor is an equivalence of categories" is equivalent to the axiom of choice, but we can usually follow the same statement without the axiom of choice by using anafunctor instead of functor.

Span formulation of anafunctors
Let $X$ and $A$ be categories. An anafunctor $F$ with domain (source) $X$ and codomain (target) $A$, and between categories $X$ and $A$ is a category $$|F|$$, in a notation $$F:X \xrightarrow{a} A$$, is given by the following conditions:


 * $$F_0$$ is surjective on objects.


 * Let pair $$F_0:|F| \rightarrow X$$ and $$F_1:|F| \rightarrow A$$ be functors, a span of ordinary functors ($$X \leftarrow |F| \rightarrow A$$), where $$F_0$$ is fully faithful.

Set-theoretic definition
An anafunctor $$F: X \xrightarrow{a} A$$ following condition:

$$.
 * 1) A set $$|F|$$ of specifications of $$F$$, with maps $$\sigma : |F| \to \mathrm{Ob} (X)$$ (source), $$\tau : |F| \to \mathrm{Ob} (A)$$ (target). $$|F|$$ is the set of specifications, $$s \in |F|$$ specifies the value $$\tau (s)$$ at the argument $$\sigma (s)$$. For $$X \in \mathrm{Ob} (X)$$, we write $$|F| \; X$$ for the class $$\{s \in |F| : \sigma (s) = X\}$$ and $$F_{s} (X)$$ for $$\tau (s)$$ the notation $$F_{s} (X)$$ presumes that $$s \in |F| \; X$$.
 * 2) For each $$X, \; Y \in \mathrm{Ob} (X)$$, $$x \in |F| \; X$$, $$y \in |F| \; Y$$ and $$f : X \to Y$$ in the class of all arrows $$\mathrm{Arr (X)}$$ an arrows $$F_{x,y} (f) : F_{x} (X) \to F_{y} (Y)$$ in $$A$$.
 * 3) For every $$X \in \mathrm{Ob} (X)$$, such that $$|F| \; X$$ is inhabited (non-empty).
 * 4) $$F$$ hold identity. For all $$X \in \mathrm{Ob} (X)$$ and $$x \in |F| \; X$$, we have $$F_{x,x} (\mathrm{id}_x) = \mathrm{id}_{F_{x}X}$$
 * 5) $$F$$ hold composition. Whenever $$X, Y, Z \in \mathrm{Ob} (X)$$, $$x \in |F| \; X$$, $$y \in |F| \; Y$$, $$z \in |F| \; Z,$$ and $$F_{x,z} (gf) = F_{y,z} (g) \circ F_{x,y} (f)