Bei der Transformation von Begriffen von einer Sprache in eine andere ist die intuitiv gewünschte Eigenschaft die Beibehaltung der Semantik (wie sie beispielsweise hier für eine CPS-Transformation verwendet wird):
Ich bin jedoch ein wenig beunruhigt, wenn ich dies mit den klassischen Begriffen Korrektheit (oder Solidität) und Vollständigkeit von Logiksystemen in Einklang bringe . Normalerweise würde ich die obige Aussage als Vollständigkeitseigenschaft von betrachten (und umgekehrt die Definition von Korrektheit).
Intuitiv sollte ein Compiler jedoch eher korrekt als vollständig sein (da beispielsweise eine Typprüfung häufig korrekte Programme ausschließt). Die Umkehrung der obigen Aussage ist nur wahr, wenn ist injektiv: Wenn die Ausgangssprache beispielsweise Boolesche Werte und Operationen enthält und die Kompilierung sie über die Church-Codierung ersetzt, kann die Zielsprache boolesche Operationen anhand von Begriffen aus booleschen Literalen und Lambda-Abstraktionen auswerten, die die Ausgangssprache nicht auswerten kann.
- Bin ich zu Recht davon ausgegangen, dass die obige Aussage die Vollständigkeitseigenschaft von ist (Die intuitive Anforderung hat also tatsächlich einen kontraintuitiven Namen)?
- Habe ich auch Recht mit meiner Schlussfolgerung, dass ein nicht injektiver Compiler dann normalerweise nicht korrekt ist?