Específicamente en la lógica de Floyd-Hoare, la corrección parcial de un mientras que el lazo es gobernado por la regla siguiente de inferencia:

\ frac {\ {C \ tierra I \} \; \ mathrm {} \; del cuerpo\ {I \}} {\ {I \} \; \ mathbf {mientras que} \ (c) \ \ mathrm {} \; del cuerpo\ {\ lnot C \ tierra I \}}

Regla antedicho es deductivo paso que tiene como su premisa Hoare triple \ {C \ tierra I \} \; \ mathrm {} \; del cuerpo\ {I \} . Este triple es realmente una relación en estados de la máquina. Si esta relación puede ser probada, la regla después permite que concluyamos que la ejecución acertada del programa (c) body while lleve de un estado en el cual I sea verdad a un estado en el cual el \ el lnot C \ tierra I se sostenga. El boleano I de la fórmula en esta regla se conoce como el invariante de lazo.

El ejemplo siguiente ilustra cómo esta regla trabaja. Considerar el programa

mientras que (x<10) x: = x+1;

Uno puede entonces probar el triple siguiente de Hoare:

\ {x \ leq10 \} \; \ mathbf {mientras que} \ (x<10) \ x: = x+1 \; \ {x=10 \}

El C de la condición del lazo de while es x<10. Un invariante útil I de lazo es el x \ leq10. Bajo estas asunciones es posible probar el triple siguiente de Hoare:

\ {x<10 \ tierra x \ leq10 \} \; x: = x+1 \; \ {x \ leq10 \}

Mientras que este triple se puede derivar formalmente de las reglas de asignación de gobierno de la lógica de Floyd-Hoare, también intuitivo se justifica: El cómputo comienza en un estado donde está verdades x<10 \ la tierra x \ leq10, que significa simplemente que x<10 es verdad. El cómputo agrega 1 a x, así que significa que el x \ leq10 es todavía verdad.

Bajo esta premisa, la regla para los lazos de while permite la conclusión siguiente:

\ {x \ leq10 \} \; \ mathbf {mientras que} \ (x<10) \ x: = x+1 \; \ {\ lnot (x<10) \ tierra x \ leq10 \}

Los juegos invariantes de lazo un papel importante en la discusión intuitiva para la validez de la regla de Floyd-Hoare para los lazos de while. El invariante de lazo tiene que ser verdad antes de cada iteración del cuerpo de lazo, y también después de cada iteración del cuerpo de lazo. Puesto que un lazo de while es exacto la iteración repetida del cuerpo de lazo, sigue que si el invariante es verdad antes de incorporar el lazo, debe también ser verdad después de salir el lazo.

Debido a la semejanza fundamental de lazos y de programas recurrentes, probar la corrección parcial de lazos con los invariants es muy similar a probar la corrección de programas recurrentes vía la inducción .

  • Zenithic
  • Raven Chacon
    Random links:Colin Pickthall | Alas de San Antonio | Miembros del gabinete de Hitler | Primeros tiros americanos encendidos en la Segunda Guerra Mundial | Cañería de Anne

  • © 2007-2008 enciclopediaespana.com; article text available under the terms of GFDL, from en.wikipedia.org
    ="http://pagead2.googlesyndication.com/pagead/show_ads.js">