Sunteți pe pagina 1din 48

Curs 5: Specificaţii

spaţio-temporale
2016-2017 Dezvoltarea aplicaţiilor interactive
1 / 47
Cuprins

1 Modelarea inter-acţiunii prin griduri

2 Dualitatea spaţiu-timp

3 Tipuri de date temporale

4 Specificaţii spaţio-temporale

5 Specificarea unui joc

6 Specificarea unui sistem OO

2 / 47
Modelarea inter-acţiunii prin griduri

3 / 47
Modelarea inter-acţiunii prin griduri

Convenţia noastră este că ı̂ntr-un grid există o cauzalitate


stânga-dreapta (procesul din dreapta poate fi executat după ce cel din
stânga a fost executat), dar nu şi invers.
Cum putem modela inter-acţiunea? Un proces dintr-un grid poate
trimite un mesaj unui proces din dreapta sa, dar nu poate primi un
răspuns ı̂napoi.
Aparent, gridurile sunt bune pentru a modela acţiuni (ca trimiterea
mesajelor ı̂n modelul stăpân-sclav), dar nu inter-acţiuni reale (ca
apelarea unei proceduri şi aşteptarea rezultatului).

4 / 47
..Modelarea
..Modelareainter-actiunii cu cu
inter-actiunii griduri
griduri
Modelarea inter-acţiunii prin griduri
Actiune
Actiune vs. vs.inter-actiune:
inter-actiune: AvemAvemmaimaijos jos
două
douăprocese (fire(fire
procese de de
execuţie)
Avem mai (a) (a)
execuţie)jos şi (b)
două carecare
şi (b) interacţionează
procese a şi b care şi reprezentarea
interacţionează şi reprezentarea
interacţionează şi interacţiei
interacţiei
reprezentarea
interacţiei
lor cu lor cu un grid.
lor un
cu grid.
un grid.
(i) o(i)interacţiune
o interacţiune (ii) (ii)
gridul corespunzător
gridul corespunzător
(i) o interacţiune (ii) gridul corespunzător
a ab b a ab b
X XY Y X XY Y

Z Z Z Z

a ab b a ab b
SlideSlide
7.9 7.9 CS-52xx / Dezvoltarea
CS-52xx Aplicatiilor
/ Dezvoltarea Interactive,
Aplicatiilor Sem.2
Interactive, / G Stefanescu
Sem.2 / G Stefanescu

5 / 47
Modelarea inter-acţiunii prin griduri

Gridurile sunt obiecte logice, nu geometrice.


O situaţie de comunicare ı̂n ambele direcţii ı̂ntre două procese a şi b
este izomorfă cu cea prezentată ı̂n figura anterioară ı̂n (i).
Dacă alfabetul de griduri este suficient de bogat pentru a conţine
celule vide, identităţi, colţuri, intersecţii
atunci figura din (i) poate fi reprezentată cu gridul din (ii).
Deci, gridurile nu sunt restrictive, putând modela orice fel de
interacţiune (cu condiţia ca alfabetul să conţină constantele
enumerate mai sus).

6 / 47
Dualitatea spaţiu-timp

7 / 47
DualitateST-Dual
spaţiu-timp
picture
space High level: x:Int, y:Array[1..10] of Int;
al picture
time
tape
High level: temporal data

memory state
stream

job requirement
Software

new job
component

new state

High-level srv-programs / Spring, 2015


8 / 47
Dualitate spaţiu-timp

”Teza” de dualitate spaţiu-timp:

Mediul de ”calculabilitate globală” (calculabilitate ı̂n reţea) este invariant


relativ la dualitatea spaţiu-timp.
[inclusă ı̂n: G. Ştefănescu, Network algebra, Springer, 2000]

9 / 47
Structuri temporale de nivel ı̂nalt
Structuri temporale de nivel ı̂nalt
sLinkedList
2001 2002 2003
date cu
Date cu reprezentarea lor
reprezentarea 2003 2001 2002

uzuală
lor uzuală (spaţială):
(spaţială) tLinkedLists
sArray
sBool,sBool,
sInt,sInt, sArray,
sArray,

