Sunteți pe pagina 1din 7

5 Reprezentarea programelor abstracte

VEC February 14, 2010


Fie B un M -ux i X un monoid cu elementul neutru . Fie i, o : X M dou morsme de monoizi. Cu mici exceptii s a acesta este cadrul folosit aceast lectie. n a cazurile concrete X este monoidul liber al instructiunilor i M este monoidul aditiv al numerelor naturale. In s

Sintaxa

Denition 1 Fie a, b M . Se numete reprezentant de program cu a intrri i b ieiri o pereche ordonat x, f unde x X s a s s a i f B(ao(x), bi(x)). s Multimea tuturor reprezentantilor de programe cu a intrri i b ieiri se noteaz cu F lX,B (a, b). 2 a s s a Principalele operatii cu reprezentantii de programe sunt compunerea, suma i feedbackul. s Denition 2 Compunerea lui x, f din F lX,B (a, b) cu y, g din F lX,B (b, c) este F lX,B (a, c) i este denit prin n s a x, f ; y, g = xy, (f + 1o(y) )(1b +
i(x)

Xo(y) )(g + 1i(x) )(1c +

i(y)

Xi(x) ) .2

Denition 3 Suma lui x, f din F lX,B (a, b) cu y, g din F lX,B (c, d) este F lX,B (ac, bd) i este denit prin n s a x, f + y, g = xy, (1a + c Xo(x) + 1o(y) )(f + g)(1b +
i(x)

Xd + 1i(y) ) .2

Denition 4 Feedbackul lui x, f din F lX,B (ab, ac) este F lX,B (b, c) i este denit prin n s a x, f = x, a f .2 Pentru f B(a, b) denim EB (f ) F lX,B (a, b) prin EB (f ) = , f . Aceste denitii sunt sursa de inspiratie a urmtoarelor fapte. a

1.1

M-uxul instructiunilor

M -uxul instructiunilor Q(X) este denit prin Q(X)(a, b) = { a, x, b : x X} pentru a, b M , Compunerea a, x, b ; b, y, c = a, xy, c , Identitate 1a = a, , a suma a, x, b + c, y, d = ac, xy, bd , permutarea a Xb = ab, , ba , feedbackul la stnga a ab, x, ac = b, x, c . a Observm c dac X este comutativ, atunci Q(X) este biux. a a a

1.2
1.2.1

Fluxul conexiunilor
Cazul aciclic

acest paragraf presupunem numai c B este o M -csmns. Denim cele ce urmeaz o alt M -csmns K(B). In a n a a Pentru a, b M denim K(B)(a, b) = { f, i, o : i, o M, f B(ao, bi)}. Pentru f, i, o K(B)(a, b) i f , i , o K(B)(b, c) denim compunerea lor prin n s n f, i, o ; f , i , o = (f + 1o )(1b + i Xo )(f + 1i )(1c + i Xi ), ii , oo . Probm asociativitatea compunerii. Presupunem plus c f , i, o este K(B)(c, d). a n a n ( f, i, o ; f , i , o ); f , i, o = [(f + 1o )(1b + i Xo )(f + 1i )(1c + i Xi ) + 1o ](1c +

ii

Xo )(f + 1ii )(1d +


ii

Xii ), (ii )i, (oo )o =

(f + 1o o )(1b + i Xo + 1o )(f + 1io )(1c + i Xi + 1o )(1c +


Xo )(f + i Xi ; i Xi )(1d +

Xii ), i(i i), o(o o) =

(f + 1o o )(1b + i Xo + 1o )(f + i Xo ; o Xi )(1c + i i Xo )(1co + i Xi ) (f + i Xi )(1di + i Xi )(1d + i Xi + 1i )(1di + i Xi ), i(i i), o(o o) = (f + 1o o )(1b + i Xo + 1o )(1bo + i Xo )(f + 1oi )(1ci + (f + 1i i )(1d + ii Xi )(1di + i Xi ), i(i i), o(o o) =

Xi )(1c +
i

i i

Xo )
i i

