Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T:



Ähnliche Dokumente
Historical Viewer. zu ETC5000 Benutzerhandbuch 312/15

AutoCAD Dienstprogramm zur Lizenzübertragung

Import und Export von Übergängern

Korrelation (II) Korrelation und Kausalität

Synchronisations- Assistent

Erwin Grüner

Modellierung und Programmierung 1

ECO-Manager - Funktionsbeschreibung

Einführung in die Programmierung

Word 2010 Schnellbausteine

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

DATEV Kanzlei Rechnungswesen Pro

affilinet_ Flash-Spezifikationen

Anleitung Migration Dr. Tax 2.0 -> Dr. Tax Office 3.0. Office 3.0

Übernahme von Daten aus einem bestehenden Outlook-Profil bzw. einem anderen Exchange Server

Elexis-BlueEvidence-Connector

Version White Paper ZS-TimeCalculation und die Zusammenarbeit mit dem iphone, ipad bzw. ipod Touch

XML-Austauschformat für Sicherheitsdatenblätter

Deklarationen in C. Prof. Dr. Margarita Esponda

Kontenaktualisierung in Lexware buchhalter

Mit dieser Schnittstelle können Sie Ihre Studierenden in das Studentenmodul übernehmen.

1. Einführung. 2. Vorbereiten der Excel-Datei

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

ADDISON Aktenlösung Automatischer Rewe-Import. Technische Beschreibung

Funktionserweiterungen, behobene Funktionseinschränkungen und Funktionseinschränkungen, EASY Starter V1.5

Eigenwerte und Eigenvektoren von Matrizen

Dokumentenverwaltung im Internet

3a Open BIM Workflow - Import und Weiterbearbeitung

Leitfaden: geoport in FlowFact

ebanking Business Edition

Sie können diesen Service verwenden, um fast beliebig große Dateien auch über 2 GB zu versenden.

Datenabgleich. Meine Welt auf einen Blick erleben.

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

7 Rechnen mit Polynomen

Installation der Demoversion vom M-Doc AutoSigner

Informationen zu den regionalen Startseiten

Grundbegriffe der Informatik

Was ist das Tekla Warehouse

GS-Buchhalter/GS-Office 2015 Saldovorträge in folgenden Wirtschaftsjahren erfassen

Musterlösungen zur Linearen Algebra II Blatt 5

ESRlight Datenexport aus E-List & Import in ESRlight. Datum: 19. Februar 2010 Industriestrasse 25

Arbeiten mit UMLed und Delphi

GI-Technologien zur Umsetzung der EU-Wasserrahmenrichtlinie (WRRL): Wissensbasen. Teil 1: Einführung: Wissensbasis und Ontologie.

1. Schritt: Export Datei im Fidelio erstellen

Handbuch ECDL 2003 Basic Modul 7 Abschnitt 1: Information Kopieren aus dem Browser

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Screening for Illustrator. Benutzerhandbuch

Rundung und Casting von Zahlen

Anleitung für die Online-Bewerbung über LSF auf Lehrveranstaltungen aller Lehramtsstudiengänge

In der Combobox der Art der Übermittlung (steht derzeit auf 0 für keine Definition), können Sie folgende Einstellungen vornehmen:

DATEV pro: Datenübernahme FIBU

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Handbuch B4000+ Preset Manager

OECD Programme for International Student Assessment PISA Lösungen der Beispielaufgaben aus dem Mathematiktest. Deutschland

Erfahrungen mit Hartz IV- Empfängern

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Bauteilattribute als Sachdaten anzeigen

Installation OMNIKEY 3121 USB

Umwandeln und Exportieren von Adobe-Illustrator-Dateien in Illustrator für Artcut

Matrizennorm. Definition 1. Sei A M r,s (R). Dann heißt A := sup die Matrixnorm. Wir wissen zunächst nicht, ob A eine reelle Zahl ist.

-Zertifikatsverwaltung

KeyGateway incadea.engine DMS KeyReport Schlüsselmanagement auf höchstem Niveau

Arbeitsgruppen innerhalb der Website FINSOZ e.v.

Datenexport aus JS - Software

Graphic Coding. Klausur. 9. Februar Kurs A

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse Lösung 10 Punkte

Vorgehensweise bei Lastschriftverfahren

