---
date: '2026-05-26'
description: convert an arbitrary presheaf into a sheaf via locality
id: sheafification
modified: 2026-06-05 15:08:20 GMT-04:00
tags:
  - math
title: sheafification
created: '2026-05-26'
published: '2026-05-26'
pageLayout: default
slug: thoughts/sheafification
permalink: https://aarnphm.xyz/thoughts/sheafification.md
generator:
  quartz: v4.6.0
  hostedProvider: Cloudflare
  baseUrl: aarnphm.xyz
full: https://aarnphm.xyz/llms-full.txt
---
Sheafification is the left adjoint to the inclusion functor $\iota: \mathbf{Sh}(X) \hookrightarrow \mathbf{PSh}(X)$ from sheaves into presheaves. It produces, from a presheaf $\mathcal{F}$, the universal sheaf $\mathcal{F}^{\mathrm{sh}}$ receiving a map from $\mathcal{F}$. Construction is the _plus construction_ applied twice.

## sheaves

A _presheaf_ on a topological space $X$ is a contravariant functor $\mathcal{F}: \mathrm{Open}(X)^{\mathrm{op}} \to \mathbf{Set}$ (or $\mathbf{Ab}$, $\mathbf{Ring}$, $\dots$): assign data to each open set $U \subseteq X$, with restriction maps $\mathrm{res}^U_V: \mathcal{F}(U) \to \mathcal{F}(V)$ whenever $V \subseteq U$, compatible with composition.

A presheaf is a _sheaf_ if it satisfies locality + gluing: for any open cover $\{U_i\}$ of $U$ and any family of sections $s_i \in \mathcal{F}(U_i)$ that agree on overlaps ($s_i|_{U_i \cap U_j} = s_j|_{U_i \cap U_j}$), there exists a unique $s \in \mathcal{F}(U)$ with $s|_{U_i} = s_i$.

## the plus construction

Given a presheaf $\mathcal{F}$, define $\mathcal{F}^+$ on each open $U \subseteq X$ as

$\mathcal{F}^+(U) := \varinjlim_{\mathfrak{U}} \check{H}^0(\mathfrak{U}, \mathcal{F})$

where the colimit runs over open covers $\mathfrak{U} = \{U_i\}$ of $U$, ordered by refinement, and

$\check{H}^0(\mathfrak{U}, \mathcal{F}) = \mathrm{eq}\left( \prod_i \mathcal{F}(U_i) \rightrightarrows \prod_{i,j} \mathcal{F}(U_i \cap U_j) \right)$

is the equalizer of the two restriction maps. Concretely, an element of $\mathcal{F}^+(U)$ is an equivalence class of _matching families_: tuples $(s_i)$ on some cover with $s_i|_{U_i \cap U_j} = s_j|_{U_i \cap U_j}$, where two families are equivalent if they agree on a common refinement.

Two passes are required (grothendieck–verdier):

1. $\mathcal{F}^+$ is always a _separated_ presheaf (sections that agree locally are equal globally), but not yet a sheaf because gluing may fail.
2. $(\mathcal{F}^+)^+ = \mathcal{F}^{\mathrm{sh}}$ is a sheaf. The second pass closes gluing.

If $\mathcal{F}$ is already separated, one pass suffices. If $\mathcal{F}$ is already a sheaf, $\mathcal{F}^+ = \mathcal{F}$.

## the adjunction

The unit $\eta: \mathcal{F} \to \mathcal{F}^{\mathrm{sh}}$ is universal: every map $\varphi: \mathcal{F} \to \mathcal{G}$ to a sheaf $\mathcal{G}$ factors uniquely through $\eta$. This gives

$\mathrm{Hom}_{\mathbf{Sh}}(\mathcal{F}^{\mathrm{sh}}, \mathcal{G}) \cong \mathrm{Hom}_{\mathbf{PSh}}(\mathcal{F}, \iota \mathcal{G})$

so sheafification is the left adjoint to inclusion.

The map $\eta$ is _stalk-wise_ an isomorphism: $\mathcal{F}_x \xrightarrow{\sim} \mathcal{F}^{\mathrm{sh}}_x$ for every $x \in X$. Sheafification fixes global behavior without disturbing germs.

## étalé space

Equivalent construction: the sheafification is the sheaf of sections of the étalé space $\pi: \widetilde{\mathcal{F}} \to X$, where $\widetilde{\mathcal{F}} = \coprod_{x \in X} \mathcal{F}_x$ with the topology generated by images of sections $s: U \to \widetilde{\mathcal{F}}$. The topological-spaces version of the same adjunction.

