Lamm α

Die neueste Bewertung von REM -α und aufregenden Frucht/angemessen | Rizero Collaboration 2. Monst Quiz! Was kann ich lösen? Super Beast God Festival Gacha Simulator Stürmer Einladung Einladung Rekrutierung Bulletin Board Bulletin Board | 9/29 Aktualisiert Next Collaboration Prognose Ranking 2023 Fortune empfohlene Rangliste Neueste Version

Nominal Isabelle und Lambda -Berechnung Teil 1

Die Lambda -Berechnung ist eine Sprache, die als Modell der Berechnung erstellt wurde, und basiert auf zwei Vorgängen: “Erstellen von Funktionen und Aufrufen der erstellten Funktionen (Anwenden von Funktionen)”. “Berechnung” hier ist die Berechnung, die sich in einem Taschenrechner am wahrscheinlichsten vorstellt, z. B. die Rückgabe der Nummer, wenn Sie die Zahl angeben. Die Lambda -Berechnung wird durch Operationen realisiert, die diese “Berechnung” in einen anderen Abschnitt umwandeln. Dies wird berechnet, dass, wenn es einen Abschnitt von 1+2 gibt, es in 3 umwandelt oder wenn es einen Abschnitt von F (x) = x+2 gibt, wandelt es F (10) auf 12. Es gibt nichts Schwieriges, weil es heißt nur

Übrigens, der Abschnitt der Lambda -Berechnung (obwohl er noch nicht erklärt wurde, was die Lambda -Berechnung noch erklärt hat), betrifft der Ersatz von Variablen ebenso. Insbesondere werden f (x) = x und f (y) = y nicht unterschieden, aber dieses Äquivalent wird als α -Äquivalent bezeichnet

Der mühsamste des Lambda -Berechnungssatzes ist der Umgang mit α -Äquivalent oder im Format mit der orthodoxen Zertifizierung. Es ist nicht sehr gut, Operationen wie “Identifizierung” oder “Division in denselben Wert zu teilen”. Dies ist hauptsächlich nicht möglich zu bestimmen, ob es im Allgemeinen durch Berechnung 1 identifiziert wird, und die Berechnung der gleichen tekischen Begriffe hängt häufig von der Zusammensetzung der Verformung in diesen Abschnitten ab (obwohl Menschen nicht interessiert). Ich persönlich denke

Nominal Isabelle

Nominal Isabellle ist eine bequeme Bibliothek (nicht nur Lambda -Begriffe, sondern auch die Probanden wie die Lambda -Berechnung sind definitiv die leistungsstärkste), um den Datentyp zu verarbeiten, der Binder enthält. Binder ist [x]. Es ist wie m geformt und unterscheidet die Änderung des variablen Namens dieser Bindungsvariablen x nicht

Nominal Isabellle beginnt mit dem Austausch dieser Variablen, und der Betrieb von “Ersetzen der Variablen x bis y” wird als Betrieb von “Ersetzen (x, y)” angesehen. Streng genommen wird das Folgende genannt: Ersatz (V × V) wird ersetzt, wenn eine Gruppe V, die aus unendlichen Variablen besteht, gegeben ist. Zu diesem Zeitpunkt wird die Wirkung der Substitution als ∙ ((x, y) :: xs) ∙ m: = xs ∙ (der Abschnitt, auf dem die in m erscheinende freie Variable X auf y und und y und y und y und y und y und y) sein Y bis x); [] ∙ 。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。

Der Teil der Umschreibung der oben genannten Variablen hängt davon ab, wie der Datentyp, zu dem der Abschnitt M gehört, definiert ist, aber der nominelle Isabelle, der dies in diesem Bereich tut, ist ein gutes Gefühl, und der von nominelle Isabelle bereitgestellte Befehl

Darüber hinaus wird im Folgenden gezeigt, dass es im Folgenden angezeigt wird, aber in einer bestimmten Variablen x nicht (frei) erscheint (wenn mehrere Klippen vorhanden sind)

(Abgesehen davon sind diese Art von Bindemittelvariablen in der Sprache natürlich Der Satz der Lambda -Berechnung.)

Nominal_datatype

Am Anfang

Nominal Isabellle sollte in die HOL -Bibliotheksgruppe aufgenommen werden und kann mit Importen “~~/src/Hol/nominal/nominal” importiert werden. (Sie repräsentiert den Weg, auf dem Isabelle in ~~ installiert ist.) Der Code der Bibliothek selbst ist hier, daher kann es eine gute Idee sein, das Beispiel hier zu sehen. (Im Beispiel gibt es das gleiche CR wie dieses Ziel, aber (obwohl der grobe Fluss der gleiche ist) habe ich das nicht gesehen, also denke ich, dass es sich von meinem Beweis unterscheidet)