Umzug der abfallwirtschaftlichen Nummern /Kündigung

Hilfedatei der Oden$-Börse Stand Juni 2014

Enigmail Konfiguration

Sage Start Version 2011

Formale Systeme, WS 2012/2013 Lösungen zu Übungsblatt 4

Übertragung von Prozessmodellen zwischen IBM Blueworks Live und nationaler Prozessbibliothek

Stand: Adressnummern ändern Modulbeschreibung

Kundenspezifische Preise im Shop WyRu Online-Shop

Einführung in die Algebra

7DVWH.HOOQHU. Kassensystem SANYO (X&D6RIWKapitel 42

Datenaufbereitung in SPSS. Daten zusammenfügen

Profi cash (Version 10.3 oder höher) Erfassen und Verwalten von SEPA- Lastschriften

Microsoft Access 2010 Navigationsformular (Musterlösung)

Symbolbearbeitung mit EPLAN 5.60/5.70 DIC_***D.SYM

Die IFC Schnittstelle in EliteCAD V11 AR ist ein objektorientierter Datentransfer und kann parametrisierte 3D-Modelldaten austauschen.

Installationsanleitung Maschinenkonfiguration und PPs

1. Einführung Erstellung einer Teillieferung Erstellung einer Teilrechnung 6

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen

Anleitung Lernobjekt-Depot (LOD)

Einfache Ausdrücke Datentypen Rekursive funktionale Sprache Franz Wotawa Institut für Softwaretechnologie

teamsync Kurzanleitung

Erstellen von x-y-diagrammen in OpenOffice.calc

E-TESTS IMPORTIEREN. von Harald Jakobs Stand:

Bedienungsanleitung Anlassteilnehmer (Vereinslisten)

Kore-Painter. Kostenrechnung bildet das Rückgrat vieler Controlling-Abteilungen.

Leica 3D Disto Veranda und Wintergarten

Flashfragen in ILIAS Test & Assessment. Helmut Schottmüller

C.M.I. Control and Monitoring Interface. Zusatzanleitung: Datentransfer mit CAN over Ethernet (COE) Version 1.08

Lehrer: Einschreibemethoden

Update einer Einzelplatzinstallation

Vertretungsplan. Handreichung

Transkript:

Binäre Bäume Binärbäume als weiteres Beispiel für abstrakte Datentypen in PVS mit in Knoten gespeicherten Werten vom Typ T: BinTree [T: TYPE]: DATATYPE empty: empty? node (key: T, left:bibtree, right:bibtree): node? END BinTree Definition ist völlig analog zu der für lineare Listen. Unterschiede: 2 anstatt einer induktiven Komponente beim Aufbau der Struktur. Entsprechend gibt es bei der Definition rekursiver Funktionen über Binärbäumen 2 Rekursionsargumente für jedes muss gezeigt werden, dass das Argument beim rekursiven Aufruf kleiner ist. Maschinelles Beweisen mit PVS 8 16

Parametrisierung von Abstrakten Datentypen Eine DATATYPE-Definition kann als separates Theorie-Äquivalent auf der obersten Ebene (d.h. nicht innerhalb einer Theorie) gegeben werden oder innerhalb einer Theorie. Eine separate DATATYPE-Definition kann genauso wie eine Theorie parametrisiert sein. Eine DATATYPE-Definition innerhalb einer Theorie ist automatisch parametrisiert mit den Parametern der Theorie, in die sie eingebettet ist. Instanziierung von ADTs: wie Instanziierung von Theorien s. später Maschinelles Beweisen mit PVS 9 1

9. Mehr zu PVS-Theorien Mehr zu parametrisierten Theorien Theorie-Abhängigkeiten: Import und Export Sichtbarkeit von Namen Einschränkungen auf Theorie-Parametern: Theorie-Assumptions Maschinelles Beweisen mit PVS 9 2

Mehr zu Parametrisierten Theorien Zwischen Theorie-Parametern können Abhängigkeiten bestehen, wie bei abhängigen Typen: d.h. der Wert eines Parameters (repräsentiert durch den Parameter-Namen) kann im Typ eines nachfolgenden Parameters benutzt werden. Beispiel: sort[t: TYPE, <=: pred[[t,t]] ]: THEORIE... END sort Maschinelles Beweisen mit PVS 9 3

Theorie-Assumptions Theorie-Parameter können mit Einschränkungen (engl. constraints) belegt werden. - durch Assumptions - durch entsprechende Typisierung Syntax: name [<parameter>]: THEORY ASSUMING % Assumption Formeln n1: ASSUMPTION <formel>... ENDASSUMING... END name Maschinelles Beweisen mit PVS 9 4

Theorie-Assumptions (2) sort[t: TYPE, <=: pred[t,t]]: THEORIE ASSUMING po rel: ASSUMPTION partial order?(<=) ENDASSUMING... END sort Alternativ: sort[t: TYPE, <=: (partial order?[t])]: THEORIE... END sort Maschinelles Beweisen mit PVS 9 5

Theorie-Assumptions (3) Assumptions haben eine duale Funktion: - Innerhalb der Theorie wirken sie wie Axiome, d.h. als Eigenschaften, die angenommen werden können. - Wenn eine Theorie verwendet und damit instantiiert wird, müssen entsprechende Instanzen der Assumptions nachgewiesen werden Beweisverpflichtungen, TCCs Maschinelles Beweisen mit PVS 9 6

Theorie-Abhängigkeiten: Import und Export Eine Kollektion von Theorien ist zunächst flach, d.h. sie enthält keine Struktur. Im PVS-System sind alle Theorien (in einem Verzeichnis) sichtbar und auf der gleichen Ebene angesiedelt. Die in einer Theorie deklarierten Namen sind zunächst nur innerhalb der Theorie sichtbar. Ausnahme: Namen, die im prelude deklariert wurden, sind überall sichtbar. Sichtbarmachen von Namen aus benutzer-definierten Theorien und damit eine gewisse hierarchische Abhängigkeitsstruktur zwischen Theorien kann durch Importieren und Exportieren von Theorien erreicht werden. Eine Importing-Klausel, IMPORTING <theorie-instanz> kann im Text einer Theorie überall dort auftreten, wo Deklarationen auftreten können, einschließlich der Parameter-Liste und einer ASSUMING-Klausel. Maschinelles Beweisen mit PVS 9 7

Theorie-Hierarchien: Import und Export (2) Durch Importierung werden alle in der importierten Theorie deklarierten Namen (mit Ausnahme der Variablen) in der importierten Theorie vom Platz der IMPORTING- Klausel an sichtbar; Einschränkungen hierbei sind durch Angabe einer expliziten EXPORTING-Klausel (s.u.) möglich. Eine parametrisierte Theorie kann nur in instantiierter Form, d.h. mit Angabe von aktuellen Parametern, importiert werden. Der Name einer Theorie-Instanz besteht aus dem eigentlichen Theorie-Namen gefolgt von der Liste der aktuellen Parameter in [...], z.b. sort[nat, <=] Häufig werden hierbei die formalen Parameter der importierenden Theorie benutzt. Die genaue Position der Klausel ist hier relevant: es kann erforderlich sein, eine IMPORTING-Klausel in der Parameterliste einer Theorie einzuschieben, damit die richtige zu importierende Instanz spezifiziert werden kann. Maschinelles Beweisen mit PVS 9 8

Theorie-Hierarchien: Import und Export (3) Eine EXPORTING-Klausel erlaubt die Steuerung der Sichtbarkeit von Namen aus der Theorie. Zusammen mit den in der Theorie deklarierten Namen können auch die importierten Theorie-Instanzen exportiert werden. Wenn Sichtbarkeit nicht eingeschränkt werden soll, ist eine EXPORTING-Klausel nicht notwendig: Wenn eine Theorie keine EXPORTING-Klausel enthält, bedeutet es, daß alle Namen bei Importierung der Theorie (bzw. einer Instanz) sichtbar gemacht werden; ebenso werden importierte Theorie-Instanzen defaultmäßig re-exportiert. Eine explizite EXPORTING-Klausel ist daher nur selten wirklich notwendig. Maschinelles Beweisen mit PVS 9 9

Theorie-Hierarchien: Import und Export (4) Qualifizierung von importierten Namen: Zur Auflösung von Mehrdeutigkeiten kann es notwendig sein, Namen mit dem Namen der Theorie bzw. der Theorie-Instanz, aus der sie stammen, zu qualifizieren. Beispiel: the1 [p1:..., pn:...] THEORY... id1: sometype... END the1 the2... : THEORY IMPORTING the1[a1,...,an]... the1[a1,...,an].id1...... id1[a1,...,an]...... id1... Die 3 Arten der Notation für den Namen id1 aus Theorie the1 sind möglich, soweit die Typüberprüfung die Zuordnung eindeutig auflösen kann. Maschinelles Beweisen mit PVS 9 10

Beispiele Die folgenden Beispiele enthalten Definitionen, die zum großen Teil auch im prelude enthalten sind, sie dienen zur Demonstration von Parametrisierung usw. partial order [t: TYPE] : THEORY <= : PRED[[t,t]] x, y, z: VAR t refl: AXIOM x <= x trans: AXIOM x <= y AND y <= z IMPLIES x <= z antisym: AXIOM x <= y AND y <= x IMPLIES x = y; < : PRED[[t,t]] = (LAMBDA x, y: x <= y AND x /= y) END partial order total order [t: TYPE] : THEORY EXPORTING ALL WITH partial order[t] IMPORTING partial order[t] x, y: VAR t total: AXIOM x <= y OR y <= x END total order Maschinelles Beweisen mit PVS 9 11

Beispiele (2) sort [domain, range: TYPE] : THEORY IMPORTING partial order[range], total order[domain] Array type: TYPE = ARRAY[domain -> range] A, B, C: VAR Array type sorted?(a): bool = (FORALL (x, y: domain): x < y IMPLIES NOT (A(y) <= A(x))) END sort Maschinelles Beweisen mit PVS 9 12

Beispiele (3) sorta [domain, range: TYPE, d order: PRED[[domain, domain]], r order: PRED[[range, range]]] : THEORY ASSUMING x, y, z: VAR domain u, v, w: VAR range d refl: ASSUMPTION d order(x,x) d trans: ASSUMPTION d order(x, y) & d order(y, z) => d order(x, z) d antisym: ASSUMPTION d order(x, y) & d order(y, x) => x = y d total: ASSUMPTION d order(x, y) OR d order(y, x)... % Assumptione fuer r order ENDASSUMING Array type: TYPE = ARRAY[domain -> range] A, B, C: VAR Array type sorted?(a): bool = (FORALL (x, y: domain): (d order(x, y) & x /= y) => NOT r order(a(y), A(x))) END sorta Maschinelles Beweisen mit PVS 9 13

Beispiele (4) partial order1 [t: TYPE, <=: PRED[[t,t]]] : THEORY ASSUMING x, y, z: VAR t refl: ASSUMPTION x <= x trans: ASSUMPTION x <= y AND y <= z IMPLIES x <= z antisym: ASSUMPTION x <= y AND y <= x IMPLIES x = y ENDASSUMING < : PRED[[t,t]] = (LAMBDA x, y: x <= y AND x /= y) END partial order1 Maschinelles Beweisen mit PVS 9 14

Beispiele (5) orderings[t: TYPE] : theory x, y, z: VAR t pp, qq: VAR PRED[t] <= : VAR PRED[[t,t]] reflexive?(<=): bool = (FORALL x: x <= x) antisymmetric?(<=): bool = (FORALL x, y: x <= y AND y <= x IMPLIES x = y) transitive?(<=): bool = (FORALL x, y, z: x <= y AND y <= z IMPLIES x <= z) partial order?(<=): bool = reflexive?(<=) AND antisymmetric?(<=) AND transitive?(<=) linear?(<=): bool = (FORALL x, y: x <= y OR y <= x) total order?(<=): bool = partial order?(<=) AND linear?(<=) well founded?(<=): bool = (FORALL qq: (EXISTS y: qq(y)) IMPLIES (EXISTS y: (FORALL x: qq(x) IMPLIES NOT x<=y))) END orderings Maschinelles Beweisen mit PVS 9 15

Beispiele (6) sorto [domain, range: type, (IMPORTING orderings) d order: (total order?[domain]), r order: (partial order?[range])] : THEORY Array type: TYPE = ARRAY[domain -> range] A, B, C: VAR Array type sorted?(a): bool = (FORALL (x, y: domain): (d order(x, y) AND x/=y) IMPLIES NOT r order(a(y), A(x))) END sorto Maschinelles Beweisen mit PVS 9 16