Seminar zum pi-Kalkül betreut von Andreas Rossberg

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

Imperative Programmierung
Imperative Programmierung
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Frame-Logik Eine Einführung Andreas Glausch.
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Kritische Betrachtung
Kapselung , toString , equals , Java API
Finale Semantik und beobachtbares Verhalten
Marco Barz Seminar über Algorithmen SoSe2007
Objektorientierte Programmierung
der Universität Oldenburg
An Axiomatic Proof Technique for Parallel Programs
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
Der Pi-Kalkül Vortrag von Erik Witzmann Im Seminar Prozessalgebra.
On a Buzzword: Hierachical Structure David Parnas.
Ausnahmen HS Merseburg (FH) WS 06/07.
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
es gibt (fast) nichts, was nicht anders gemacht werden könnte
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Automatentheorie „Berechnungsmodell für logische Sprachen“
von Reaktionen und chemischen Suppen
Repräsentation von Datenstrukturen im -Kalkül Simon Pinkel, Betreuer: Guido Tack Seminar: Theorie kommunizierender Systeme: Der -Kalkül.
Milners Kalkül Kommunizierender Systeme (CCS)
Algorithmentheorie 04 –Hashing
Symbolisches Model Checking mit Binary Decision Diagrams
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Imperative Programmierung
Einführung in die Programmierung mit Java
Programmieren mit JAVA
Programmieren mit JAVA
Vererbung Spezialisierung von Klassen in JAVA möglich durch
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Seminar: Architekturbeschreibungssprachen
RDF-Schema Seminar: „Semantic Web“ André Rosin,
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Types and Programming Languages: Einführung Typen SWT Seminar WS 05/06
Prof. Dr. Gerhard Schmidt pres. by H.-J. Steffens Software Engineering SS 2009Folie 1 Objektmodellierung Objekte und Klassen Ein Objekt ist ein Exemplar.
Java programmieren mit JavaKara
Plattformunabhängige Programmiersprache
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Splay Trees Von Projdakov Benjamin.
Proseminar an der TU München Martin Levihn
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Informatik 1 Letzte Übung.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Vortrag: Visual Basic Neuerungen Autor : Dennis Hoyer
EPROG Tutorium #6 Philipp Effenberger
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Einführung Blue J. Inhaltsverzeichnis  Definition  Vokabeln.
HG13_ Herzgen, Jung & Lorkowski1 Java Programmierung BlueJ Workshop.
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Thomas H. Kolbe Einführung in die Programmierung mit Java 9. Vorlesung WS 2001/2002.
Abstrakte Klassen und das Interface-Konzept
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Strukturen (Eigenschaften) Strukturen dienen zur Zusammenfassung mehrerer Komponenten verschiedener Typen zu einer Einheit, die dann mit gemeinsamen Namen.
WISSENSREPRÄSENTATION IN ACTIVEMATH Theoretische Grundlagen – Teil 1.
Gliederung 0. Motivation und Einordnung 1. Endliche Automaten
OO-Programmierung & Vererbung
 Präsentation transkript:

Seminar zum pi-Kalkül betreut von Andreas Rossberg verfasst von Eyad Alkassar Seminar zum pi-Kalkül betreut von Andreas Rossberg TYPEN UND OBJEKTE im Pi-Kalkül

INHALT 1. Warum Typen? 4. Anwendung: Objekte 2. Einführung von einfachen Typen 3. Erweiterungen 4. Anwendung: Objekte 5. Zusammenfassung & Ausblick

WARUM TYPEN? Motivation Vermeidung von Laufzeitfehlern besseres Verständnis von Verhalten von Programmen Dokumentation von Quellcode Optimierung von Compilern …

WARUM TYPEN? Motivation Vermeidung von Laufzeitfehlern besseres Verständnis von Verhalten von Programmen Dokumentation von Quellcode Optimierung von Compilern …

WARUM TYPEN? Beispiele Vermeidung von Laufzeitfehler Was sind Laufzeitfehler im pi-Kalkül? Bisher haben wir noch keine Übergänge gesehen, daher betrachten Reaktionen Beispiel im polyadischen Kalkül

WARUM TYPEN? Beispiele Fehler Vermeidung von Laufzeitfehler Was sind Laufzeitfehler im pi-Kalkül? Bisher haben wir noch keine Übergänge gesehen, daher betrachten Reaktionen Beispiel im polyadischen Kalkül Fehler

WARUM TYPEN? Beispiele Vermeidung von Laufzeitfehler Was sind Laufzeitfehler im pi-Kalkül? Fügen Fehlerregel zu Reaktionsregeln hinzu:

WARUM TYPEN? Beispiele Wir formulieren diese Eigenschaft ein wenig anders: Eigenschaft PROGRESS: Wohlgetypte Terme des pi-Kalküls können in einem Schritt nicht zu fehler reagieren Was bedeutet wohlgetypt?

WARUM TYPEN? Beispiele Besseres Verständnis von Programmverhalten Wohlgetypt als Eigenschaft von einem Ausdruck, der während der Ausführung erhalten bleibt Und Einschränkung der möglichen Reaktionen

WARUM TYPEN? Beispiele Kontrollieren das Verhalten von Prozessen: Für ein einfaches Systems S und folgenden Eigenschaften Es verwaltet x Es ist x-vergesslich Für jeden Subterm der Form z(y).Q ist Q y-vergesslich gilt: wenn S S‘, dann hat S‘ Eigenschaften 1-3

WARUM TYPEN? + = Beispiele Wir formulieren die Eigenschaft anders: [ Wright, Andrew K. und Matthias Felleisen 1994 ] Wir formulieren die Eigenschaft anders: Eigenschaft PRESERVATION: Wohlgetypt ist stabil unter Reaktion (und struktureller Kongruenz). + Eigenschaft PROGRESS: Wohlgetypte Terme des pi-Kalküls können in einem Schritt nicht zu fehler reagieren = Eigenschaft SOUNDNESS: Wohlgetypte Terme des pi-Kalküls reagieren nie zu fehler. Was bedeutet wohlgetypt?

EINFÜHRUNG VON TYPEN Erste Version Namen können als Daten ausgetauscht werden Kategorisierung dieser Namen in Typen Namensvektoren werden Typvektoren zugewiesen:

EINFÜHRUNG VON TYPEN Erste Version Namen auch Kanäle für andere Namen Namen welchen Typs darf ein Name eines bestimmten Typs übermitteln?

EINFÜHRUNG VON TYPEN Erste Version Definition von Typdisziplin Definition wohlgetypt

EINFÜHRUNG VON TYPEN Erste Version Definition von Typdisziplin Definition wohlgetypt

EINFÜHRUNG VON TYPEN Erste Version Definition von Typdisziplin Definition wohlgetypt

EINFÜHRUNG VON TYPEN Erste Version Definition von Typdisziplin Definition wohlgetypt

EINFÜHRUNG VON TYPEN BEISPIEL FÜR DEFINITIONEN Beispiel: Typen von Bools

EINFÜHRUNG VON TYPEN BEISPIEL FÜR DEFINITIONEN Beispiel: Typen von Bools Typen und ihre Disziplin

EINFÜHRUNG VON TYPEN BEISPIEL FÜR DEFINITIONEN Beispiel: Typen von Bools Typen und ihre Disziplin

EINFÜHRUNG VON TYPEN Beispiel für Definitionen Beispiel: Mautsystem Erinnerung

EINFÜHRUNG VON TYPEN Beispiel für Definitionen Beispiel: Mautsystem

EINFÜHRUNG VON TYPEN Beispiel für Definitionen Beispiel: Mautsystem

EINFÜHRUNG VON TYPEN Beispiel für Definitionen Beispiel: Mautsystem

EINFÜHRUNG VON TYPEN Beispiel für Definitionen Beispiel: Mautsystem

EINFÜHRUNG VON TYPEN Beispiel für Definitionen Beispiel: Mautsystem

EINFÜHRUNG VON TYPEN Beispiel für Definitionen Beispiel: Mautsystem

EINFÜHRUNG VON TYPEN Beispiel für Definitionen Beispiel: Mautsystem

EINFÜHRUNG VON TYPEN Was bringt‘s? Kontrollieren das Verhalten von Prozessen: Für ein einfaches Systems S und folgenden Eigenschaften Es verwaltet x Es ist x-vergesslich Für jeden Subterm der Form z(y).Q ist Q y-vergesslich gilt: wenn S S‘, dann hat S‘ Eigenschaften 1-3

EINFÜHRUNG VON TYPEN Was bringt‘s? Kontrollieren das Verhalten von Prozessen: Für ein wohlgetyptes einfaches Systems S mit x:A und folgenden Eigenschaften Es verwaltet x Es ist x-vergesslich Für jeden Subterm der Form z(y).Q ist Q y-vergesslich falls y:A gilt. gilt, wenn S S‘, dann hat S‘ Eigenschaften 1-3

