• Keine Ergebnisse gefunden

Rechner¨ubung zu Theorembeweiser und ihre Anwendungen

N/A
N/A
Protected

Academic year: 2022

Aktie "Rechner¨ubung zu Theorembeweiser und ihre Anwendungen"

Copied!
20
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Rechner¨ ubung zu Theorembeweiser und ihre Anwendungen

Prof. Dr.-Ing. Gregor Snelting Dipl.-Inf. Univ. Daniel Wasserrab

Lehrstuhl Programmierparadigmen IPD Snelting

Universit¨at Karlsruhe (TH)

(2)

Teil II

Quantoren in Isabelle/HOL

(3)

Quantoren in Isabelle/HOL

Die ¨ublichen zwei Quantoren der Logik:

Existenzquantor: (geschrieben \<exists>), Syntax: x. P Allquantor: (geschrieben \<forall>), Syntax: x. P

G¨ultigkeitsbereich der gebundenen Variablen: bis zum n¨achsten ; bzw. =⇒ Beispiele:

x. P x = Q x: x in Konklusion nicht gebunden durch Allquantor P y =⇒ ∃y. P y: y in Pr¨amisse nicht gebunden durch Existenzquantor [[∀x. P x; x. Q x]] = R:

Zwei verschiedene x in den Annahmen

gleichbedeutend mit[[∀y. P y; z. Q z]] = R (gebundene Namen sind Schall und Rauch)

x. P x −→ Q x: gleichesx f¨ur P und Q

(4)

Quantoren in Isabelle/HOL

Die ¨ublichen zwei Quantoren der Logik:

Existenzquantor: (geschrieben \<exists>), Syntax: x. P Allquantor: (geschrieben \<forall>), Syntax: x. P

G¨ultigkeitsbereich der gebundenen Variablen: bis zum n¨achsten ; bzw. =⇒ Beispiele:

x. P x = Q x: x in Konklusion nicht gebunden durch Allquantor P y =⇒ ∃y. P y: y in Pr¨amisse nicht gebunden durch Existenzquantor [[∀x. P x; x. Q x]] = R:

Zwei verschiedene x in den Annahmen

gleichbedeutend mit[[∀y. P y; z. Q z]] = R (gebundene Namen sind Schall und Rauch)

x. P x −→ Q x: gleichesx f¨ur P und Q

(5)

Quantoren in Isabelle/HOL

Die ¨ublichen zwei Quantoren der Logik:

Existenzquantor: (geschrieben \<exists>), Syntax: x. P Allquantor: (geschrieben \<forall>), Syntax: x. P

G¨ultigkeitsbereich der gebundenen Variablen: bis zum n¨achsten ; bzw. =⇒ Beispiele:

x. P x = Q x: x in Konklusion nicht gebunden durch Allquantor P y =⇒ ∃y. P y: y in Pr¨amisse nicht gebunden durch Existenzquantor [[∀x. P x; x. Q x]] = R:

Zwei verschiedene x in den Annahmen

gleichbedeutend mit[[∀y. P y; z. Q z]] = R (gebundene Namen sind Schall und Rauch)

x. P x −→ Q x: gleichesx f¨ur P und Q

(6)

Quantoren in Isabelle/HOL

Die ¨ublichen zwei Quantoren der Logik:

Existenzquantor: (geschrieben \<exists>), Syntax: x. P Allquantor: (geschrieben \<forall>), Syntax: x. P

G¨ultigkeitsbereich der gebundenen Variablen: bis zum n¨achsten ; bzw. =⇒ Beispiele:

x. P x = Q x: x in Konklusion nicht gebunden durch Allquantor P y =⇒ ∃y. P y: y in Pr¨amisse nicht gebunden durch Existenzquantor [[∀x. P x; x. Q x]] = R:

Zwei verschiedene x in den Annahmen

gleichbedeutend mit[[∀y. P y; z. Q z]] = R (gebundene Namen sind Schall und Rauch)

x. P x −→ Q x: gleichesx f¨ur P und Q

(7)

Quantoren in Isabelle/HOL

Die ¨ublichen zwei Quantoren der Logik:

