Typentheorie

Im Mathematik, Logik, und Informatik, a Typentheorie ist der formelle Präsentation von einem bestimmten Typ Systemund im Allgemeinen Typtheorie ist die akademische Studie von Typsystemen. Einige Typ -Theorien dienen als Alternativen zu Mengenlehre Als ein Grundlage der Mathematik. Zwei einflussreiche Typ -Theorien, die als Fundamente vorgeschlagen wurden Alonzo -Kirche's Typed λ-Kalkulus und Per Martin-Löf's intuitionistische Typtheorie. Die meisten Computerisierte Proof-Schreibsysteme Verwenden Sie eine Typtheorie für ihre Stiftung. Ein häufiges ist Thierry Coquand's Berechnung induktiver Konstruktionen.

Geschichte

Die Typentheorie wurde erstellt, um ein Paradoxon in einer mathematischen Stiftung zu vermeiden, die auf basiert Naive Set -Theorie und formelle Logik. Russells Paradox, was entdeckt wurde von Bertrand Russellexistiert, weil ein Satz mit "allen möglichen Sätzen" definiert werden konnte, die sich selbst eingeschlossen haben. Zwischen 1902 und 1908 schlug Bertrand Russell verschiedene "Theorien vom Typ" vor, um das Problem zu beheben. Bis 1908 kam Russell zu einer "verzweigten" Theorie der Typen zusammen mit einem "Axiom der Reduktibilität"Beide waren prominent in Whitehead und Russell's Principia Mathematica Veröffentlicht zwischen 1910 und 1913. Dieses System hat das Paradoxon von Russell vermieden, indem er eine Hierarchie von Typen erstellt und dann jeder konkreten mathematischen Entität einem Typ zugewiesen hat. Einheiten eines bestimmten Typs werden ausschließlich von erstellt Subtypen dieser Art,[a] Dies verhindern, dass ein Unternehmen mit sich selbst definiert wird. Russells Typen der Typen schloss die Möglichkeit aus, dass ein Satz ein Mitglied von sich selbst ist.

Typen wurden nicht immer in Logik verwendet. Es gab andere Techniken, um Russells Paradoxon zu vermeiden.[3] Die Typen wurden bei Verwendung mit einer bestimmten Logik erhalten, Alonzo -Kirche's Lambda -Kalkül.

Das berühmteste frühe Beispiel ist die Kirche Einfach tippte Lambda -Kalkül. Kirchentheorie der Typen[4] half dem formellen System zu vermeiden Kleene -Rosser Paradox Das hat den ursprünglichen Lambda Calculus untypisch geklebt. Die Kirche zeigte, dass sie als Grundlage für Mathematik dienen könnte und als als bezeichnet wurde Logik höherer Ordnung.

Der Ausdruck "Typtheorie" bezieht sich nun im Allgemeinen auf ein typisiertes System, das auf Lambda -Kalkül basiert. Ein einflussreiches System ist Per Martin-Löf's intuitionistische Typtheorie, was als Grundlage für vorgeschlagen wurde Konstruktive Mathematik. Ein anderer ist Thierry Coquand's Konstruktionsberechnung, was als Grundlage von verwendet wird von Coq, Magerund andere "Proof -Assistenten" (computergestützte Proof -Schreibprogramme). Typtheorien sind ein Bereich der aktiven Forschung, wie von demonstriert Homotopie -Typ Theorie.

Einführung

Es gibt viele Typ -Theorien, was es schwierig macht, eine umfassende Taxonomie zu erstellen. Dieser Artikel ist keine erschöpfende Kategorisierung. Was folgt, ist eine Einführung für diejenigen, die mit der Typentheorie nicht vertraut sind und einige der Hauptansätze abdecken.

Grundlagen

Begriffe und Typen

In der Typtheorie hat jeder Begriff einen Typ. Ein Begriff und sein Typ werden oft als "zusammen geschrieben"Begriff: Typ"Ein gemeinsamer Typ, der in eine Typtheorie einbezogen werden soll, ist die Natürliche Zahlen, oft als "geschrieben""oder" nat ". Ein anderer ist Boolesche Logik Werte. Einige sehr einfache Begriffe mit ihren Typen sind also:

  • 0: nat
  • 42: nat
  • Richtig: bool

Begriffe können unter Verwendung von Funktionsaufrufen aus anderen Begriffen aufgebaut werden. In der Typtheorie wird ein Funktionsaufruf als "Funktionsanwendung" bezeichnet. Die Funktionsanwendung nimmt einen Termin eines bestimmten Typs an und führt zu einem Begriff eines anderen gegebenen Typs. Funktionsanwendung wird geschrieben "Funktion Streit Streit ... ", statt der konventionellen"Funktion(Streit,Streit, ...) ". Für natürliche Zahlen ist es möglich, eine Funktion namens" Add "zu definieren, die zwei natürliche Zahlen erfordert. Somit sind einige weitere Begriffe mit ihren Typen:

  • Fügen Sie 0 0: nat hinzu
  • Fügen Sie 2 3 hinzu: nat
  • 1 hinzufügen (fügen Sie 1 hinzu (1 0): nat

Im letzten Semester wurden Klammern hinzugefügt, um die Reihenfolge der Operationen anzuzeigen. Technisch gesehen erfordern die meisten Typ -Theorien, dass die Klammern für jede Operation vorhanden sind, aber in der Praxis werden sie nicht geschrieben und die Autoren gehen davon aus, dass Leser Vorrang und Assoziativität verwenden können, um zu wissen, wo sie sich befinden. Für eine ähnliche Leichtigkeit ist es eine häufige Notation zu schreiben. ""statt" anstelle von "hinzufügen ". Die oben genannten Begriffe können also umgeschrieben werden wie:

  • 0 + 0: nat
  • 2 + 3: nat
  • 1 + (1 + (1 + 0)): nat

Begriffe können auch Variablen enthalten. Variablen haben immer einen Typ. Angenommen, "x" und "y" sind Variablen vom Typ "nat", so sind auch gültige Begriffe:

  • X: Nat
  • x + 2: nat
  • x + (x + y): nat

Es gibt mehr Typen als "nat" und "bool". Wir haben bereits den Begriff "add" gesehen, der nicht "nat" ist, sondern eine Funktion, die, wenn sie auf zwei "nat" angewendet wird, zu einem "Nat" berechnet. Die Art des "Add" wird später abgedeckt. Zunächst müssen wir "Computer zu" beschreiben.

Berechnung

Die Typentheorie hat eine integrierte Berechnung. Die folgenden Begriffe sind alle unterschiedlich:

  • 1 + 4: nat
  • 3 + 2: nat
  • 0 + 5: nat

Aber sie alle berechnen auf den Begriff "5: nat". In der Typtheorie verwenden wir die Wörter "Reduktion" und "Reduzierung", um sich auf die Berechnung zu beziehen. Wir sagen also, dass sich "0 + 5: nat" auf "5: nat" reduziert. Es kann geschrieben werden "0 + 5: nat 5: nat ". Die Berechnung ist mechanisch, erreicht durch umschreiben die Syntax des Begriffs.

Begriffe, die Variablen enthalten, können ebenfalls reduziert werden. Der Begriff "x + (1 + 4): nat" reduziert sich auf "x + 5: nat". (Wir können alle Subfrist innerhalb eines Laufzeits dank der reduzieren Theorem des Kirchen-Rossers.))

