I asked this question some while ago on Stack Exchange but didn't get an answer ([link](https://math.stackexchange.com/questions/2812523/why-is-the-flat-cotorsion-pair-actually-a-cotorsion-pair)), so I am trying it here as well.


Fix a ringed space $(X,\mathcal{O})$ and denote by $\mathcal{F}$ the class of flat modules. A module $C$ is called *cotorsion* if $Ext^1(F,C)=0$ for all flat modules $F$.


I want to see that a module $F$ is flat if and only if $Ext^1(F,C)$ for all cotorsion modules $C$.



Why is the flat cotorsion pair actually a cotorsion pair?
The category of sheaves on a ringed space is a Grothendieck category. Let $Q$ denote an injective cogenerator. We write $hom$ for internal and $Hom$ for external hom.


Let $F^+:=hom(F,Q)$. Then for any sheaf $F$ the sheaf $F^+$ is pure injective. This follows just from the adjunction $\otimes \dashv \hom$ and the fact that $Q$ is injective.
  

Recall that a short exact sequence $0\rightarrow A\rightarrow B\rightarrow C\rightarrow 0$ is called *pure* if it stays exact after taking the tensor product with any element. We also just say that $A\rightarrow B$ is a pure injection. A sheaf is called *pure injective* if it is injective for the family of pure injections.


Next we have to see that $F^+$ is cotorsion for any $F$.


**Lemma** Pure injective modules are cotorsion   

**Proof** Let $M$ be a pure injective sheaf, $F$ a flat sheaf and $0\rightarrow M\rightarrow E\rightarrow F\rightarrow 0$ be an extension. Apply $Hom(-,M)$ to find a splitting $E\rightarrow M$. Hence the extension is trivial and we see that $Ext^1(F,M)=0$


Now we can finally show the final result


**Proposition** $(\mathcal{F},\mathcal{F}^\perp)$ is a cotorsion pair   

**Proof** Let $F\in {}^\perp(\mathcal{F}^\perp)$ and $M$ be any sheaf. It is $Ext^1(F,M^+)=0$ by assumption. But we also have $Ext^1(F,hom(M,Q))=Hom(Tor\_1(F,M),Q)=0$. This uses that $Q$ is injective. Since $Q$ is also a cogenerator we can conclude $Tor\_1(F,M)=0$, hence $F$ is flat as desired.