Existenzquantor: (geschrieben \<exists>), Syntax: x. P Allquantor: (geschrieben \<forall>), Syntax: x. P

G¨ultigkeitsbereich der gebundenen Variablen: bis zum n¨achsten ; bzw. =⇒ Beispiele:

x. P x = Q x: x in Konklusion nicht gebunden durch Allquantor P y =⇒ ∃y. P y: y in Pr¨amisse nicht gebunden durch Existenzquantor [[∀x. P x; x. Q x]] = R:

Zwei verschiedene x in den Annahmen

gleichbedeutend mit[[∀y. P y; z. Q z]] = R (gebundene Namen sind Schall und Rauch)

x. P x −→ Q x: gleichesx f¨ur P und Q

(8)

Quantoren in Isabelle/HOL

Die ¨ublichen zwei Quantoren der Logik:

Existenzquantor: (geschrieben \<exists>), Syntax: x. P Allquantor: (geschrieben \<forall>), Syntax: x. P

G¨ultigkeitsbereich der gebundenen Variablen: bis zum n¨achsten ; bzw. =⇒ Beispiele:

x. P x = Q x: x in Konklusion nicht gebunden durch Allquantor P y =⇒ ∃y. P y: y in Pr¨amisse nicht gebunden durch Existenzquantor [[∀x. P x; x. Q x]] = R:

Zwei verschiedene x in den Annahmen

gleichbedeutend mit[[∀y. P y; z. Q z]] = R (gebundene Namen sind Schall und Rauch)

x. P x −→ Q x: gleichesx f¨ur P und Q

(9)

Wie sagt man es Isabelle...?

Argumentation mit Quantoren erfordert Aussagen ¨uber beliebige Werte Nur: wie weiss Isabelle, das ein Wert beliebigist?

L¨osung: Meta-Logik!

x in einer Aussage beliebig: brauchen Quantor daf¨ur Syntax in Isabelle: Vx. [[. . .]] = . . .

V heisst Meta-Allquantor, Variablen dahinterParameter G¨ultigkeitsbereich der Parameter: ganzes Subgoal

Beispiel: Vx y. [[∀y. P y −→ Q z y; Q x y]] =⇒ ∃x. Q x y entspricht Vx y. [[∀y1. P y1 −→ Q z y1; Q x y]] =⇒ ∃x1. Q x1 y Auch =ist Teil der Meta-Logik, entspricht Meta-Implikation Trennt Annahmen und Konklusion

und−→ entsprechen nichtV und =, die ersten beiden nur in HOL!

(10)

Wie sagt man es Isabelle...?

Argumentation mit Quantoren erfordert Aussagen ¨uber beliebige Werte Nur: wie weiss Isabelle, das ein Wert beliebigist?

L¨osung: Meta-Logik!

x in einer Aussage beliebig: brauchen Quantor daf¨ur Syntax in Isabelle: Vx. [[. . .]] = . . .

V heisst Meta-Allquantor, Variablen dahinterParameter G¨ultigkeitsbereich der Parameter: ganzes Subgoal

Beispiel: Vx y. [[∀y. P y −→ Q z y; Q x y]] =⇒ ∃x. Q x y entspricht Vx y. [[∀y1. P y1 −→ Q z y1; Q x y]] =⇒ ∃x1. Q x1 y

Auch =ist Teil der Meta-Logik, entspricht Meta-Implikation Trennt Annahmen und Konklusion

und−→ entsprechen nichtV und =, die ersten beiden nur in HOL!

(11)

Wie sagt man es Isabelle...?

Argumentation mit Quantoren erfordert Aussagen ¨uber beliebige Werte Nur: wie weiss Isabelle, das ein Wert beliebigist?

L¨osung: Meta-Logik!

x in einer Aussage beliebig: brauchen Quantor daf¨ur Syntax in Isabelle: Vx. [[. . .]] = . . .

V heisst Meta-Allquantor, Variablen dahinterParameter G¨ultigkeitsbereich der Parameter: ganzes Subgoal