Ein Begriff ohne Variablen, der nicht weiter reduziert werden kann, ist ein "kanonischer Begriff". Alle obigen Begriffe reduzieren sich auf "5: nat", was ein kanonischer Begriff ist. Die kanonischen Begriffe der natürlichen Zahlen sind:

  • 0: nat
  • 1: nat
  • 2: nat
  • usw.

Offensichtlich sind Begriffe, die auf denselben Term berechnen, gleich. Unter der Annahme "x: nat" sind die Begriffe "x + (1 + 4): nat" und "x + (4 + 1): nat" gleich, weil sie beide auf "x + 5: nat" reduzieren. Wenn zwei Begriffe gleich sind, können sie gegenseitig ersetzt werden. Gleichheit ist ein komplexes Thema in der Typtheorie und es gibt viele Arten von Gleichheit. Diese Art von Gleichheit, bei der zwei Begriffe auf denselben Begriff berechnen, wird als "Urteilsgleichheit" bezeichnet.

Funktionen

In der Typtheorie sind Funktionen Begriffe. Funktionen können entweder Lambda -Begriffe sein oder "nach Regel" definiert.

Lambda -Begriffe

Ein Lambda -Begriff sieht aus wie "(λ Variablennamen: Typ 1 . Begriff) "und hat Typ"Typ 1 Typ 2". Der Typ "Typ 1 Typ 2"Zeigt an, dass der Lambda -Term eine Funktion ist, die einen Parameter vom Typ nimmt."Typ 1"und berechnet zu einem Begriff des Typs"Typ 2". Der Begriff innerhalb des Lambda -Terms muss ein Wert von" sein "Typ 2"Unter der Annahme, dass die Variable Typ hat"Typ 1".

Ein Beispiel für einen Lambda -Term ist diese Funktion, die ihr Argument verdoppelt:

  • (λ x: nat. (add x x)): nat nat

Der variable Name ist "x" und die Variable hat "nat". Der Begriff "(add x x)" hat Typ "nat" unter der Annahme "x: nat". Somit hat der Lambda -Term Typ "nat nat ", was bedeutet, wenn es als Argument" nat "gegeben wird, wird es auf eine" Nat "berechnet. Reduktion (a.k.a. berechnet) wird für Lambda -Begriffe definiert. Wenn die Funktion angewendet wird (a.k.a. genannt), ist das Argument, das Argument ist ersetzt Für den Parameter.

Früher haben wir gesehen, dass die Funktionsanwendung geschrieben wurde, indem der Parameter nach dem Funktionsterm eingestellt wurde. Wenn wir also die obige Funktion mit dem Parameter "5" vom Typ "Nat" aufrufen möchten, schreiben wir:

  • (λ x: nat. (add x x)) 5: nat

Der Lambda -Begriff war Typ "nat nat ", was bedeutete, dass ein" nat "als Argument einen Begriff vom Typ" nat "erzeugt. Da wir ihm das Argument" 5 "gegeben haben Das Argument "5" für den Parameter "x" im Begriff "(add x x)", sodass der Begriff:

  • (Fügen Sie 5 5): nat

was offensichtlich berechnet zu werden

  • 10: nat

Ein Lambda -Begriff wird oft als "anonyme Funktion" bezeichnet, da er keinen Namen hat. Um die Dinge zu leichter zu erleichtern, wird ein Name einem Lambda -Begriff gegeben. Dies ist nur eine Notation und hat keine mathematische Bedeutung. Einige Autoren nennen es "Notationsgleichheit". Ein Name könnte der obigen Funktion unter Verwendung der Notation gegeben werden:

  • Doppelte: nat nat :: = (λ x: nat. (add x x))

Dies ist die gleiche Funktion wie oben, nur eine andere Art, sie zu schreiben. Also der Begriff

  • Doppel 5: nat

immer noch berechnet zu

  • 10: nat

Abhängige Typisierung

Die abhängige Typisierung ist, wenn der von einer Funktion zurückgegebene Typ vom Wert seines Arguments abhängt. Wenn beispielsweise eine Typtheorie eine Regel hat, die den Typ "bool" definiert, definiert sie auch die Funktion "if". Die Funktion "if" nimmt 3 Argumente und "wenn wahr b c" zu "B" und "wenn falsch b c" zu "C" berechnet. Aber was ist die Art von "wenn a b c"?

Wenn "B" und "C" den gleichen Typ haben, ist es offensichtlich: "Wenn a b c" den gleichen Typ wie "B" und "C" hat. So unter der Annahme "a: bool",

  • Wenn a 2 4: nat
  • Wenn ein falscher wahr: bool

Aber wenn "B" und "C" unterschiedliche Typen haben, dann hängt die Art von "if a b c" vom Wert von "a" ab. Wir verwenden das Symbol "π", um eine Funktion anzuzeigen, die ein Argument nimmt und einen Typ zurückgibt. Angenommen, wir haben einige Typen "B" und C "und" A: bool "," B: B "und" C: C ", dann

  • Wenn a b c: (π a: bool. b C Wenn a b c)

Das heißt, der Typ des "If" -Fremes ist entweder der Typ des zweiten oder dritten Arguments, abhängig vom Wert des ersten Arguments. In Wirklichkeit wird "wenn a b c" nicht mit "if" definiert, aber das wird für diese Einführung zu kompliziert.

Da der Typ Berechnung enthalten kann, ist die abhängige Typierung erstaunlich leistungsfähig. Wenn Mathematiker sagen: "Es gibt eine Nummer so dass ist Prime "oder" Es gibt eine Zahl so diese Eigenschaft hält ", es kann als abhängiger Typ ausgedrückt werden. Das heißt, die Eigenschaft ist für das Spezifische nachgewiesen""Und das ist im Typ des Ergebniss sichtbar.

Es gibt viele Details, um die abhängige Typisierung zu erhalten. Sie sind zu lang und kompliziert für diese Einführung. Siehe den Artikel über Abhängige Typisierung und die Lambda Würfel für mehr Informationen.

Universen

Π-Tterms geben einen Typ zurück. Was ist der Typ ihres Rückgabewerts? Nun, es muss einen Typ geben, der Typen enthält. Ein Typ, der andere Typen enthält, wird als "Universum" bezeichnet. Es wird oft mit dem Symbol geschrieben . Manchmal gibt es eine Hierarchie von Universen, mit ": ",": ", etc..

Universen sind kompliziert. Wenn ein Universum sich selbst enthält, kann es zu Paradoxien wie wie Girards Paradox. Die Details der Universen sind für diese Einführung zu lang und kompliziert.

Gemeinsame "nach Regel" -Typen und Begriffe

Typ Theorien werden durch ihre definiert Inferenzregeln. Es gibt Regeln für einen oben beschriebenen "funktionalen Kern" und Regeln, die Typen und Begriffe erstellen. Im Folgenden finden Sie eine nicht exexhustive Liste gemeinsamer Typen und deren damit verbundenen Begriffe.

Die Liste endet mit "induktiven Typen", einer leistungsstarken Technik, die alle anderen in der Liste konstruieren kann. Die mathematischen Grundlagen, die von den Proof Assistants "Coq" und "Lean" verwendet werden, basieren auf dem "Kalkül für induktive Konstruktionen", der "Kalkül der Konstruktionen" (sein "funktionaler Kern") mit induktiven Typen ist.