(f + 1o o )(1b + i Xo o )(f + 1oi )(1c + i Xo + 1i )(f + 1i i )(1d + (f + 1o o )(1b + i Xo o )[(f + 1o )(1c + i Xo )(f + 1i )(1d + f, i, o ; (f + 1o )(1c + i Xo )(f + 1i )(1d +

Xi + 1i )(1d +
i i

Xi ), i(i i), o(o o) =

Xi ) + 1i ](1d +

Xi ), i(i i), o(o o) =

Xi ), i i, o o = f, i, o ; ( f , i , o ; f , i, o ).

Pentru orice f B(a, b) denim IB (f ) K(B)(a, b) prin IB (f ) = f, , . Mentionm urmtoarele reguli de calcul a a f, i, o ; IB (f ) = f (f + 1i ), i, o i s IB (f ); f , i , o = (f + 1o )f , i , o .

Deducem c 1a = IB (1a ) este morsm identitate, deci K(B) este o categorie. Mai observm c IB : B K(B) este a a a functor. Pentru f, i, o K(B)(a, b) i f , i , o K(B)(c, d) denim suma lor prin n s n f, i, o + f , i , o = (1a + c Xo + 1o )(f + f )(1b + i Xd + 1i ), ii , oo . Probm asociativitatea sumei. Presupunem plus c f , i, o este K(B)(u, v). a n a n ( f, i, o + f , i , o ) + f , i, o = (1ac + u Xoo + 1o )[(1a + c Xo + 1o )(f + f )(1b + i Xd + 1i ) + f ](1bd + (1ac + u Xo + 1o o )(1aco + u Xo + 1o )(1a + c Xo + 1o uo )[(f + f ) + f ] (1b + i Xd + 1i vi )(1bdi + i Xv + 1i )(1bd + i Xv + 1i i ), i(i i), o(o o) = (1ac + u Xo + 1o o )(1a + c Xo + 1uo o )(1aoc + u Xo + 1o )[f + (f + f )] (1bid + i Xv + 1i )(1b + i Xd + 1vi i )(1bd + i Xv + 1i i ), i(i i), o(o o) = (1a +
cu

ii

Xv + 1i ), (ii )i, (oo )o =

Xo + 1o o )[f + (1c + u Xo + 1o )(f + f )(1d + i Xv + 1i )](1b + i Xdv + 1i i ), i(i i), o(o o) =


f, i, o + (1c + u Xo + 1o )(f + f )(1d + i Xv + 1i ), i i, o o = f, i, o + ( f , i , o + f , i, o ) 2

Mentionm cazul particular a IB (f ) + f , i , o = f + f , i , o . Demonstrm c K(B) este o csmn. Este uor de artat c 1 este element neutru pentru suma morsmelor i c a a s a a s a 1a + 1b = 1a+b . Pentru f, i, o K(B)(a, b) i f , i , o K(B)(c, d) observm c n s n a a ( f, i, o + 1c ); (1b + f , i , o ) = (1a + c Xo )(f + 1c )(1b + i Xc ), i, o ; 1b + f , i , o = ((1a + c Xo )(f + 1c )(1b + i Xc ) + 1o )(1bc + i Xo )(1b + f + 1i )(1bd + i Xi ), ii , oo = (1a + c Xo + 1o )(f + 1co )(1b + i Xc + 1o )(1bc + i Xo )(1b + f + 1i )(1bd + i Xi ), ii , oo = (1a + c Xo + 1o )(f + 1co )(1b + i Xco )(1b + f + 1i )(1bd + i Xi ), ii , oo = (1a + c Xo + 1o )(f + 1co )(1bi + f )(1b + i Xdi )(1bd + i Xi ), ii , oo = (1a + c Xo + 1o )(f + f )(1b + i Xd + 1i ), ii , oo = f, i, o + f , i , o Pentru f, i, o K(B)(a, b) i f , i , o K(B)(b, c) observm c n s n a a ( f, i, o + 1d ); ( f , i , o + 1d ) = (1a + d Xo )(f + 1d )(1b + i Xd ), i, o ; (1b + d Xo )(f + 1d )(1c + i Xd ), i , o = ((1a + d Xo )(f + 1d )(1b + i Xd ) + 1o )(1bd + i Xo )((1b + d Xo )(f + 1d )(1c + i Xd ) + 1i )(1cd + i Xi ), ii , oo = (1a + d Xo + 1o )(f + 1do )(1b + i Xd + 1o )(1bd + i Xo )(1b + d Xo + 1i )(f + 1di )(1c + i Xd + 1i )(1cd + i Xi ), ii , oo = (1a + d Xo + 1o )(f + 1do )(1b + i Xdo )(1b + d Xo + 1i )(f + d Xi ; i Xd )(1c + i Xd + 1i )(1cd + i Xi ), ii , oo = (1a + d Xo + 1o )(f + 1do )(1bi + d Xo )(1b + i Xo d )(1bo + d Xi )(f + 1id )(1c +

i i

Xd )(1cd + i Xi ), ii , oo =
ii

