CASL - Tool(s) Methoden und Modelle des Systementwurfs WS 07/08

Slides:



Advertisements
Ähnliche Präsentationen
Kurzwiederholung Informatik I, Teil I: Grundkonzepte
Advertisements

Algorithm Engineering
Programmierung 1 - Repetitorium
Man bestimme den „minimalen aufspannenden Baum“ des Graphen.
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium
Minimum Spanning Tree: MST
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Mehrwertige Abhängigkeiten (1)
7. Natürliche Binärbäume
Es sei SPEC = (, E) eine Spezifikation mit einer
Finale Semantik und beobachtbares Verhalten
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Verifizieren versus Berechnen
Java: Objektorientierte Programmierung
Java: Grundlagen der Objektorientierung
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Union-Find-Strukturen
Kapitel 5 Stetigkeit.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Beispiele für Ausdrucksalgebren
Eine (Gleichungs-)Spezifikation ist ein Paar SPEC = (, E),
Einführung Wat jibt´s denn? Mit Computa kenn´ ick mir aus! Guten Tag,
Gleichungskalkül und Induktion
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Rel-Modell Relationenspezifische Operationen (11|21) Definition: natural join (natürlicher Verbund) Geg.: zwei Relationen r 1 : (A) und.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Types and Programming Languages: Einführung Typen SWT Seminar WS 05/06
Isabelle/HOL ( Kripke Structures & Model Checking ) Ying Wang, Nelli Bärsch, Bartosz Rynarzewski,
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Einführung in die Programmierung
Effiziente Algorithmen
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 15: Topologisches Sortieren Teil 1: Problemstellung und.
WS 2013/14 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #5 SQL (Teil 2)
Einführung in die Programmierung Prof. Dr. Bertrand Meyer
Einführung in die Programmierung Prof. Dr. Bertrand Meyer
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Formale Sprachen Mathematische Grundlagen Rudolf FREUND, Marian KOGLER.
Clean Code Software-Entwicklung als Handwerkskunst Thomas Nagel, November 2011.
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Kapitel 5: Von Datenstrukturen zu Abstrakten Datentypen
Einführung in die Programmierung Prof. Dr. Bertrand Meyer
VBA-Schulung /28Objektübersicht2 Übersicht der orgAnice Database Server- und orgAnice Data- Objekte.
1 Differenzierte Verbindungsoperationen (1) Beobachtung: Einfach zu formulierende Verbindungen wie ein Natural Join sind nicht als solche dokumentiert.
WS 2014/15 Datenbanksysteme D0 15:15 – 16:45 R Vorlesung #6 SQL (Teil 3)
9. Dezember 2003Überprüfung der Sicherheit von Informationsflüssen in Programmen - Stefan Kurz,1 Hauptseminar Software-Sicherheit Thema Überprüfung der.
2 Grundlagen In diesem Abschnitt werden die Grundbegriffe und Methoden der Theorie der formalen Sprachen und der Automaten wiederholt, soweit diese ben.
Sammlungsklassen Array.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Syntax, Semantik, Spezifikation - Grundlagen der Informatik R. Hartwig Kapitel 10 / 1 Kapitel 10 Initialität Eine beliebige gleichungsdefinierbare Klasse.
 Sortigkeit oder Arität
Elemente einer Z-Spezifikation
GeoNet Seminar Theta-Graph. Strukturen Motivation Definition von Theta-Graph Beispiel nach der Definition Eingenschafen von Theta-Graph Implemetierungsalgorithmus.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Vorlesung #5 SQL (Teil 2).
Struktur-Funktions-Modelle von Pflanzen
Es ist ein ORANGER KREIS
Struktur-Funktions-Modelle von Pflanzen
Test über [Thema] [Ihr Name] [Datum].
 Präsentation transkript:

CASL - Tool(s) Methoden und Modelle des Systementwurfs WS 07/08 Andre Waloszek, Johannes Starlinger CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

Inhalt Die CASL – Landschaft und Ihre Tool(s) HETS CASL – Partielle Funktionen CASL – Sub-Sorten CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

Die CASL – Landschaft und Ihre Tools Hauptanlaufstelle: CoFi: www.cofi.info Tools: CATS (CASL Tool Set) HOL-CASL CCC (CASL consistency checker) HETS (Heterogenous Toolset) outdated prototype CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

HETS – Heterogenous Toolset (Was ist das?) Gegeben: CASL – Spezifikation Aufgaben: Parsen Statische Analyse Beweis der Korrektheit (Proofs) Verschiedene Proover: Isabelle (Höherwertige Logik) SPASS (Logik erster Stufe) Andere (Vampire, MathServe) CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

HETS (Was ist das genau?) CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

CASL-Tool(s) – Andre Waloszek, Johannes Starlinger HETS (Haben wollen) Link auf CoFi Website Verfügbar für: Linux x86, Intel Mac, PPC Mac, Solaris on Sparc Java .jar Installer verwenden (recommended!!!) Depends: tcl/tk, alles andere wird automatisch installiert (Isabelle, SPASS, uDrawGraph) CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

HETS – ein Beispiel spec Strict_Partial_Order = sort Elem pred __<__ : Elem * Elem forall x, y, z:Elem . not (x < x) %(strict)% . (x < y) => not (y < x) %(asymmetric)% . (x < y) /\ (y < z) => (x < z) %(transitive)% end spec Partial_Order = Strict_Partial_Order then pred __<=__ : Elem * Elem forall x, y :Elem . (x <= y) <=> (x < y) \/ x = y %(newax)% spec Partial_Order_1 = Partial_Order then %implies . (x <= y) /\ (y <= z) => (x <= z) %(trans)% HETS – ein Beispiel