Leerer Typ

Das leerer Typ hat keine Bedingungen. Der Typ wird normalerweise geschrieben "" oder "".

Es wird verwendet, um zu zeigen, dass etwas unkompliziert ist. Wenn für einen Typ "a", können Sie eine Funktion des Typs erstellen "a ", Sie wissen, dass" a "keine Begriffe hat. Ein Beispiel für den Typ" a "könnte eine Nummer enthalten so dass beide ist gerade und ist seltsam ". (Siehe" Produkttyp "unten, um wie das Beispiel" a "konstruiert wird.) Wenn ein Typ keine Begriffe hat, sagen wir, dass es" unbewohnt "ist.

Gerätetyp

Das Gerätetyp hat genau 1 kanonischer Begriff. Der Typ ist geschrieben "" oder ""Und der einzelne kanonische Begriff ist"*"geschrieben.

Der Einheitstyp wird verwendet, um zu zeigen, dass etwas existiert oder berechnet wird. Wenn für einen Typ "a", können Sie eine Funktion des Typs erstellen " A ", Sie wissen, dass" a "einen oder mehrere Begriffe hat. Wenn ein Typ mindestens 1 Amtszeit hat, sagen wir, dass er" bewohnt "ist.

Boolescher Typ

Der Boolesche Typ hat genau 2 kanonische Begriffe. Der Typ wird normalerweise "bool" oder "geschrieben"" oder "". Die kanonischen Begriffe sind normalerweise" wahr "und" falsch ".

Der Boolesche Typ wird mit einer Eliminatorfunktion "Wenn" definiert, so dass:

  • Wenn wahr b c b
  • Wenn falsch b c c

Produktart

Das Produktart hat Begriffe, die sind bestellte Paare. Für Typen "A" und "B" ist der Produkttyp geschrieben "a B ". Kanonische Begriffe werden durch die Konstruktorfunktion" Paar "erstellt. Die Begriffe sind" Paar A B ", wobei" A "ein Begriff vom Typ" A "und" B "ist ein Begriff von Typ" B ". Das Produkt ist Der Typ ist mit Eliminatorfunktionen "zuerst" und "zweiten" definiert, so dass:

  • Erstens (Paar a b) a
  • Zweitens (Paar a b) b

Neben geordneten Paaren wird dieser Typ für die verwendet logischer Operator "und", weil es ein "A" und ein "B" enthält. Es wird auch für verwendet Überschneidung, weil es einen von beiden Typen enthält.

Wenn eine Typtheorie eine abhängige Typisierung hat, hat sie abhängige Paare. In einem abhängigen Paar hängt der zweite Typ vom Wert des ersten Terms ab. Somit ist der Typ geschrieben " A: a. B (a) "wobei" B "Typ" ist "a U ". Es ist nützlich, wenn es dargestellt wird Existenz von a "a" mit Eigentum "b (a)".

Sumentyp

Das Sumentyp ist eine "markierte Gewerkschaft". Das heißt, für Typen "A" und "B" enthält der Typ "A + B" entweder einen Begriff vom Typ "A" oder einen Begriff vom Typ "B" und weiß, welches er hält. Der Typ wird mit den Konstruktoren "Injectionleft" und "InjectionRight" geliefert. Der Anruf "Injectionleft A" nimmt "a: a" und gibt einen kanonischen Begriff des Typs "A + B" zurück. In ähnlicher Weise nimmt das InjectionRight B "B: B" und gibt einen kanonischen Begriff des Typs "A + B" zurück. Der Typ wird mit einer Eliminatorfunktion "Übereinstimmung" definiert, so dass für einen Typ "C" und Funktionen "f: a C "und" G: B C":

  • Match (Injectionleft a) C f G. (f a)
  • Match (InjectionRight B) C F G. (g b)

Der Sumentyp wird für verwendet logisch oder und für Union.

Natürliche Zahlen

Die natürlichen Zahlen werden normalerweise im Stil von implementiert Peano -Arithmetik. Es gibt einen kanonischen Begriff "0: nat" für Null. Kanonische Werte größer als Null verwenden die Konstruktorfunktion "s: nat nat ". So ist" S 0 "eins." S (s 0) "ist zwei."

  • 1: nat :: = s 0
  • 2: nat :: = s (s 0)
  • 3: nat :: = s (s (s 0))
  • ...

Die natürlichen Zahlen werden mit einer Eliminatorfunktion "R" definiert, die eine Rekursion verwendet, um eine Funktion für alle NATs zu definieren. Es braucht eine Funktion "P: nat U "Welches ist der Typ der Funktion, das es zu definieren ist. Er nimmt auch einen Begriff" pz: p 0 "an, der den Wert bei Null und eine Funktion" PS: P N ist P (s n) "Das heißt, wie man den Wert" n "in den Wert" n + 1 "umwandelt. Seine Berechnungsregeln sind:

  • R p pz ps 0 PZ
  • R p pz ps (s ) PS (r p pz ps )

Die Funktion "add", die früher verwendet wurde, kann mit "R" definiert werden.

  • Hinzufügen: natnatnat :: = r (λ n: nat. natnat) (λ n: nat. n) (λ g: natnat. (λ m: nat. s (g m)))

Identitätstyp

Das Identitätstyp ist das dritte Konzept der Gleichheit in der Typtheorie. Das erste ist "Notationsgleichheit", nämlich Definitionen wie "2: nat :: = (s 0))", die keine mathematische Bedeutung haben, aber für die Leser nützlich sind. Die zweite ist "Urteilsgleichheit", wenn zwei Begriffe auf denselben Term berechnen, wie "x + (1 + 4)" und "x + (4 + 1)", die beide mit "x + 5" berechnen. Die Typentheorie braucht jedoch eine andere Form der Gleichheit, die als "Identitätstyp" oder "Sätze Gleichheit" bezeichnet wird.

Der Grund, warum er den Identitätstyp benötigt, liegt darin, dass einige gleiche Begriffe nicht auf denselben Begriff berechnen. Unter der Annahme "x: nat" berechnen die Begriffe "x + 1" und "1 + x" nicht auf denselben Begriff. Denken Sie daran, dass "+" eine Notation für die Funktion "Add" ist, was eine Notation für die Funktion "R" ist. Wir können auf "R" erst berechnen, bis der Wert für "x" angegeben ist, und bis er angegeben ist, werden zwei verschiedene Aufrufe zu "R" nicht auf denselben Begriff berechnet.

Ein Identitätstyp erfordert zwei Begriffe "A" und "B" desselben Typs und ist "a = b" geschrieben. Für "x + 1" und "1 + x" wäre der Typ "x + 1 = 1 + x". Mit dem Konstruktor "Reflexivität" werden kanonische Begriffe erstellt. Der Anruf "Reflexivität A" nimmt einen Begriff "a" und gibt einen kanonischen Begriff des Typs "a = a" zurück.

Die Berechnung mit dem Identitätstyp erfolgt mit der Eliminator -Funktion "j". Die Funktion "J" lässt einen Begriff von "A", "B" und einem Begriff vom Typ "a = b" umgeschrieben, so dass "B" durch "A" ersetzt wird. Während "J" ein Richtungsvermögen ist und nur in der Lage ist, "B" durch "A" zu ersetzen, kann nachgewiesen werden, dass der Identitätstyp ist reflexiv, symmetrisch und transitiv.