I will be

next week
sLinkedList, etc.
sLinkedList, etc.
tArray sInt
şi dualul lor
şi dualul lor temporal 7 3 5 3
(date cu reprezentare
temporal (i.e., date
in Singapore

temporală)cu reprezentare I will be


sBool
tBool, tInt,temporală):
tArray, 1
tLinkedList, etc. tInt
next week

in Singapore

tBool, tInt, tArray, 7


3
tLinkedList, etc. 5 tBool
3 1
Slide 7.5 CS-52xx / Dezvoltarea Aplicatiilor Interactive, Sem.2 / G Stefanescu

10 / 47
Convertori spaţiu-timp
Convertori spatiu-timp; calculabilitate ı̂n spatiu
... nxy−
convertori in timp
...
... ...
spatiu-timp ... ... y
şi ...
timp-spatiu timp−spatiu spatiu−timp 2y
Convertori spaţiu-timp
folosiţi
şi timp-spaţiu pentru
folosiţi ...
a
pentru a transforma transforma n x y − calculat in spatiu
ny
calculabilitatea
calculabilitatea ı̂n timp ... ...
ı̂n calculabilitateaı̂n ı̂n timp y
spaţiu, şi invers. ı̂n
calculabilitate ... y 2y ... ny ...
ı̂n spaţiu
ny
...

Slide 7.6 CS-52xx / Dezvoltarea Aplicatiilor Interactive, Sem.2 / G Stefanescu

11 / 47
Tipuri de date temporale

12 / 47
Date spaţiale vs. date temporale

Banda Turing a fost primul model de memorie ”spaţială” folosită ı̂n


modelele de calculabilitate (bazate pe maşini de calcul)
structurile uzuale de date pot fi implementate ı̂n acest model simplu

Dimensiunea spaţială
banda Turing are şi o dimensiune temporală (ca şi celelalte tipuri de
organizare a memoriei folosite ı̂n programarea imperativă)
specific este faptul că celulele de memorie pot fi accesate ı̂ntr-un timp
constant
memorie spaţială: spaţiul potenţial nelimitat şi timpul limitat de acces

13 / 47
Date spaţiale vs. date temporale

Date temporale
vom folosi sugestia dată de dualitatea spaţiu-timp pentru a crea
structuri de date complexe ı̂n timp, implementabile pe structura
simplă de stream
aceste memorii temporale vor fi potenţial nelimitate ı̂n timp, dar cu
extensie spaţială limitată

14 / 47
Structurile de control ca date temporale

Structurile de control suplinesc rolul datelor temporale ı̂n programarea


uzuală:
Dacă se ia o instrucţiune dintr-un program şi se notează timpul ı̂n
care este activată, atunci se obţine o dată temporală!
Dar aceste date apar ı̂ntr-o formă impură, căci instrucţiunile combină
controlul cu datele memoriei (spaţiale).
Propunerea este de a rupe legatura structurilor de control cu datele
spaţiale şi de a reprezenta datele temporale ı̂ntr-o formă pură.

15 / 47
Regiştri

Un registru conţine un număr natural (ı̂n modelul teoretic, numerele


sunt potenţial nelimitate)
Regiştrii se pot implementa pe o bandă Turing.
La nivelul regiştrilor, problemele de nivel scăzut ca
identificarea poziţiei regiştrilor pe bandă,
deplasarea lor (dacă nu este suficient spaţiu),
operaţiile aritmetice sau logice la nivel de bit,
etc.
se estompează.

16 / 47
Stream-uri

noţiunea duală temporală a benzii Turing


o secvenţă finită sau infinită de date ordonate ı̂n timp
se reprezintă sub forma
a0 _ a1 _ a2 _ . . .
unde a0 , a1 , a2 sunt datele sale (”tokens”) la momentele de timp
0, 1, 2, respectiv
este nelimitată ı̂n timp
poate fi gândit ca rezultatul observării datelor transmise pe un canal
de comunicaţie - el afişează o dată (de tipul canalului) ı̂n fiecare
moment de timp

