Ich interessiere mich für verifizierte Compiler, die in der Martin-Löf-Typentheorie formalisiert sind, dh Coq / Agda. Im Moment habe ich ein kleines Spielzeugbeispiel geschrieben. Damit kann ich beweisen, dass meine Optimierungen korrekt sind. Zum Beispiel können Additionen mit Null eliminiert werden, dh Ausdrücke wie "x + 0".
Gibt es Optimierungen, die mit einem regulären Compiler schwer durchzuführen sind und als gutes Beispiel dienen? Ist es möglich, bestimmte Eigenschaften eines Programms zu beweisen, die Optimierungen ermöglichen, die mit einem regulären Compiler nicht möglich sind? (dh ohne die Folgerung, die mit einem Theorembeweiser möglich ist)
Ich würde mich für Ideen oder Beispiele und auch Referenzen zum Thema interessieren.
Eine verwandte Frage: Compiler-Korrektheitsnachweise
edit: Wie Tsuyoshi es schön in den Kommentaren formulierte: Ich suche nach Optimierungstechniken, die schwierig zu implementieren sind, wenn ein Compiler in (sagen wir) C geschrieben ist, aber einfacher zu implementieren sind, wenn ein Compiler in (sagen wir) Coq geschrieben ist. Während Agda nach C kompiliert (über Haskell), ist es möglich, alles, was in Agda möglich ist, auch in C zu tun. Der einzige Vorteil von Theoremprüfern wie Coq / Agda besteht wahrscheinlich darin, dass der Compiler und die Optimierungen verifiziert werden können.
edit2: Wie von Vijay DI vorgeschlagen, schreibe, was ich bisher gelesen habe. Ich habe mich hauptsächlich auf Xavier Leroy und das CompCert-Projekt bei INRIA konzentriert (es gibt ein 80-seitiges Papier, das meiner Meinung nach gut gelesen werden kann). Ein zweites Interesse galt der Arbeit von Anton Setzer an interaktiven Programmen. Ich dachte, dass seine Arbeit vielleicht verwendet werden könnte, um Eigenschaften von IO-Programmen und die Bisimulation von IO-Programmen zu beweisen. Vielen Dank, dass Sie Sewell erwähnt haben. Ich habe seinen Vortrag "Geschichten aus dem Dschungel" am ICFP gehört und vielleicht 2-3 seiner Papiere gelesen. Aber ich habe seine Arbeit und die seiner Mitautoren nicht speziell betrachtet.
Ich habe noch nicht herausgefunden, wo ich anfangen soll, oder nach Artikeln zur Optimierung von Compilern gesucht. zB, welche Optimierungen in der Einstellung eines verifizierten Compilers interessant wären.