Wenn die kanonischen Begriffe immer "a = a" und "x+1" sind, berechnet wir nicht auf denselben Begriff wie "1+x", wie erstellen wir einen Begriff von "x+1 = 1+x"? Wir verwenden die "R" -Funktion. (Siehe "natürliche Zahlen" oben.) Das Argument der "R" -Funktion "P" ist definiert als "(λ x: nat. X+1 = 1+x)". Die anderen Argumente wirken wie die Teile eines Induktionsnachweis P (s n) "wird zum induktiven Fall. Im Wesentlichen besagt dies, dass der Ausdruck mit" Reflexivität (x+1). ". Diese Anwendung der Funktion" R "hat Typ" x: nat x+1 = 1+x ". Wir können es und die Funktion" J "in jedem Begriff" 1+x "für" x+1 "ersetzen. Auf diese Weise kann der Identitätstyp in der Lage sein, Gleichheiten zu erfassen, die sind Nicht möglich mit der geltenden Gleichheit.

Um klar zu sein, ist es möglich, den Typ "0 = 1" zu erstellen, aber es wird keine Möglichkeit geben, Bedingungen für diesen Typ zu erstellen. Ohne einen Begriff des Typs "0 = 1" ist es nicht möglich, die Funktion "J" in einem anderen Begriff "0" für "1" zu ersetzen.

Die Komplexität der Gleichheit in der Typtheorie macht es zu einem aktiven Forschungsbereich, siehe Homotopie -Typ Theorie.

Induktive Typen

Induktive Typen sind eine Möglichkeit, eine Vielzahl von Typen zu erstellen. In der Tat können alle oben beschriebenen Typen und mehr unter Verwendung der Regeln der induktiven Typen definiert werden. Einmal der Typ des Typs Konstrukteure werden angegeben, die Eliminatorfunktionen und die Berechnung werden durch bestimmt Strukturrekursion.

Es gibt ähnliche, leistungsfähigere Möglichkeiten, um Typen zu erstellen. Diese beinhalten Induktionsrecursion und Induktionsinduktion. Es gibt auch eine Möglichkeit, ähnliche Typen mit nur Lambda -Begriffen zu erstellen, die genannt werden Scott Coding.

(Hinweis: Typ Theorien enthalten normalerweise nicht Koinduktive Typen. Sie stellen einen unendlichen Datentyp dar und die meisten Typ -Theorien beschränken sich auf Funktionen, die nachgewiesen werden können, dass sie anhalten.)

Unterschiede zur festgelegten Theorie

Die traditionelle Grundlage für die Mathematik wurde mit einer Logik gepaart. Das häufigste zitierte ist Zermelo -Fraenkel -Set -Theorie, bekannt als "zf" oder mit dem Axiom der Wahl, "ZFC". Typ -Theorien unterscheiden sich in vielerlei Hinsicht von dieser Fundament.

  • Die festgelegte Theorie hat beide Regeln und Axiome, während Typ Theorien nur Regeln haben. Set -Theorien sind auf Logik aufgebaut. Somit wird ZFC durch beide Regeln von definiert Logik erster Ordnung und seine eigenen Axiome. (Ein Axiom ist eine logische Anweisung, die ohne logische Ableitung als wahr akzeptiert wird.) Typ Theorien haben im Allgemeinen keine Axiome und werden durch ihre Inferenzregeln definiert.
  • Festlegen Theorie und Logik haben die Gesetz der ausgeschlossenen Mitte. Das heißt, jeder Satz ist wahr oder falsch. Wenn eine Typtheorie die Konzepte von "und" und "oder" als Typ definiert, führt sie zu Typen intuitionistische Logik, was nicht das Gesetz der ausgeschlossenen Mitte hat. Das Gesetz kann jedoch für einige Typen nachgewiesen werden.
  • In der Set -Theorie ist ein Element nicht auf einen Satz beschränkt. Das Element kann in Teilmengen und Gewerkschaften mit anderen Sätzen erscheinen. In der Typtheorie gehören Begriffe (im Allgemeinen) nur zu einem Typ. Wenn eine Untergruppe verwendet wird, kann die Typtheorie a verwenden Prädikatfunktion oder verwenden Sie einen abhängigen Produkttyp, bei dem jedes Element jedes Element wird mit einem Beweis gepaart, dass die Eigenschaft der Teilmenge für die Eigenschaft gilt . Wenn eine Vereinigung verwendet werden würde, verwendet die Typtheorie den Sumentyp, der neue kanonische Begriffe enthält.
  • Die Typentheorie hat einen integrierten Begriff der Berechnung. Somit sind "1+1" und "2" unterschiedliche Begriffe in der Typtheorie, aber sie berechnen auf denselben Wert. Darüber hinaus werden Funktionen rechnerisch als lambda -Begriffe definiert. In der Set -Theorie bedeutet "1+1 = 2", dass "1+1" nur eine andere Möglichkeit ist, den Wert "2" zu verweisen. Die Berechnung der Typtheorie erfordert ein kompliziertes Konzept der Gleichheit.
  • Die SET -Theorie codiert normalerweise Zahlen als Sets. (0 ist der leere Satz, 1 ist ein Satz, der den leeren Satz usw. enthält usw. siehe Set-theoretische Definition natürlicher Zahlen.) Typtheorie kann Zahlen als Funktionen kodieren Kirchenkodierung oder natürlicher als Induktive Typen. Die Konstruktoren "0" und "S", die vom induktiven Typ erzeugt werden, ähneln sehr Peanos Axiome.
  • Set -Theorie hat Set-Builder-Notation. Es kann jeden Satz erstellen, der definiert werden kann. Dies ermöglicht es zu erstellen Unzählige Sets. Typtheorien sind syntaktisch, was sie auf a beschränkt Zähler Unendlich unendlich Bedingungen. Darüber hinaus erfordern die meisten Typ -Theorien eine Berechnung, um sich immer anzuhalten und sich zu beschränken rekursiv generierbar Bedingungen. Infolgedessen verwenden die meisten Typ -Theorien die nicht Reale Nummern aber die Berechnbare Zahlen.
  • In der Set -Theorie die Axiom der Wahl ist ein Axiom und ist umstritten, insbesondere wenn sie auf unzählige Sätze angewendet werden. In der Typtheorie ist die äquivalente Aussage ein Satz (Typ) und ist nachweisbar (bewohnt durch einen Begriff).
  • In der Typtheorie sind Beweise mathematische Objekte. Der Typ "x+1 = 1+x" kann nur verwendet werden, wenn der Typ einen Begriff vorliegt. Dieser Begriff stellt einen Beweis dar, dass "x+1 = 1+x". Somit eröffnet die Typtheorie Beweise, die als mathematische Objekte untersucht werden sollen.

Befürworter der Typtheorie werden auch auf die Verbindung zur konstruktiven Mathematik durch die hinweisen BHK -Interpretation, es ist mit der Logik durch die verbunden Curry -Howard Isomorphismusund seine Verbindungen zu Kategoriestheorie.

Technische Details

Eine Typtheorie ist a Mathematische Logik. Es ist eine Sammlung von Inferenzregeln das führt in judgements. Die meisten Logiken haben Urteile, was den Begriff bedeutet ist wahr. "oder" der Begriff ist ein gut geformte Formel. "[5]. Eine Typtheorie hat zusätzliche Urteile, die Typen definieren und Begriffe mit Typen beziehen.