(1a + d Xo + 1o )(f + 1do )(1bi + d Xo )(1b + i Xo + 1d )(f + 1id )(1c + i Xi + 1d )(1c +


Xd ), ii , oo =

(1a + d Xo + 1o )(1ao + d Xo )(f + 1o d )(1b + i Xo + 1d )(f + 1id )(1c + i Xi + 1d )(1ci + i Xd )(1c + i Xd + 1i ), ii , oo = (1a + d Xoo )((f + 1o )(1b + i Xo )(f + 1i )(1c + i Xi ) + 1d )(1c +

ii

Xd ), ii , oo =

(f + 1o )(1b + i Xo )(f + 1i )(1c + i Xi ), ii , oo + 1d = ( f, i, o ; f , i , o ) + 1d Mai observm c a a (1d + f, i, o ); (1d + f , i , o ) = 1d + f, i, o ; 1d + f , i , o = (1d + f + 1o )(1db + i Xo )(1d + f + 1i )(1dc + i Xi ), ii , oo = 1d + (f + 1o )(1b + i Xo )(f + 1i )(1c + i Xi ), ii , oo = 1d + (f + 1o )(1b + i Xo )(f + 1i )(1c + i Xi ), ii , oo = 1d + f, i, o ; f , i , o concluzie K(B) este o csmn. In Este uor de artat c IB : B K(B) este un morsm de M -csmn. s a a Pentru a, b M denim a b X = IB ( a Xb ) i probm c K(B) este o csmns. s a a Pentru f, i, o din K(B)(a, b) observm c a a
c

Xa ( f, i, o + 1c ) b Xc = ( c Xa + 1o )(1a + c Xo )(f + 1c )(1b + i Xc )( b Xc + 1i ), i, o =

Xao (f + 1c ) bi Xc , i, o =

1c + f, i, o = 1c + f, i, o . Pentru f, i, o din K(B)(a, b) i c, d M observm c s a a (1cd + f, i, o ); ( c Xd + 1b ) = (1cd + f )( c Xd + 1bi ), i, o =


c

Xd + f, i, o = c Xd + f, i, o .

Restul axiomelor ind uor de demonstrat, concluzionm c K(B) este o csmns. Mai observm c IB : B K(B) este s a a a a un morsm de M -csmns. 1.2.2 Cazul ciclic

