Warum sind berechenbare Funktionen kontinuierlich?

7

Ich arbeite daran, ein leicht lesbares Dokument über die Denotationssemantik des Lambda-Kalküls zu schreiben . Dafür stelle ich CPOs, Monotonie und Kontinuität vor. Ein CPO ist eine MengeM mit einer Teilbestellung und ein unteres Element erforderlich das kleinste Element in sein M und die Existenz der kleinsten Obergrenze () für jede Kette d0d1d2... im M. Eine Funktionf zwischen zwei CPOs M, N ist monoton, wenn für alle a,bM Folgendes gilt:

abf(a)f(b)

Eine Funktion f zwischen zwei CPOs M, N ist kontinuierlich, wenn es monoton ist und für alle Ketten d0d1d2 wir haben

f(iNdi)=iNf(di).

Ich möchte meinen Lesern eine gute Vorstellung von der Bedeutung dieser Definitionen vermitteln. Ich habe jedoch keine, die ich aufschreiben könnte. Nach Glynn Winskel in seinem Buch »Die formale Semantik der Programmiersprachen« (1993),ab muss gelesen werden als a ungefähr b (Seite 72), was bedeutet b hat mindestens so viele Informationen wie a. Dies führt zu monotonen Funktionen, die mehr Informationen über die Eingabe in mehr Informationen über die Ausgabe widerspiegeln (Seite 122). Das ist für mich etwas verständlich. Die Erklärung der Kontinuität ist mir jedoch nicht klar:

Wie wir sehen werden, folgt, dass berechenbare Funktionen kontinuierlich sein sollten, aus der Idee, dass das Auftreten einer Informationseinheit in der Ausgabe einer berechenbaren Funktion nur vom Vorhandensein endlich vieler Informationseinheiten in der Eingabe abhängen sollte.

(Seite 73)

Dies ist mir nach dem Lesen des Stream-Beispiels in Abschnitt 8.2 (Seiten 121–123) oder dieser Antwort noch unklar .

Meine letzte Frage lautet also: Wie kann ich meine Leser davon überzeugen, dass berechenbare Funktionen kontinuierlich sind? Warum gibt es keine berechenbare Funktion, die nicht kontinuierlich ist?

Es wäre schön, wenn Sie mir Antworten / Beispiele geben könnten, die keine strenge Einführung der Berechenbarkeit oder der Fixpunkttheorie erfordern, da ich mich nicht auf diese Dinge konzentrieren möchte. Es wäre auch großartig, wenn es nicht notwendig wäre, den Lambda-Kalkül und seine Denotationssemantik im Voraus zu kennen, weil ich Monotonie und Kontinuität vor ihnen einführen möchte (und muss).

EDIT: Mit berechenbar meine ich Turing-berechenbar. Bitte korrigieren Sie mich, wenn ich die Winskels-Definition von berechenbar auf Seite 337 falsch verstehe, da sie nicht explizit als Turing-berechenbar definiert ist, sondern auf äquivalente Weise (zumindest in meinen Augen).

Ich möchte auch auf eine andere Quelle hinweisen, die ich gefunden habe und die versucht, mein Problem zu erklären. Trotzdem verstehe ich das Beispiel nicht, da es im Grunde das gleiche ist wie das Stream-Beispiel von Winskel.

EDIT 2: Es wäre auch ein guter Anfang, um die Sache zu verstehen und zu zeigen, dass jede berechenbare Funktion monoton ist, dh es gibt keine nicht monotone berechenbare Funktion.

user3389669
quelle

Antworten:

9

Es gibt verschiedene Möglichkeiten zu erklären, dass "berechenbar impliziert kontinuierlich". Ich werde hier zwei solche Erklärungen geben.

Turingmaschinen berechnen fortlaufende Karten

Angenommen, wir haben eine Turing-Maschine, die möglicherweise unendlich viel Eingabe auf ein Eingabeband schreibt. Es schreibt das Ergebnis auf ein Ausgabeband, auf dem die Ausgabezellen einmal geschrieben werden. Es gibt Arbeitsbänder. Die Maschine läuft möglicherweise für immer und füllt die Ausgangszellen. Dies ist als Typ-2- Maschine bekannt. (Das Argument für andere Arten von Maschinen wird ähnlich, aber einfacher sein.)

