----
> [!definition] Definition. ([[equalizer]])
>
> Let $\mathsf{I}$ be an 'indexing [[category]]' with two objects $\boldsymbol 1$ and $\boldsymbol 2$ and morphisms that look like this (the self-morphisms are identity):
>
> ```tikz
> \usepackage{tikz-cd}
> \usepackage{amsmath}
> \begin{document}
> % https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZABgBpiBdUkANwEMAbAVxiRAB12AjCBqOAJ4BbHg2AAmAL4hJpdJlz5CKAIzkqtRizadR-YaIAEKmRphQA5vCKgAZgCcIQpGRA4ISNSC4wwUJADMrvTMrIgc7IxoABZ0MnIgDk4u1O6e1D5+SAC0QdQh2uG6MDhx1Ax0PgwACgp4BGz2WBbROPF2js6Irmnd5RAQaETiAOxktoxwMBoVVbXY9cogTS1tsh3JiF69XgwDQygAnGQ49iwzlTA1dUpsDDC2axSSQA
> \begin{tikzcd}
> \boldsymbol{2} \arrow[r, "\alpha", bend left] \arrow[r, "\beta"', bend right] \arrow[loop, distance=2em, in=215, out=145] & \boldsymbol 1 \arrow[loop, distance=2em, in=325, out=35]
> \end{tikzcd}
> \end{document}
> ```
>
>
> Let $\mathsf{C}$ by any [[category]]. A [[covariant functor|functor]] ([[diagram]]) $\mathscr{K}:\mathsf{I} \to \mathsf{C}$ amounts to the choice of two objects $A_{1}=\mathscr{K}(\boldsymbol 1)$, $A_{2}=\mathscr{K}(\boldsymbol 2)$ in $\mathsf{C}$ and two 'parallel' morphisms from $A_{2}$ to $A_{1}$. [[categorical limit|Limits]] of such functors are called **equalizers**. [[categorical colimit|Colimits]] are called [[coequalizer|coequalizers]]. Coequalizers are the abstract way to discuss [[quotient set|quotients]] in various categories.
Speaking loosely here because I think it is clearer, but could easily make precise. Write the diagram like ($X=A_{2}, Y=A_{1}$)
```tikz
\usepackage{tikz-cd}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage[mathscr]{euscript}
\usepackage{tikzit}
\usetikzlibrary{shapes.geometric}
\begin{document}
% TiKZ style file generated by TikZiT. You may edit this file manually,
% but some things (e.g. comments) may be overwritten. To be readable in
% TikZiT, the only non-comment lines must be of the form:
% \tikzstyle{NAME}=[PROPERTY LIST]
% Node styles
\tikzstyle{red dot}=[fill={rgb,255: red,191; green,0; blue,64}, draw=black, shape=circle]
\tikzstyle{green dot}=[fill={rgb,255: red,0; green,128; blue,128}, draw=black, shape=circle]
\tikzstyle{rectangle}=[fill=white, draw=black, shape=rectangle]
\tikzstyle{triangle}=[fill=white, draw=black, regular polygon sides=3, regular polygon, shape=regular polygon, tikzit shape=regular polygon, shape border rotate=180, minimum size=5mm, inner sep=0pt]
\tikzstyle{bullet}=[fill=black, draw=black, shape=circle, minimum size=2mm, inner sep=0pt]
\tikzstyle{noborder}=[fill=none, draw=none, shape=circle]
\tikzstyle{widerectangle}=[fill=white, draw=black, shape=rectangle, minimum width=16mm, minimum height=4mm, inner sep=1pt, tikzit shape=rectangle]
% Edge styles
\tikzstyle{new edge style 0}=[-]
%% paste tikzpicture here
% https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZABgBpiBdUkANwEMAbAVxiRAA0QBfU9TXfIRQBGclVqMWbAJrdxMKAHN4RUADMAThAC2SMiBwQkokHAAWWNTiQBaYT3VbdifYePVzl64nsUuQA
\begin{tikzcd}
X \arrow[r, shift left] \arrow[r, shift right] & Y
\end{tikzcd}
%% end paste
\end{document}
```
A colimit of the [[diagram]] is an object of $C$ of $\mathsf{C}$, together with morphisms $\lambda:X \to C$, $\pi:Y \to C$ and [[universal property]] like
```tikz
\usepackage{tikz-cd}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage[mathscr]{euscript}
\usepackage{tikzit}
\usetikzlibrary{shapes.geometric}
\begin{document}
% TiKZ style file generated by TikZiT. You may edit this file manually,
% but some things (e.g. comments) may be overwritten. To be readable in
% TikZiT, the only non-comment lines must be of the form:
% \tikzstyle{NAME}=[PROPERTY LIST]
% Node styles
\tikzstyle{red dot}=[fill={rgb,255: red,191; green,0; blue,64}, draw=black, shape=circle]
\tikzstyle{green dot}=[fill={rgb,255: red,0; green,128; blue,128}, draw=black, shape=circle]
\tikzstyle{rectangle}=[fill=white, draw=black, shape=rectangle]
\tikzstyle{triangle}=[fill=white, draw=black, regular polygon sides=3, regular polygon, shape=regular polygon, tikzit shape=regular polygon, shape border rotate=180, minimum size=5mm, inner sep=0pt]
\tikzstyle{bullet}=[fill=black, draw=black, shape=circle, minimum size=2mm, inner sep=0pt]
\tikzstyle{noborder}=[fill=none, draw=none, shape=circle]
\tikzstyle{widerectangle}=[fill=white, draw=black, shape=rectangle, minimum width=16mm, minimum height=4mm, inner sep=1pt, tikzit shape=rectangle]
% Edge styles
\tikzstyle{new edge style 0}=[-]
%% paste tikzpicture here
% https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZABgBpiBdUkANwEMAbAVxiRAA0QBfU9TXfIRQBGclVqMWbAJrdeIDNjwEiAJjHV6zVohAAtOXyWCio4eK1TdAYW7iYUAObwioAGYAnCAFskZEDgQSKIgcAAWWG44SAC0IZY6IG6GSV6+iP6BwdThkdGI8ZKJjiDUDHQARjAMAAr8ykIgHliOYdE87mnZAUGI6hLabAA6Q95MKZ4+ftRZfdRVYFBIACwAnJpFw0Pl3hVQdBNdBTO9AMwbg7ojaFiHUxknSOcg5VW19Sa6za3RF1YgIzA4w6qXuz1m-QYWDAiX24QcpQG-xGMAAHlg4Dg4AACACE2JGEBoMA8UJhwBGYy42MRr2qdWMKi+LTadi4QA
\begin{tikzcd}
X \arrow[r, "f", shift left] \arrow[r, "g"', shift right] \arrow[rr, "\lambda", bend left=49] \arrow[rd, "\nu"'] & Y \arrow[r, "\mu"] \arrow[d, "\pi"] & Z \\
& C \arrow[ru, "\exists ! \overline{\mu} "', dashed] &
\end{tikzcd}
%% end paste
\end{document}
```
Commutativity makes the data of $\lambda=\pi \circ f$ and $\nu=\mu \circ g$ are redundant. So we can equivalently view the coequalizer definition as an object $C$ and morphism $\pi:Y \to C$ satisfying the universal property
```tikz
\usepackage{tikz-cd}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage[mathscr]{euscript}
\usepackage{tikzit}
\usetikzlibrary{shapes.geometric}
\begin{document}
% TiKZ style file generated by TikZiT. You may edit this file manually,
% but some things (e.g. comments) may be overwritten. To be readable in
% TikZiT, the only non-comment lines must be of the form:
% \tikzstyle{NAME}=[PROPERTY LIST]
% Node styles
\tikzstyle{red dot}=[fill={rgb,255: red,191; green,0; blue,64}, draw=black, shape=circle]
\tikzstyle{green dot}=[fill={rgb,255: red,0; green,128; blue,128}, draw=black, shape=circle]
\tikzstyle{rectangle}=[fill=white, draw=black, shape=rectangle]
\tikzstyle{triangle}=[fill=white, draw=black, regular polygon sides=3, regular polygon, shape=regular polygon, tikzit shape=regular polygon, shape border rotate=180, minimum size=5mm, inner sep=0pt]
\tikzstyle{bullet}=[fill=black, draw=black, shape=circle, minimum size=2mm, inner sep=0pt]
\tikzstyle{noborder}=[fill=none, draw=none, shape=circle]
\tikzstyle{widerectangle}=[fill=white, draw=black, shape=rectangle, minimum width=16mm, minimum height=4mm, inner sep=1pt, tikzit shape=rectangle]
% Edge styles
\tikzstyle{new edge style 0}=[-]
%% paste tikzpicture here
% https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZABgBpiBdUkANwEMAbAVxiRAA0QBfU9TXfIRQBGclVqMWbAJrdeIDNjwEio4ePrNWiEAGE5fJYKIAmMdU1SdALW7iYUAObwioAGYAnCAFskZEDgQSKIgcAAWWG44SAC0IZbaIG4GSV6+iP6BwdThkdGI8ZKJjiDUDHQARjAMAAr8ykIgHliOYdE87mnZAUGIZhJabAA6Q2hYpSDlVbX1xjrNre3ynj7dWYgAzBZFw0PeTCkr6f3rWwNWICMwAB5YcDhwAIQABCMQNDAeDFhgMMAj+y4Eym1TqRhU8xabWBP0SUDo4Qcdi4QA
\begin{tikzcd}
X \arrow[r, "f", shift left] \arrow[r, "g"', shift right] & Y \arrow[d, "\pi"'] \arrow[r, "\mu"] & Z \\
& C \arrow[ru, "\exists! \overline{\mu}"', dashed] &
\end{tikzcd}
%% end paste
\end{document}
```
In other words, a coequalizer is precisely $\pi:Y \to C$ such that
- $\pi \circ f=\pi \circ g$
- $\pi$ is universal wrt this property: any $\mu:Y \to Z$ satisfying $\mu \circ f=\mu \circ g$ factors through $C$ as $\mu=\overline{\mu} \circ \pi$ for some unique $\overline{\mu}$
In this case the diagram
```tikz
\usepackage{tikz-cd}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage[mathscr]{euscript}
\usepackage{tikzit}
\usetikzlibrary{shapes.geometric}
\begin{document}
% TiKZ style file generated by TikZiT. You may edit this file manually,
% but some things (e.g. comments) may be overwritten. To be readable in
% TikZiT, the only non-comment lines must be of the form:
% \tikzstyle{NAME}=[PROPERTY LIST]
% Node styles
\tikzstyle{red dot}=[fill={rgb,255: red,191; green,0; blue,64}, draw=black, shape=circle]
\tikzstyle{green dot}=[fill={rgb,255: red,0; green,128; blue,128}, draw=black, shape=circle]
\tikzstyle{rectangle}=[fill=white, draw=black, shape=rectangle]
\tikzstyle{triangle}=[fill=white, draw=black, regular polygon sides=3, regular polygon, shape=regular polygon, tikzit shape=regular polygon, shape border rotate=180, minimum size=5mm, inner sep=0pt]
\tikzstyle{bullet}=[fill=black, draw=black, shape=circle, minimum size=2mm, inner sep=0pt]
\tikzstyle{noborder}=[fill=none, draw=none, shape=circle]
\tikzstyle{widerectangle}=[fill=white, draw=black, shape=rectangle, minimum width=16mm, minimum height=4mm, inner sep=1pt, tikzit shape=rectangle]
% Edge styles
\tikzstyle{new edge style 0}=[-]
%% paste tikzpicture here
% https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZABgBpiBdUkANwEMAbAVxiRAA0QBfU9TXfIRQBGclVqMWbAJrdeIDNjwEio4ePrNWiEAGFu4mFADm8IqABmAJwgBbJGRA4ISUSDgALLBZxIAtG6aUjoWcpY29ohuzkgATNRB2iAAOsloWCDUDHQARjAMAAr8ykIgVljGHr484XYO1DFR1J7evk0SWmzGmSDZeYXFgmzlldUUXEA
\begin{tikzcd}
X \arrow[r, "f", shift left] \arrow[r, "g"', shift right] & Y \arrow[d, "\pi"'] \\
& C
\end{tikzcd}
%% end paste
\end{document}
```
is called a **coequalizer diagram**.
> [!basicexample] Example. (Quotient sets)
> The coequalizer of a diagram
>
> ```tikz
> \usepackage{tikz-cd}
> \usepackage{amsmath}
> \usepackage{amsfonts}
> \usepackage[mathscr]{euscript}
> \usepackage{tikzit}
> \usetikzlibrary{shapes.geometric}
>
> \begin{document}
> % TiKZ style file generated by TikZiT. You may edit this file manually,
> % but some things (e.g. comments) may be overwritten. To be readable in
> % TikZiT, the only non-comment lines must be of the form:
> % \tikzstyle{NAME}=[PROPERTY LIST]
>
> % Node styles
> \tikzstyle{red dot}=[fill={rgb,255: red,191; green,0; blue,64}, draw=black, shape=circle]
> \tikzstyle{green dot}=[fill={rgb,255: red,0; green,128; blue,128}, draw=black, shape=circle]
> \tikzstyle{rectangle}=[fill=white, draw=black, shape=rectangle]
> \tikzstyle{triangle}=[fill=white, draw=black, regular polygon sides=3, regular polygon, shape=regular polygon, tikzit shape=regular polygon, shape border rotate=180, minimum size=5mm, inner sep=0pt]
> \tikzstyle{bullet}=[fill=black, draw=black, shape=circle, minimum size=2mm, inner sep=0pt]
> \tikzstyle{noborder}=[fill=none, draw=none, shape=circle]
> \tikzstyle{widerectangle}=[fill=white, draw=black, shape=rectangle, minimum width=16mm, minimum height=4mm, inner sep=1pt, tikzit shape=rectangle]
>
> % Edge styles
> \tikzstyle{new edge style 0}=[-]
>
>
>
>
> %% paste tikzpicture here
> % https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZABgBpiBdUkANwEMAbAVxiRAA0QBfU9TXfIRQBGclVqMWbAJrdxMKAHN4RUADMAThAC2SMiBwQkokHAAWWNTiQBaE-WatEINd14utuxPsPHq5y2tEe0knEEUQagY6ACMYBgAFfjwCNg0sRTNrLgouIA
> \begin{tikzcd}
> X \arrow[r, "f", shift left] \arrow[r, "g"', shift right] & Y
> \end{tikzcd}
> %% end paste
>
> \end{document}
> ```
>
>
> in $\mathsf{Set}$ is the [[quotient set]] $Y \xrightarrow{\pi}\frac{Y}{\langle f(x) \sim g(x) \rangle}$. Indeed, quotienting by this [[equivalence relation]] assures $\pi \circ f=\pi \circ g$, and if $h:Y \to Z$ also satisfies $h \circ f=h \circ g$ then the [[universal property of quotient sets]] factors $h$ through the quotient as required.
>
>
> > [!basicexample] Example of the Example. (Orbits)
> > Consider in particular an [[group action|action]] $\alpha:G \times X \to X$ of a [[group]] $G$ on a set $X$, $\alpha(g,x)=g \cdot x$. Recall the notation $X / G$ for the quotient of $X$ by the [[equivalence relation]] $\{ x \sim x' \iff g \cdot x = x' \text{ for some } g \in G \}$, where. Observe that this equivalence relation identifies $x \sim x'$ iff the [[orbit|orbits]] of $x$ and $x'$ coincide. Then, by the $\mathsf{Set}$ construction above, $X / G$ is precisely the coequalizer of
> >
> > ```tikz
> > \usepackage{tikz-cd}
> > \usepackage{amsmath}
> > \usepackage{amsfonts}
> > \usepackage[mathscr]{euscript}
> > \usepackage{tikzit}
> > \usetikzlibrary{shapes.geometric}
> >
> > \begin{document}
> > % TiKZ style file generated by TikZiT. You may edit this file manually,
> > % but some things (e.g. comments) may be overwritten. To be readable in
> > % TikZiT, the only non-comment lines must be of the form:
> > % \tikzstyle{NAME}=[PROPERTY LIST]
> >
> > % Node styles
> > \tikzstyle{red dot}=[fill={rgb,255: red,191; green,0; blue,64}, draw=black, shape=circle]
> > \tikzstyle{green dot}=[fill={rgb,255: red,0; green,128; blue,128}, draw=black, shape=circle]
> > \tikzstyle{rectangle}=[fill=white, draw=black, shape=rectangle]
> > \tikzstyle{triangle}=[fill=white, draw=black, regular polygon sides=3, regular polygon, shape=regular polygon, tikzit shape=regular polygon, shape border rotate=180, minimum size=5mm, inner sep=0pt]
> > \tikzstyle{bullet}=[fill=black, draw=black, shape=circle, minimum size=2mm, inner sep=0pt]
> > \tikzstyle{noborder}=[fill=none, draw=none, shape=circle]
> > \tikzstyle{widerectangle}=[fill=white, draw=black, shape=rectangle, minimum width=16mm, minimum height=4mm, inner sep=1pt, tikzit shape=rectangle]
> >
> > % Edge styles
> > \tikzstyle{new edge style 0}=[-]
> >
> >
> >
> >
> > %% paste tikzpicture here
> > % https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZABgBpiBdUkANwEMAbAVxiRAHEACAHW7wFt4nABogAvqXSZc+QigCM5KrUYs2oscphQA5vCKgAZgCcI-JGRA4ISRSDgALLIZxIAtHfrNWiEL0ZoDnTikiAmZhbU1rbUjs6uiHYMdABGMAwACtJ4BGzGWDoOrtRear7y4hRiQA
> > \begin{tikzcd}
> > G \times X \arrow[r, "\alpha", shift left] \arrow[r, "\varepsilon"', shift right] & X
> > \end{tikzcd}
> > %% end paste
> >
> > \end{document}
> > ```
> > where $\varepsilon$ denotes the trivial action $g \cdot x= x$ (i.e., the coordinate projection onto $X$). We can use this as an element-free way to *define* the notion of "quotienting by a group action" in other categories; [[group theory in cartesian monoidal categories|see here]].
>
>
> [!basicexample] Equalizer example.
>
> Assume $\mathsf{C}=R\text{-}\mathsf{Mod}$ is the [[category]] of $R$-[[module|modules]] for some [[ring]] $R$; let $\varphi:A_{2} \to A_{1}$ be a [[linear map|homomorphism]], and choose $\mathscr{K}$ so $\mathscr{K}(\alpha)=\varphi$ and $\mathscr{K}(\beta)$ is the zero morphism. We claim the equalizer $\lim\limits_{{\longleftarrow}} \mathscr{K}$ is exactly the [[categorical kernel|kernel]] of $\varphi$. Indeed, if we take $\lambda_{\boldsymbol 2}$ to be the [[inclusion map]] $\iota: \ker \varphi \to A_{2}$ and $\lambda_{\boldsymbol 1}$ to be the zero map then the first defining bullet in [[categorical limit]] is, by construction and the definition of kernel of a module homomorphism, satisfied:
>
> ```tikz
> \usepackage{tikz-cd}
> \usepackage{amsmath}
> \begin{document}
> % https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZABgBpiBdUkANwEMAbAVxiRAEEB9AJhAF9S6TLnyEUARnJVajFmy7j+gkBmx4CRMuOn1mrRCAA6hnDAAeOYAGsYAJwAEfY-VtoAFln7SYUAObwiUAAzWwgAWyRuahwIJDIZPTZjfBw6EGoGOgAjGAYABWF1MRBbLF83HCVg0IjEeJikSQS5A2c6Vw8qkBDwyOjYxCbdFqNDF3cse2MAYyxbaanDFLSM7NyCtVE2UvLKvgo+IA
> \begin{tikzcd}
> A_2 \arrow[r, "\varphi"] & A_1 \\
> \text{ker }\varphi \arrow[u, "\iota"'] \arrow[ru, "\varphi \circ \iota = 0"'] &
> \end{tikzcd}
> \end{document}
> ```
> Now assume $K$ is another object, endowed with morphisms $\mu_{\boldsymbol 1}$ and $\mu_{\boldsymbol 2}$ also satisfying that bullet's requirements. Commutativity enforces that $\mu_{\boldsymbol 2}=0$:
> ```tikz
> \usepackage{tikz-cd}
> \usepackage{amsmath}
> \usepackage[mathscr]{euscript}
> \begin{document}
> % https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZARgBoAGAXVJADcBDAGwFcYkQBpEAX1PU1z5CKcqWLU6TVuwCCAfQBMPPiAzY8BIgrESGLNohDziPCTCgBzeEVAAzAE4QAtklEgcEJGUn72AHT8nZjkAgCMIRig4AE8ncMZgYm4QGkZ6UJhGAAUBDWEQeywLAAscZTtHF0Q3DyRtH2lDAKC5YDCIqNj44AVuZN4K5y8aWsR6vUaQZvocYrgAY3tgDm4ACjCYHHoASgBechSQNIzs3KF2QpKy7kpuIA
> \begin{tikzcd}
> & K \arrow[ld, "\mu_\boldsymbol{1}"'] \arrow[rd, "\mu_{\boldsymbol{2}}"] & \\
> A_2 \arrow[rr, "\mathscr{K}(\beta)=0"'] & & A_1
> \end{tikzcd}
> \end{document}
> ```
>
> whence $K$ fits perfectly into the diagram for the universal property of kernels:
>
> ```tikz
> \usepackage{tikz-cd}
> \usepackage{amsmath}
> \begin{document}
> % https://tikzcd.yichuanshen.de/#N4Igdg9gJgpgziAXAbVABwnAlgFyxMJZABgBpiBdUkANwEMAbAVxiRAGkQBfU9TXfIRQBGclVqMWbAIIB9AEzdeIDNjwEi8sdXrNWiEHOFK+awUVHDxuqQYA6dnDAAeOYAGsYAJwAEXB-ReaAAWWNziMFAA5vBEoABmXhAAtkhkIDgQSADMOpL6IA4uWHA4cD4AhD4OEDTeDFhgMMAOyUyyDgBGEAxQcACeyd0MwPJcXCDUDHSdMAwACvzqQiBeWFHBOJMgDU1sUHRwwZEmIIkpadSZSKISemyt7V09fYPDoxM8CUmpiLfXiC0d1shTsgRCYS+Zx+lwyWUB1FmYCgOXSNgKxFO51+uThNzy93sdnwODo22mswWS3MBjWGy2XAoXCAA
> \begin{tikzcd}
> K \arrow[rd, "\exists ! \overline{\mu_\boldsymbol{2}}"', dashed] \arrow[r, "\mu_\boldsymbol{2}"] \arrow[rr, "0", bend left] & A_2 \arrow[r, "\varphi"] & A_1 \\
> & \text{ker }\varphi \arrow[u, "\iota"'] &
> \end{tikzcd}
> \end{document}
> ```
>
>
----
####
----
#### References
> [!backlink]
> ```dataview
> TABLE rows.file.link as "Further Reading"
> FROM [[]]
> FLATTEN file.tags as Tag
> WHERE Tag = "#definition" OR Tag = "#theorem" OR Tag = "#MOC" OR Tag = "#proposition" OR Tag = "#axiom"
> GROUP BY Tag
> ```
> [!frontlink]
> ```dataview
> TABLE rows.file.link as "Further Reading"
> FROM outgoing([[]])
> FLATTEN file.tags as Tag
> WHERE Tag = "#definition" OR Tag = "#theorem" OR Tag = "#MOC" OR Tag = "#proposition" OR Tag = "#axiom"
> GROUP BY Tag
> ```