Bedingungen

A Begriff in Logik wird rekursiv als ein konstantes Symbol, eine Variable oder eine Funktionsanwendung definiert, wobei ein Begriff auf einen anderen Begriff angewendet wird. Einige konstante Symbole sind "0" der natürlichen Zahlen, "wahr" der Booleschen, und Funktionen wie "S" und "If". Somit sind einige Begriffe "0", "," (s 0) ",", "(S (s x))" und "if true 0 (s 0)".

Urteile

Die meisten Typ -Theorien haben 4 Urteile:

  • " ist ein Typ. "
  • " ist ein Begriff des Typs . "
  • "Typ ist gleich dem Typ . "
  • "Bedingungen und sind beide Typen und sind gleich. "

Die Urteile können unter einer Annahme getroffen werden. So könnten wir sagen: "Angenommen ist ein Begriff des Typs "bool" und ist ein Begriff des Typs "nat", (wenn x y y) ein Begriff vom Typ "nat" "ist. Die mathematische Notation für Annahmen ist eine Komma-trennende Liste von"Begriff: Typ"Das geht dem voraus Drehsymbol ''. Somit wird die Beispielaussage offiziell geschrieben:

  • X: bool, y: nat (wenn x y y): nat

Wenn es keine Annahmen gibt, liegt links vom Drehkreuz nichts links.

  • S: Nat nat

Die Liste der Annahmen wird als "Kontext" bezeichnet. Es ist sehr häufig, das Symbol zu sehen. ''verwendet, um einige oder alle Annahmen darzustellen. Somit ist die formale Notation für die 4 verschiedenen Urteile normalerweise:

Formelle Notation für Urteile Beschreibung
Typ ist ein Typ (unter Annahmen ).
ist ein Begriff des Typs (unter Annahmen ).
Typ ist gleich dem Typ (unter Annahmen ).
Bedingungen und sind beide Typen und sind gleich (unter Annahmen ).

(Anmerkung: Das Urteil über die Gleichheit der Begriffe ist, wo der Ausdruck "Urteilsgleichheit" stammt.)

Die Urteile erzwingen, dass jede Amtszeit einen Typ hat. Der Typ wird einschränken, welche Regeln auf einen Begriff angewendet werden können.

Regeln

Eine Typtheorie einer Regeln Sagen Sie, welche Urteile auf der Grundlage der Existenz anderer Urteile beruhen können. Die Regeln werden unter Verwendung einer horizontalen Linie ausgedrückt, wobei die erforderlichen Eingabeturtien über der Linie und dem resultierenden Urteil unterhalb der Linie sind. Die Regel für die Erstellung eines Lambda -Terms lautet:

Die zur Erstellung des Lambda -Begriffs erforderlichen Urteile liegen über der Linie. In diesem Fall ist nur ein Urteil erforderlich. Es gibt einen Begriff "B" von irgendeinem Typ "B", vorausgesetzt, es gibt einen Begriff "A" von irgendeiner Art "A" und einige andere Annahmen "". (Notiz: ""a", "a", "b" und "b" sind alle Metavariablen in der Regel.) Das resultierende Urteil geht unter die Zeile. Das daraus resultierende Urteil dieser Regel besagt, dass der neue Lambda -Begriff "a B "unter den anderen Annahmen .

Die Regeln sind syntaktisch und arbeiten von umschreiben. So mögen die Metavariablen ""," a "," a "usw. kann tatsächlich aus komplexen Begriffen bestehen, die viele Funktionsanwendungen enthalten, nicht nur einzelne Symbole.

Um ein bestimmtes Urteil in der Typtheorie zu generieren, muss es eine Regel geben, um es zu generieren. Anschließend muss es Regeln geben, um alle erforderlichen Eingaben dieser Regel zu generieren. Und regiert dann für alle Eingaben für diese Regeln. Die angewandten Regeln bilden einen Proofbaum. Dies wird normalerweise gezeichnet, wenn man einen Gentzen-Stil hat,[6] wobei das Zielurteil (Wurzel) unten ist und Regeln, die keine Eingaben (Blätter) oben erfordern. (Sehen Naturalabzug#Proofs_and_type_theory.) Ein Beispiel für eine Regel, für die keine Eingaben erforderlich sind, ist ein Begriff "0" vom Typ "nat":

Eine Typtheorie hat normalerweise eine Reihe von Regeln, einschließlich derjenigen zu:

  • Erstellen Sie einen Kontext
  • Fügen Sie dem Kontext eine Annahme hinzu ("Schwächung")
  • ordnen die Annahmen neu an
  • Verwenden Sie eine Annahme, um eine Variable zu erstellen
  • Deflexivität, Symmetrie und Transitivität für die wertende Gleichheit definieren
  • Definieren Sie die Substitution für die Anwendung von Lambda -Begriffen
  • Alle Wechselwirkungen von Gleichheit, Substitution usw.
  • Universen definieren

Auch für jeden "nach Regel" -Typ gibt es 4 verschiedene Arten von Regeln

  • Regeln "Typ Formation" sagen, wie Sie den Typ erstellen
  • Regeln "Term Introduction" definieren die kanonischen Begriffe und Konstruktorfunktionen wie "Paar" und "S".
  • Regeln "Bezeichnung Elimination" definieren die anderen Funktionen wie "First", "Second" und "R".
  • "Berechnungs" -Regeln geben an, wie die Berechnung mit den typspezifischen Funktionen ausgeführt wird.

Beispiele für Regeln:

Eigenschaften von Typ Theorien

Begriffe gehören normalerweise zu einem einzelnen Typ. Es gibt jedoch festgelegte Theorien, die "Subtyping" definieren.

Die Berechnung erfolgt durch wiederholte Anwendung von Regeln. Viele Typ -Theorien sind stark normalisieren, was bedeutet, dass jede Reihenfolge der Anwendung der Regeln immer im gleichen Ergebnis endet. Einige sind jedoch nicht. In einer Normalisierungstyp-Theorie werden die Regeln für die Einrichtung als "Reduktionsregeln" bezeichnet und die Anwendung der Regeln "reduziert" den Begriff. Wenn eine Regel nicht ein Regisseur ist, wird sie als "Konversionsregel" bezeichnet.

Einige Kombinationen von Typen entsprechen anderen Kombinationen von Typen. Wenn Funktionen als "Exponentiation" betrachtet werden, können die Kombinationen von Typen ähnlich wie bei algebraischen Identitäten geschrieben werden.[7] Daher, , , , , .

Axiome

Die meisten Typ -Theorien haben nicht Axiome. Dies liegt daran, dass eine Typtheorie durch ihre Inferenzregeln definiert wird. (Sehen "Regeln"Oben). Dies ist eine Quelle der Verwirrung für Menschen, die mit der festgelegten Theorie vertraut sind, wobei eine Theorie durch beide Inferenzregeln für eine Logik definiert wird (wie z. Logik erster Ordnung) und Axiome über Sätze.

Manchmal fügt eine Typtheorie einige Axiome hinzu. Ein Axiom ist ein Urteil, das ohne Ableitung unter Verwendung der Inferenzregeln akzeptiert wird. Sie werden häufig hinzugefügt, um Eigenschaften zu gewährleisten, die durch die Regeln nicht sauber hinzugefügt werden können.

Axiome können Probleme verursachen, wenn sie Begriffe ohne Möglichkeit einführen, zu diesen Begriffen zu berechnen. Das heißt, Axiome können die stören Eigenschaft normalisieren der Typtheorie.[8]

Einige häufig auftretende Axiome sind:

  • "Axiom K" sorgt "Einzigartigkeit von Identitätsbeweisen". Das heißt, jeder Begriff eines Identitätstyps ist gleich der Reflexivität.[9]
  • "Univalenz -Axiom" ist, dass die Äquivalenz von Typen die Gleichheit der Typen ist. Die Forschung zu dieser Eigenschaft führte zur kubischen Typentheorie, in der die Eigenschaft ohne Axiom gilt.[10]
  • "Gesetz der ausgeschlossenen Mitte" wird häufig hinzugefügt, um Benutzer zu befriedigen, die wollen klassische Logikanstelle einer intuitionistischen Logik.

Das Axiom der Wahl muss nicht zur Typtheorie hinzugefügt werden, da sie in den meisten Typ -Theorien aus den Inferenzregeln abgeleitet werden können. Dies liegt an der konstruktiv Art der Typtheorie, wobei der Beweis, dass ein Wert existiert, eine Methode erfordert, um den Wert zu berechnen. Das Axiom der Wahl ist in der Typtheorie weniger leistungsstark als die meisten festgelegten Theorien, da die Funktionen der Typtheorie berechnet werden müssen und die Anzahl der Begriffe in einem Typ zählbar sein muss. (Sehen Axiom der Wahl § in konstruktiver Mathematik.))

Entscheidungsprobleme

Eine Typtheorie ist natürlich mit dem verbunden Entscheidungsproblem von Typ Besiedlung.[11]

Typ Besiedlung

Das Entscheidungsproblem von Typ Besiedlung (abgekürzt von ) ist:

Bei einer Typumgebung und ein Typ entscheiden Sie, ob es einen Begriff gibt dem kann der Typ zugewiesen werden In der Typumgebung .

Girards Paradox zeigt, dass die Typbesiedlung stark mit der Konsistenz eines Typsystems mit Curry -Howard -Korrespondenz zusammenhängt. Um solide zu sein, muss ein solches System unbewohnte Typen haben.

Die Opposition von Begriffen und Typen kann auch als einer von Ansichten sein Implementierung und Spezifikation. Durch Programmsynthese (Das rechnerische Gegenstück der Typ -Besiedlung (siehe unten) kann verwendet werden, um (alle oder Teile von) Programmen aus der Spezifikation in Form von Typinformationen zu konstruieren.[12]

Geben Sie Inferenz ein

Viele Programme, die mit Typtheorie arbeiten (z. B. interaktive Theorem -Provers), führen auch Typenferenzungen aus. Sie können die Regeln auswählen, die der Benutzer beabsichtigt, mit weniger Aktionen des Benutzers.

Forschungsgebiete

Homotopie -Typ Theorie unterscheidet sich von intuitionistische Typtheorie Meistens durch den Umgang mit dem Gleichheitstyp. Im Jahr 2016 wurde die kubische Typentheorie vorgeschlagen, eine Homotopie -Typ -Theorie mit Normalisierung.[13][10]

Interpretationen

Die Typentheorie hat Verbindungen zu anderen Bereichen der Mathematik. Befürworter der Typentheorie als Grundlage erwähnen diese Verbindungen häufig als Rechtfertigung für ihre Verwendung.

Typen sind Vorschläge; Begriffe sind Beweise

Bei Verwendung als Grundlage werden bestimmte Typen als interpretiert als Aussagen (Aussagen, die nachgewiesen werden können) und ein Begriff des Typs ist ein Beweis für diesen Satz. Somit stellt der Typ "π x: nat. X+1 = 1+x" dar, dass für jeden "x" vom Typ "nat" "x+1" und "1+x" gleich sind. Und ein Begriff dieser Art repräsentiert ihren Beweis.

Curry-Howard-Korrespondenz

Das Curry -Howard -Korrespondenz ist die beobachtete Ähnlichkeit zwischen Logik und Programmiersprachen. Die Implikation in der Logik "a B "ähnelt einer Funktion vom Typ" a "zum Typ" B ". Für eine Vielzahl von Logiken sind die Regeln ein ähnlicher Ausdruck in den Typen einer Programmiersprache. Die Ähnlichkeit geht weiter, da die Anwendungen der Regeln den Programmen in der Programmierung ähneln Sprachen. Somit wird die Korrespondenz oft als "Beweise als Programme" zusammengefasst.

Die Logikoperatoren "für alle" und "existiert"LED pro Martin-Löf zur Erfindung abhängiger Typentheorie.

Intuitionistische Logik

Wenn einige Typen als Vorschläge interpretiert werden, gibt es eine Reihe von gemeinsamen Typen, mit denen sie eine Logik aus Typen herstellen können. Diese Logik ist jedoch nicht klassische Logik aber intuitionistische Logik. Das heißt, es hat nicht das Gesetz der ausgeschlossenen Mitte Noch doppelte Negation.

Es gibt eine natürliche Beziehung von Typen zu logischen Aussagen. Wenn "a" ein Typ ist, der einen Satz darstellt, kann er eine Funktion des Typs erstellen. " A "zeigt an, dass A einen Beweis hat und in der Lage ist, die Funktion zu erstellen" a "Zeigt an, dass A keinen Beweis hat. Das heißt, bewohnbare Typen sind nachgewiesen und unbewohnbare Typen sind widerlegt.

Warnung: Diese Interpretation kann zu viel Verwirrung führen. Eine Typtheorie kann haben Bedingungen "wahr" und "falsch" vom Typ "bool", der sich wie a verhalten Boolesche Logikund gleichzeitig haben Typen und "True" (nachweisbar) und "falsch" (Unzufrieden) als Teil einer intuitionistischen Logik für den Satz darstellen.

Unter dieser intuitionistischen Interpretation gibt es gemeinsame Typen, die als logische Operatoren fungieren:

Logischer Name Logische Notation Typ Notation Modellname
WAHR Gerätetyp
FALSCH Leerer Typ
Nicht Funktion zum leeren Typ
Implikation Funktion
Und Produktart
Oder Sumentyp
Für alle Π a: a. P (a) Abhängige Funktion
Existiert Σ a: a. P (a) Abhängiger Produkttyp

Aber unter dieser Auslegung gibt es kein Gesetz der ausgeschlossenen Mitte. Das heißt, es gibt keinen Begriff des Typs π a. A + (a ).

Ebenso gibt es keine doppelte Negation. Es gibt keinen Begriff des Typs π a. ((EIN ) ) A. (Hinweis: Intuitionistische Logik erlaubt es und es gibt einen Begriff des Typs (((a) ) ) ) (EIN ).).)

Somit ist die Logik der Typen eine intuitionistische Logik. Die Typentheorie wird oft als Implementierung der zitiert Brouwer -Heying -Kolmogorov -Interpretation.

Es ist möglich, das Gesetz der ausgeschlossenen mittleren und doppelten Negation in eine Typtheorie, durch Regel oder Annahme in eine Typtheorie einzubeziehen. Die Begriffe dürfen jedoch nicht auf kanonische Begriffe berechnen und stören die Fähigkeit, festzustellen, ob zwei Begriffe zueinander gleich sind.

Konstruktive Mathematik