Folgendes sollte offensichtlich sein: Wenn die Maschine in eine Ausgabezelle schreibt, hängt ihre Arbeitsweise bis zu diesem Punkt nur von einem endlichen Teil des Eingabebandes ab, aus dem einfachen Grund, dass sie in endlich vielen Berechnungsschritten den Eingabekopf nicht hätte bewegen können irgendwann. Daher hätte jedes Eingabeband, das bis zu diesem Zeitpunkt mit dem angegebenen übereinstimmt, dazu geführt, dass die Maschine dieselbe Antwort in dieselbe Ausgabezelle geschrieben hätte.

Dies ist jedoch eine Form der Kontinuität, wenn wir die Räume der Eingabe- und Ausgabebänder mit der richtigen Topologie versehen.

Zuerst setzen wir die Topologie auf das Set Σvon Symbolen, die auf Bandzellen geschrieben werden können. Dazu wählen wir einfach die diskrete Topologie. Ein Band ist eine unendliche Folge von Symbolen, also ein Element vonΣω, das ist ein Produkt von Σ's. Lassen Sie uns die Produkttopologie darauf setzen.

Denken Sie daran, dass ein grundlegendes offenes Set aktiviert ist Σω denn die Produkttopologie hat die Form U(a0,,an1)={αΣωi<n.αi=ai}, wo a0,,aiΣ. Das heißt, ein offener Basissatz fixiert einen Anfangsabschnitt der Sequenz auf die angegebenen Wertea0,,an.

Jetzt können wir überprüfen, ob die Funktion f:ΣωΣωvon der Maschine berechnet ist in der Tat kontinuierlich. Nehmen Sie ein einfaches offenes SetV=U(a0,,an1) und lass W=f1(V). Wir müssen das überprüfenWist offen. Berücksichtigen Sie zu diesem Zweck alleαW. Wenn wir eine offene Grundmenge findenW so dass αWWDann sind wir fertig.

weil αW, wir haben f(α)U. Also bei Eingabeα Die Maschine erzeugt ein Ausgabeband, das mit beginnt a0,a1,,an1. Bis es diese Zellen ausschreibt, hat es höchstens die erste inspiziertk Zellen der Eingabe, für einige kN. Wir können nehmenW:=U(α0,,αk) und überprüfen Sie das αWW. Es ist offensichtlich dasαW. BeweisenWW Such dir irgendeine aus βW und beobachte das f(α) und f(β) stimme dem ersten zu nWerte der Ausgabe. Dies impliziert dasf(β)V und daher βW, wie erforderlich.

Berechenbare Karten sind kontinuierlich als Karten zwischen algebraisch ωCPOs

Lassen Sie mich zunächst feststellen, dass das, was Sie definiert haben, normalerweise "ωCPO "(ω im Namen gibt an, dass wir nur Suprema von Ketten benötigen).

In der Denotationssemantik entsprechen Datentypen ωCPOs. Tatsächlich entsprechen sie der Algebra ωCPOs (ist das in Ihrer Arbeit?), Die sind ωCPOs, für die die kompakten Elemente eine Basis bilden. Hier sind einige Definitionen.

Definition: LetD Bohne ωCPO. Ein ElementdDist kompakt, wenn für jede Kettex0x1 so dass dixigibt es j so dass dxj.

Definition: AnωCPO ist algebraisch, wenn allexD ist das Supremum kompakter Elemente darunter.

Die Intuition hinter kompakten Elementen ist, dass sie "endliche Informationen" enthalten. Ein gutes Beispiel istP(N), das Powerset der natürlichen Zahlen, geordnet nach , wobei die kompakten Elemente genau die endlichen Teilmengen von sind N(Übung!). Ein weiteres Beispiel: in derωCPO von kontinuierlichen Funktionen NN Die kompakten Elemente sind die Teilfunktionen, die gleich sind überall, außer bei endlich vielen Argumenten.

Um zu sagen, dass ein ωCPO ist algbraisch zu sagen, dass jedes Element vollständig durch die endlichen Informationen bestimmt wird, die es annähern. Es ist eine Tatsache, dass in der Denotationssemantik Datentypen der Algebra entsprechenωCPOs, es sei denn, wir machen etwas sehr Ungewöhnliches.

