Grothendieck Topology

Definition

A sieve $S$ on $c\in\mathcal{C}$ is a subfunctor of $\mathsf{y}c = \operatorname{Hom}(\cdot,c)$ where $\operatorname{Hom}(d,c)$ is understood to be in $\operatorname{Set}$ with morphisms given by precomposition of arrows in $\mathcal{C}$ for $\mathsf{y}c$ is the Yoneda embedding of $c$. Whenever $f:d\to c$ is in $S$, all morphisms $f\circ g$ with $\operatorname{cod}(g)=d$ are also in $S$: $$\operatorname{Hom}(f\circ g,c) = \operatorname{Hom}(g,c)\circ \operatorname{Hom}(f,c) = \operatorname{Hom}(g,c)\circ \operatorname{Hom}(d,c),$$ when $f\in \operatorname{Hom}(d,c)$, its pullback (precomposition) by $g$ is defined, since a subfunctor is still defined on all morphisms and objects.

A sieve $S$ on $c\in\mathcal{C}$ can be pulled back by a morphism $f$ whose codomain is $c$ to a sieve on $\operatorname{dom}(f)$ $$f^\ast S = \{g:\operatorname{cod}(g)=\operatorname{dom}(f)|f\circ g\in S\}.$$

Definition(Grothendieck topology) . A Grothendieck topology $J$ on a category $\mathcal{C}$ is an assignment that takes $c\in\mathcal{C}$ to $J(c)$, where $J(c)$ is a collection of sieves called covering, such that
1. (Maximal) For each $c\in\mathcal{C}$, the maximal sieve $M_c = \{f | \operatorname{cod}(f)=c\}$ is in $J(c)$.
2. (Pullback stability) For each $f:d\to c\in\mathrm{Mor}(\mathcal{C})$, the pullback sieve $f^\ast S$ of a covering $S\in J(c)$ is a covering $J(d)$.
3. (Transitivity) Given a covering $S\in J(c)$ and another sieve $T$ on $d$, if for all $f\in S$, the pullbacks $f^\ast T$ are all coverings $J(\operatorname{dom}(f)$, then $T$ is itself a covering $T\in J(d)$.

The transitivity axiom simply says that if an arbitrary sieve $T$ is a covering after being pulled back by all the morphisms in a covering $S$, then $T$ is a covering. This is equivalent to the local character condition: If for a sieve $T$ on $c$, the maximal pullback-covering sieve (or the $(T,J)$-pull-push sieve) $\cup_d \{g:d\to c| g^\ast T\text{ covers }d\}$ on $c$ contains a covering $S$, then $T$ is a covering. The definition of $(T,J)$-pull-push sieve makes sense since a covering is stable under pullback.

The axioms say that any two covers have a common refinement, $i.e.$, $R,S\in J(c)$ then $R\cap S\in J(c)$: If $R,S$ are coverings on $c$ and $f:c\to d$ is in $R$, $f^\ast(R\cap S) = f^\ast(R)\cap f^\ast(S) = f^\ast(S)$, but all pullbacks $f^\ast(S)$ are coverings, hence by transitivity $R\cap S$ is a covering of $c$.