Per Martin-Löf schlug seine intuitionistische Typtheorie als Grundlage für die Grundlage für Konstruktive Mathematik. Die konstruktive Mathematik erfordert, wenn es beweist, "es gibt eine mit Eigentum P () ", es muss eine bestimmte geben und ein Beweis dafür, dass es Eigentum "P" hat. In der Typtheorie wird die Existenz unter Verwendung des abhängigen Produkttyps erreicht und erfordert einen Begriff dieser Art. Für den Begriff , "Erste "wird das produzieren und zweitens "Wird den Beweis von P (erzeugen).

Ein Beispiel für einen nicht konstruktiven Beweis ist ein "Beweis nach Widerspruch". Der erste Schritt wird davon ausgegangen existiert nicht und widerlegt es durch Widerspruch. Die Schlussfolgerung aus diesem Schritt lautet: "Es ist nicht der Fall, dass existiert nicht ". Der letzte Schritt ist durch doppelte Negation zu dem Schluss, dass das existiert. Um klar zu sein, ermöglicht die konstruktive Mathematik immer noch "Widerspruch durch Widerspruch". Es kann beweisen, dass "es nicht der Fall ist existiert nicht ". Aber konstruktive Mathematik erlaubt nicht den letzten Schritt, die doppelte Negation zu beseitigen, um das zu schließen existiert.[14]

Die konstruktive Mathematik hat in der intutionistischen Logik oft verwendet, wie es durch die zeigt Brouwer -Heying -Kolmogorov -Interpretation.

Die meisten der als Fundamente vorgeschlagenen Typtheorien sind konstruktiv. Dies schließt die meisten der von Proof -Assistenten verwendeten.

Es ist möglich, einer Typtheorie, durch Regel oder Annahme, nicht konstruktive Merkmale hinzuzufügen. Dazu gehören Betreiber für Kontinuationen wie z. Rufen Sie mit der aktuellen Fortsetzung an. Diese Operatoren neigen jedoch dazu, wünschenswerte Eigenschaften wie Kanonizität zu brechen und Parameter.

Kategoriestheorie

Obwohl die anfängliche Motivation für Kategoriestheorie war weit entfernt vom Fundamentalismus, die beiden Felder stellten sich als tiefe Verbindungen heraus. Wie John Lane Bell schreibt: "Tatsächlich können Kategorien sich als Typ Theorien einer bestimmten Art betrachtet werden; Diese Tatsache allein weist darauf hin, dass die Typtheorie viel enger mit der Kategorie -Theorie zusammenhängt als die Theorie. " Eine Kategorie kann als Typ -Theorie betrachtet werden, die ihrer Syntax geschoren wurden. "Auf diese Weise folgen eine Reihe bedeutender Ergebnisse:[15]

Das Zusammenspiel, bekannt als Kategorische Logikist seitdem ein Thema aktiver Forschung; Siehe beispielsweise die Monographie von Jacobs (1999).

Homotopie -Typ Theorie Versuche, Typtheorie und Kategorie -Theorie zu kombinieren. Es konzentriert sich auf Gleichheiten, insbesondere auf Gleichungen zwischen Typen.

Liste der Typ -Theorien

Haupt

Unerheblich

Aktive Forschung

Anwendungen

Mathematische Grundlagen

Der erste computersichere Assistent, genannt Automat, verwendete Typtheorie, um Mathematik auf einem Computer zu codieren. Martin-Löf entwickelte sich speziell intuitionistische Typtheorie codieren alle Mathematik als neue Grundlage für Mathematik. Es gibt kontinuierliche Forschungen zu mathematischen Grundlagen mit Verwendung Homotopie -Typ Theorie.

Mathematiker arbeiten in Kategoriestheorie hatte bereits Schwierigkeiten, mit der allgemein anerkannten Grundlage von zu arbeiten Zermelo -Fraenkel -Set -Theorie. Dies führte zu Vorschlägen wie der Elementarentheorie von Lawvere der Kategorie der Sätze (etcs).[16] Die Homotopie -Typtheorie setzt sich in dieser Zeile unter Verwendung der Typtheorie fort. Forscher untersuchen Verbindungen zwischen abhängigen Typen (insbesondere dem Identitätstyp) und Algebraische Topologie (speziell Homotopie).

Proof Assistenten

Ein Groß Proof Checkers, interaktiv Proof Assistenten, und Automatisierte Theoremprover. Die meisten dieser Systeme verwenden eine Typtheorie als mathematische Grundlage für codierende Beweise, was angesichts der engen Verbindung zwischen Typtheorie und Programmiersprachen nicht überraschend ist:

Viele Typ -Theorien werden von unterstützt von LEGO und Isabelle. Isabelle unterstützt auch Fundamente neben Typtheorien, wie z. ZFC. Mizar ist ein Beispiel für ein Proof -System, das die festgelegte Theorie nur unterstützt.

Programmiersprachen

Irgendein Statische Programmanalyse, wie der Typ -Checking -Algorithmen in der Semantische Analyse Phase von Compiler, hat eine Verbindung zur Typtheorie. Ein Paradebeispiel ist Agda, Eine Programmiersprache, die UTT (Luos einheitliche Theorie der abhängigen Typen) für ihr Typsystem verwendet.

Die Programmiersprache Ml wurde für die Manipulation von Typ Theorien entwickelt (siehe LCF) und sein eigenes Typsystem wurde stark von ihnen beeinflusst.

Linguistik

Die Typentheorie wird auch in großem Umfang verwendet Formale Theorien der Semantik von natürliche Sprachen,[17][18] besonders Montague -Grammatik[19] und seine Nachkommen. Im Speziellen, Kategoriengrammatiken und Grammatiken vor der Gruppen Verwenden Sie ausführlich Typkonstruktoren, um die Typen zu definieren (Substantiv, Verbusw.) von Wörtern.

Die häufigste Konstruktion nimmt die Grundtypen an und für Einzelpersonen und Wahrheitswerteund definiert die Art von Typen rekursiv wie folgt:

  • wenn und sind Typen, dann auch ;
  • Nichts außer den Grundtypen, und was mithilfe der vorherigen Klausel aus ihnen konstruiert werden kann, sind Typen.

Ein komplexer Typ ist die Art von Funktionen aus Entitäten des Typs zu Entitäten des Typs . So hat man Typen wie die als Elemente der Funktionen von Unternehmen zu Wahrheitswerten interpretiert werden, d.h. Indikatorfunktionen von Unternehmenssätzen. Ein Ausdruck des Typs ist eine Funktion von Sätzen von Entitäten bis hin zu Wahrheitswerten, d. H. Eine (Indikatorfunktion a) Sets. Dieser letztere Typ wird standardmäßig als Art von angenommen Quantifizierer der natürlichen Sprache, wie alle oder niemand (Montague 1973, Barweise und Cooper 1981).[Vollständiges Zitat benötigt]

Sozialwissenschaften

Gregory Bateson führte eine Theorie logischer Typen in die Sozialwissenschaften ein; seine Vorstellungen von Doppelbindung und logische Ebenen basieren auf Russells Typentypen.

Siehe auch

