Eine bikartesische geschlossene Kategorie strenger vollständiger Teilaufträge (Hask)

8

Es scheint bekannt zu sein, dass Programmiersprachen keine Summen, Produkte und Nichtterminierungen zusammen haben können.

Q1 . Ist das wahr? Unten (oder in dem obigen Link, den ich gegeben habe) ist ein Teilargument.

Die generische Programmierung von Hinze mit Adjunctions ignoriert das Problem jedoch, selbst nachdem etwas genau besprochen wurde , um welche Kategorie es sich handelt. Insbesondere spricht er (scheinbar ohne Vorbehalte) davon, dass Haskell durch die Kategorie von strengen kontinuierlichen Teilbestellungen modelliert wird und Summen und Produkte hat. Aber wir wissen, dass Haskell keine Summen hat (richtig?). (Ein Teil des Papiers verwendet stattdessen S e t , aber das erlaubt keine Nichtbeendigung).SCpoSet

F2 Also, was vermisse ich? Ich sehe vier Optionen:

  • Menschen ignorieren oft absichtlich die Nichtbeendigung, wenn sie über Haskell sprechen. Vielleicht macht es dieses Papier auch. Aber warum sollte man dann CPOs erwähnen?
  • Die Barriere, die ich diskutiere, kann auf clevere Weise vermieden werden. Insbesondere die Papiermodelle nicht streng Haskell Funktionen durch strenge Funktionen f : A B , aus anderen Gründen.f:ABf:AB
  • Das Papier erwähnt die Einschränkung und ich habe das verpasst. Ich habe mich bemüht, nach dieser Erwähnung zu suchen, und keine gefunden.
  • Dies ist ein tatsächlicher Fehler, und da alle behaupten, Haskell fehlen tatsächlich kategorische Summen (wie andere Leute zustimmen), obwohl die Papierbehauptungen Eitherso etwas sind. Stattdessen funktioniert alles gut in Gesamtsprachen mit induktiven und koinduktiven Typen.

Hintergrund

AA×1A×00A

Dies bedeutet zum Beispiel, dass die Kategorie der spitzen Mengen mit ihrem Nullobjekt nicht bikartesisch geschlossen werden kann.

ωCPOCPO

Blaisorblade
quelle

Antworten:

11

Ja, es ist unmöglich, einen nicht entarteten CCC mit allgemeiner Rekursion und kategorialen Nebenprodukten zu haben. Die Standardreferenz hierfür lautet:

H. Huwig und A. Poigne. Ein Hinweis zu Inkonsistenzen, die durch Fixpunkte in einer kartesischen geschlossenen Kategorie verursacht werden. Theoretical Computer Science, 73: 101–112, 1990.

Ich und (die meisten anderen Leute, die ich getroffen habe) haben davon jedoch aus Achim Jung und Samson Abramskys Handbuch Domain Theory erfahren , das sie freundlicherweise kostenlos zur Verfügung gestellt haben.

Die meisten Kategorien von Domänen, mit denen Personen arbeiten, sind Unterkategorien von DCPO, die Kategorie der Vordomänen und deren fortlaufende Funktionen. Da predomains nicht notwendigerweise einen kleinsten Fixpunkt hat, ist diese Kategorie ist ein bi-CCC, aber Fixpunkte gibt es nur für Funktionen in Domänen.

Auf Seite 46 dieser Hinweise finden Sie eine große Tabelle, in der angegeben ist, in welcher Unterkategorie von DCPO verschiedene Konstruktionen vorhanden sind.

Neel Krishnaswami
quelle