17 / 47
Voci

Voce
se defineşte similar cu un registru
este o structură temporală de date care conţine un număr natural
vocile se pot implementa pe un stream, ca regiştrii pe o bandă Turing.

Exemplu:
O voce v care conţine 2017 este definită de o adresă temporală t0
(unde ı̂ncepe stream-ul) şi de o lungime (aici 4, dacă se foloseşte
reprezentarea zecimală).
Celula ataşata stream-ului va afişa cifrele 2, 0, 1, 7 ı̂n momentele
t0 , t0 + 1, t0 + 2, t0 + 3.

18 / 47
Voci

La nivelul specificaţiilor (sau al programelor interactive de nivel ı̂nalt),


multe detalii nu ne interesează, cum ar fi:
unde anume ı̂ncepe efectiv o voce pe stream;
dacă vocile se reprezintă continuu (toate cifrele sale sunt vecine pe
stream) sau alternant (pe rând, câte o cifră din fiecare voce), sau
altfel;
cum se fac operaţiile aritmetice şi cele logice la nivel de bit temporal;
etc.

Detalii ca cele de mai sus vor fi necesare la nivelul unei specificaţii


rafinate, care să fie implementată pe o maşină concretă care are
restricţii spaţio-temporale clare.

19 / 47
Alte date temporale

Multe din tipurile de date uzuale au o versiune temporală - le vom


nota adăugând un t ı̂n faţa datelor uzuale
Exemple:
tBool (booleeni)
tInt (ı̂ntregi, de diverse lungimi)
tArray (vectori)
tLinkedList (liste ı̂nlănţuite)
etc.

20 / 47
Specificaţii spaţio-temporale

21 / 47
Specificaţii (spaţio-temporale) relaţionale

Distingem ı̂ntre produse de date reprezentate spaţial şi temporal astfel


(matematic, ambele sunt produse Carteziene uzuale):
⊗ este produsul spaţial; notăm N⊗k := N ⊗ . . . ⊗ N (de k ori)
_ este produsul temporal; notăm N_k := N _ . . . _ N (de k ori)

O specificaţie spaţio-temporală relaţională este o relaţie


S ⊆ (N_m × N⊗p ) × (N_n × N⊗q )
ı̂ntre voci şi registri de intrare şi de ieşire.

22 / 47
Specificaţii (spaţio-temporale) relaţionale

Tipul specificaţiei este indicat prin notaţia


S : (m, p) → (n, q),

m (resp. p) este numărul de voci de intrare (resp. registri de intrare),


n (resp. q) este numărul de voci de ieşire (resp. registri de ieşire).

Pe elemente, o specificaţie este descrisă ca o relaţie ı̂ntre tupluri


concrete
hv | r i 7→ hv 0 | r 0 i,
unde v , v 0 (resp. r , r 0 ) sunt tupluri de voci (resp. regiştri).

23 / 47
Specificaţii (spaţio-temporale) relaţionale
Exemple de specificatii relationale
Exemplu
xemple: Constatele
Constantele de baza de
suntbază sunt

c0 = , c1 = , c2 = , c3 = , c4 = , c5 =
le au oEleinterpretare relaţională naturală, anume:
au o interpretare relaţională naturală, anume