Wir können jetzt erklären, warum jede berechenbare Karte kontinuierlich ist. AnnehmenD und E sind ωCPOS und f:DEberechenbar. AnnehmenxD, eE, e ist kompakt und ef(x). Intuitiv sagt dies, dass "endliche Informatione erscheint in der Ausgabe f(x)". Weil f ist berechenbar, muss es der Fall sein, dass es die Informationen berechnet hat e durch Zugriff auf nur eine begrenzte Menge an Informationen über xdh es gibt einen kompakten dD so dass dx und ef(d). Dieses Argument sollte mit dem obigen Argument der Turing-Maschine verglichen werden. Wir haben festgestellt:

Lemma: Wennf:DE ist berechenbar und ef(x) für einige xD und ein kompakter eE, dann gibt es kompakt dD so dass dx und ef(d).

Wir können das Lemma verwenden, um zu zeigen, dass es berechenbar ist fist kontinuierlich. Annehmenx0x1 ist eine Kette in D. weilf ist monoton, das wissen wir schon if(xi)f(ixi), aber wir brauchen auch die Ungleichung f(ixi)if(xi). weilE ist algebraisch, es genügt zu zeigen, wann immer eE ist kompakt und ef(ixi) dann eif(xi). Also nimm anef(ixi). Durch das Lemma existiert ein VertragdD so dass dixi und ef(d). weild ist kompakt, gibt es j so dass dxj, daher durch Monotonie von f wir haben ef(d)f(xj)if(xi). Wir sind fertig.

Andrej Bauer
quelle
Welche Definition von Kontinuität verwenden Sie und wie ähnelt sie der von mir angegebenen? Ich bin nicht mit den Begriffen Basic Open Set und Topologie vertraut . Kann ich davon ausgehen, dass eine Topologie in diesem Fall einer Bestellung entspricht?
user3389669
1
Dies sind grundlegende Konzepte in der Topologie. Schlagen Sie sie in jedem Lehrbuch zur Topologie nach. Ich verstehe nicht ganz. Sie schreiben eine Erklärung zu Berechenbarkeit und Kontinuität, sind aber mit der Standarddefinition von Kontinuität nicht vertraut? (Der, den Sie verwenden, ist ein Sonderfall.) Wenn Sie Ihren Hintergrund und Ihre Motivation ein wenig erläutern würden, könnte ich Ihnen vielleicht einen Rat geben, der besser ist als "Laufen lernen, bevor Sie rennen".
Andrej Bauer
Um ehrlich zu sein: Ich bin Informatikstudent und arbeite an meiner Masterarbeit. Meine Aufgabe besteht im Wesentlichen darin, eine Denotationssemantik für den Lambda-Kalkül zu konstruieren (wie es Dana Scott Anfang der 70er Jahre getan hat). Meine Hauptquelle ist das Buch »Semantik von Programmiersprachen« von Rudolf Berghammer. Von dort habe ich die Definitionen. Leider wird in diesem Buch Kontinuität durch die Theorie der Fixpunkte motiviert. Meine Arbeit sollte nur das präsentieren, was wirklich benötigt wird, um die für einen Denot geeignete Domäne zu konstruieren. sem. des Lambda-Kalküls, also überspringe ich diesen Teil.
user3389669
[Fortsetzung] Meine Arbeit an der Konstruktion und den Beweisen ist abgeschlossen (es ist auch ein wichtiger Aspekt meiner Arbeit, die vorhandenen Beweise so zu erweitern, dass keine Lücken offen sind). Um meiner Arbeit den letzten Schliff zu geben, möchte ich jede Definition intuitiv so motivieren, dass sie von anderen jungen Informatikern leicht gelesen werden kann. Wie Sie sehen, fehlt mir jedoch die Intuition.
user3389669
3
Vielen Dank für die Erklärung. Das macht sehr viel Sinn. Erstens glaube ich nicht, dass Dana Scott CPOs verwendet hat. Er verwendete kontinuierliche Gitter, und ich empfehle seine Datentypen als Gitter . Das gibt Ihnen eine historische Perspektive - hüten Sie sich davor, falsche Geschichte zu erfinden! Ich werde meine Antwort ergänzen, um die Kontinuität bei CPOs zu motivieren.
Andrej Bauer