Índice Contexto Biografía de Hoare..................................................pag. 3 Lógica de Hoare Definición....................... Definición......................................... ..........................................pag. ........................pag. 4 Corrección: Corrección: parcial y total........................................ total........................................ pag. 5 Reglas generales....................................................pag. 6 Biliografía..............................................................pag. !
Página 1
Biografía de Hoare "ntes de co#en$ar a %alar de la lógica de Hoare& pri#ero dee#os saer '(i)n f(e )l. C%arles "ntony Ric%ard Hoare& ta#i)n conocido co#o *+ony* Hoare& nació el ,, de enero de ,-34 en la ci(dad de Colo#o. +ony reciió la ed(cación sec(ndaria en la sc(ela Dragón en /xford y la sc(ela del Rey en Canter(ry. 0( ed(cación (ni1ersitaria ta#i)n estaa en /xford. 0( carrera in1ol(cró el est(dio del latín y el griego& así co#o la filosofía. 2l decidió est(diar filosofía #oderna& '(e proporciona (n ca#ino para entender la lógica. n s( grad(ación en ,-56& +ony f(e lla#ado a la Royal a1y. "l t)r#ino del ser1icio oligatorio dos aos de ser1icio #ilitar& regresó a /xford para est(diar stadística y co#en$ó la progra#ación de co#p(tadoras en erc(rio "(tocode. C(ando Hoare se #(dó de la ind(stria a la acade#ia en ,-6!& Hoare %i$o dos pasos adicionales a(daces& pri#ero descarta los diagra#as de fl(o y desarrolló (n siste#a de lógi ló gica ca pa para ra ra ra$o $ona narr ac acer erca ca de lo loss pr prog ogra ra#a #ass '( '(e e (t (tilili$ i$an an la lass es espe peci cififica caci cion ones es de co#porta#iento co#(nicado '(e %an llegado a conocerse co#o triples de Hoare o ternas de Hoare. n seg(ndo l(gar& arg(#entó '(e s( siste#a *axio#7tica* podría ser 1isto co#o (na for#a astracta de la graación de la se#7ntica de los leng(aes de progra#ación. l pri#ero de estos pasos tiene el prof(ndo efecto de la apert(ra de (na for#a de desarrollar progra#as de#ostrales en l(gar de tratar s( 1erificación co#o (na preoc(pación post %oc. Hoare p(licado (na serie de aconteci#ientos de esta idea& y la 8s'(eda de la *se#7ntica Hoare* %a tenido (n efecto prof(ndo en la co#prensión de los leng(aes de progra#ación y la tarea de ra$ona#iento acerca de los progra#as. +ony Hoare se con1irtió en profesor en la 9ni1ersidad de /xford en ,- e %i$o otro paso a(da a( da$$ in inte tele lect ct(a (al:l: en (n ar artí tíc( c(lo lo de ,,-! ! en la lass ;Co Co## ##(n (nic icat atio ions ns of t% t%e e "C C<< =y post po ster eriior or# #en entte en s( li iro ro ;Co# Co##(n #(nica icatin ting g 0e' 0e'(ent (ential ial >ro >rocess cesses es pr prop op(s (so o (n leng(ae =C>0?& donde la interacción entre los progra#as se li#itó a pre@co#(nicaciones pre1istas. C0> %a inspirado (na gran cantidad de n(e1as in1estigaciones& incl(idas las %erra#ientas '(e %an alentado s( (so en aplicaciones ind(striales.
+ony se retiró de la 9ni1ersidad de /xford en ,---& pero no de la in1estigación acti1a. 0e (nió Laoratorio de An1estigación de icrosoft en Ca#ridge =Reino 9nido? y prosig(e acti1a#ente 1arias ideas de in1estigación. 0( liro * 9nifying +%eories* %a atraído a (n p8lilico p8 co si si#i #ila larr en entr tre e lo loss in in1e 1est stig igado adore ress co co#o #o s(s co cont ntri ri(c (cio ione ness an ante teri riore ores. s. Co Con n s( Página 2
prop(esta de proseg(ir la in1estigación * rand C%allenges*& '(e dirige con(nta#ente la iniciati1a internacional sore *erified 0oftare*.
Página 3
Lógica de Hoare Desarrollada por Hoare en ,-6-& la lógica de Hoare es (na lógica '(e per#ite proar la 1erdad o falsedad de propiedades de progra#as i#perati1os sin conc(rrencia o paralelis#o. La característica central de la lógica de Hoare son las ternas de Hoare& asado en el diagra#a de fl(o anotado: ste descrie co#o la eec(ción de (na pie$a de código ca#ia el estado del progra#a. s de la for#a: {P} {Q} E>F C EGF
C Donde > y G son afir#aciones y C es (n co#ando& '(e p(ede ser desde (na sentencia o con(nto de sentencias %asta (n progra#a entero. > se lla#a precondición y es c(al'(ier aserción '(e solo i#plica al estado inicial& G se lla#a postcondicion y es (na aserción '(e solo i#plica al estado final& siendo (na aserción (na sentencia lógica '(e %acen referencia a (n estad estado o de sist siste# e#a. a. C(and C(ando o se c(#p c(#ple le la preco precond ndic ició ión& n& la eec eec(c (ció ión n del del co#a co#ando ndo estalece la postcondicion.
La Lógica de Hoare ofrece axio#as y reglas de inferencia para todas las constr(cciones de (n sencillo leng(ae de progra#ación i#perati1o. xisten reglas para la conc(rrencia& los procedi#ientos& los saltos y los p(nteros. La lógica de Hoare (tili$a dos leng(aes for#ales: @9n leng(ae de progra#ación i#perati1o =L>? para C @9n leng(ae de for#(la for#(la =L? para E>F y EGF. n L se (san los tipos =enteros& reales& ooleanos& etc.?& f(nciones=s(#a de enteros& s(#a de reales& etc.? y predicados=I& J& etc.? (sados en el L> L >& incl(idos incl(idos los '(e son definidos por el #is#o (s(ario. n caso de '(e la terna de Hoare tenga la for#a E>FCE>F siendo E>F (na aserción '(e es a la 1e$ precondición y postcondicion& esta pasara a deno#inarse in1ariante.
Corrección: parcial y total
Página 4
La corrección sir1e para& tal co#o dice s( no#re& 1er si la terna es 17lida o no& para esto te dice '(e si tienes (na precondición E>F& (na postcondicion EGF y (n co#ando o parte de código C& entonces E>FCEGF ser7 correcto si en todo caso inicial '(e satisface a E>F el co#ando da co#o res(ltado (n estado final '(e satisface a EGF. La corrección tiene dos tipos& '(e dee#os disting(ir para no co#eter errores #7s adelante:
E>FCEGF es parcial#ente parcial#ente correcto correcto si el estado estado inicial satisface satisface Corrección parcial.- E>FCEGF E>F y el estado final de C satisface EGF. ste tipo de correcion es co#8n#ente la pri#era en proarse y solo %ay dos posiles #odos de ter#inación anor#al: @B(cle infinito. @rror de eec(ción.
Corrección total.- 0e da c(ando c(ando (n código código ade#7s de ser ser correcto correcto parcial#ent parcial#ente& e& ta#i)n ter#ina el procesoK en el caso de códigos sin (cles& la corrección parcial de estos ta#i)n i#plica la corrección total. s i#portante tener en c(enta estos tipos de corrección corrección ya '(e las ternas no se aplican solo a códigos enteros& enteros& sino ta#i)n a partes partes pe'(eas de código o co#andos& por lo '(e el estado final de (na terna p(ede no acaar el proceso del código.
Página 5
Reglas generales 1) Fortalecimien Fortale cimiento to y debilitamiento debili tamiento de aserciones.aserci ones.0iendo " y B dos aserciones& se dice '(e " es #7s f(erte '(e B si " B y ta#i)n se p(ede decir '(e B es #7s d)il '(e " si (na aserción es fortalecida dis#in(ye el n8#ero de estados '(e la p(eden satisfacer& y si " B entonces todos os estados '(e satisfacen " ta#i)n satisfacen B pero no en 1ice1ersa.
.: iJ, es #7s f(erte '(e iJ& por'(e sie#pre '(e iJ, se c(#pla& i#plicaría '(e iJ. >or lo tanto iJ, iJ
1.1) Fortalecimien Fortale cimiento to de las precondiciones.precondi ciones.0i E>FCEGF es correcto y >, > se p(ede afir#ar '(e E> ,FCEGF es correcto:
P ₁ → P
{ P } C {Q } { P P } C {Q } ₁
1.2) Debilitamiento Debili tamiento de las postcondicion.postcondi cion.9na 1e$ '(e E>FCEGF y G G, %ayan sido estalecidos& se p(ede concl(ir '(e E>FCEG,F: { P P } C {Q }
Q→ Q₁
{ P P } C {Q } ₁
1.3) Regla Regl a de la conjunci conj unción.ón.sta regla per#ite refor$ar la precondición y postcondicion a la 1e$& siendo C (na parte de (n código:
{ P } C { Q } { P } C { Q } { P P ˄ P } C {Q ˄ Q } ₁
₁
₁
₂
₂
₂
₁
₂
1.4) Regla Regl a de la disyunc dis yunción ión..sta regla per#ite deilitar la precondición y postcondicion a la 1e$& siendo C (na parte de (n código: Página 6
{ P } C { Q } { P } C { Q } { P P ˅ P } C {Q ˅ Q } ₁
₁
₁
₂
₂
₂
₁
₂
2) Reglas para la corrección.2.1) signación.n este caso el co#ando C tiene la for#a M . si el estado inicial es s& entonces el estado s , desp()s de la asignación ser7 ig(al a s& s(stit(yendo por el res(ltado de e1al(ar :
{ P } V = E {Q }
2.2) Composición o concatenación.0ean C, y CN dos partes de (n código y C ,KCN s( concatenación& se p(ede afir#ar '(e:
{ P } C { R } { R R } C {Q } { P P } C ; C {Q } ₁
₂
₁
₂
2.3) !nstrucción i".+iene dos lo'(es C , y CN tienen la #is#a postcondicion G& #ientras la for#(la > y B y& respecti1a#ente& con s( negación OB& son precondiciones& entonces se if(rca y sale::
{ P ˄ B } C {Q } { P P ˄ ¬ B } C {Q } ₁
₂
{ P P } if BthenC thenC { Q } ₁
₂
2.4) #$ile parcial.0e trata de la regla '(e per#ite calc(lar las pre y post condiciones de (n (cle P%ile satisfaciendo la propiedad de corrección parcial:
{ P P ˄ B } C { { P } { P P } whil while e B doC { P ˄ ¬ B }
Página 7
Página 8
Bibliografía %ttp:QQgpd.sip.(c#.esQc%arlasQN,34N3RicardoHoareQ#ainDA"ril,3.pdf %ttp:QQ.infor.(1a.esQ1al1are$QdocenciaQte#a!.pdf %ttp:QQ.cs.c#(.ed(Qaldric%Qco(rsesQ4,3QslidesQN4@%oare.pdf
Página 9