Wenn Sie zwei Funktionen haben, die einen unterschiedlichen Sortieralgorithmus implementieren, können Sie dann anhand des Quellcodes schließen, dass beide dieselben externen Eigenschaften haben? Bedeutet das, dass beide eine mögliche unsortierte Sequenz als Eingabe und eine sortierte Sequenz als Ausgabe haben? Wie könnten diese externen Eigenschaften durch den Quellcode bestimmt werden? Und wie würden Sie diese externen Eigenschaften beschreiben? Welche Notation würde verwendet?
Die externen Eigenschaften könnten bekannt gemacht werden, indem sie explizit definiert werden, beispielsweise innerhalb eines Typsystems, aber ich frage mich, ob dies implizit erfolgen könnte. Oder ist es theoretisch unmöglich, auf diese Art von Semantik zu schließen? Ich bin daran interessiert, ob dies für beliebige Funktionen möglich ist, nicht nur für Sortieralgorithmen, vorausgesetzt, Dinge wie Funktionen werden immer angehalten und haben keine Nebenwirkungen.
Sollte ich mir die Denotationssemantik ansehen oder ist sie nicht verwandt?
Ich interessiere mich für Hinweise auf die Forschung in diesem Bereich und für verschiedene Begriffe, die zur Beschreibung des Themas verwendet werden, das meiner Literatursuche helfen könnte.
quelle
Die erweiterte Gleichheit bei der Erstellung vollständiger Programmiersprachen ist im Allgemeinen unentscheidbar. Dies sollte Sie jedoch nicht daran hindern, zu überprüfen oder zu verfälschen, ob zwei bestimmte Funktionen weitgehend gleich sind.
quelle
Eine schnelle Antwort (ich gebe zu, ich habe nicht viel Zeit verbracht ...) Der Reissatz besagt, dass es für jede nicht triviale Frage unentscheidbar ist zu sagen, ob die von einem Programm berechnete Funktion die Eigenschaft hat oder nicht. Daher ist die Frage hier unentscheidbar
quelle