• Keine Ergebnisse gefunden

Theorembeweiserpraktikum Anwendungen in der Sprachtechnologie

N/A
N/A
Protected

Academic year: 2022

Aktie "Theorembeweiserpraktikum Anwendungen in der Sprachtechnologie"

Copied!
19
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

KIT

α A

λ β

LEHRSTUHL PROGRAMMIERPARADIGMEN

Theorembeweiserpraktikum

Anwendungen in der Sprachtechnologie

(2)

Teil XXXI

Koinduktion

(3)

Was ist Koinduktion?

KIT

Duales Prinzip zu Induktion Induktive Definition:

kleinsterFixpunkt, der die definierende Gleichung erfüllt.

Induktionsprinzip: Um eine Eigenschaft für alle Elemente zu zeigen, genügt es sie für eine beliebige Menge zu zeigen, die die

definierende Gleichung erfüllt. (Der kleinste Fixpunkt muss darin enthalten sein)

Koinduktive Definition:

größterFixpunkt, der die definierende Gleichung erfüllt.

Koinduktionsprinzip: Jede Menge, die die definierende Gleichung erfüllt, ist in der koinduktiven Definition enthalten.

(4)

Was ist Koinduktion?

Duales Prinzip zu Induktion Induktive Definition:

kleinsterFixpunkt, der die definierende Gleichung erfüllt.

Induktionsprinzip: Um eine Eigenschaft für alle Elemente zu zeigen, genügt es sie für eine beliebige Menge zu zeigen, die die

definierende Gleichung erfüllt. (Der kleinste Fixpunkt muss darin enthalten sein)

Koinduktive Definition:

größterFixpunkt, der die definierende Gleichung erfüllt.

Koinduktionsprinzip: Jede Menge, die die definierende Gleichung erfüllt, ist in der koinduktiven Definition enthalten.

(5)

Koinduktive Prädikate in Isabelle

KIT

Beispiel: Reflexiv transitive Hülle

inductive rtc :: "(’a’abool)’a’abool"

for r :: "(’a’abool)"

where refl: "rtc r x x"

| trans: "r x y =⇒ rtc r y z =⇒ rtc r x z"

(6)

Koinduktive Prädikate in Isabelle

Beispiel: Reflexiv transitive Hülle

inductive rtc :: "(’a’abool)’a’abool"

for r :: "(’a’abool)"

where refl: "rtc r x x"

| trans: "r x y =⇒ rtc r y z =⇒ rtc r x z"

a b

c d

(a)Graph r

a b

c d

(b)Inductive RTC r

aus cAndreas Lochbihler, DOI 10.5445/KSP/1000028867, KIT Scientific Publishing, Karlsruhe, 2012

(7)

Koinduktive Prädikate in Isabelle

KIT

Beispiel: Reflexiv transitive Hülle

coinductive rtc :: "(’a’abool)’a’abool"

for r :: "(’a’abool)"

where refl: "rtc r x x"

| trans: "r x y =⇒ rtc r y z =⇒ rtc r x z"

a b

c d

(a)Graph r

a b

c d

(b)Inductive RTC r

aus cAndreas Lochbihler, DOI 10.5445/KSP/1000028867, KIT Scientific Publishing, Karlsruhe, 2012

(8)

Koinduktive Prädikate in Isabelle

Beispiel: Reflexiv transitive Hülle

coinductive rtc :: "(’a’abool)’a’abool"

for r :: "(’a’abool)"

where refl: "rtc r x x"

| trans: "r x y =⇒ rtc r y z =⇒ rtc r x z"

a b

c d

(a)Graph r

a b

c d

(b)Inductive RTC r

a b

c d

(c)Coinductive RTC r

aus cAndreas Lochbihler, DOI 10.5445/KSP/1000028867, KIT Scientific Publishing, Karlsruhe, 2012

(9)

Koinduktive Beweise

KIT

Induktionsschema fürrtc:rtc.induct rtc r a b =⇒ (V x. P x x)

=⇒ (V x y z. r x y =⇒ rtc r y z =⇒ P y z =⇒ P x z)

=⇒ P a b

Koinduktionsschema fürrtc:rtc.coinduct X a b =⇒

(Va b. X a b =⇒

(x. a = xb = x)

(x y z. a = xb = zr x y(X y zrtc r y z))) =⇒ rtc r a b

Beweismethoden:coinduct/coinduction– analog zuinduct/induction

(10)

Koinduktive Beweise

Induktionsschema fürrtc:rtc.induct rtc r a b =⇒ (V x. P x x)

=⇒ (V x y z. r x y =⇒ rtc r y z =⇒ P y z =⇒ P x z)

=⇒ P a b

Koinduktionsschema fürrtc:rtc.coinduct X a b =⇒

(Va b. X a b =⇒

(x. a = xb = x)

(x y z. a = xb = zr x y(X y zrtc r y z))) =⇒ rtc r a b

Beweismethoden:coinduct/coinduction– analog zuinduct/induction

(11)

Koinduktive Datentypen und Funktionen

KIT

Beispiel: Lazy Listen

codatatype ’a llist = lnull: LNil | LCons (lhd: ’a) (ltl: "’a llist")

Auch hierduale Sichtweise: Elemente werden erzeugt, statt abgebaut.

Beispiel: Iterate

primcorec literate :: "(’a’a)’a’a llist"

where "literate f s = LCons s (literate f (f s))"

Mehr: siehe Sitzung.