/
c0 = 0;
c1 = {⟨ | x⟩ #→ ⟨ | x⟩ : x ∈ N};
c2 = {⟨x | ⟩ #→ ⟨x | ⟩ : x ∈ N};
c3 = {⟨ | x⟩ #→ ⟨x | ⟩ : x ∈ N} (convertor spaţiu-timp);
c4 = {⟨x | ⟩ #→ ⟨ | x⟩ : x ∈ N} (convertor timp-spaţiu);
c5 = {⟨x | y⟩ #→ ⟨x | y⟩ : x, y ∈ N}.
24 / 47
Specificaţii (spaţio-temporale) relaţionale
Exemple de specificatii relationale
Exemplu
xemple: Constatele
Constantele de baza de
suntbază sunt

c0 = , c1 = , c2 = , c3 = , c4 = , c5 =
le au oEleinterpretare relaţională naturală, anume:
au o interpretare relaţională naturală, anume

/ c0 = ∅
c0 = 0;
c1 = {h |xi 7→ h |xi | x ∈ N}
c1 = {⟨ | x⟩ #→ ⟨ | x⟩ : x ∈ N};
c2 = {hx| i 7→ hx| i | x ∈ N}
c2 = {⟨x | ⟩ #→ ⟨x | ⟩ : x ∈ N};
c3 = {h |xi 7→ hx| i | x ∈ N} (convertor spaţiu-timp)
c3 = {⟨c4| x⟩ #→ ⟨x | ⟩ : x ∈ N} (convertor spaţiu-timp);
= {hx| i 7→ h |xi | x ∈ N} (convertor timp-spaţiu)
c4 = {⟨x #→ ⟨i |7→x⟩hx|y
c5 |=⟩{hx|y : xi |∈x,N} (convertor timp-spaţiu);
y ∈ N}
c5 = {⟨x | y⟩ #→ ⟨x | y⟩ : x, y ∈ N}.
24 / 47
Specificaţii compuse

Specificaţiile se pot compune orizontal şi vertical, dacă tipurile corespund.


Fie două specificaţii

S1 : (m1 , p1 ) → (n1 , q1 ) şi S2 : (m2 , p2 ) → (n2 , q2 ).


Compunerea orizontală:
S1 B S2
este definită dacă n1 = m2
tipul lui S1 B S2 este (m1 , p1 + p2 ) → (n2 , q1 + q2 )
rezultatul este cel aşteptat:

hv |r1 , r2 i 7→ hv 00 |r10 , r20 i ı̂n S1 B S2


dacă
există v astfel ı̂ncât hv |r1 i 7→ hv 0 |r10 i ı̂n S1 şi hv 0 |r2 i 7→ hv 00 |r20 i ı̂n S2
0

25 / 47
Specificaţii compuse

Fie două specificaţii

S1 : (m1 , p1 ) → (n1 , q1 ) şi S2 : (m2 , p2 ) → (n2 , q2 ).


Compunerea verticală:
S1 _ S2
este definită dacă q1 = p2
tipul lui S1 _ S2 este (m1 + m2 , p1 ) → (n1 + n2 , q2 )

26 / 47
Specificarea unui joc

27 / 47
Jocul 1-2 Jocul 1-2

1-2 este Jocul


un joc simplu folosit aici pentru
1-2 este
enţia aspectele
un joc folosit aici pentru
temporale subtile ale sis-
a evidenţia
aspectele temporale subtile ale sistemelor interac- 1 2
tive.
or interactive.
Jocul foloseşte o tablă n × n şi joi jucători, unul
2 1
foloseştefolosind
o tablă n×
”1”, n şi”2”.
celălalt doi jucători, unul 2
nd ‘1’, celălalt
Jucătorii ‘2’.
alternează mutările, scriind simbolul lor ı̂ntr-o celulă a tablei.
ori alternează la mutare, scriind simbolul lor ı̂ntr-o celulă
Câstigă jucătorul care obţine 3 simboluri consecutive pe linie, coloană
ei. sau diagonală.

gă jucătorul care


Pentru obţineluăm
simplitate, 3 simboluri consecutive
n = 3, iar celulele le notăm cupe
1 −linie,
9 (ı̂n
ordinea stânga-dreapta, apoi sus-jos).
nă, ori diagonală.
u simplitate, luăm n = 3, iar celulele le notăm cu cifre 1-9
28 / 47
Specificaţie

Specificaţia S : (2, 1) → (2, 1) este definită de tuple


hp1 , p2 |ti 7→ ha1 , a2 |t 0 i
unde
t este registru pentru starea tablei, anume a i-a cifra a lui t descrie
conţinutul celulii i. În t codul este:
0 (celula vidă)
1 (celula cu 1)
2 (celula cu 2)
p1 , p2 sunt voci de intrare care ı̂nregistrează acţiunile jucătorilor, iar
a1 , a2 sunt voci de ieşire care stabilesc scorul. În p1 , p2 codul este:
0 (nicio acţiune)
k ∈ {1, . . . , 9} (scrie simbolul său ı̂n celula k)
În a1 , a2 codul este:
0 (mutare greşită/ı̂nfrângere)
1 (mutare bună)
2 (victorie)
29 / 47
Specificaţie

Exemplu
Un joc complet care se termină cu remiză:
h503040801, 060207090|000000000i 7→
h111111111, 111111111|121112212i
19 24 13
15 11 22
26 17 28
(indicii reprezintă ordinea mutărilor)

30 / 47
Specificaţie

Exemplu
O strategie mai bună pentru jucătorul 1, care câştigă:
(”*” ı̂nseamnă orice)
h50208 ∗ ∗ ∗ ∗, 06010 ∗ ∗ ∗ ∗|000000000i 7→
h11112 ∗ ∗ ∗ ∗, 11110 ∗ ∗ ∗ ∗|21 ∗ ∗12 ∗ 1∗i
24 13
11 22
15
(indicii reprezintă ordinea mutărilor)

31 / 47
Specificaţie

Exemplu
Jucătorul 2 nu face o mutare când e rândul său, deci pierde:
h5030 ∗ ∗ ∗ ∗∗, 0600 ∗ ∗ ∗ ∗ ∗ |000000000i 7→
h1112 ∗ ∗ ∗ ∗∗, 1110 ∗ ∗ ∗ ∗ ∗ | ∗ ∗1 ∗ 12 ∗ ∗∗i

Ambii jucători fac o mutare ı̂n acelaşi timp, deci jucătorul 2 pierde
deoarece nu era rândul său:
h503 ∗ ∗ ∗ ∗ ∗ ∗, 061 ∗ ∗ ∗ ∗ ∗ ∗|000000000i 7→
h112 ∗ ∗ ∗ ∗ ∗ ∗, 110 ∗ ∗ ∗ ∗ ∗ ∗| ∗ ∗1 ∗ 12 ∗ ∗∗i

32 / 47
Expresivitatea specificaţiilor

Este clar că formalismul de mai sus este suficient de puternic pentru a
permite o descriere completă a jocului.
Mai mult, se pot descrie chiar situaţii când ambii jucători mută ı̂n
acelaşi timp, dar unul uită să mute, etc.
Rămâne de văzut ı̂n ce măsură astfel de specificaţii sunt naturale şi
dacă ele pot fi implementate pe maşini reale, cu constrângeri
spaţio-temporale pentru date.

33 / 47
Specificarea unui sistem OO

34 / 47
Specificarea unui sistem OO

Sistemele OO pot fi foarte complexe.


Scopul nostru este modest; pe un exemplu simplu, arătăm:
cum putem specifica sistemele OO
cum putem descompune specificaţiile
care este utilitatea tipurilor temporale

În particular, vom vedea că este util să specificăm sisteme deschise,
iar pentru specificarea lor avem nevoie de tipuri de date temporale de
nivel ı̂nalt.

35 / 47
Sistem OO: Bile colorate
Sistem OO: Bile colorate
Sistemul constă din bile de trei culori (roşu, gal-
: ben, albastru) situate ı̂ntr-un dreptunghi.

constă din
Bilelebile demuta
se pot 3 culori
folosind butoane de deplasare
stânga-dreapta şi sus-jos.
alben, albastru)
Culoarea unei bile se schimbă ı̂n
ntr-un dreptunghi;
roşu / galben / albastru

pot mutacandfolosind
atinge
două butoane de deplasare stânga-
(marginea din stânga-dreapta) / (un colţ) / (marginea de sus-jos)
şi sus-jos;
Pentru simplitate, dreptunghiul este 5 × 5 şi avem o singură bilă.
a unei bile se schimbă ı̂n roşu / galben / albastru când
marginea din stânga-dreapta) / (un colţ) / (marginea de
, respectiv;
36 / 47
Sistem OO: Bile colorate

Formal, folosim:
Variabile:
x – coordonata orizontală
y – coordonata verticală
z – culoarea (r /y /b reprezintă roşu/galben/albastru, resp.)

Metode:
h(u) – deplasare orizontală, unde u este
d− pentru deplasare cu o celulă la stânga
d0 pentru stat pe loc
d+ pentru deplasare cu o celulă la dreapta
v (u) – deplasare verticală, unde u este
d− pentru deplasare cu o celula ı̂n jos
d0 pentru stat pe loc
d+ pentru deplasare cu o celulă ı̂n sus
c – returnează culoarea

37 / 47
Specificaţia globală

Fixăm ı̂ntâi tipul comportamentului interactiv intrare-ieşire:


interacţia de intrare se face cu butoanele de deplasare
la ieşire aflăm culoarea

Folosim
un registru pentru fiecare variabilă
o voce pentru fiecare metodă sau atribut

Tipul specificaţiei globale este S : (3, 3) → (3, 3).


Specificaţia va fi o relaţie definită pe tuple
hh, v , c|x, y , zi 7→ hh0 , v 0 , c 0 |x 0 , y 0 , z 0 i

Observaţie: Ar trebui folosite cifre 0 − 9 pentru a coda culoarea r /y /b sau


deplasarea d− , d0 , d+ ı̂n regiştri/voci; omitem această codificare.

38 / 47
Specificaţia globală

Exemplu

(1) hh1 , v1 , c1 |3, 3, y i 7→ hh10 , v10 , c10 |3, 3, bi

unde
h1 = d+ d+ d0 d− d+ d− d− d0
v1 = d− d0 d+ d− d− d0 d+ d+
c10 = yrrrybbb
c1 , h10 , v10 sunt irelevante

Explicaţii:
poziţiile (cifrele) din h, v descriu starea butoanelor ı̂n fiecare moment
de timp (presupunem că butoanele sunt independente, deci orice
combinaţie este permisă)

39 / 47
Specificaţia globală

Exemplu
dacă ai este a i-a cifră a unei voci a, atunci ı̂n pasul i sistemul trece
din starea (x, y , z) ı̂n starea (x 0 , y 0 , z 0 ) prin acţiunile h1i , v1i ; folosim
notaţia
hi ,v i
1 1
x, y , z −→ x 0, y 0, z 0

evoluţia sistemului este


d+ ,d− d+ ,d0 d0 ,d+ d− ,d− d+ ,d−
3, 3, y −→ 4, 2, y −→ 5, 2, r −→ 5, 3, r −→ 4, 2, r −→
d− ,d0 d− ,d+ d0 ,d+
5, 1, y −→ 4, 1, b −→ 3, 2, b −→ 3, 3, b

secvenţa de mai sus dă starea finală şi permite calculul vocii finale c10
a culorilor afişate.

40 / 47
Descompunerea orizontală a specificaţiilor

Specificaţia de mai sus poate fi descompusă orizontal astfel:


Definim o specificaţie pentru a modela mişcarea unei bile
1-dimensionale ı̂ntr-un interval.
Bila se poate deplasa ı̂n ambele direcţii. Când bila atinge un capăt de
interval se detectează acest eveniment şi se cumulează informaţia
ı̂ntr-o voce hit.
Luam două bile 1-dimensionale, una pentru direcţia orizontală,
cealaltă pentru cea verticală.
Compunem sistemele asociate ı̂mpreună cu un obiect auxiliar care
primeşte informaţia hit de la ambele bile 1-dimensionale şi generează
culoarea finală.

41 / 47
Descompunerea orizontală a specificaţiilor

Sistemul S se descompune astfel


S1 = Sh B Sv B Sc , unde

Sh : (5, 1) → (5, 1) este definit de


hh, v , c, hith, hitv |xi 7→ hh0 , v 0 , c 0 , hith0 , hitv 0 |x 0 i
Sv : (5, 1) → (5, 1) este definit de
hh, v , c, hith, hitv |y i 7→ hh0 , v 0 , c 0 , hith0 , hitv 0 |y 0 i
Sc : (5, 1) → (5, 1) este definit de
hh, v , c, hith, hitv |zi 7→ hh0 , v 0 , c 0 , hith0 , hitv 0 |z 0 i
cu transformări corespunzătoare care descriu variabilele cu prim (i.e.,
hith0 , x 0 , . . .) ı̂n funcţie de variabilele de intrare.
Sistemul original S se obţine restricţionând S1 la primele 3 voci h, v , c.

42 / 47
Descompunerea orizontală a specificaţiilor

Exemplu
Folosim 0/1 ı̂n hit pentru a reprezenta evenimentul de atingere a
marginii (0/1 pentru nu/da, resp.)
Cazul (1) de mai sus
hh1 , v1 , c1 |3, 3, y i 7→ hh10 , v10 , c10 |3, 3, bi
(1)
h1 = d+ d+ d0 d− d+ d− d− d0
v1 = d− d0 d+ d− d− d0 d+ d+
c10 = yrrrybbb
este descompus astfel:
cu h1 ı̂n Sh obţinem hith10 = 01101000 (şi x10 = 3)
cu v1 ı̂n Sv obţinem hitv10 = 00001100 (şi y10 = 3)
cy hith10 şi hitv10 in Sc obţinem c 0 = yrrrybbb (şi z10 = b)
Deci, prin restricţia la vocile h, v , c reobţinem rezultatul iniţial.

43 / 47
Utilitatea tipurilor temporale

Voci globale. Vocile din specificaţia S1 sunt globale (toate componentele


au acces la toate vocile). Această proprietate poate fi speculată de
componente ”rău voitoare” spre a falsifica informaţiile de interacţie.

Exemplu
Falsa interacţie În S1 componenta Sh poate falsifica datele:
Componenta Sh poate schimba conţinutul lui v , nepermiţându-i
componentei Sv să aibă o reacţie potrivită.
De exemplu, cu
Sh : hh, v , c, hith, hitv |xi 7→ hh, v 0 , c, hith0 , hitv |x 0 i,
0
unde v = d− d+ d− d+ d− d+ d− d+ , pentru orice v ,
Sh falsifică datele pentru butonul vertical nepermiţându-i lui Sv să işi
atingă marginea.
Dacă iniţial y = 3, Sv se tot mişcă alternant sus-jos, indiferent de
intrare.

44 / 47
Utilitatea tipurilor temporale

Tip restrâns (voci locale). Specificaţia iniţială are tipul redus


S : (2, 3) → (1, 3) ducând la
Sh : hh, v |x, y , zi 7→ hc|x 0 , y 0 , z 0 i.
Ea poate fi descompusă ı̂n forma
_ _
S2 = (Sh Id) B (Id Sv ) B Sc ,
unde Id sunt identităţi potrivite şi Sh , Sv , Sc sunt (cu aplicaţii
corespunzătoare pentru hith, x 0 , . . .)
Sh : (1, 1) → (1, 1) definită de hh|xi 7→ hhith|x 0 i
Sv : (1, 1) → (1, 1) definită de hv |y i 7→ hhitv |y 0 i
Sc : (2, 1) → (1, 1) definită de hhith, hitv |zi 7→ hc 0 |z 0 i

45 / 47
Utilitatea tipurilor temporale

Să notăm că


Sh _ Id : hh, v |xi 7→ hhith, v |x 0 i
Id _ Sh : hhith, v |y i 7→ hhith, hitv |y 0 i
deci tipul părţii drepte este egal cu tipul lui S, şi anume
S2 : hh, v |x, y , zi 7→ hc 0 |x 0 , y 0 , z 0 i
Cu astfel de descompunere detaliată şi restricţii de tip, ”falsul” de
mai sus nu mai este posibil: orice componentă are acces doar la
propriile voci.
Cum se vede din FIS-uri (sau din rv-programele pe care le vom studia
ı̂n cursul următor), tipul de interacţie locală a proceselor variază ı̂n
timp, aceleaşi procese putând experimenta diverse tipuri de interacţie
de-a lungul existenţei lor.

46 / 47
Pe săptămâna viitoare!

47 / 47

S-ar putea să vă placă și