Arnaud Spiwack wollte Garben in Haskell darstellen, doch die Lehrbuchdefinition brachte ein praktisches Problem mit sich: Siebe enthalten viele redundante Darstellungen derselben übereinstimmenden Information, und ihre dependente Pullback-Konstruktion war zu viel dependentes Typisieren für Haskell. Der naheliegende Ansatz – die Definition wörtlich zu übersetzen – würde illegale Zustände darstellbar machen und das Programm in irrelevante Daten vergraben.

Zunächst baute er ein konkretes Beispiel rund um arithmetische Ausdrücke. Ein Prägarben konnte Werte entlang von Ausdrücken zurückziehen, doch die gewünschte bedingte Operation erforderte eine Garbe, um zwei Zweige über einer Booleschen Überdeckung zu kleben. Die Implementierung machte das Kleben daher zu einer expliziten Typklassen-Operation und verallgemeinerte sie dann zu einem Site, dessen typisierte Cover- und Gen-Familien beschreiben, welche Teile zusammengesetzt werden können.

Die typisierte Site beseitigt die Last der Pullback-Siebe: glue kann an jedem Pfeil operieren, und Generatoren müssen nicht als tatsächliche Pfeile dargestellt werden. Produkte, Exponentiale, Yoneda-Einbettungen, Koprodukte und rekursive Listen lassen sich dann im selben Stil definieren. Sheafify wirkt als freie Garbenkonstruktion, indem es Klebeoperationen speichert, statt sie vorzeitig auszuwerten, während PFun die für Exponentiale benötigte Varianz trägt.

Das Ergebnis ist ein Demonstrations-Repository und eine Haskell-förmige Implementierung der abstrakten Idee, keine Behauptung, dass jedes mathematische Detail verschwindet. Spiwack lässt Fixpunkte ausdrücklich ungelöst, doch das Projekt verwandelt eine Definition, die für die Sprache zu locker war, in typisierte, operationale Bausteine und macht das verbleibende Unbekannte präzise.

Überdeckungen als Typen darstellen, dann explizit kleben

Wörtliche Siebe kodieren redundante Werte übereinstimmender Familien und erlauben Zustände, die unmöglich sein sollten.

Das für Exponentiale benötigte Pullback-Sieb verlangt dependentes Typisieren, das über das hinausgeht, was die Haskell-Implementierung bequem ausdrücken konnte.

Typisierte Überdeckungen und Generatoren halten die gültige Klebeschnittstelle klein, während irrelevante Darstellungen entfernt werden.

Sheafify speichert Klebesyntax und ermöglicht freie Konstruktionen wie Koprodukte und rekursive Listen, ohne die Operationen früh auszuführen.

Fixpunkte zu einer expliziten ungelösten Grenze zu machen, hindert die Implementierung daran, vorzugeben, zu lösen, was sie noch nicht weiß.

Wenn eine formale Definition illegale Zustände und unmögliches dependentes Typisieren erzeugt, kodiere gültige Überdeckungen in Typen und lege nur ausführbare Klebeoperationen offen. Behalte freie Konstruktionen für die Komposition.

Das Projekt brachte ein Demonstrations-Repository mit konkreten und abstrakten Site/Sheaf-Instanzen hervor, sowie eine klarere Grenze dessen, was die Kodierung ausdrücken kann und was nicht. Fixpunkte bleiben ungelöst, doch der Ansatz mit typisierten Überdeckungen macht Garbenoperationen in Haskell nutzbar, ohne das volle Gewicht siebabhängiger Maschinerie zu importieren.

DEN BELEGEN FOLGEN

Die Quellen

  1. Subcanonical coverage nLab · ncatlab.org
  2. Pursuing Shtuck HAL / Pierre-Marie Pédrot · inria.hal.science