(12)

Teil XXXII

Dokumentenerzeugung

(13)

Dokumentenerzeugung

KIT

Isabelle kann Theorien mit LATEX schön setzen.

Dazu muss man eineSitzungdefinieren. Am einfachsten geht das mit isabelle mkroot -d name.

Die DateiROOTführt alle verwendeten Theorien auf.

Die Dateidocument/root.texenthält den LATEX-Rahmen.

Man lässt Isabelle mit isabelle build -D .

die Theorien verarbeiten und die PDF-Dateien erzeugen.

(14)

LaTeX in Isabelle-Theorien

Normaler Text (einschließlich LATEX-Makros) kann mittels text hbla blai

eingefügt werden.

Kommentare (hbla blai) erscheinennichtim Dokument!

(15)

Strukturierung

KIT

Statt LATEX-Befehle wie\section,\subsectionetc. intext-Blöcke einzubauen kann man die entsprechenden Isabelle-Befehle

chapter(bei geeigneter\documentclass) section

subsection subsubsection verwenden.

Ähnlich wie in Markdown können Listen auch ohne LATEX-Befehl angegeben werden. Dazu werden spezielle Bullet-Points verwendet.

Diese kann man in jEdit mittels\itemfür ungeordnete und\enumfür geordnete Listen eingeben.

(16)

Anti-Quotations

Man kann Ausdrücke verschiedener Art von Isabelle in das Dokument einfügen lassen:

Nach

definition N :: nat where "N = 0"

theorem great_result: "N = N * P" unfolding N_def by simp wird aus

text h

After defining @{thm N_def} we were finally able to prove @{thm great_result}.

i

in der Dokumentausgabe

After definingN = 0we were finally able to proveN = N * ?P.

(17)

Weitere Anti-Quotations

KIT

Neben@{thm ...}sind noch nützlich:

@{theory ...}verweist auf einen (importierten) Theorie-Namen,

@{term ...}setzt einen Term,

@{term_type ...}ebenso, aber mit Typ,

@{typ ...}setzt einen Typ,

@{value ...}evaluiert einen Term und zeigt das Ergebnis,

@{text ...}setzt beliebigen Text im Isabelle-Stil.

Während@{thm ...}garantiert, dass nur bewiesenes gedruckt wird, überprüfen die anderen nur die Typisierung, und mit@{text ...}lässt sich alles ausgeben.

Beim Ausgeben von Lemmas ist oft@{thm great_result[no_vars]}

schöner als@{thm great_result}.

(18)

Reihenfolge der Dateien

Standardmäßig enthältdocument/root.texden Befehl\input{session}

undsession.tex(von Isabelle erstellt) enthält für jede Theoriefooeine Zeile\input{Example.tex}.

Man kann natürlich auch die Theorie-Dateien direkt in

document/root.texeinbinden, etwa um dazwischen noch Text wie Kapitelüberschriften oder Einleitungen zu setzen.

Auch will man vielleicht in der Einleitung schon auf alle Definitionen und Ergebnisse vorgreifen. Dazu erstellt man z.B. eine TheorieIntroduction und bindet diese indocument/root.texam Anfang ein.

Für Theorien, die inROOTmit der Optiondocument = falseversehen sind, werden nicht in das Dokument aufgenommen (die trotzdem erzeugte.tex-Datei ist leer).

(19)

Mehr Informationen

KIT

zu mehr Anti-Quotations siehe das Isabelle Referenz-Handbuch (isabelle doc isar-ref).

Für mehr LATEX-Spielereien wie z.B. die Ausgabe

P 0 ^nat. P nat

P (Suc nat) P nat

für

text h\begin{center}

@{thm[mode=Rule] nat.induct[no_vars]}

\end{center} i

sieheisabelle doc sugar.

Referenzen

ÄHNLICHE DOKUMENTE

Syntax: Regeln für korrekte Anordnung von Sprachkonstrukten In Programmiersprachen meist durch Grammatik, vor allem in BNF (Backus-Naur-Form) gegeben Angegeben im

Ein Theorembeweiser beweist Aussagen über formale Strukturen durch Anwendung von Regeln7. Typen und Datentypen (natürliche Zahlen, Listen, Paare,. ) Mengen,

Ein Theorembeweiser beweist Aussagen ¨uber formale Strukturen durch Anwendung von Regeln.. Typen und Datentypen (nat ¨urliche Zahlen, Listen, Paare,. ) Mengen,

oftmals Fallunterscheidung nicht genug, brauchen Induktionshypothese f ¨ur Pr ¨adikate in der Pr ¨amisse einer Regel. daf ¨ur Induktionsregel Pr¨ adikatname.induct Beispiel

Ein Theorembeweiser beweist Aussagen über formale Strukturen durch Anwendung von Regeln.. Typen und Datentypen (natürliche Zahlen, Listen, Paare,. ) Mengen,

Syntax: Regeln für korrekte Anordnung von Sprachkonstrukten In Programmiersprachen meist durch Grammatik, vor allem in BNF (Backus-Naur-Form) gegeben Angegeben im

Das sollte man bei bewiesenen Lemmas eigentlich nicht brauchen (die kann man direkt „richtig“ formulieren), aber in Kombination mit OF oder of ist es oft der beste Weg die Regel

0 SS 2016 Joachim Breitner, Denis Lohner - Theorembeweiserpraktikum LEHRSTUHL PROGRAMMIERPARADIGMEN LEHRSTUHL