repräsentation von datenstrukturen im -kalkül simon pinkel, betreuer: guido tack seminar: theorie...
TRANSCRIPT
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