ipoteza initial c B este un M -ux vom arta c i K(B) devine un M -ux. In a a a as Pentru f, i, o din K(B)(ab, ac) feedbackul este denit prin a f, i, o = a f, i, o . Pentru f, i, o din K(B)(ab, ac) i f , i , o din K(B)(d, b) observm c s a a f , i , o ; a f, i, o = f , i , o ; a f, i, o = (f + 1o )(1b + i Xo )(a f + 1i )(1c + i Xi ), i i, o o = a ((1a + f + 1o )(1ab + i Xo )(f + 1i )(1ac + i Xi )), i i, o o =a (1a + f + 1o )(1ab + i Xo )(f + 1i )(1ac + i Xi ), i i, o o = a ( 1a + f , i , o ; f, i, o ) =a ((1a + f , i , o ); f, i, o ) Pentru f, i, o din K(B)(ab, ac) i f , i , o din K(B)(c, d) observm c s a a (a f, i, o ); f , i , o = a f, i, o ; f , i , o = (a f + 1o )(1c + i Xo )(f + 1i )(1d + i Xi ), ii , oo = a ((f + 1o )(1ac + i Xo )(1a + f + 1i )(1ad + i Xi )), ii , oo =a (f + 1o )(1ac + i Xo )(1a + f + 1i )(1ad + i Xi ), ii , oo = a ( f, i, o ; 1a + f , i , o ) =a ( f, i, o ; (1a + f , i , o )) Pentru f, i, o din K(B)(ab, ac) i d M observm c s a a (a f, i, o ) + 1d = a f, i, o + 1d = (1b + d Xo )(a f + 1d )(1c + i Xd ), i, o =a (1ab + d Xo )(f + 1d )(1ac + i Xd ), i, o = a ( f, i, o + 1d ) Pentru f, i, o din K(B)(abc, abd) observm c a a b a f, i, o = b a f, i, o = ab f, i, o =ab f, i, o Pentru f, i, o din K(B)(bac, abd) observm c a a ab (( a Xb + 1c ) f, i, o ) = ab [( a Xb + 1co )f ], i, o = ba [f ( a Xb + 1di )], i, o =ba ( f, i, o ; ( a Xb + 1d )). Deoarece egalitatile a 1a = 1 i a a Xa = 1a sunt uor de probat concluzionm c K(B) este un M -ux. Mai observm s s a a a c IB : B K(B) este un morsm de M -uxuri. a

1.3

Fluxul reprezentrilor de programe abstracte a

Produsul cartezian Q(X) K(B) cu operatiile pe componente este un M-ux. Pentru a, b M denim P (a, b) = { a, x, b , f, i(x), o(x) : x X, f, i(x), o(x) K(B)(a, b)}. Deoarece P este o submultime a lui Q(X) K(B) care este nchis la compunere, sum, feedback i include constantele 1a a a s i a Xb pentru orice a, b M , deducem c P este un M -ux. s a Functia care duce a, x, b , f, i(x), o(x) P (a, b) x, f din F lX,B (a, b) este un izomorsm cu privire la compunere, n sum, feedback i constantele 1a i a Xb . Prin urmare F lX,B este un M -ux. a s s Reamintim c pentru orice f B(a, b) prin denitia EB (f ) = , f din F lX,B (a, b). mentionm urmtoarele reguli de a a a calcul x, f ; EB (g) = x, f (g + 1i(x) ) pentru x, f F lX,B (a, b) i g B(b, c), s EB (f ); x, g = x, (f + 1o(x) )g pentru f B(a, b) i x, f F lX,B (b, c), s EB (f ) + x, g = x, f + g pentru f B(a, b) i x, g F lX,B (c, d). s

Deducem c EB : B F lX,B este un morsm de M -uxuri. a Mentionm i regula de calcul a feedbackului la dreapta. Dac x, f F lX,B (ba, ca), atunci a s a x, f a = x, [(1b +
o(x)

Xa )f (1c + a Xi(x) )] a = x, a [( a Xb + 1o(x) )f ( c Xa + 1i(x) )] .

Semantic a