HETS – Der Graph, Die Knoten, Die Kanten Rote: haben offene Beweiselemente Grüne: erfüllen alle Beweispflichten Kanten Schwarze: nach Spez. definierende Kanten Sonst: Theoremkante Rote: entsprechen offenen Beweispflichten Grüne: entsprechen bewiesenen Elementen CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

CASL – Partielle Funktionen (1) Deklaration: spec Set_Partial_Choose [ sort Elem ] = Generated_Set [ sort Elem ] then op choose : Set →? Elem end Definitionsbereiche: spec Set_Partial_Choose_1 [ sort Elem ] = Set_Partial_Choose [ sort Elem ] then • ¬ def choose(empty) ∀S : Set • def choose(S) ⇒ choose(S) is in S spec Set_Partial_Choose_2 [ sort Elem ] = Set_Partial_Choose [ sort Elem ] then ∀S : Set • def choose(S) ⇔ ¬(S = empty) ∀S : Set • def choose(S) ⇒ choose(S) is in S end CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

CASL – Partielle Funktionen (2) Caveats: Undefiniertheit wird weitergereicht, auch an totale Funktionen Relationen auf undefinierte Werte halten nicht stand Gleichheit gilt auch für undefinierte Werte! → Benutzung von existenzieller Gleichheit (kommt gleich) Axiome können zu Totalität führen insert(choose(S), S) = S %% insert ist totale Funktion oder choose(S) is_in S 'same name, same thing' Prinzip → Besondere Vorsicht bei der Deklaration und Definition von partiellen Funktionen! Meistens besser Definitionsbereich exact anzugeben CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

CASL – Partielle Funktionen (3) Beispiele: spec Natural_Partial_Pre = Natural_Arithmetic then op pre : Nat →? Nat • ¬ def pre(0) ∀x : Nat • pre(suc(x)) = x end spec Natural_Partial_Subtraction = Natural_Partial_Pre then op __−__ : Nat × Nat →? Nat ∀x , y : Nat • def (x − y) ⇔ (y < x ∨ y = x) • x − 0 = x • x − suc(y) = pre(x − y) spec Natural = free type Nat ::= 0 | suc(Nat ) spec Natural_Order = Natural then free { pred __<__ : Nat × Nat ∀x , y : Nat • 0 < suc(x ) • x < y ⇒ suc(x ) < suc(y) } end spec Natural_Arithmetic = Natural_Order then ops 1 : Nat = suc(0); __+__ : Nat × Nat → Nat , assoc, comm, unit 0; __∗__ : Nat × Nat → Nat , assoc, comm, unit 1 • x + suc(y) = suc(x + y) • x ∗ 0 = 0 • x ∗ suc(y) = (x ∗ y) + x CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

CASL – Existenzielle Gleichheit Motivation: Bei 'normaler' Gleichheit ist undef=undef wahr Das gilt nicht bei existenzieller Gleichheit spec Natural_Partial_Subtraction_2 = Natural_Partial_Subtraction then ∀x , y, z : Nat • y − x =e= z − x ⇒ y = z %{ y − x = z − x ⇒ y = z wäre falsch, def (y − x) ∧ def (z − x) ∧ y − x = z − x ⇒ y = z ist richtig, aber die obige Abkürzung ist besser lesbar }% end → Bei bedingenden Gleichheiten in Axiomen partieller Funktionen besser existenzielle Gleichheit verwenden CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

CASL-Tool(s) – Andre Waloszek, Johannes Starlinger Sub-Sorten ohne Subsorts: 1. spec Generic_Monoid [sort Elem] = 2. sort Monoid 3. ops inj : Elem -> Monoid; 4. 1 : Monoid; 5. __*__ : Monoid * Monoid -> Monoid, assoc, unit 1 6. forall x, y : Elem . inj (x) = inj (y) => x = y 7. end mit Subsorts: 1. spec Generic_Monoid [sort Elem] = 2. sort Elem < Monoid 3. ops 1 : Monoid; 4. __*__ : Monoid * Monoid -> Monoid, assoc, unit 1 5. end Ausdruck von Beziehungen zwischen Sorten CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

Sub-Sorten & Vererbung 1. spec Vehicle = Natural 2. then sorts Car, Bicycle < Vehicle 3. ops max_speed : Vehicle -> Nat; 4. weight : Vehicle -> Nat; 5. engine_capacity : Car -> Nat 6. end Auf Sorten deklarierte Operationen werden an die Sub-Sorten vererbt 7. spec More_Vehicle = Vehicle 8. then sort Boat < Vehicle 9. end Dies gilt auch für nachträglich deklarierte Sub-Sorten CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

Sub-Sorten & Überladung Manchmal kann es nützlich sein bereits deklarierte Operationen mit Hilfe neu eingeführter Sub-Sorten zu überladen. 1. spec Positive = Natural_Partial_Pre 2. then sort Pos = {x : Nat . not x = 0} 3. end 4. spec Positive_Arithmetic = Positive 5. then ops 1 : Pos; 6. suc : Nat -> Pos; 7. __+__, __*__ : Pos * Pos -> Pos; 8. __+__ : Pos * Nat -> Pos; 9. __+__ : Nat * Pos -> Pos 10. end CASL-Tool(s) – Andre Waloszek, Johannes Starlinger

Sub-Sorten & partielle Funktionen Eine Sub-Sorten kann dem Definitionsbereich einer partiellen Funktion entsprechen. 1. spec Positive_Pre = Positive_Arithmetic 2. then op pre: Pos -> Nat ... ... Mit der Hilfe von Sub-Sorten können partielle Funktionen vermieden werden. 1. spec Natural_Positive_Arithmetic = 2. free types Nat ::= 0 | sort Pos 3. Pos ::= suc(pre : Nat) ... ... CASL-Tool(s) – Andre Waloszek, Johannes Starlinger