Ich habe von (struktureller) Induktion gehört. Es erlaubt Ihnen, endliche Strukturen aus kleineren Strukturen aufzubauen, und es gibt Ihnen Beweise für die Überlegung solcher Strukturen. Die Idee ist klar genug.
Aber was ist mit der Coinduktion? Wie funktioniert es? Wie kann man etwas aussagekräftiges über eine unendliche Struktur sagen?
Es gibt (mindestens) zwei Aspekte, die angesprochen werden müssen, nämlich die Koinduktion als Methode zur Definition von Dingen und als Beweisverfahren.
Welche Beziehung besteht zwischen Coinduktion und Bisimulation, wenn man die Coinduktion als Beweismethode betrachtet?
terminology
logic
proof-techniques
formal-methods
coinduction
Dave Clarke
quelle
quelle
Antworten:
Erstens, um eine mögliche kognitive Dissonanz zu beseitigen: Das Denken über unendliche Strukturen ist kein Problem, wir tun es die ganze Zeit. Solange die Struktur endlich beschreibbar ist, ist das kein Problem. Hier sind einige gebräuchliche Arten von unendlichen Strukturen:
Koinduktivität als größter Fixpunkt
Wo induktive Definitionen eine Struktur aus elementaren Bausteinen bilden, formen koin- duktive Definitionen Strukturen, aus denen sie dekonstruiert werden können. Der Listentyp, dessen Elemente sich in einer Menge befinden,
A
ist beispielsweise in Coq wie folgt definiert:Informell ist der∀xy,nil≠consxy
list
Typ der kleinste Typ, der alle aus den Konstruktorennil
und gebildeten Werte enthältcons
, mit dem Axiom . Umgekehrt können wir den größten Typ definieren, der alle Werte enthält, die aus diesen Konstruktoren erstellt wurden, wobei das Unterscheidungsaxiom beibehalten wird:list
ist isomorph zu einer Teilmenge voncolist
. Darüber hinauscolist
enthält unendliche Listen: Listen mitcocons
aufcocons
.flipflop
ist die unendliche (zirkuläre Liste) ; ist die unendliche Liste natürlicher Zahlen .from 0
Eine rekursive Definition ist wohlgeformt, wenn das Ergebnis aus kleineren Blöcken besteht: Rekursive Aufrufe müssen bei kleineren Eingaben funktionieren. Eine kernkursive Definition ist wohlgeformt, wenn das Ergebnis größere Objekte erzeugt. Induktion befasst sich mit Konstruktoren, Koinduktion befasst sich mit Destruktoren. Beachten Sie, wie sich die Dualität nicht nur von kleiner zu größer ändert, sondern auch von Eingängen zu Ausgängen. Beispielsweise ist der Grund, warum die obigen Definitionen
flipflop
undfrom
wohlgeformt sind, dass der kerncursive Aufrufcocons
in beiden Fällen durch einen Aufruf an den Konstruktor geschützt wird.Wo Aussagen über induktive Objekte induktive Beweise haben, haben Aussagen über koinduktive Objekte koinduktive Beweise. Definieren wir beispielsweise das unendliche Prädikat für Colists. intuitiv sind es die unendlichen Kolisten, die nicht enden
conil
.Um zu beweisen, dass Kolisten der Form
from n
unendlich sind, können wir durch Coinduktion argumentieren.from n
ist gleichcocons n (from (1 + n))
. Dies zeigt, dassfrom n
größer alsfrom (1 + n)
, was nach der Coinduktionshypothesefrom n
unendlich ist , also unendlich ist.Bisimilarität, eine coinduktive Eigenschaft
Die Coinduktion als Beweismethode gilt auch für Gegenstände im Haushalt. Intuitiv ausgedrückt basieren induktive Beweise über ein Objekt darauf, wie das Objekt aufgebaut ist. Coinductive Proofs basieren darauf, wie das Objekt zerlegt werden kann.
Beim Studium deterministischer Systeme ist es üblich, Äquivalenz durch induktive Regeln zu definieren: Zwei Systeme sind äquivalent, wenn Sie durch eine Reihe von Transformationen von einem zum anderen gelangen können. Solche Definitionen erfassen in der Regel nicht, auf welche Weise nicht deterministische Systeme trotz unterschiedlicher interner Struktur dasselbe (beobachtbare) Verhalten aufweisen können. (Coinduction ist auch nützlich, um nicht terminierende Systeme zu beschreiben, auch wenn sie deterministisch sind, aber darauf werde ich mich hier nicht konzentrieren.)
Nichtdeterministische Systeme wie gleichzeitige Systeme werden häufig durch markierte Übergangssysteme modelliert . Ein LTS ist ein gerichteter Graph, in dem die Kanten beschriftet sind. Jede Kante repräsentiert einen möglichen Übergang des Systems. Eine Spur eines LTS ist die Folge von Kantenbeschriftungen über einem Pfad im Diagramm.
Zwei LTS können sich identisch verhalten, indem sie die gleichen möglichen Spuren haben, auch wenn ihre interne Struktur unterschiedlich ist. Der Graphisomorphismus ist zu stark, um seine Äquivalenz zu definieren. Stattdessen wird eine LTS soll simulieren andere LTS , wenn jeder Übergang des zweiten LTS einen entsprechenden Übergang in dem ersten zugibt. Formal sei die disjunkte Vereinigung der Zustände der beiden LTS, die (gemeinsame) Menge von Bezeichnungen und die Übergangsrelation. Die Beziehung ist eine Simulation, wennA B S L → R⊆S×S
Es gibt möglicherweise viele Bisimulationen in einem LTS. Unterschiedliche Bisimulationen können unterschiedliche Zustände identifizieren. Bei zwei Bisimulationen und ist die durch Vereinigung der Beziehungsgraphen gegebene Beziehung selbst eine Bisimulation, da verwandte Zustände verwandte Zustände für beide Beziehungen hervorrufen. (Dies gilt auch für unendliche Vereinigungen. Die leere Beziehung ist eine uninteressante Bisimulation, ebenso wie die Identitätsbeziehung.) Insbesondere ist die Vereinigung aller Bisimulationen selbst eine Bisimulation, die als Bisimilarität bezeichnet wird. Bisimilarität ist die gröbste Art, ein System zu beobachten, das nicht zwischen verschiedenen Zuständen unterscheidet.R1 R2 R1∪R2
Bisimilarität ist eine coinduktive Eigenschaft. Es kann als der größte Fixpunkt eines Operators definiert werden: Es ist die größte Beziehung, die, wenn sie erweitert wird, um äquivalente Zustände zu identifizieren, dieselbe bleibt.
Verweise
Coq und der Kalkül von induktiven Konstruktionen
Markierte Übergangssysteme und Bisimulationen
Davide Sangiorgi. Der Pi-Kalkül: Eine Theorie mobiler Prozesse . Cambridge University Press, 2003. [ Amazon ]
Ein Kapitel in Certified Programming with Dependent Types von A. Chlipala
quelle
Betrachten wir die folgende induktive Definition:
Was ist ? Es ist klar, die Menge der Zeichenfolgen ohne zwei aufeinanderfolgende , dhT b
Richtig? Wir brauchen dafür den harmlosen Satz "und ist die kleinste Menge, die diese Bedingungen erfüllt". Richtig, da sonst auch funktionieren würde.T T={a,b}∗
Aber es steckt noch mehr dahinter. Schreiben Sie die obige Definition als (monotone) Funktion :f:2Σ∞→2Σ∞
Jetzt ist der kleinste Fixpunkt von . Da monoton ist und ein vollständiges Gitter ist , sagt uns das Knaster-Tarski-Theorem , dass solch ein kleinster Fixpunkt existiert und eine richtige Sprache ist. Da dies mit jeder vernünftigen induktiven Definition funktioniert, sprechen wir normalerweise nicht darüber. Es passt einfach zu unserer Intuition: Wir beginnen mit und wenden die Regeln Schritt für Schritt an. im Limit erhalten wir .T f f (2Σ∞,⊆) {ε} T
Jetzt drehen wir die Dinge um. Anstatt zu sagen "wenn enthalten ist, ist es auch ", sagen wir "wenn enthalten ist, muss es auch ". Wir können den Anker nicht drehen, also geht er weg. Das läßt uns mit einem Problem: wir haben zu ergreifen , um die Lage sein , lange willkürlich entfernt Präfixe von jedem Wort in und bleiben in ! Dies ist mit endlichen Worten nicht möglich; gut, dass ich mich oben in ! Wir erhalten die Menge der unendlichen Wörter ohne Faktor (Teilzeichenfolge) , dh .a w a w w T ' T ' Σ ∞ b b T ' = L ( ( b a ∣ a ) ω )w aw aw w T′ T′ Σ∞ bb T′=L((ba∣a)ω)
In Bezug auf ist der größte Fixpunkt². Das ist eigentlich sehr intuitiv: Wir können nicht hoffen, von unten zu treffen , dh induktiv, indem wir von und Dinge hinzufügen , die die Regeln erfüllen, also gehen wir von oben aus , dh koinduktiv, indem wir beginnen aus entfernen und Dinge, die nicht den Regeln entsprechen.T ' T ' { ε } Σ ∞f T′ T′ {ε} Σ∞
Notation:
¹ Du darfst keine Dinge wie tun ; die entsprechende Funktion wäre nicht monoton. ² Wir müssen irgendwie unter den Teppich kehren . { ε }w∈T⇒aw∉T
{ε}
quelle
We can not turn the anchor around, so it goes away
.