Remarcm c morsmele unei csmn B formeaz a a a mpreun cu operatia sum un monoid pe care-l notm tot cu B. a a a Se tie c interpretarea d semantica instructiunilor din care se construesc programele. Interpretarea ataeaz ecrei s a a s a a instructiuni o functie partial a I() P f n(S)(i(), o()) unde i() i o() sunt numrul intrrilor, respectiv ieirilor lui . Extinznd functiile i, o i I la morsme de monoizi s a a s a s i : (, +, 0), o : (, +, 0) i I : P f n(S) se observ c I devine un morsm de monoizi de la monoidul s a a liber al instructiunilor la monoidul morsmelor lui P f n(S). Mai remarcm c a a (x )I(x) P f n(S)(i(x), o(x)). Aceste fapte constituie motivatia pentru denitia urmtoare. a Denition 5 O interpretare a monoidului X csmn B este un morsm de monoizi n I : X (B, +, 1 ) cu valori monoidul morsmelor lui B. n Notnd cu s : (B, +, 1 ) M , respectiv cu c : (B, +, 1 ) M morsmele de monoizi care ataeaz ecrui morsm a s a a din B sursa, respectiv cosursa sa, vom spune c I este o interpretare cu privire la Is i Ic. 2 a s Fie u, v : X Ob(B) sunt dou morsme de monoizi. Dac I este o interpretare a monoidului X csmn B cu privire la u a a n i v atunci (x X)I(x) B(u(x), v(x)). s Dup aceast introducere revenim la cadrul general al acestei lectii. a a Fie B un M-ux i i, o : X M dou morsme de monoizi. s a Proposition 6 Pentru orice x X denim EX (x) F lX,B (i(x), o(x)) prin EX (x) = x,
i(x)

Xo(x) .

EX este o interpretare a lui X F lX,B cu privire la i i o care este numit interpretarea standard a lui X F lX,B . n s a n In plus EB (f ) permut cu EX (x) pentru orice f B(a, b) i x X. a s Proof: Probm c EX este morsm de monoizi. a a Evident EX (1 ) = , Pentru x, y X EX (x) + EX (y) = x, xy, (1i(x) +
i(y) i(x) i()

Xo() = , 1 = 1 .

Xo(x) + y,

i(y)

Xo(y) = Xo(y) )(1o(x) +


i(x)

Xo(x) + 1o(y) )( i(x) Xo(x) +

i(y)

Xo(y) + 1i(y) ) = xy,

i(xy)

Xo(xy) = EX (xy).

Mai observm c a a (1a + EX (x))(EB (f ) + 1o(x) ) = x, 1a + x, (1a +


i(x) i(x)

Xo(x) EB (f + 1o(x) ) =
i(x)

Xo(x) )(f + 1o(x) + 1i(x) ) = x, f +

Xo(x) = EB (f ) + x,

i(x)

Xo(x) = EB (f ) + EX (x). 2

Proposition 7 Pentru orice x, f din F lX,B (a, b) x, f = ((1a + EX (x))EB (f )) i(x) . Proof: ((1a + EX (x))EB (f )) i(x) = ( x, 1a + x, [(f + 1i(x) )(1b +
i(x) i(x)

Xo(x) EB (f )) i(x) = x, (1a +

i(x)

Xo(x) )(f + 1i(x) ) i(x) =

Xi(x) )] i(x) = x, f .2 5

Lemma 8 Fie B un M -ux. Pentru morsmele x : i o i y : i o , s f : ao bi i g : bo ci s dac f Py, atunci a ((1a + x)f ) i ; ((1b + y)g) i = ((1a + x + y)(f + 1o )(1b + i Xo )(g + 1i )(1c + i Xi )) ii

Proof: ((1a + x + y)(f + 1o )(1b + i Xo )(g + 1i )(1c + i Xi )) ii = (((1a + x)f + y)(1b + i Xo )(g + 1i )(1c + i Xi )) ii = (((1a + x)f + 1i )(1b + i Xi )((1b + y)g + 1i )(1c + i Xi )) i i = ((1a + x)f [(1b + i Xi )((1b + y)g + 1i )(1c + i Xi )] i ) i = ((1a + x)f [((1b + y)g) i +1i ]) i = ((1a + x)f ) i ; ((1b + y)g) i . 2 Lemma 9 Fie B un M -ux. Pentru morsmele x : i o i y : i o , s f : ao bi i g : co di s dac f Py, atunci a ((1a + x)f ) i +((1c + y)g) i = ((1ac + x + y)(1a + c Xo + 1o )(f + g)(1b + i Xd + 1i )) ii Proof: ((1ac + x + y)(1a + c Xo + 1o )(f + g)(1b + i Xd + 1i )) ii = ((1a + c Xi + 1i )((1a + x)f + (1c + y)g)(1b + i Xd + 1i )) i i = ((1a + c Xi )((1a + x)f + [(1c + y)g] i )(1b + i Xd )) i = ((1a + x)f ) i +((1b + y)g) i . 2 Theorem 10 Pentru orice morsm de uxuri H : B B i pentru orice interpretare I a lui X B cu privire la i; H i s n s o; H dac H(f ) permut cu I(x) pentru orice morsm f din B i orice x X, atunci exist un unic morsm de uxuri a a s a I, H cu proprietile EX ; I, H at
f f

