Repräsentation von Datenstrukturen im

Werbung
Repräsentation von
Datenstrukturen im π -Kalkül
Simon Pinkel,
Betreuer: Guido Tack
Seminar: Theorie kommunizierender Systeme: Derπ -Kalkül
Gliederung
1.
2.
3.
4.
5.
Motivation
Darstellung von Daten im π -Kalkül
Vergleich mit Alice
persistente Daten
Zusammenfassung
Motivation
%XII ( Q ) := ∑ X LQX .%XIIX( Q )
%XII
„
„
(Q)
G
Y ,Z
∑ X LQX .%XIIX(,QYG),Z +RXWZG .%XIIYG( Q )
:= {
RXWZ . %XII YG( Q )
G
(|Y | < Q −1)
G
(|Y | = Q −1)
CCS-Buffer beliebiger Größe
2 Kompromisse:
{
{
Erweiterung des Kalküls (Parameter)
Wertemenge V endlich
Æ Darstellung im π -Kalkül
kompromisslos möglich!
Darstellung
„
Idee: Werte selektieren aus einem Menu!
Menu
G
Z(D )
G
[(D )
G
\ (D )
G
] (D )
Wert
Programm
Darstellung
„
Idee: Werte selektieren aus einem Menu!
Menu
G
Z(D )
G
[ (D )
G
\ (D )
G
] (D )
Wert
Programm
Wahrheitswerte
Beispiel: Wahrheitswerte
7UXH(N ) := N (W I ).W
)DOVH(N ) := N (W I ). I
7UXH N ≡ N (W I ).W
W’
W
N
W ’.3 + I ’.4
N W ’ I ’ .(W ’.3 + I ’.4)
3
flüchtige Daten
„
„
„
„
7UXH(N ) := N (W I ).W
Daten = unäre Abstraktionen )DOVH(N ) := N (W I ). I
Argument = /RNDWLRQ N
Rechnung = Selektion aus gesendetem 0HQX
Rechenoperationen = abgeleitete Operatoren:
&RQG ( 3, 4 )(N ) := (new W I )N W I .(W.3 + I .4 )
Æ Berechnungen = Reaktionen(τ )
„ Rechnen zerstört die Datenstruktur
Zahlen
„
parametrisierte Menueinträge
...
3
Menu
N
null
succ(N)
4
Programm
Zahlen
„
parametrisierte Menueinträge
...
N
3
Menu
null
succ(N)
4
Programm
Zahlen
„
Konstruktoren:
=HUR := ( N ).N ( Q V ).Q
6XFF( 1 ) := (N ). new O ( N (Q V ).V O | 1 O )
„
Dekonstruktor:
„
Beispiel:
1XPEHUFDVHV ( 3, ) )(N ) := (new Q V )N Q V .(Q.3 + V.) )
4 = 6XFF( 6XFF( 6XFF( 6XFF( 1XOO ))))
Korrektheit von Numbercases
6XFF( 1 ) N | 1XPEHUFDVHV ( 3, ) ) N →* new O ( 1 O | ) O )
6XFF( 1 ) N
= new O (N (Q V ).V O | 1 O )
new O ( V O | 1 O )
new O
1 O
1XPEHUFDVHV ( 3, ) ) N
N
= (new Q V )N Q V .(Q.3 + V.) )
V
(new Q V )(Q.3 + V.) )
O
) O
(für =HUR analog)
Listen
„
2
Y
gleiche Idee wie bei Zahlen: Zeiger auf
die Restliste und aktuelles Element
...
[v2,v3,v4]
Menu
1
Y
N
[v1,v2,v3,v4]
nil
cons(NY)
Programm
Listen
„
2
Y
gleiche Idee wie bei Zahlen: Zeiger auf
die Restliste und aktuelles Element
...
[v2,v3,v4]
k
Menu
1
nil
cons(NY)
[v1,v2,v3,v4]
Programm
v1
Listen
„
Konstruktor:
1LO := (N ).N ( Q F ).Q
&RQV(9 , /) := (N ).QHZ Y O (N ( Q F ).F < Y O > |9 < Y > | / < O >)
„
Dekonstruktor:
„
Beispiel:
/LVWFDVHV( 3, ) )(N ) := ( QHZ Q F )N Q F .(Q.3 + F.) )
[1, 2,3, 4] = &RQV(1, &RQV (2, &RQV(3, &RQV(4, 1LO ))))
Programmierung
GHFU (NP) := case N of
=HUR
⇒ =HUR P
6XFF(N ’) ⇒ P(Q V ).N ’ Q V
~ > GHFU (NP) | 6XFF( 1 ) N →* ≈ ( 1 ) P
1FRS\ (OP) := case O of
=HUR
⇒ =HUR P
6XFF(O ’) ⇒ new P ’(P( Q V ).V P ’ | 1FRS\ (O ’P ’))
~ > 1FRS\ OP | 1 O →* 1 P
SOXV (NOP) := case N of
=HUR
⇒ 1FRS\ OP
6XFF(N ’) ⇒ new P ’(P(Q V ).V P ’ | SOXV (N ’O P ’) )
~ > SOXV (NOP) | . N | / O →* ( . + /) P
Korrektheit von plus
SOXV(NOP) | . N | / O →* ( . + /) P :
strukturelle Induktion über . :
. = =HUR :
=HUR N
N
1XPEHUFDVHV( 1FRS\ OP ,...) N
/ O
/ O
O
1FRS\ OP
*
/ P = (0 + /) P
Korrektheit von plus
SOXV(NOP) | . N | / O →* ( . + /) P :
strukturelle Induktion über . :
. = 6XFF( . ') :
6XFF( . ’) N
N
/ O
.’ N’
N’
1XPEHUFDVHV(...,(N ’). new P ’(P(Q V ).V P ’ | SOXV(N ’O P ’) ) N
new P ’(P(Q V).V P ’ | SOXV(N ’O P ’) )
*
/ O
Induktionsannahme
new P ’(P(Q V ).V P ’ | ( . ’+ /) P ’ ) = 6XFF( . ’+ /) P = ( . + /) P
Unsichere Operatoren
„
„
bisher definierte Operationen waren
Abstraktionen
Argumente waren die Lokationen der zu
verrechnenden Werte Æ Unsicher! Beispiel:
3 := 1FRS\ OP | 3 O | 4 O
Æ 2 mögliche Reaktionen:
3 →* 3 P | 4 O , 3 →* 3 O | 4 P
„
Lösung: Restriktion!
10RYH( 1 ) := (P ). new O ( 1 O | 1FRS\ OP )
Vergleich mit Alice
„
Beispiel:
. N | / O | -RLQ NOP | /HQJWK P
versus
let
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
persistente Daten
7UXH N ≡ N (W I ).W
ƒ
ƒ
N
N W ’ I ’ .(W ’.3 + I ’.4)
Daten verschwinden durch Benutzung
Æ Replikation:
*7UXH(N ) := !N (W I ).W
*)DOVH(N ) := !N (W I ). I
Zahlen:
*=HUR := (N ).!N (Q V ).Q
*6XFF( 1 ) := (N ).new O (!N (Q V ).V O | 1 O )
*
3
persistent und veränderbar
„
Neu! Programm darf auch selektieren!
3
Y
Menu
Q
F (Y )
Nullref
Programm
persistent und veränderbar
„
Neu! Programm darf auch selektieren!
3
Y
Y
Menu
Q
F (Y )
Ref(v)
Programm
persistent und veränderbar
„
Neu! Programm darf auch selektieren!
3
Y
Y
Menu
Q
F (Y )
Ref(v)
Programm
persistent und veränderbar
„
Neu! Programm darf auch selektieren!
3
Y
Y
Menu
Q
F (Y )
Nullref
Programm
persistent und veränderbar
„
Referenzen
1XOOUHI ( U ) := U (Q F ).(Q . 1XOOUHI U + F(Y ’).5HI UY ’ + Q. 1XOOUHI U )
5HI ( UY ) := U (Q F ).(F Y .5HI UY + F( Y ’).5HI UY ’ + Q. 1XOOUHI U )
Æ veränderbare Zelle(sicher):
6WRUH(9 ) := ( U ). new Y ( 5HI UY | 9 Y )
„
Operationen:
5HIFDVHV( 3, ) ) := ( U ).(new Q F ) U QF .(Q.3 + F.) )
1XOOLI\ ( 3 ) := ( U ).(new Q F ) U QF .Q .3
$VVLJQ( 3 ) := ( UY ).(new Q F ).U QF .F Y .3
Zusammenfassung
„
„
„
„
„
„
„
Daten empfangen ein 0HQX über eine /RNDWLRQ N
Daten selektieren 0HQXRSWLRQ
Darstellung beliebig großer Datenstrukturen
(Zahlen/Listen) ÆSDUDPHWULVLHUWH0HQXRSWLRQHQ
Berechnungen sind nebenläufig, Restriktionen
verhindern ungewollte Reaktionen
Korrektheit der abgeleiteten Operatoren lässt sich
PHLVWdurch 1DFKUHFKQHQGHU5HDNWLRQHQ zeigen
Replikation verhindert „Flüchtigkeit“ der Darstellung
Referenzen ergeben sich aus:
{
{
Replikation
Erweiterung des Protokolls
Referenzen
„
„
Robin Milner, &RPPXQLFDWLQJ DQG0RELOH6\VWHPV
WKH 3L&DOFXOXV, Cambridge University Press, 1999
The Alice Project, http://www.ps.uni-sb.de/alice/
Church-Encodings
Darstellung von Daten im λ -Kalkül:
W ::= [ | λ [.W | W W
„
(λ [.W ) W ’ → W[ [ := W ’]
WUXH := λ [\. [
IDOVH := λ [\. \
]HUR := λ VQ.Q (λ [. [ )
VXFF( 1 ) := λ VQ.V 1
7UXH := (N ).N (W I ).W
)DOVH := (N ).N (W I ). I
=HUR := (N ).N ( V Q).Q
6XFF( 1 ) := (N ).new O (N (Q V ).V O | 1 O )
Herunterladen