Beispiel: Vx y. [[∀y. P y −→ Q z y; Q x y]] =⇒ ∃x. Q x y entspricht Vx y. [[∀y1. P y1 −→ Q z y1; Q x y]] =⇒ ∃x1. Q x1 y Auch =ist Teil der Meta-Logik, entspricht Meta-Implikation Trennt Annahmen und Konklusion

und−→ entsprechen nichtV und =, die ersten beiden nur in HOL!

(12)

Wie sagt man es Isabelle...?

Argumentation mit Quantoren erfordert Aussagen ¨uber beliebige Werte Nur: wie weiss Isabelle, das ein Wert beliebigist?

L¨osung: Meta-Logik!

x in einer Aussage beliebig: brauchen Quantor daf¨ur Syntax in Isabelle: Vx. [[. . .]] = . . .

V heisst Meta-Allquantor, Variablen dahinterParameter G¨ultigkeitsbereich der Parameter: ganzes Subgoal

Beispiel: Vx y. [[∀y. P y −→ Q z y; Q x y]] =⇒ ∃x. Q x y entspricht Vx y. [[∀y1. P y1 −→ Q z y1; Q x y]] =⇒ ∃x1. Q x1 y Auch =ist Teil der Meta-Logik, entspricht Meta-Implikation Trennt Annahmen und Konklusion

und−→ entsprechen nichtV und =, die ersten beiden nur in HOL!

(13)

Regeln

Jeder Quantor Introduktions- und Eliminationsregel:

allI: (V

x. P x) =⇒ ∀x. P x

Eine Aussage gilt f¨ur beliebigex (Meta-Ebene), also gilt sie auch f¨ur alle (HOL-Ebene)

allE: [[∀x. P x; P ?x = R]] = R

Eine Aussage gilt f¨ur alle x, also folgt die Konklusion auch,

wenn diese Aussage f¨ur irgendeine (selbst w¨ahlbare) Variablex gilt Vorsicht: x nach Anwendung der Regel beliebige Variable (?x)!

M¨oglichst gleich spezifizieren ducherule_tac

(14)

Regeln

Jeder Quantor Introduktions- und Eliminationsregel:

allI: (V

x. P x) =⇒ ∀x. P x

Eine Aussage gilt f¨ur beliebigex (Meta-Ebene), also gilt sie auch f¨ur alle (HOL-Ebene)

allE: [[∀x. P x; P ?x = R]] = R

Eine Aussage gilt f¨ur alle x, also folgt die Konklusion auch,

wenn diese Aussage f¨ur irgendeine (selbst w¨ahlbare) Variablex gilt Vorsicht: x nach Anwendung der Regel beliebige Variable (?x)!

M¨oglichst gleich spezifizieren ducherule_tac

(15)

Regeln

Jeder Quantor Introduktions- und Eliminationsregel:

allI: (V

x. P x) =⇒ ∀x. P x

Eine Aussage gilt f¨ur beliebigex (Meta-Ebene), also gilt sie auch f¨ur alle (HOL-Ebene)

allE: [[∀x. P x; P ?x = R]] = R

Eine Aussage gilt f¨ur alle x, also folgt die Konklusion auch,

wenn diese Aussage f¨ur irgendeine (selbst w¨ahlbare) Variablex gilt Vorsicht: x nach Anwendung der Regel beliebige Variable (?x)!

M¨oglichst gleich spezifizieren ducherule_tac

(16)

Regeln

exI: P ?x =⇒ ∃x. P x

Eine Aussage gilt f¨ur eine Variablex, also gibt es ein x, wof¨ur sie gilt Vorsicht: x nach Anwendung der Regel beliebige Variable (?x)!

M¨oglichst gleich spezifizieren duchrule_tac exE: [[∃x. P x; V

x. P x = Q]] = Q

Eine Aussage gilt f¨ur ein x, also folgt die Konklusion auch,

wenn diese Aussage f¨ur eine beliebige (vorgegebene!) Variable gilt.

(17)

Regeln

exI: P ?x =⇒ ∃x. P x

Eine Aussage gilt f¨ur eine Variablex, also gibt es ein x, wof¨ur sie gilt Vorsicht: x nach Anwendung der Regel beliebige Variable (?x)!