: F lX,B B

= I i EB ; I, H s

= H.

Proof: Probm unicitatea. Presupunem c morsmul I, H f din enunt exist i are proprietile cerute. Dac a M , a a as at a atunci I, H f (a) = I, H f (EB (a)) = H(a). Pentru orice x, f din F lX,B (a, b), utiliznd propozitia precedent deducem a a I, H f ( x, f ) = ((1H(a) + I(x))H(f )) H(i(x)) ceea ce probeaz unicitatea morsmului cerut enunt. a n Probm existenta. Denim I, H f prin a pentru orice a M , I, H f (a) = H(a) pentru orice x, f din F lX,B (a, b) I, H f ( x, f ) = ((1H(a) + I(x))H(f )) H(i(x)) Dac x, f este din F lX,B (a, b) i y, g este din F lX,B (b, c), atunci utiliznd lema 8 deducem a s a I, H f ( x, f y, g ) = ((1H(a) + I(xy))H((f + 1o(y) )(1b + ((1H(a) + I(x) + I(y))(H(f ) + 1H(o(y)) )(1H(b) +
H(i(x)) i(x)

Xo(y) )(g + 1i(x) )(1c +

i(y)

Xi(x) ))) H(i(xy)) =


H(i(y))

XH(o(y)) )(H(g) + 1H(i(x)) )(1H(c) +

XH(i(x)) )) H(i(x))H(i(y)) =

[(1H(a) + I(x))H(f )] H(i(x)) ; [(1H(b) + I(y))H(g)] H(i(y)) = I, H f ( x, f ); I, H f ( y, g ). Dac x, f este din F lX,B (a, b) i y, g este din F lX,B (c, d), atunci utiliznd lema 9 deducem a s a I, H f ( x, f + y, g ) = ((1H(ac) + I(xy))H((1a + c Xo(x) + 1o(y) )(f + g)(1b + ((1H(a)H(c) + I(x) + I(y))(1H(a) +
H(c) i(x)

Xd + 1i(y) ))) H(i(xy)) = XH(d) + 1H(i(y)) )) H(i(x))H(i(y)) =

XH(o(x)) + 1H(o(y)) )(H(f ) + H(g))(1H(b) + 6

H(i(x))

[(1H(a) + I(x))H(f )] H(i(x)) +[(1H(c) + I(y))H(g)] H(i(y)) = I, H f ( x, f ) + I, H f ( y, g ). Dac x, f este din F lX,B (ab, ac), atunci a I, H f (a x, f ) = I, H f ( x, a f ) = [(1H(b) + I(x))H(a f )] H(i(x)) =H(a) [(1H(ab) + I(x))H(f )] H(i(x)) = H(a) I, H f ( x, f ). Dac f B(a, b), atunci a I, H f (EB (f )) = [(1H(a) + I())H(f )] H(i()) = H(f ), prin urmare I, H f (1a ) = 1a i I, H f ( a Xb ) = a Xb . s Dac x X, atunci a I, H f (EX (x)) = [(1H(i(x)) + I(x))H( i(x) Xo(x) )] H(i(x)) = ( H(i(x)) XH(i(x)) (I(x) + 1H(i(x)) )) H(i(x)) = I(x). 2

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