Gibt es Programmiersprachen (oder Logik), die eine Funktion genau dann implementieren (oder ausdrücken) können, wenn f eine berechenbare bijektive Funktion ist?
Gibt es Programmiersprachen (oder Logik), die eine Funktion genau dann implementieren (oder ausdrücken) können, wenn f eine berechenbare bijektive Funktion ist?
Antworten:
Es gibt keine solche Sprache.
Schauen Sie sich jedoch Boomerang an . Es ist eine Sprache zum Schreiben von Bijektionen zwischen Zeichenfolgen. Ich weiß nicht, wie breit eine Klasse von Karten darin ausgedrückt werden kann, aber ich bin sicher, dass Sie herausfinden können, ob Sie ein bisschen suchen.
Es ist vernünftig, von einer Programmiersprache zu verlangen, dass der Satz gültiger Programme von einem Interpreter oder einem Compiler erkannt wird, dh dass es sich um einen rechnerisch aufzählbaren Satz handelt. Angenommen, wir hatten damals eine Programmiersprache, deren Satz gültiger Programme rechnerisch aufzählbar war und die genau alle berechenbaren Bijektionen implementierte . Das würde bedeuten, dass wir alle berechenbaren Bijektionen rechnerisch aufzählen können (einfach alle gültigen Programme in dieser Programmiersprache aufzählen), aber dies ist mit dem nächsten Satz unmöglich.
Satz: Angenommen, ist eine berechenbare Folge berechenbarer Bijektionen. Dann gibt es eine berechenbare Bijektion, die nicht in der Reihenfolge ist.
Beweis. Wir konstruieren eine Bijektion wie folgt. Um die Werte g ( 2 k ) und g ( 2 k + 1 ) zu definieren , betrachten wir f k ( 2 k ) :