Repräsentation von Datenstrukturen im -Kalkül Simon Pinkel, Betreuer: Guido Tack Seminar: Theorie...

Preview:

Citation preview

Repräsentation von Datenstrukturen im -Kalkül

Simon Pinkel,

Betreuer: Guido Tack

Seminar: Theorie kommunizierender Systeme: Der -Kalkül

Gliederung

1. Motivation2. Darstellung von Daten im -Kalkül3. Vergleich mit Alice4. persistente Daten5. Zusammenfassung

Motivation

CCS-Buffer beliebiger Größe

Erweiterung des Kalküls (Parameter) V endlich

Darstellung im -Kalkül kompromisslos möglich!

( ) ( ): .n nu uu

Buff in Buff( ) ( )

( )

, ,. . (| | 1)( )

. (| |, 1): {

nu v w v

nw

nv

uu

w

in Buff out Buff v nn

out Buffv w v nBuff

Motivation

CCS-Buffer beliebiger Größe 2 Kompromisse:

Erweiterung des Kalküls (Parameter) Wertemenge V endlich

Darstellung im -Kalkül kompromisslos möglich!

( ) ( ): .n nu uu

Buff in Buff( ) ( )

( )

, ,. . (| | 1)( )

. (| |, 1): {

nu v w v

nw

nv

uu

w

in Buff out Buff v nn

out Buffv w v nBuff

Motivation

CCS-Buffer beliebiger Größe 2 Kompromisse:

Erweiterung des Kalküls (Parameter) Wertemenge V endlich

Darstellung im -Kalkül kompromisslos möglich!

( ) ( ): .n nu uu

Buff in Buff( ) ( )

( )

, ,. . (| | 1)( )

. (| |, 1): {

nu v w v

nw

nv

uu

w

in Buff out Buff v nn

out Buffv w v nBuff

Darstellung

Idee: Werte selektieren aus einem Menu!

Wert Programm

Menu

( )w a

( )x a

( )y a

( )z a

Darstellung

Idee: Werte selektieren aus einem Menu!

Wert Programm

Menu

( )w a

( )x a

( )y a

( )z a

Wahrheitswerte

Beispiel: Wahrheitswerte( ) : ( ).

( ) : ( ).

True k k t f t

False k k t f f

k( ).True k k t f t ' ' .( '. '. )k t f t P f Q

Wahrheitswerte

Beispiel: Wahrheitswerte

't '. '.t P f Qt

k( ).True k k t f t ' ' .( '. '. )k t f t P f Q

( ) : ( ).

( ) : ( ).

True k k t f t

False k k t f f

Wahrheitswerte

Beispiel: Wahrheitswerte

( ).True k k t f t ' ' .( '. '. )k t f t P f Qk

P't '. '.t P f Qt

( ) : ( ).

( ) : ( ).

True k k t f t

False k k t f f

flüchtige Daten( ) : ( ).

( ) : ( ).

True k k t f t

False k k t f f

flüchtige Daten

Daten = unäre Abstraktionen

: ( ).

: (

(

).

)

( )

True k t f t

False k fk t f

k

flüchtige Daten

Daten = unäre Abstraktionen Argument = Lokation k

( ) : ( ).

( ) : ( ).

True t f t

F

k k

k kalse t f f

flüchtige Daten

Daten = unäre Abstraktionen Argument = Lokation k Rechnung = Selektion aus gesendetem Menu

( ) : ( ).

( ) : ( ).

True k k

False k k

t f t

t f f

flüchtige Daten

Daten = unäre Abstraktionen Argument = Lokation k Rechnung = Selektion aus gesendetem Menu Rechenoperationen = abgeleitete Operatoren:

Berechnungen = Reaktionen( )( , )( ) : (new ) .( . . )Cond P Q k t f k t f t P f Q

( ) : ( ).

( ) : ( ).

True k k t f t

False k k t f f

flüchtige Daten

Daten = unäre Abstraktionen Argument = Lokation k Rechnung = Selektion aus gesendetem Menu Rechenoperationen = abgeleitete Operatoren:

Berechnungen = Reaktionen( ) Rechnen zerstört die Datenstruktur

( , )( ) : (new ) .( . . )Cond P Q k t f k t f t P f Q

( ) : ( ).

( ) : ( ).

True k k t f t

False k k t f f

Zahlen

parametrisierte Menueinträge

4 Programm

Menu

succ(k)

null

3

k

...

Zahlen

parametrisierte Menueinträge

4 Programm

Menu

succ(k)

null

3 k

...

Zahlen

Konstruktoren:

Dekonstruktor:

Beispiel:

( , )( ) : (new ) .( . . )Numbercases P F k n s k n s n P s F

: ( ). ( ).

( ) : ( ).new ( ( ). | )

Zero k k n s n

Succ N k l k n s s l N l

4 ( ( ( ( ))))Succ Succ Succ Succ Null

Korrektheit von Numbercases

( )

new ( ( ). | )

Succ N k

l k n s s l N l

( , )

(new ) .( . . )

Numbercases P F k

n s k n s n P s F k

*( ) | ( , ) new ( | )Succ N k Numbercases P F k l N l F l

Korrektheit von Numbercases

( )

new ( ( ). | )

Succ N k

l k n s s l N l

( , )

(new ) .( . . )

Numbercases P F k

n s k n s n P s F k

new ( | )l s l N l (new )( . . )n s n P s Fs

*( ) | ( , ) new ( | )Succ N k Numbercases P F k l N l F l

Korrektheit von Numbercases

( )

new ( ( ). | )

Succ N k

l k n s s l N l

( , )

(new ) .( . . )

Numbercases P F k

n s k n s n P s F k

new ( | )l s l N l (new )( . . )n s n P s Fs

(für Zero analog)

*( ) | ( , ) new ( | )Succ N k Numbercases P F k l N l F l

N l F llnew l

Listen

gleiche Idee wie bei Zahlen: Zeiger auf die Restliste und aktuelles Element

Programm

Menu

nil

cons(k,v1)

[v1,v2,v3,v4]

1

2

[v2,v3,v4]

...

kv1

v2

Listen

gleiche Idee wie bei Zahlen: Zeiger auf die Restliste und aktuelles Element

Programm

Menu

nil

cons(k,v1)

v1

[v1,v2,v3,v4]

1

2

[v2,v3,v4]

...

k

v2

Listen

Konstruktor:

Dekonstruktor:

Beispiel:

: ( ). ( ).

( , ) : ( ). ( ( ). | | )

Nil k k n n

Cons L k new l k

c

V v c c v Vn l L lv

( , )( ) : ( ) .( . . )Listcases P F k newnc k n c n P c F

[1,2,3,4] (1, (2, (3, (4, ))))Cons Cons Cons Cons Nil

Programmierung

*

( ) : case of

( ') ( ). '

~ ( ) | ( ) ( )

decr km k

Zero Zero m

Succ k m n s k ns

decr km Succ N k N m

Programmierung

*

*

( ) : case of

( ') ( ). '

~ ( ) | ( ) ( )

( ) : case of

( ') new '( ( ). ' | ( ' '))

~ |

decr km k

Zero Zero m

Succ k m n s k n s

decr km Succ N k N m

Ncopy lm l

Zero Zero m

Succ l m m n s s m Ncopy l m

Ncopy lm N l N m

Programmierung

*

*

( ) : case of

( ') ( ). '

~ ( ) | ( ) ( )

( ) : case of

( ') new '( ( ). ' | ( ' '))

~ |

( ) : case of

( ') new '( (

decr km k

Zero Zero m

Succ k m n s k n s

decr km Succ N k N m

Ncopy lm l

Zero Zero m

Succ l m m n s s m Ncopy l m

Ncopy lm N l N m

plus klm k

Zero Ncopy lm

Succ k m m

*

). ' | ( ' ') )

~ ( ) | | ( )

n s s m plus k l m

plus klm K k L l K L m

Korrektheit von plus*( ) | | ( ) :

strukturelle Induktion über :

:

plus klm K k L l K L m

K

K Zero

Zero k

L l( ,...)Numbercases Ncopy lm k

k

Korrektheit von plus*( ) | | ( ) :

strukturelle Induktion über :

:

plus klm K k L l K L m

K

K Zero

Zero k

L l( ,...)Numbercases Ncopy lm k

k

L l Ncopy lml

2

Korrektheit von plus*( ) | | ( ) :

strukturelle Induktion über :

:

plus klm K k L l K L m

K

K Zero

Zero k

L l( ,...)Numbercases Ncopy lm k

k

L l Ncopy lml

2

(0 ) L m L m

*

Korrektheit von plus*( ) | | ( ) :

strukturelle Induktion über :

( ') :

plus klm K k L l K L m

K

K Succ K

( ')Succ K k

L l

(..., ( ').new '( ( ). ' | ( ' ') )Numbercases k m m n s s m plus k l m kk

Korrektheit von plus*( ) | | ( ) :

strukturelle Induktion über :

( ') :

plus klm K k L l K L m

K

K Succ K

( ')Succ K k

L l

(..., ( ').new '( ( ). ' | ( ' ') )Numbercases k m m n s s m plus k l m kk

' 'K k L lnew '( ( ). ' | ( ' ') )m m n s s m plus k l m'k

2

Korrektheit von plus*( ) | | ( ) :

strukturelle Induktion über :

( ') :

plus klm K k L l K L m

K

K Succ K

( ')Succ K k

L l

(..., ( ').new '( ( ). ' | ( ' ') )Numbercases k m m n s s m plus k l m kk

new '( ( ). ' | ( ' ) ' ) ( ' ) ( ) m m n s s m K L m Succ K L m K L m

Induktionsannahme*

' 'K k L lnew '( ( ). ' | ( ' ') )m m n s s m plus k l m'k

2

Unsichere Operatoren

bisher definierte Operationen waren Abstraktionen

Argumente waren die Lokationen der zu verrechnenden Werte

Unsichere Operatoren

bisher definierte Operationen waren Abstraktionen

Argumente waren die Lokationen der zu verrechnenden Werte Unsicher! Beispiel:

: | 3 | 4P Ncopy lm l l

Unsichere Operatoren

bisher definierte Operationen waren Abstraktionen

Argumente waren die Lokationen der zu verrechnenden Werte Unsicher! Beispiel:

2 mögliche Reaktionen:

: | 3 | 4P Ncopy lm l l

* *3 | 4 , 3 | 4 P m l P l m

Unsichere Operatoren

bisher definierte Operationen waren Abstraktionen

Argumente waren die Lokationen der zu verrechnenden Werte Unsicher! Beispiel:

2 mögliche Reaktionen:

Lösung: Restriktion!

: | 3 | 4P Ncopy lm l l

* *3 | 4 , 3 | 4 P m l P l m

( ) : ( ).new ( | )NMove N m l N l Ncopy lm

Vergleich mit Alice

Beispiel:

| | |K k L l Join klm Length m

Vergleich mit Alice

Beispiel:

versuslet

fun ccAppend (x::xs,ys) = x::(spawn ccAppend(xs,ys))

| ccAppend (nil,ys) = ys

in

spawn length (ccAppend(L,K))

end

gleiche nebenläufige Berechnungsdisziplin

| | |K k L l Join klm Length m

persistente Daten

Daten verschwinden durch Benutzung

( ).True k k t f t ' ' .( '. '. )k t f t P f Qk P*

persistente Daten

Daten verschwinden durch Benutzung Replikation:

* !

*

( ) : ( ).

( ) : ( ).!

True k k t f t

False k k t f f

( ).True k k t f t ' ' .( '. '. )k t f t P f Qk P*

persistente Daten

Daten verschwinden durch Benutzung Replikation:

Zahlen:

* !

*

( ) : ( ).

( ) : ( ).!

True k k t f t

False k k t f f

( ).True k k t f t ' ' .( '. '. )k t f t P f Qk P*

* !

*

: ( ). ( ).

( ) : ( ).new ( ( ). |! )

Zero k k n s n

Succ N k l k n s s l N l

persistent und veränderbar

Neu! Programm darf auch selektieren!

Nullref Programm

Menu

n

( )c v

3

v

persistent und veränderbar

Neu! Programm darf auch selektieren!

Ref(v) Programm

Menu

n

( )c v

3

vv

persistent und veränderbar

Neu! Programm darf auch selektieren!

Ref(v) Programm

Menu

n

( )c v

3

v v

persistent und veränderbar

Neu! Programm darf auch selektieren!

Nullref Programm

Menu

n

( )c v

3

v v

persistent und veränderbar

Referenzen( ) : ( ).( . ( '). ' . )

( ) : ( ).( . ( '). ' . )

Nullref r r n c n Nullref r c v Ref rv n Nullref r

Ref rv r n c c v Ref rv c v Ref rv n Nullref r

persistent und veränderbar

Referenzen

veränderbare Zelle(sicher):

( ) : ( ).( . ( '). ' . )

( ) : ( ).( . ( '). ' . )

Nullref r r n c n Nullref r c v Ref rv n Nullref r

Ref rv r n c c v Ref rv c v Ref rv n Nullref r

( ) : ( ).new ( | )Store V r v Ref rv V v

persistent und veränderbar

Referenzen

veränderbare Zelle(sicher):

Operationen:

( ) : ( ).( . ( '). ' . )

( ) : ( ).( . ( '). ' . )

Nullref r r n c n Nullref r c v Ref rv n Nullref r

Ref rv r n c c v Ref rv c v Ref rv n Nullref r

( ) : ( ).new ( | )Store V r v Ref rv V v

( , ) : ( ).(new ) .( . . )

( ) : ( ).(new ) . .

( ) : ( ).(new ). . .

Refcases P F r n c r nc n P c F

Nullify P r n c r nc n P

Assign P rv n c r nc c v P

Zusammenfassung

Daten empfangen ein Menu über eine Lokation k

Zusammenfassung

Daten empfangen ein Menu über eine Lokation k Daten selektieren Menuoption

Zusammenfassung

Daten empfangen ein Menu über eine Lokation k Daten selektieren Menuoption Darstellung beliebig großer Datenstrukturen

(Zahlen/Listen) parametrisierte Menuoptionen

Zusammenfassung

Daten empfangen ein Menu über eine Lokation k Daten selektieren Menuoption Darstellung beliebig großer Datenstrukturen

(Zahlen/Listen) parametrisierte Menuoptionen Berechnungen sind nebenläufig, Restriktionen

verhindern ungewollte Reaktionen

Zusammenfassung

Daten empfangen ein Menu über eine Lokation k Daten selektieren Menuoption Darstellung beliebig großer Datenstrukturen

(Zahlen/Listen) parametrisierte Menuoptionen Berechnungen sind nebenläufig, Restriktionen

verhindern ungewollte Reaktionen Korrektheit der abgeleiteten Operatoren lässt sich

meist durch Nachrechnen der Reaktionen zeigen

Zusammenfassung

Daten empfangen ein Menu über eine Lokation k Daten selektieren Menuoption Darstellung beliebig großer Datenstrukturen

(Zahlen/Listen) parametrisierte Menuoptionen Berechnungen sind nebenläufig, Restriktionen

verhindern ungewollte Reaktionen Korrektheit der abgeleiteten Operatoren lässt sich

meist durch Nachrechnen der Reaktionen zeigen Replikation verhindert „Flüchtigkeit“ der Darstellung

Zusammenfassung

Daten empfangen ein Menu über eine Lokation k Daten selektieren Menuoption Darstellung beliebig großer Datenstrukturen

(Zahlen/Listen) parametrisierte Menuoptionen Berechnungen sind nebenläufig, Restriktionen

verhindern ungewollte Reaktionen Korrektheit der abgeleiteten Operatoren lässt sich

meist durch Nachrechnen der Reaktionen zeigen Replikation verhindert „Flüchtigkeit“ der Darstellung Referenzen ergeben sich aus:

Replikation Erweiterung des Protokolls

Referenzen

Robin Milner, Communicating and Mobile Systems: the Pi-Calculus, Cambridge University Press, 1999

The Alice Project, http://www.ps.uni-sb.de/alice/

Church-Encodings

Darstellung von Daten im -Kalkül::: | . |

( . ) ' [ : ']

t x x t t t

x t t t x t

: .

: .

: . ( . )

( ) : .

true xy x

false xy y

zero sn n x x

succ N sn s N

: ( ). ( ).

: ( ). ( ).

: ( ). ( ).

( ) : ( ).new ( ( ). | )

True k k t f t

False k k t f f

Zero k k s n n

Succ N k l k n s s l N l

Recommended