Es gibt ein paar verschiedene Dinge, die Sie mit "beweisen, dass mein Typechecker funktioniert" meinen könnten. Was wohl Teil Ihrer Frage ist;)
Eine Hälfte dieser Frage beweist, dass Ihre Typentheorie gut genug ist, um alle Eigenschaften der Sprache zu beweisen. Andrejs Antwort geht diesen Bereich sehr gut an. Die andere Hälfte der Frage lautet: Angenommen, die Sprache und ihr Typensystem sind bereits festgelegt. Wie können Sie nachweisen, dass Ihre spezielle Typprüfung das Typensystem tatsächlich korrekt implementiert? Es gibt zwei Hauptperspektiven, die ich hier sehen kann.
Eine ist: Wie können wir jemals darauf vertrauen, dass eine bestimmte Implementierung ihrer Spezifikation entspricht? Je nachdem, welchen Grad an Sicherheit Sie wünschen, können Sie mit einer großen Testsuite zufrieden sein, oder Sie möchten eine formale Überprüfung oder eher eine Mischung aus beiden . Der Vorteil dieser Perspektive ist, dass sie wirklich zeigt, wie wichtig es ist, Grenzen für Ihre Behauptungen zu setzen: Was genau bedeutet "richtig"? Welcher Teil des Codes wird geprüft, und welcher Teil ist der angenommene korrekte TCB? usw. Der Nachteil ist, dass ein zu intensives Nachdenken zu philosophischen Kaninchenlöchern führt - also "Nachteil", wenn Sie diese Kaninchenlöcher nicht mögen.
Die zweite Perspektive ist eine mathematischere Sichtweise der Korrektheit. Wenn wir uns mit Sprachen in der Mathematik befassen, richten wir oft "Modelle" für unsere "Theorien" ein (oder umgekehrt) und versuchen dann zu beweisen: (a) alles, was wir in der Theorie tun können, was wir im Modell tun können, und (b) Alles, was wir im Modell tun können, können wir in der Theorie tun. (Dies sind Solidität und VollständigkeitSätze. Welches davon davon abhängt, ob Sie von der syntaktischen Theorie oder vom semantischen Modell "ausgegangen" sind.) Mit dieser Denkweise können wir uns Ihre Implementierung zur Typprüfung als ein bestimmtes Modell für die betreffende Typentheorie vorstellen. Sie möchten also diese wechselseitige Entsprechung zwischen dem, was Ihre Implementierung kann, und dem, was die Theorie besagt, dass Sie in der Lage sein sollten, beweisen. Der Vorteil dieser Perspektive ist, dass sie sich wirklich darauf konzentriert, ob Sie alle Eckfälle abgedeckt haben, ob Ihre Implementierung vollständig ist, indem Sie keine Programme auslassen, die als typsicher akzeptiert werden sollten, und ob Ihre Implementierung solide ist das Gefühl, keine Programme einzulassen, die als schlecht getippt abgelehnt werden sollten. Der Nachteil ist, dass Ihr Korrespondenznachweis wahrscheinlich ziemlich weit von der Implementierung selbst entfernt ist.