EINFÜHRUNG VON TYPEN Was bringt‘s? Eigenschaft SOUNDNESS: Wohlgetypte Terme des pi-Kalküls können nicht zu fehler reagieren. (ohne Beweis)

EINFÜHRUNG VON TYPEN Was bringt‘s? Eigenschaft SOUNDNESS: Wohlgetypte Terme des pi-Kalküls können nicht zu fehler reagieren. (ohne Beweis)

EINFÜHRUNG VON TYPEN Was bringt‘s? besseres Verständnis des pi-Kalküls wie wird der getypte pi-Kalkül zu CCS?

EINFÜHRUNG VON TYPEN Was bringt‘s? pi-Kalkül kontrollieren Nur noch Daten übertragen (CCS mit Value-Übertragung) Unterteilen in und : Menge aller Namen die als Link auftauchen dürfen Menge elementarer Typen

ERWEITERUNGEN TYPKONSTRUKTOREN Betrachten noch mal die Bool Typen

ERWEITERUNGEN TYPKONSTRUKTOREN Betrachten noch mal die Bool Typen Problem: TRUE und FALSE sind prinzipiell gleich, wollen sie zu einem Sort zusammen- fassen

ERWEITERUNGEN TYPKONSTRUKTOREN Betrachten noch mal die Bool Typen Problem: TRUE und FALSE sind prinzipiell gleich, wollen sie zu einem Sort zusammen- fassen

ERWEITERUNGEN TYPKONSTRUKTOREN Erinnern uns noch mal an Listen

ERWEITERUNGEN TYPKONSTRUKTOREN Erinnern uns noch mal an Listen Würden gerne einen Typkonstruktor für Listen definieren

ERWEITERUNGEN TYPKONSTRUKTOREN Erinnern uns noch mal an Listen Würden gerne einen Typkonstruktor für Listen definieren

ERWEITERUNGEN TYPKONSTRUKTOREN Formalisieren diese Idee mit Hilfe Typkonstruktoren

ERWEITERUNGEN TYPKONSTRUKTOREN Formalisieren diese Idee mit Hilfe Typkonstruktoren Eine Typsprache hat Elemente der Form

ERWEITERUNGEN TYPKONSTRUKTOREN Formalisieren diese Idee mit Hilfe Typkonstruktoren Eine Typsprache hat Elemente der Form C aus der Menge der Typkonstruktoren ist mit Stelligkeit n

ERWEITERUNGEN TYPKONSTRUKTOREN Formalisieren diese Idee mit Hilfe Typkonstruktoren Eine Typsprache hat Elemente der Form C aus der Menge der Typkonstruktoren ist mit Stelligkeit n Disziplin für Typkonstruktoren wird über Typvariablen si definiert:

ERWEITERUNGEN TYPKONSTRUKTOREN Der wichtigste Typkonstruktor ist der Channel:

ERWEITERUNGEN TYPKONSTRUKTOREN Der wichtigste Typkonstruktor ist der Channel:

ERWEITERUNGEN TYPKONSTRUKTOREN Der wichtigste Typkonstruktor ist der Channel: Anwendung von CHAN bei Listen

ANWENDUNGSBSP OBJEKTE IM PI-KALKÜL Beispiel für die Mächtigkeit des pi-Kalküls

ANWENDUNGSBSP OBJEKTE IM PI-KALKÜL Beispiel für die Mächtigkeit des pi-Kalküls Eine nicht-triviale Anwendung unserer Typen

ANWENDUNGSBSP OBJEKTE IM PI-KALKÜL Beispiel für die Mächtigkeit des pi-Kalküls Eine nicht-triviale Anwendung unserer Typen Folgende Symbole werden benutzt

ANWENDUNGSBSP OBJEKTE IM PI-KALKÜL Beispiel für die Mächtigkeit des pi-Kalküls Eine nicht-triviale Anwendung unserer Typen Folgende Symbole werden benutzt Methoden des Objekts Variablen des Objekts Objekte Klassen

ANWENDUNGSBSP BOPL - PROGRAMME KLASSE A KLASSE B Methoden des Objekts Variablen des Objekts Objekte Klassen BOPL - PROGRAMME KLASSE A KLASSE B

ANWENDUNGSBSP BOPL - PROGRAMME KLASSE A KLASSE B Objekt 1 Objekt 2 Methoden des Objekts Variablen des Objekts Objekte Klassen BOPL - PROGRAMME KLASSE A KLASSE B Objekt 1 Objekt 2 Objekt 3