Nominal_datatype

 Atom_decl var nominal_datatype lambda = var var | App lambda lambda (Infixl "$" 120) | ABS "var» lambda "._ "[100.100] 100)

Atom_decl dient zur Deklarierung eines Atomtyps (nichts mit nominalem Isabelle)

Nominalinal_Datatype ist wie ein Datentyp. Wenn Sie jedoch einen Bindemittel angeben, werden alle oben beschriebenen Substituenten als eine große Anzahl von Substituenten definiert. Geben Sie den Bindemittel wie «var» an

Strong_induktion

Lambda.Indukte und Lambda.Vergleichen wir strong_induct

 Thm Lambda.Einleitung (⋀ var). ?P (var var) ⟹ (⋀lambda1 lambda2. ?P lambda1 ⟹ ?P lambda2 ⟹ ?P (Lambda1 $ Lambda2)) ⟹ (⋀ var lambda. ?P lambda ⟹ ?P (LAM [var].Lambda) ⟹ ?P ?Lambda thm lambda.Strong_induct (⋀ var z). ?P z (var var) ⟹ (⋀ lambda1 lambda2 z. (⋀z. ?P z lambda1) ⟹ (⋀z. ?P z lambda2) ⟹ ?P z (lambda1 $ lambda2)) ⟹ (⋀var lambda z. Var ♯ z ⟹ (⋀z. ?P z lambda) ⟹ ?P z (Lam [var].Lambda) ⟹ ?P ?z ?Lambda

Zusätzliches Argument z wurde dem Strong_indukt hinzugefügt, und im lambda abstrakten Teil wurde Var ♯ z zur Annahme der Induktionsmethode neu hinzugefügt. Dieser Teil ist genau ein Strong_indukt, der sagt, dass “Sie beim Drehen der Induktionsmethode etwas erhalten, das nicht als Bindemittelvariable angegeben wird”

Genauer gesagt durch Identifizierung “, wenn Lam [x].Wenn das x von m in z erscheint, nehmen Sie eine frische Variable x ‘und LAM [x] aufgrund des gleichen Wertes ein.M = lam [x ‘]. [(x, x ‘)] Weil es ∙ m ist, ersetzt das m im Satz von Anfang an [(x, x’)] ∙ m und x bis x ‘

Ersatz

 Nominalinal_primrec Subst ("_ :: = _]" [100.100.100] 120) wobei "(var x) [y :: = s] = (wenn x = y dann s an sonst var x) | (M1 $ m2" (M1 $ M2) [y :: = s] = (m1 [y :: = s]) $ (m2 [y :: = s]) "|" x♯ (y, s) ⟹ (lam [x]. M) [y :: = s] = lam [x]. (M [y :: = s]) "anwenden (finnite_guess+, auto) anwenden (SIMP add: ABS_FRESH) anwenden (frisch_guess+) erledigt

Die primitive rekursive Funktion für nominal_datatype wird durch nominal_primrec definiert. Es ist fast dasselbe wie Primrec, aber Nominalinal_Primrec muss angeben, dass die in der Definition erscheinen mehrere Eigenschaften erscheinen. Wenn Sie Finite_Gues und Fresh_Gues gut verwenden, können Sie es oft verwalten

Lemmas für Ersatz?

 Lemma sub_gFressh ': Angenommen "x ♯ t" "x ≠ y" zeigt "x ♯ t [y :: = s]" unter Verwendung von Assms Apple (nominal_induct t vermeiden: x y's rull e: lambda.Strong_induct) anwenden (SIMP -Add: Assms (2)) anwenden SIMP anwenden (metis ABS_FRESH (1) frisch_prod lambda.Frisch (3) Simps (3)) erledigt

Erstens, wenn X in T und S nicht erscheint und sich von y unterscheidet, ist X ein Thema, dass X frei in t [y :: = s] erscheinen kann. Um dies zu zeigen, erscheint es übrigens gut, eine Induktionsmethode für T durchzuführen, aber jetzt ist T nominal_datatatype, sodass die Induktionsmethode nicht so verwendet werden kann. Für Befehle, die die Induktionsmethode für nominal_datatype ausführen, Nominal_indukt Es gibt

Nominalinal_indukt wird nach Regel (Lambda) verwendet.Strong_induct muss die Induktion von nominal_datatype automatisch angeben). Bei Verwendung eines Strong_indukters wird die Induktionsmethode in dem Abschnitt umgedreht, der durch das Attribut mit dem Namen vermeidet, die die Verwendung einer neuen Variablen vermeidet

