Verificacin Automaas Con Pila Part 2

Embed Size (px)

Citation preview

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    1/15

    222 Verificacio dautomats amb pila

    plexes. Son les les invariants les que requereixen practica, coneixements i molta

    analisi del problema sota consideracio.Aquest es el problema mes dif cil de tots a lhora de verificar programes. La

    majoria de programes de verificacio que susen a la practica demanen que lusuariintrodueixi assercions, i despres procedeixen a realitzar la resta automaticament,incloses les demostracions de les implicacions.

    Serem capacos descriure les invariants dun programa quan hagim arribat aentendrel en profunditat. De fet, seria recomanable que el programador haguesdefinit les invariants abans dinventar el programa, ja que una bona metodologiade programacio es sempre tenir al cap la invariant dun bucle que implementa unaespecificacio, i una idea del motiu pel qual el bucle satura. Fins i tot hi ha teories

    que ens forneixen regles molt detallades per intercalar instruccions entre assercions,i que per tant ajuden a portar a terme la programacio despres de lespecificacio.

    Aqu presentarem diversos exemples que ajudaran el programador a escriureespecificacions de programes amb pila amb invariants i a fer les verificacions.

    Exemple 11.8. Sigui

    L= { {a, b} | ||a= ||b}.

    Volem demostrar que Les un llenguatge incontextual determinista. Amb aquest fi,construirem un automat amb pila determinista que saturi sempre i que el reconegui.

    Una estrategia possible per dissenyar lautomat demanat consisteix a usar la pilaper representar la diferencia |w|a |w|b, onw representa el prefix de lentrada llegita cada moment. Si la diferencia es positiva, hi hauraas a la pila, i si es negativa, hihaurabes. Daquesta manera, quan lautomat hagi llegit tota lentrada, lacceptarasi i nomes si la pila es buida.

    Per implementar aquesta estrategia, usarem {a,b, 0, 1, #} com a alfabet interni un automat tal que, a cada moment duna derivacio, la pila contingui an si finsaquell moment a lentrada shan llegit n as mes que nobes, ibn si fins aquell momenta lentrada shan llegitn bes mes que no as. En particular, la pila sera buida si finsaquell moment sha llegit el mateix nombre de as que de bes. Mes en concret, elque volem que faci el nostre automat es el seguent:

    quan llegeixi una a a lentrada i el cim de la pila sigui a o la pila sigui buida,afegir una a a la pila;

    quan llegeixi una a a lentrada i el cim de la pila sigui una b, desempilar la b;

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    2/15

    Verificacio dautomats amb pila 223

    quan llegeixi unab a lentrada i el cim de la pila sigui b o la pila sigui buida,

    afegir una b a la pila;

    quan llegeixi una b a lentrada i el cim de la pila sigui una a, desempilaraquestaa;

    quan llegeixi # a lentrada i la pila sigui buida, acceptar lentrada; si la pilano es buida en llegir # a lentrada, no acceptar-la.

    El programa i la invariant

    El programa es:

    programa igualab(ent)

    pila:tipus_pila

    1 mentre llegir(ent)/=# fer

    2 si llegir(ent)=a llavors

    3 si buida(pila) llavors

    4 empilar(pila,a)

    5 si_no

    6 si cim(pila)=a llavors

    7 empilar(pila,a)

    8 si_no

    9 desempilar(pila)10 fsi

    11 fsi

    12 si_no

    13 si buida(pila) llavors

    14 empilar(pila,b)

    15 si_no

    16 si cim(pila)=b llavors

    17 empilar(pila,b)

    18 si_no

    19 desempilar(pila)

    20 fsi21 fsi

    22 fsi

    23 dreta(ent)

    24 fmentre

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    3/15

    224 Verificacio dautomats amb pila

    25 si buida(pila) llavors

    26 escriure(accepta,1)27 fsi

    28 fi

    Comencem trobant la invariant INV1 del bucle, que es la primera instruccio delprograma. El que fem es traduir a les variables de la configuracio la propietatdescrita als paragrafs despres de la definicio del llenguatge de lexemple. Observemque la variable accepta no es mai modificada dins el bucle, i per tant val tot eltemps 0. Aix doncs, prenem com a invariant

    INV1(w, , p , r) :: r= 0 k

    k 0

    (p= ak |w|a |w|b= k)

    (p= bk |w|b |w|a= k)

    .

    Notem que la variable no apareix a la formula, i per tant, de vegades usarem unpunt: INV1(w,.,p,r).

    Totes les assercions

    Ara procedim a trobar una assercio per a cadascuna de les l nies:

    2 :: INV1 = #, usant una regla per al mentre.

    3 :: 2 = a, usant una regla per al condicional.

    4 :: 3p= , que es pot simplificar a:: r = 0 p= |w|a |w|b = 0 =a, perque el nombre k de s mbols ala pila es 0, en ambdos casos de la invariant.

    5 :: p(p= pa 4(w, , p

    , r)), usant la regla per al empilar,:: p(p= pa r= 0 p = |w|a |w|b = 0 = a):: p(p= a r= 0 p = |w|a |w|b = 0 = a):: p= a r= 0 |w|a |w|b= 0 = a

    6 :: 3p=, que no simplifiquem.

    7 :: 6 c(p) =a, que simplifiquem a:: r = 0 k(k 0 p = ak |w|a |w|b = k) = a p = c(p) = ael cas en que la pila te bes, no es possible. Posantk > 0 podem simplificar

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    4/15

    Verificacio dautomats amb pila 225

    encara mes a

    :: r= 0 k(k >0 p= ak

    |w|a |w|b= k) = a.

    8 :: p(p= pa 7(w, , p

    , r)), usant la regla per al empilar,:: r = 0 k(k >0 p= ak+1 |w|a |w|b =k) =a, perque el que calexpressar es que la pila te una a mes.

    9 :: 6 c(p)=a, usant una regla per al condicional, que simplifiquem a:: r = 0 k(k 0 p = bk |w|b |w|a = k) = a p = c(p) = bperque si el cim no es a, es b, i el cas en el que la pila te aes no es possible.El mateix que abans,::: r= 0 k(k >0 p= bk |w|b |w|a= k) = a.

    10 :: z 9(w, ,pz ,r), usant la regla per al desempilar,:: r= 0 k(k >0 p= bk1 |w|b |w|a = k) = a, perque ara la pilate una b menys.

    11 :: 8 10, segons la regla per a la postcondicio del condicional de la l nia 6.

    12 :: 5 11, segons la regla per a la postcondicio del condicional de la l nia 3.

    13 :: 2 =a, usant la regla per al bloc negatiu del condicional de la l nia 2.

    14 :: 13p= , que es pot simplificar a:: r= 0p= |w|a |w|b= 0 = b, perque el nombre k de s mbols a lapila es 0, en ambdos casos de la invariant, i si el s mbol de la entrada no es

    a llavors, es b.

    15 :: p(p= pb 14(w, , p

    , r)), usant una regla per al empilar,:: p= b r= 0 |w|a |w|b = 0 = b, expressant que a la pila hi ha unasola b.

    16 :: 13p=, que no simplifiquem.

    17 :: 16 c(p) =b, que simplifiquem a:: r = 0 k(k 0 p = bk |w|b |w|a = k) = b p = c(p) = bperque com el cim es b, el cas en el que la pila te aes, no es possible. Posantk >0 podem simplificar a

    :: r= 0 k(k >0 p= bk |w|b |w|a= k) = b.

    18 :: p(p= pb 17(w, , p

    , r)), usant una regla per al empilar,:: r = 0 k(k > 0 p = bk+1 |w|b |w|a = k) = b perque el que calexpressar es que la pila te una b mes.

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    5/15

    226 Verificacio dautomats amb pila

    19 :: 16 c(p)=b,usant una regla per al condicional de la l nia 16, que simplifi-

    quem a:: r = 0 k(k 0 p = ak |w|a |w|b = k) = b p = c(p) = aperque si el cim no es b, esa, i el cas en el que la pila tebs no es possible. Elmateix que abans::: r= 0 k(k >0 p= ak |w|a |w|b= k) = b.

    20 :: z 19(w, ,pz ,r), usant una regla per al desempilar,::r = 0 k(k > 0 p = ak1 |w|a |w|b = k) = b, perque a aquestalnia la pila te una a menys.

    21 :: 1820, segons la regla per a la postcondicio del condicional de la l nia 16.

    22 :: 1521, segons la regla per a la postcondicio del condicional de la l nia 13.

    23 :: 12 22, segons la regla per a la postcondicio del condicional de la l nia 2.

    24 :: w(w = w 23(w

    ,, p , r)), usant la regla per al dreta. La simpli-ficarem mes endavant.

    25 :: INV1 = #, usant la regla per a la postcondicio del mentre.

    26 :: 25p= , que es pot simplificar a:: r= 0 p= |w|a |w|b = 0 = #, perque el nombre k de s mbols ala pila es 0, en ambdos casos de la invariant.

    27 :: r(r = 1 26(w, , p , r)), usant la regla per al escriure, que es potsimplificar a:: r= 1 p= |w|a |w|b= 0 = #.

    28 :: 27 (25p= ) que son els dos casos del condicional.

    En aquest exemple podem veure que les assercions es poden calcular automaticament(per ordinador) i que, en realitat, totes les assercions depenen de la invariant.

    Verificacio del bucle

    Hem de demostrar el seguent:

    1. 1 =INV1.

    2. 24=INV1.

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    6/15

    Verificacio dautomats amb pila 227

    3. El bucle amb precondicio 1 satura.

    Escriguem la invariant un cop mes:

    INV1(w, , p , r) :: r= 0 k

    k 0

    (p= ak |w|a |w|b= k)

    (p= bk |w|b |w|a = k)

    .

    Per a la primera implicacio, la conclusio es certa perque sque hi ha un k que lafa veritable: k= 0. Mes en detall: r= 0 p= a0 ||a ||b= 0.

    Deixem la segona implicacio per al final perque es mes llarga. Per a la terceraimplicacio, lafirmacio

    si executam una vegada el bloc del bucle, el punter de lentrada es mes

    a prop del final daquesta que abans,

    es certa perque a cada passada pel bucle el punter de lentrada avanca un lloc ala dreta, a la instruccio 23. En particular, el bucle satura sempre despres de miteracions, on m es la longitud de la paraula dentrada.

    Finalment, hem de veure que

    24=INV1,

    es a dir,

    w(w= w 23(w,, p , r)) =INV1(w,.,p,r).

    Donada la complexitat dels condicionals del bloc, es natural que la demostracioque cal fer tingui diverses casos. Lassercio23de la hipotesi es una llarga disjuncioque es resumeix en23:: 5 8 10 15 18 20.

    Al seu torn, la invariant es una disjuncio de dos casos. Recordem de logica basicaque per demostrar (AB) =(CD), nomes cal demostrar una de les implicacionsA=C o A=D; i despres, tambe cal demostrar una de B =C o B =D.Cal anar amb compte amb les variables locals en ambdos costats, la hipotesi i laconclusio.

    En els casos que segueixen es demostrara que lentrada amb un s mbol nou que

    es a o b, satisfa que la diferencia entre el nombre de aes i bes esta representada enel contingut de la pila.

    Cas 5: La premissa es

    w(w= w 5(w,, p , r)),

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    7/15

    228 Verificacio dautomats amb pila

    es a dir,

    w(w= w p= a r= 0 |w|a |w|b = 0

    =a).

    Com w = w =w a, llavors |w|a =|wa|a =|w

    |a+ 1 pero |w|b =|wa|b =|w

    |b,por lo que|w|a |w|b = 1. Aix , el cas de la invariant ambaes a la pila es cert ambk= 1:

    r= 0 p= a1 |w|a |w|b = 1.

    Cas 8: Ara la premissa es

    w(w= w r= 0 k(k >0 p= ak+1 |w|a |w|b= k)

    =a).

    Com abans,

    |w|a |w|b= |w|a |w

    |b= |wa|a |w

    a|b = |w|a+ 1 |w

    |b= k+ 1.

    Aix , la part de la invariant amb aes a la pila es certa amb k =k+ 1:

    r= 0 k(k 0 p= ak+1 |w|a |w|b= k+ 1).

    Cas 10: Amb la premissa

    w(w= w r= 0 k(k >0 p= bk1 |w|b |w|a= k)

    =a),

    la diferencia entre bes i aes es

    |w|b |w|a= |w|b |w

    |a= |wa|b |w

    a|a= |w|b (|w

    |a+ 1) =k 1.

    Per tant, la part de la invariant amb bes a la pila es certa ambk =k 1:

    r= 0 k(k 0 p= bk

    |w|b |w|a= k).

    Cas 15: Amb la premissa

    w(w= w p= b r= 0 |w|a |w|b = 0

    =b),

    la diferencia entre bes i aes es

    |w|b |w|a= |w|b |w

    |a= |wb|b |w

    b|a= |w|b+ 1 |w

    |a= 1.

    Per tant, la part de la invariant amb bes a la pila es certa ambk = 1:

    r= 0 p= b |w|b |w|a= 1.

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    8/15

    Verificacio dautomats amb pila 229

    Cas 18: Amb la premissa

    w(w= w r= 0 k(k >0 p= bk+1 |w|b |w|a= k)

    =b),

    la diferencia entre bes i aes es:

    |w|b |w|a= |w|b |w

    |a= |wb|b |w

    b|a= |w|b+ 1 |w

    |a= k+ 1.

    Per tant, la part de la invariant amb bes a la pila es certa ambk =k+ 1:

    r= 0 k(k 0 p= bk

    |w|b |w|a= k).

    Cas 20: Amb la premissa

    w(w= w r= 0 k(k >0 p= ak1 |w|a |w|b= k) =b),

    la diferencia entre aes i bes es:

    |w|a |w|b= |w|a |w

    |b= |wb|a |w

    b|b= |w|a (|w

    |b+ 1) =k 1.

    Aix , la part de la invariant amb aes a la pila es certa ambk =k 1:

    r= 0 k(k 0 p= ak

    |w|a |w|b = k).

    Hem comprovat per a cadascuna de les possibles premisses impliquen un dels doscasos de la invariant.

    La pila no causa problemes

    Hem de mostrar que els dos cim(pila) i els dos desempilar(pila) mai es se-xecuten amb pila buida en les instruccions 6, 9, 16 i 19. El que es cert perqueles assercions 6, 9, 16 i 19 totes contenen lafirmacio p = , com el lector potcomprovar.

    El programa reconeix el llenguatge

    Cal demostrar que28=(r= 1 ||a= ||b).

    La premissa es una disjuncio: 27 (25p=). El primer cas 27 es:

    r= 1 p= |w|a |w|b= 0 = #.

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    9/15

    230 Verificacio dautomats amb pila

    Lafirmacio r = 1 fa que la part esquerra de lequivalencia de la conclusio sigui

    certa. Com = #, aleshores = w, i ||a ||b = 0, o ||a = ||b, que fa la partdreta de la equivalencia tambe certa.

    El segon cas de la premissa es:

    INV1 = # p=.

    Com p= , la k de la invariant no es zero, perque p te k smbols en ambos casosde la invariant. Aleshores, |w|a |w|b = 0, o |w|a = |w|b o ||a = ||b, perquew= en ser = #. Comr = 0 a la invariant, banda i banda de lequivalencia dela conclusio son falsos.

    Amb aixo acaba tota la demostracio.

    Exemple 11.9. Sigui = {0, 1}. Volem trobar un automat amb pila deterministaque saturi sempre i que reconegui el llenguatge

    L ={ {0, 1} |tot prefix de te almenys tants zeros com uns}={ {0, 1} | |w|0 |w|1 per a tot prefix w de },

    i volem demostrar que efectivament el reconeix. Voldrem fer observar abans decomencar que L i que L es tancat per prefixos, es a dir, que si una paraulapertany a L, aleshores tots els seus prefixos tambe hi pertanyen; aixo darrer hoemprarem sota la forma que si un prefix duna paraula no pertany aL, aleshores

    /L.

    Dissenyarem lautomat amb lobjectiu que la pila contingui a cada moment una

    cadena de zeros de longitud igual a la diferencia |w|0 |w|1, onw indica el prefixde lentrada llegit a cada instant. En particular, per acceptar una entrada donada,aquesta diferencia en cap moment no pot ser negativa.

    En concret, el que fara el nostre automat es emprar la pila com a comptador dela diferencia entre el nombre de zeros i el nombre duns llegits. Mentre el comp-tador (el nombre de zeros a la pila) sigui positiu o zero, tot anir a be. Quan elcomptador sigui zero i es llegeixi un 1 a lentrada, aquesta haura de ser rebutjada.Les instruccions del programa li han de fer fer, doncs, el seguent:

    quan llegeixi un 0 a lentrada, afegir un nou 0 a la pila;

    quan llegeixi un 1 a lentrada i el cim de la pila sigui un 0, desempilar aquest 0; quan llegeixi un 1 a lentrada i la pila sigui buida, rebutjar lentrada i aturar-

    se;

    i quan llegeixi # a lentrada, acceptar-la i aturar-se.

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    10/15

    Verificacio dautomats amb pila 231

    El programa i la invariant

    En vista del que hem explicat, proposam lautomat seguent per reconeixer el llen-guatge L:

    programa meszerosesq(ent)

    pila:tipus_pila

    1 escriure(accepta,1)

    2 mentre llegir(ent)/=# i llegir(accepta)=1 fer

    3 si llegir(ent)=0 llavors

    4 dreta(ent)

    5 empilar(pila,0)

    6 si_no7 si no buida(pila) llavors

    8 dreta(ent)

    9 desempilar(pila)

    10 si_no

    11 escriure(accepta,0)

    12 fsi

    13 fsi

    14 fmentre

    15 fi

    Per veure que aquest automat efectivament es correcte, hem de calcular les asser-cions adients i demostrar les implicacions associades.

    La seva invariant INV2 la trobam traduint en una formula logica la propietatintu tiva que hem dit que perseguim amb aquest automat: quan la variableacceptaval 1, es perque el nombre k de zeros que hi ha a la pila representa la diferenciaentre el nombre de zeros i el nombre duns al boc llegit a lentrada, i aquestadiferencia no ha estat negativa per a cap dels bocins que shan llegit abans. Atesque aquesta darrera condicio es equivalent al fet que el prefix w de lentrada llegit

    fins al moment pertanyi a L, prenem com a invariant per al bucle lassercio

    INV2(w, , p , r) :: (r= 1 k(k 0 p= 0k k= |w|0 |w|1) w L)

    (r= 0

    w

    L).Aquesta invariant, a banda del que discut em al paragraf anterior, tambe diu que

    si dins el bucle la variable accepta passa a valer 0, el prefix w de lentrada llegitfins aquest moment no pertany a L, i aleshores, com hem observat just despres dedefinir el llenguatge L, la paraula dentrada tampoc.

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    11/15

    232 Verificacio dautomats amb pila

    Les assercions

    En aquest programa, una vegada que sha determinat la invariant del bucle, trobartotes les altres assercions es facil. Les seguents son totes les assercions:

    1:: w= p= r= 0,2:: w= p= r= 1,3:: r= 1 k(p= 0

    k k= |w|0 |w|1) w L = #,4:: r= 1 k(p= 0

    k k= |w|0 |w|1) w L = 0,5:: w

    (w= w r= 1 k(p= 0k k= |w|0 |w|1) w

    L = 0),6:: w

    (w= w r= 1 k(p= 0k+1 k= |w|0 |w|1) w

    L = 0),

    7:: r= 1 k(p= 0k k= |w|0 |w|1) w L = # = 0,

    8:: 7p=,

    9:: w(w= w 7(w,, p , r) p= ),10:: z w

    (w= w 7(w,,pz ,r) pz= ),

    11:: 7p= ,12:: r

    (r= 0 11(w, , p , r)),

    13:: 10 12,14:: 6 13,15:: INV2 (= # r= 1)

    Val la pena esmentar que en3sha inclos solament la part del invariant que inclour= 1, i sha afegit = #.

    Verificacio del bucle

    Hem de demostrar el seguent:

    1. 2 =INV2.

    2. 14=INV2.

    3. El bucle amb precondicio 2 satura.

    Per a la primera implicacio, si sabem que r = 1, w = i que p = llavors laconclusio es certa perque s que hi ha un k que la fa certa: k = 0. Mes en detall:r= 1 p= 00 ||0 ||1 = 0 L).

    Deixem novament la segona implicacio per al final perque es mes llarga. Per a latercera implicacio, lafirmacio

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    12/15

    Verificacio dautomats amb pila 233

    si executam una vegada el bloc del bucle, el punter de lentrada es mes

    a prop del final daquesta que abans, o el bucle surt amb acceptaiguala 0,

    es certa perque a cada passada pel bucle el punter de lentrada avanca un lloc a ladreta be a la lnia 4 o a la 8, o accepta es 0 a la lnia 11; el bucle satura amb miteracions o abans, on m es la longitud de la paraula dentrada.

    Finalment, hem de veure que

    14=INV2,

    es a dir,

    (6

    10

    12) =INV2.

    Cas 6: La premissa es

    w(w= w r= 1 k(p= 0k+1 k= |w|0 |w|1) w

    L = 0).

    Com w = w0,

    |w|0 |w|1= |w0|0 |w

    0|1 = |w|0+ 1 |w

    |1= k+ 1.

    Aix , com p = 0k+1, la part de la invariant amb r= 1 es certa amb k =k+ 1:

    r= 1 k(p= 0k+1 k+ 1 =|w|0 |w|1) w L.

    Cal demostrar per a la invariant que w L, no quew L. Vegem la demostracio:w L significa que tot prefix de w te almenys tants zeros com uns, i llavors, siw satisfa aquesta propietat, aleshores es clar que w 0 =w tambe la satisfa: lunicprefix que te w0 que no tingui w es la paraula sencera, w0, i per a aquesta jahem vist que |w0|0 |w

    0|1 = (|w|0 |w

    |1) + 1 1.

    Cas 10: La premissa es

    z w(w= w 7(w,,pz ,r) pz=),

    es a dir,

    z w

    (w= w

    r= 1k(pz= 0kk= |w

    |0|w

    |1)w

    L

    = #

    = 0.

    Com = # = 0, llavors = 1. Aleshores,

    |w|0 |w|1= |w|0 |w

    |1= |w1|0 |w

    1|1= |w|0 (|w

    |1+ 1) =k 1.

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    13/15

    234 Verificacio dautomats amb pila

    A mes, pz = 0k implica quep = 0k1 i que k 1. Per tant, la part de la invariant

    ambr = 1 es certa amb k

    =k 1:

    r= 1 k(p= 0k1 k 1 =|w|0 |w|1) w L.

    Com abans, cal demostrar per a la invariant que w L. Vegem: si w L i|w|0 |w

    |1 = k 1, aleshores w1 L: com ja hem comentat abans, si w L,

    aleshores tot prefix de w te almenys tants zeros com uns, i llavors, si w satisfaaquesta propietat, lunic prefix que pot fer quew 1 no la satisfaci es w 1 tot sencer.Pero en el nostre cas, com acabam de veure, |w|0 |w|1 = k 1 0 perquek 1. Per tant, w tambe te almenys tants zeros com uns. Ara s, la invariant estacompleta.

    Cas 12: La premissa es r

    (r= 0 11(w, , p , r

    )), es a dir,

    r= 0 k(p= 0k k= |w|0 |w|1) w L = 1 p= .

    Com abans, a la premissa hi tenim = #, 0, i per tant, es com si hi tinguessim

    = 1. A mes, hi tenim p = , la qual cosa implica que la k de la premissa haurade ser 0. Aix doncs, la premissa es redueix a

    r= 0 p= 0 =|w|0 |w|1 w L = 1.

    Llavors,

    |w1|0 |w1|1= |w|0 (|w|1+ 1) = (|w|0 |w|1) 1 =1,

    i per tant, w1 /L. Aix , la part amb r = 0 de la invariant es certa.

    Hem comprovat per a cadascuna de les tres premisses impliquen un dels dos casosde la invariant.

    La pila no causa problemes

    Hem de mostrar que el desempilar(pila)mai es sexecuta amb pila buida, el quees cert perque lassercio 6 conte lafirmacio p =.

    El programa reconeix el llenguatge

    Cal demostrar que15=(r= 1 L).

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    14/15

    Verificacio dautomats amb pila 235

    La premissa es una disjuncio: INV2 (= # r= 1).

    Considerem dos casos: r = 1 o r = 1. En el primer cas, = # ha de ser cert ala disjuncio, i llavors = w i com al cas de INV2 amb r = 1 es cert que w L,llavors L. Aleshores, ambdos costats de la conclusio son certs.

    En el segon cas, r = 1, llavors, r = 0. Al unic cas de la invariant que pot sercert, w L, aix que un prefix de no es a L, i no es de L, i ambdos costatsde la conclusio son falsos.

    Daquesta manera hem aportat al programa una invariant i hem demostrat lesimplicacions que generen les especificacions dels blocs que hem obtingut. Com ellector hauria dintuir del significat de les implicacions que hem generat, aixo implicaque lespecificacio global del programa es vertadera i, per tant, que el programa es

    correcte.

    11.4 Exercicis

    Escriviu programes que demostrin que els llenguatges seguents son incontextualsdeterministes, i verificau-los.

    11.1. El conjunt de les paraules fetes de parentesis que sobtenen en eliminar deles expressions aritmetiques correctes tots els smbols excepte els parentesis. Perexemple, (()(())) seria daquest llenguatge.

    11.2. El conjunt de les paraules fetes de parentesis de dos tipus, (, ) i [, ], quesobtenen en eliminar de les expressions aritmetiques ben formades que usin aquestsparentesis definides a lExercici 1.12 tots els s mbols excepte els parentesis.

    11.3. El llenguatge sobre{0, 1}de les paraules amb el mateix nombre de zeros queduns.

    11.4. El llenguatge sobre {0, 1} de les paraules que tenen exactament el dobleduns que de zeros.

    11.5. El llenguatge associat aa{{ab}b{c}} (es pot generar un automat correcteautomaticament).

    11.6. {aibibjcj |i, j 1}.

    11.7. {aibj |i > j 0}.

    11.8. {aibjck |i = j +k}.

  • 7/24/2019 Verificacin Automaas Con Pila Part 2

    15/15

    236 Verificacio dautomats amb pila

    11.9. {aibj |1 i 2j}.

    11.10. {aibjckai |i 1 i 1 k j}.

    11.11. {w2wt |w (0 + 1)}.