ANWENDUNGSBSP BOPL - PROGRAMME KLASSE A KLASSE B Objekt 1 Objekt 2 Methoden des Objekts Variablen des Objekts Objekte Klassen BOPL - PROGRAMME KLASSE A KLASSE B Objekt 1 Objekt 2 Objekt 3 Methodenaufruf

ANWENDUNGSBSP AUFBAU VON POPEL PROGRAMMEN Klassendeklaration A: class-decA Class A VAR V1: A, V2: B METHODE M1(X1: B): A = S1 METHODE M2(X1: A, X2: A): B = S2

ANWENDUNGSBSP OBJEKTE IM PI-KALKÜL neues Objekt über Adress kA kA SERVER A Klasse als Server, Dienst fordert neues Objekt über Adress kA kA

ANWENDUNGSBSP OBJEKTE IM PI-KALKÜL kA Server legt neues Objekt an und SERVER A Server legt neues Objekt an und sendet als Antwort Adresse a des Objekts kA a a

ANWENDUNGSBSP OBJEKTE IM PI-KALKÜL kA Benutzer fordert von Objekt A SERVER A Benutzer fordert von Objekt A Methoden an kA a m1 m2 m1, m2

ANWENDUNGSBSP OBJEKTE IM PI-KALKÜL kA a m1 m2 SERVER A kA a m1 m2 r Über die Adressen der Methoden ruft Benutzer diese auf und erhält Adresse des Rückgabe wertes x1..

ANWENDUNGSBSP ÜBERTRAGUNG VON KLASSEN Klassendeklaration A pi-Kalkül Namen Class A VAR V1: A, V2: B METHODE M1(X1: B): A METHODE M2(X1: A, X2: A): B

ANWENDUNGSBSP ÜBERTRAGUNG VON KLASSEN Klassendeklaration A pi-Kalkül Namen Class A VAR V1: A, V2: B METHODE M1(X1: B): A METHODE M2(X1: A, X2: A): B

ANWENDUNGSBSP ÜBERTRAGUNG VON KLASSEN Klassendeklaration A pi-Kalkül Namen Class A VAR V1: A, V2: B METHODE M1(X1: B): A METHODE M2(X1: A, X2: A): B

ANWENDUNGSBSP ÜBERTRAGUNG VON KLASSEN Klassendeklaration A pi-Kalkül Namen Class A VAR V1: A, V2: B METHODE M1(X1: B): A METHODE M2(X1: A, X2: A): B

ANWENDUNGSBSP ÜBERTRAGUNG VON KLASSEN Welche Typen haben unsere Namen?

ANWENDUNGSBSP ÜBERTRAGUNG VON KLASSEN Welche Typen haben unsere Namen?

ANWENDUNGSBSP ÜBERTRAGUNG VON KLASSEN Welche Typen haben unsere Namen?

ANWENDUNGSBSP ÜBERTRAGUNG VON KLASSEN Welche Typen haben unsere Namen?

ANWENDUNGSBSP ÜBERTRAGUNG VON KLASSEN Welche Typen haben unsere Namen?

ANWENDUNGSBSP Modellierung der Klassendefinition SERVER A kA a Modellierung der Klassendefinition Zugriff auf neues Objekt a über Namen ka

ANWENDUNGSBSP Modellierung eines Objekts a SERVER A kA a Modellierung eines Objekts a jedes Objekt hat seine eigenen Methoden und Variablen Variablen werden zunächst mit Null initialisiert

ANWENDUNGSBSP Modellierung der Methoden SERVER A kA a m1m2 r x1,x2 Modellierung der Methoden Der Name a wird wie als Selbstreferenz (wie self) verwendet

ANWENDUNGSBSP OBJEKTE IN PI Was haben wir modelliert? getypte Methoden Enkapsulierung von Daten Parallele Berechnung Was haben wir nicht modelliert? Subtyping Vererbung, …

ZUSAMMENFASSUNG Typen helfen uns Verhalten von Prozessen einzuschränken und besser zu verstehen Mit Hilfe von Typen lassen sich Objekte recht leicht im pi-Kalkül modellieren Noch viele Erweiterungen des Typsystems möglich Aussagen wie Deadlock mit Typen untersuchen Den pi-Kalkül kann man (fast) wie eine höhere Programmiersprache benutzen.

LITERATUR COMMUNICATING AND MOBILE SYSTEMS: THE PI-CALCULUS Robin Milner, Cambridge University, Cambridge, Great Britain 1999 THE PI-CALCULUS : A THEORY OF MOBILE PROCESSES Davide Sangiorgi, INRIA Sophia Antipolis and David Walker University of Oxford, Cambridge University Press 2001

DANKE