Die Induktionsmethode wird gedreht, indem die Begriffe zur Vermeidung als z des var ♯ z, der am obigen Strong_indukt zu sehen ist, angegeben wird. Mit anderen Worten, vermeiden: Z und T = Lam [x].In Form von T ‘können Sie die Annahme hinzufügen, dass x Z. frisch ist

 lemma sub_fresh: "x ♯ s ⟹ x ♯ t [x :: = s]" anwenden (nominal_induct t vermeiden: x s regel: lambda.Strong_induct) anwenden (auto simp hinzufügen: frisch_atm abs_fresh) erledigte lemma subst_gfresh: fixes x y :: var nimmt "x ♯ t" "x anzeigt" x ♯ t [y :: = s] "anwenden (Fälle" x = y ") Verwenden von Assmen (2) Subst_FressH BLAST anwenden Sie mit Asssmen (1) Assmen (2) SOB_GFRESH 'AUTO DEMMA NO_SUBF: "X ♯ T ⟹ T [x :: = s] = t" anwenden (nominal_induct t vermeiden: x s Regel: Lambda.Strong_induct) anwenden (simp add: frisch_atm) anwenden simp anwenden (simp add: abs_Fressh (1) frisch_atm) erledigter lemma -Substitution: Angenommen "x ≠ y" l "zeigt" m [x :: = n] [y:: = l ] = m [y :: = l] [x :: = n [y :: = l]] "Verwenden von Assmen (nominal_induct m vermeiden: xy n l Regel: lambda: lambda.strong_induct) anwenden (SIMP add: no_subst) anwenden simp anwenden (SIMP add: frisch_atm subst_gfresh ') erledigt

Alle von ihnen sind grundlegende Themen, aber die letzte Ersatz -Lemma ist relativ wichtig. Beachten Sie, dass die Aussage selbst berühmt ist, aber es wird angenommen, dass x und y unterschiedlich sind und X für L. frei ist

Zusammenfassung

Wenn Sie die nominelle Isabelle erklären und das Thema zeigen, wird es lang sein, also teilen Sie es hier. Das nächste Mal werden wir verschiedene Dinge wie Beta -Reduktion beweisen

[MONST] Lamb αs neueste Bewertung und aufregende Früchte/angemessen | Rizero Collaboration 2

Die neueste Bewertung von REM -α und aufregenden Früchten/angemessen | Rizero Collaboration 2Die neueste Bewertung von REM -α und aufregenden Früchten/angemessen | Rizero Collaboration 2 Monst Quiz! Was kann ich lösen?Monst Quiz! Was kann ich lösen? Super Beast God Festival Gacha SimulatorSuper Beast God Festival Gacha Simulator Stürmer Einladungsrekrutierung Bulletin BoardStürmer Einladungsrekrutierung Bulletin Board Stärkste Charakter -Ranking | 9/29 UpdateStärkste Charakter -Ranking | 9/29 Update Nächste Zusammenarbeit Prognose Ranking 2023 | Wann werden Sie am nächsten halten?Nächste Zusammenarbeit Prognose Ranking 2023 | Wann werden Sie am nächsten halten? Fortune empfohlene Rangliste Neueste VersionFortune empfohlene Rangliste Neueste Version

Monst Quiz! Was kann ich lösen?Monst Quiz! Was kann ich lösen? Super Beast God Festival Gacha SimulatorSuper Beast God Festival Gacha Simulator Stürmer Einladungsrekrutierung Bulletin BoardStürmer Einladungsrekrutierung Bulletin Board Stärkste Charakter -Ranking | 9/29 UpdateStärkste Charakter -Ranking | 9/29 Update Nächste Zusammenarbeit Prognose Ranking 2023 | Wann werden Sie am nächsten halten?Nächste Zusammenarbeit Prognose Ranking 2023 | Wann werden Sie am nächsten halten? Fortune empfohlene Rangliste Neueste VersionFortune empfohlene Rangliste Neueste Version Zeichenranking pro Attribut begrenzt Gacha | Welches Attribut soll ich zeichnen?Zeichenranking pro Attribut begrenzt Gacha | Welches Attribut soll ich zeichnen? Mehr sehen