Weitere Lektüre

  • Aarts, C.; Backhouse, R.; Hoogendijk, P.; Vomans, E.; Van der Woude, J. (Dezember 1992). "Eine relationale Theorie der Datentypen". Technische Universität Eindhoven.
  • Andrews B., Peter (2002). Eine Einführung in die mathematische Logik und Typtheorie: zur Wahrheit durch Beweise (2. Aufl.). Kluwer. ISBN 978-1-4020-0763-7.
  • Jacobs, Bart (1999). Kategoriale Logik und Typtheorie. Studien zur Logik und die Grundlagen der Mathematik. Vol. 141. Elsevier. ISBN 978-0-444-50170-7. Deckt die Typtheorie in der Tiefe ab, einschließlich polymorpher und abhängiger Typverlängerungen. Gibt Kategorische Semantik.
  • Cardelli, Luca (1996). "Typsysteme". In Tucker, Allen B. (Hrsg.). Das Handbuch für Informatik und Ingenieurwesen. CRC Press. S. 2208–36. ISBN 9780849329098.
  • Collins, Jordan E. (2012). Eine Geschichte der Theorie der Typen: Entwicklungen nach der zweiten Ausgabe von 'Principia Mathematica' '. Lambert Academic Publishing. HDL:11375/12315. ISBN 978-3-8473-2963-3. Bietet eine historische Übersicht über die Entwicklungen der Theorie der Typen mit Schwerpunkt auf den Niedergang der Theorie als Grundlage der Mathematik in den vier Jahrzehnten nach der Veröffentlichung der zweiten Ausgabe von 'Principia Mathematica'.
  • Constable, Robert L. (2012) [2002]. "Naive Computertyptheorie" (PDF). In Schwichtenberg, H.; Steinbruggen, R. (Hrsg.). Nachweis und Systemverantwortung. NATO Science Series II. Vol. 62. Springer. S. 213–259. ISBN 9789401004138. Als Gegenstück der Typtheorie von vorgesehen Paul Halmos's (1960) Naive Set -Theorie
  • Coquand, Thierry (2018) [2006]. "Typtheorie". Stanford Encyclopedia of Philosophy.
  • Thompson, Simon (1991). Typtheorie und funktionale Programmierung. Addison -Wesley. ISBN 0-201-41667-0.
  • Hindley, J. Roger (2008) [1995]. Einfache einfache Typtheorie. Cambridge University Press. ISBN 978-0-521-05422-5. Eine gute Einführung in die einfache Typtheorie für Informatiker; Das beschriebene System ist jedoch nicht genau die STT der Kirche. Buchrezension
  • Kamareddine, Fairouz D.; Laan, Twan; Nederpelt, Rob P. (2004). Eine moderne Perspektive auf die Typentheorie: von ihren Ursprüngen bis heute. Springer. ISBN 1-4020-2334-0.
  • Ferreirós, José; Domínguez, José Ferreirós (2007). "X. Logik und Typ Theorie in der Zwischenkriegszeit". Labyrinth des Denkens: Eine Geschichte der festgelegten Theorie und ihre Rolle in der modernen Mathematik (2. Aufl.). Springer. ISBN 978-3-7643-8349-7.
  • Laan, T.D.L. (1997). Die Entwicklung der Typtheorie in Logik und Mathematik (PDF) (PhD). Eindhoven Universität für Technologie. doi:10.6100/IR498552. ISBN 90-386-0531-5.

Anmerkungen

  1. ^ Im JuliaDas Typsystem, zum Beispiel, haben abstrakte Typen keinen Subtyp[1]: 110 Es werden jedoch Betontypen bereitgestellt "Dokumentation, Optimierung und Versand".[2]

Verweise

  1. ^ Balbaert, Ivo (2015) Erste Schritte mit Julia Programmen ISBN 978-1-78328-479-5
  2. ^ docs.julialang.org V.1 Typen
  3. ^ Stanford Encyclopedia of Philosophy (Rev. Montag 12. Oktober 2020) Russells Paradoxon 3. Frühe Antworten auf das Paradoxon
  4. ^ Kirche, Alonzo (1940). "Eine Formulierung der einfachen Theorie der Typen". Das Journal of Symbolic Logic. 5 (2): 56–68. doi:10.2307/2266170. JStor 2266170. S2CID 15889861.
  5. ^ Bauer, Andrej. "Was genau ist ein Urteil?". Mathoverflow. Abgerufen 29. Dezember 2021.
  6. ^ Smith, Peter. "Arten von Proof -Systemen" (PDF). logicmatters.net. Abgerufen 29. Dezember 2021.
  7. ^ Milewski, Bartosz. "Programmierung mit Mathematik (Erforschung der Typtheorie)". Youtube.
  8. ^ "Axiome und Berechnungen". Theorem in schlanker Beweis. Abgerufen 21. Januar 2022.
  9. ^ "Axiom K". nlab.
  10. ^ a b Cohen, Cyril; Coquand, Thierry; Huber, Simon; Mörtberg, Anders (2016). "Kubische Typtheorie: Eine konstruktive Interpretation des Univalenz -Axioms" (PDF). 21. Internationale Konferenz über Typen für Beweise und Programme (Typen 2015). Arxiv:1611.02108. doi:10.4230/lipics.cvit.2016.23 (Inaktiv 2022-03-05).{{}}: CS1 Wartung: doi inaktiv im März 2022 (Link)
  11. ^ Henk Barendregt; Wil Dekkers; Richard Statman (20. Juni 2013). Lambda -Kalkül mit Typen. Cambridge University Press. p. 66. ISBN 978-0-521-76614-2.
  12. ^ Heineman, George T.; Bessai, Jan; Düdder, Boris; Rehof, Jakob (2016). "Eine lange und kurvenreiche Straße in Richtung modularer Synthese". Nutzungsanwendungen formaler Methoden, Überprüfung und Validierung: Grundtechniken. Isola 2016. Vorlesungsnotizen in Informatik. Vol. 9952. Springer. S. 303–317. doi:10.1007/978-3-319-47166-2_21. ISBN 978-3-319-47165-5.
  13. ^ Sterling, Jonathan; Angiuli, Carlo (2021-06-29). "Normalisierung für die kubische Typtheorie". 2021 36. jährliches ACM/IEEE -Symposium für Logik in Informatik (LICs). Rom, Italien: IEEE: 1–15. Arxiv:2101.11479. doi:10.1109/lics52264.2021.9470719. ISBN 978-1-6654-4895-6. S2CID 231719089.
  14. ^ "Beweis durch Widerspruch". nlab. Abgerufen 29. Dezember 2021.
  15. ^ Bell, John L. (2012). "Typen, Sets und Kategorien" (PDF). In Kanamory, Akihiro (Hrsg.). Sätze und Erweiterungen im 20. Jahrhundert. Handbuch der Logikgeschichte. Vol. 6. Elsevier. ISBN 978-0-08-093066-4.
  16. ^ Etcs in nlab
  17. ^ Chatzikyriakidis, Stergios; Luo, Zhaohui (2017-02-07). Moderne Perspektiven in der Typ-theoretische Semantik. Springer. ISBN 978-3-319-50422-3.
  18. ^ Winter, Yoad (2016-04-08). Elemente der formalen Semantik: Eine Einführung in die mathematische Bedeutungstheorie in der natürlichen Sprache. Edinburgh University Press. ISBN 978-0-7486-7777-1.
  19. ^ Cooper, Robin. "Typtheorie und Semantik im Fluss. "Handbuch der Wissenschaftsphilosophie 14 (2012): 271-323.

Externe Links

Einführungsmaterial

Fortgeschrittenes Material