Gibt es einen nicht-trivialen Typ, der seiner eigenen Ableitung entspricht?


20

Ein Artikel mit dem Titel " Die Ableitung eines regulären Typs " zeigt, dass der "Reißverschluss" eines Typs - seine Einlochkontexte - den Unterscheidungsregeln in der Typalgebra folgen.

Wir haben:

xx1x00x10x(S+T)xS+xTx(S×T)xS×T+S×xT

Wir können dieses Modell verwenden, um abzuleiten, dass die Ableitung der Einheit ungültig ist, dass die Ableitung der Liste ein Produkt von zwei Listen ist (Präfix mal Suffix) und so weiter.

Eine natürliche Frage ist: "Welcher Typ ist sein eigenes Derivat?" Natürlich haben wir bereits , was uns sagt, dass void (der unbewohnte Typ) eine eigene Ableitung ist, aber das ist nicht sehr interessant. Es ist das Analoge der Tatsache, dass die Ableitung von Null in der gewöhnlichen Infinitesimalrechnung Null ist.x00

Gibt es andere Lösungen für die Gleichung ? Gibt es insbesondere ein Analogon von in der Typalgebra? Warum oder warum nicht?x e x = e xxTTxex=ex


5
Es gibt in der Theorie der kombinatorischen Arten, und dort entspricht es der Art der (endlichen) Mengen, aber das entspricht nicht einem algebraischen Datentyp.
Derek Elkins

1
Was meinst du mit "gleich"? Sind in Ihrer Welt und gleich? Wie wäre es mit und ? ( S U ) × ( T U ) N L i s t ( N )(S+T)U(SU)×(TU)NList(N)
Andrej Bauer

1
@AndrejBauer Ersteres ja, letzteres nein. entspricht dem iterierten Produkt in meinen Gedanken. Trotzdem habe ich kein strenges Modell der Typengleichheit im Kopf, und wenn Sie ein Modell haben, können Sie mich darauf hinweisen, ich würde es gerne lesen. 1 + N + N × N + N × N × N + ... = & Sigma; n = 0 N NList(N)1+N+N×N+N×N×N+=n=0Nn
Matthew Piziak

3
@DerekElkins, wie es passiert, ein anderer Artikel von McBride, genannt Clowns links von mir, Jokers rechts, weist darauf hin, dass "für endliche Strukturen [die Iteration eines Operators auf Reißverschlüssen] eine Potenzreihenformulierung von Datentypen hervorruft direkt, alle Elemente von links nach rechts auffindend .... Es besteht somit ein wesentlicher Zusammenhang mit dem Begriff der kombinatorischen Arten ". Es würde mich also nicht wundern, wenn kombinatorische Arten auch im Zusammenhang mit dieser Frage eine interessante Rolle spielen.
Matthew Piziak

@MatthewPiziak Auf jeden Fall. Brent Yorgey hat ziemlich viel darüber gesprochen . Siehe auch seine These .
Derek Elkins

Antworten:


15

Betrachten Sie die endlichen Multisätze . Seine Elemente sind gegeben durch { x 1 , , x n }, die durch Permutationen zitiert werden, so dass { x 1 , , x n } = { x π 1 , , x π n } für jedes π S n gilt . Was ist ein Ein-Loch-Kontext für ein Element in so etwas? Nun, wir müssengehabt haben, um eine Position für das Loch auszuwählen, so dass wir mit dem verbleibendenübrig bleibenBagX{x1,,xn}{x1,,xn}={xπ1,,xπn}πSnn - 1 B an>0n1Elemente, aber wir sind nicht der klügere darüber, wo ist. (Das ist anders als bei Listen, bei denen die Auswahl einer Position für das Loch eine Liste in zwei Abschnitte schneidet und die zweite Ableitung einen dieser Abschnitte auswählt und ihn weiter schneidet, wie "point" und "mark" in einem Editor, aber ich schweife ab. ) Ein Ein-Loch-Kontext in einem ist also ein , und jeder kann als solcher entstehen. Wenn man räumlich denkt, sollte die Ableitung von sich selbst sein.B aBagXB a gBagXB aBagXBagX

Jetzt,

BagX=nNXn/Sn

eine Auswahl der Tupelgröße , mit einem Tupel von Elementen bis zu einer Permutationsgruppe der Ordnungund geben uns genau die Potenzreihenerweiterung von .n n ! e xnnn!ex

Naiv können wir Containertypen durch eine Menge von Formen und eine formabhängige Familie von Positionen : charakterisieren so dass ein Container durch a gegeben ist Formwahl und eine Karte von Positionen zu Elementen. Mit Taschen und dergleichen gibt es eine zusätzliche Wendung.P s : S X (SP

s:SX(Ps)

Die "Form" einer Tasche ist ein ; Die "Positionen" sind , die endliche Menge der Größe , aber die Zuordnung von Positionen zu Elementen muss unter Permutationen von unveränderlich sein . Es sollte keine Möglichkeit geben, auf eine Tasche zuzugreifen, die die Anordnung ihrer Elemente "erkennt". { 1 , , n } n S nnN{1,,n}nSn

Das East Midlands Container Consortium hat in Constructing Polymorphic Programs with Quotient Types für Mathematics of Program Construction 2004 über solche Strukturen geschrieben . Quotient Container erweitern unsere übliche Analyse von Strukturen durch "Formen" und "Positionen", indem sie einer Automorphismusgruppe erlauben, auf die Positionen einzuwirken Dies erlaubt uns, Strukturen wie ungeordnete Paare 2/2 mit der Ableitung . Ein ungeordnetes Tupel ist gegeben durchund seine Ableitung (wenn ein ungeordnetes Tupel ist). Taschen nehmen die Summe davon. Wir können ähnliche Spiele mit zyklischen TupelnX n X n / n ! n > 0 n - 1 n x n / n x n - 1X2/2XnXn/n!n>0n1 nXn/nWenn Sie eine Position für das Loch auswählen, wird die Drehung auf einen Punkt festgelegt, wobei , ein Tupel ohne Permutation, kleiner bleibt.Xn1

"Typenteilung" ist im Allgemeinen schwer zu verstehen, aber das Quotieren durch Permutationsgruppen (wie bei kombinatorischen Arten) ist sinnvoll und macht Spaß, damit zu spielen. (Aufgabe: Formulieren Sie ein strukturelles Induktionsprinzip für ungeordnete Zahlenpaare, , und implementieren Sie damit Addition und Multiplikation, damit sie kommutativ sind.)N2/2

Die "Formen-und-Positionen" -Charakterisierung von Behältern legt weder eine Endlichkeit auf. Kombinatorische Arten sind in der Regel eher nach Größe als nach Form organisiert, was darauf hinausläuft, Begriffe zu sammeln und den Koeffizienten für jeden Exponenten zu berechnen. Quotientenbehälter mit endlichen Positionssätzen und kombinatorische Spezies sind im Grunde genommen verschiedene Drehungen derselben Substanz.


Der ursprüngliche Autor erscheint! Vielen Dank für Ihren Besuch, um uns dieses schöne Ergebnis zu zeigen.
Matthew Piziak

3

i,jNXi?
i,jNXi++Xii+1

jNList(X)


Die Ableitung einer Liste ist ein Listenpaar (Präfix mal Suffix). Nach der Summenregel ist die Ableitung einer Liste von Listen eine Liste von Listenpaaren. Ist eine Liste von Listenpaaren isomorph zu einer Liste von Listen?
Matthew Piziak

iNN×XiiNi×N×XiiNi×Nex=ixi/n!+Nan=(n+1)an+1

ni
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.