M¨oglichst gleich spezifizieren duchrule_tac exE: [[∃x. P x; V

x. P x = Q]] = Q

Eine Aussage gilt f¨ur ein x, also folgt die Konklusion auch,

wenn diese Aussage f¨ur eine beliebige (vorgegebene!) Variable gilt.

(18)

Variablen festlegen bei Regelanwendung

Den RegelnallE und exIgemeinsam:

nach Anwendung der entsprechenden Methodik (also erulebzw. rule) unspezifizierte Variablen (?x) in Subgoal

meist nicht gewollt, da schlecht Aussagen dar¨uber m¨oglich Besser: entsprechende Variable gleich festlegen

Methodik:rule_tac v1 = t1 and . . . and vk = tk in R,

?v1,. . .,?vkfreie Variable in der anzuwendenden Regel R

(nicht im aktuellen Subgoal!) analog: erule_tac

also m¨oglichst immer apply(rule_tac x=gewollte Variable in exI) bzw. apply(erule_tac x=gewollte Variable in allE)

(19)

Variablen festlegen bei Regelanwendung

Den RegelnallE und exIgemeinsam:

nach Anwendung der entsprechenden Methodik (also erulebzw. rule) unspezifizierte Variablen (?x) in Subgoal

meist nicht gewollt, da schlecht Aussagen dar¨uber m¨oglich Besser: entsprechende Variable gleich festlegen

Methodik:rule_tac v1 = t1 and . . . and vk = tk in R,

?v1,. . .,?vkfreie Variable in der anzuwendenden Regel R

(nicht im aktuellen Subgoal!) analog: erule_tac

also m¨oglichst immer apply(rule_tac x=gewollte Variable in exI) bzw. apply(erule_tac x=gewollte Variable in allE)

(20)

Variablen festlegen bei Regelanwendung

Den RegelnallE und exIgemeinsam:

nach Anwendung der entsprechenden Methodik (also erulebzw. rule) unspezifizierte Variablen (?x) in Subgoal

meist nicht gewollt, da schlecht Aussagen dar¨uber m¨oglich Besser: entsprechende Variable gleich festlegen

Methodik:rule_tac v1 = t1 and . . . and vk = tk in R,

?v1,. . .,?vkfreie Variable in der anzuwendenden Regel R

(nicht im aktuellen Subgoal!) analog: erule_tac

also m¨oglichst immer apply(rule_tac x=gewollte Variable in exI) bzw. apply(erule_tac x=gewollte Variable in allE)

Referenzen

ÄHNLICHE DOKUMENTE

Anweisungen: alle strukturierten Kontrollanweisungen (if, Schleifen, break, continue, return) keine unstrukturierten (goto, switch, longjmp) Variablen: globale und lokale auto

⇒ Meist nicht gewollt, da schlecht Aussagen darüber möglich Besser: entsprechende Variable gleich festlegen.. Methode: rule_tac v1 =

eliminiert die passende Pr¨ amisse und ersetzt Beweis der Konklusion der Regel durch Beweise der weiteren Pr¨ amissen der Regel. andere vorhandene Pr¨ amissen bleiben

nat¨ urliche Zahl (ungleich 0) ist Nachfolger einer nat¨ urlichen Zahl nichtleere Liste ist Liste mit zus¨ atzlichem Kopfelement.. nichtleere Menge ist Menge mit einem zus¨

Analog: Ganze Pr¨ amissen instantiieren ebenso eckige Klammer,. Schl¨ usselwort OF ,

was passiert jedoch, wenn ein “Teillemma” nur gezeigt werden kann, wenn Induktionshypothese bestimmte Variablen allquantifizieren muss. Kennen allgemein schon die L¨ osung:

Lemma besteht aus Pr¨ amissen und Konklusion, dann Liste der Pr¨ amissen nach Schl¨ usselwort assumes, evtl.. Lemma mit Pr¨ amissen

Aussage nach where kann beliebigen Namen erhalten auch aus Allquantor obtain m¨ oglich. IPD Snelting, Uni Karlsruhe (TH) Rechner¨ ubung TBA Sommersemester 2009 75