Directorio de artículos
- Para probar que este procedimiento debe llevarse a cabo de arriba hacia abajo, primero pruebe por separado
f:=1, i:=1
y luego pruebewhile
los contenidos por separado, ywhile
los contenidos deben probarse por separado uno por uno.
salón triplete
- Representa: cuando se satisface P, después de ejecutar S, se cumplirá Q (se mantiene)
Caso 1
- si
x=2
satisfecho - Entonces, después de la expresión
x:=x+1
, ¿qué fórmula seráhold?
- Aquí
x=3
se dice que es "dadox=2
como "precondition
condicional astrongest postcondition
Caso 2
-
De la misma manera: cuando
x=1
comopostcondition
holds
,precondition
podemos deducir fácilmente quex=0
-
pero aquí está
precondition
el serweakest
precondition
-
Esto se debe a que nuestro razonamiento inverso (hacia atrás) es menos difícil que el razonamiento hacia adelante (hacia adelante)
-
Otra forma de entender es:
x > 5 = > x > 3 x>5 => x>3X>5=>X>3 Entonces decimosx > 5 x > 5X>5 es una condición más estricta, es decir, unastrong
condición más estricta. Del mismo modo veamos estopost condition
-
Si nos las
precondition
arreglamos ,x=3
podemosx=3
derivar otras más relajadas basadas en esta condiciónpostcondition
, como x > 2 x>2X>2 , nuestra fórmula se puede escribir de la siguiente manera:
{ x = 2 } x : = x + 1 { x > 2 } \{x=2\} x:=x+1 \{x>2\}{ x=2 } x:=X+1 { x>2 } -
Esto está perfectamente bien mientras x > 2 x>2X>La condición de 2 no es tan buena comox = 3 x=3X=3
strong
's -
Por la misma razón, vemos por qué
weakest precondition
: porque cuando usamos unaprecondition
condición que es un poco más estricta que la actual, la fórmula de derivación también es válida:
x + 1 = 3 = > x = 2 x+1=3 => x=2X+1=3=>X=2 -
Entonces pensamos que x + 1 = 3 x+1=3X+1=3 Esta condición es mejor quex = 2 x=2X=2 es estricto, así que lo llevamos a la fórmula original:
{ x + 1 = 3 } x : = x + 1 { x = 3 } \{x+1=3\} x:=x+1 \{x=3\}{ x+1=3 } x:=X+1 { x=3 } -
Por supuesto, esta fórmula también se cumple
lógica
reglas de derivación
- Si AAA
holds
(por verdadero), mientras queA => BA => BA=>B también es cierto, entonces podemos deducirBBB también es cierto - "——" significa relación de derivación
- Esta fórmula muestra
true
que la naturalezaholds
- También se puede expresar
我们假设这种情况是 true
que dado que no hay condiciones previas, se puede considerar comoassumption
- Si AAA aguanta, mientras queBBB se mantiene, luego
A ^ B
también se mantiene
adelante contra atrás
adelante
-
Para los dos primeros
forward
, el razonamiento no es difícil.
-
Pero por lo siguiente
hacia atrás
-
Podemos
post
deducir fácilmentepre
el resultado de del resultado de
-
Especialmente para la segunda fórmula, solo necesitamos calcularla de acuerdo con el resultado
x=1
y las condiciones , solo necesitamos invertir el proceso para salirx:=x+1
x=0
x:=x+1
pre
-
mismo:
-
Para esta expresión, también podemos escribir fácilmente
-
forward
Veamos el problema difícil en el razonamiento.
-
Aquí solo necesitamos
-
Con el fenómeno anterior, podemos obtener
rule of assignment
regla de asignación
-
PÁGINASP es sobrexxLa fórmula de x , después de
x:=E
este proceso,PPP tiene, -
Entonces podemos reemplazar
post condition
todox
conE
-
En esta fórmula E = x + 1 E=x+1mi=X+1 entonces ponx = 1
post condition
enX=Todo xxen 1reemplazar x con EEE comoprecondition
1=1X+1=1 -
Entonces el resultado es:
{ x + 1 = 1 } x : = x + 1 { x = 1 } \{x+1=1\} x:=x+1\{x=1\}{ x+1=1 } x:=X+1 { x=1 }
{ x = 0 } x : = x + 1 { x = 1 } \{x=0\}x:=x+1\{x=1\}{ x=0 } x:=X+1 { x=1 } -
Practica uno más:
reglas de consecuencia
-
De lo comentado anteriormente
forward
ybackward
podemos deducir mediante esta fórmula:
-
Si cumplimos las siguientes condiciones, también podemos obtener
-
porque x = 0 x = 0X=0 condicional quex >= 0 x>=0X>=0 es estricto, por lo que también es
precondition
factible como -
de este modo
-
Analizarlo: P ′ P 'PAG' esPPUn subconjunto de P , el mismoQQQ esQ'Q'q' , entoncesPPEl rango de P debe reducirse, mientras queQQEl rango de Q debe ampliarse.
Combinando las dos reglas anteriores
-
Supongamos que queremos probar que:
-
En primer lugar, primero usamos esta fórmula como
consequence rule
la parte inferior de , luego eso es P ′ = { x = 0 } P'=\{x=0\}PAG′={ x=0 } ,Q ′ = { x > 0 } Q'=\{x>0\}q′={ x>0 }
-
No cambiamos de ahora en adelante
post condition
, cuando queremos usarconsequence rule
necesitamos encontrar P ′ => P P'=>PPAG′=>P , y ahora tenemosP ′ = { x = 0 } P' = \{x=0\}PAG′={ x=0 } -
Entonces la fórmula se convierte en la siguiente:
-
Supongamos que hay una variable intermedia PPP se deriva de
-
A continuación, use la pieza en el cuadro rojo en la figura a continuación.
assignement axiom
-
{ ? P } x : = x + 1 { x > 0 } \{?P\} x:=x+1 \{x>0\}{ ? P } x:=X+1 { x>0 } Se puede deducir queP = x + 1 > 0 P=x+1>0PAG=X+1>0
-
Luego cambie esta banda a x = 0 => ?P x=0 => ?PX=0=>? P parte, puedes obtener:
-
probar completo
-
Para resumir la lógica de prueba anterior
regla de secuencia
- A la hora de demostrar este tipo de temas, solemos partir de la última parte y demostrarlo al revés.
- La prueba comienza:
- La prueba comienza:
- Primer uso
rule of consequence
S 1 ; S 2 S1 ; S2S1 ; _S 2 se considera como un todo, en este momentoP ′ = { x = 0 } , Q ′ = { X = 2 } P'= \{x=0\}, Q'=\{X=2\}PAG′={ x=0 } ,q′={ X=2 } Así que en este momento todavía tenemos que verP ′ = > P P'=>PPAG′=>P por lo que todavía suponemos que hay una variable intermedia?P ?P? PAG
- Ahora no es posible hacer la parte de la selección de marcos en la figura a continuación
assign rule
, porqueassignment rule
solo se puedesingle
realizar en los pasos, por lo que ahora tenemos que realizar el proceso en la parte de la selección de marcos en la figura a continuación.rule of sequencing
- y obten:
- Introducimos una variable intermedia ?R ?R? R , mientras se divide el razonamiento intermedio en dos
individual
partes - En este momento, preste atención a la parte encuadrada en la siguiente figura:
- Hay dos partes desconocidas aquí ?P , ?R ?P, ?R? pag _? R Por lo tanto, tenemos que buscar otros avances, que en realidad es muy obvio De la última fórmula,?R ?R? R comenzó a usar
assignment rule
- Cuando sale esta demostración, es lógico que la esquina superior izquierda contenga ?P ?P? La fórmula de P
assignment rule
se puede
- Ahora solo queda la parte más a la izquierda:
- De hecho, él es constante establecido:
Caja de programa más grande
- El siguiente programa significa un
swap
programa
- De hecho, esta prueba es equivalente a
s
agregar un término intermedio entre cada dos, y luego debe pasar uno por unoassignment rule
para probar
saltar regla
regla condicional
el caso
- o usar primero
consequence rule
- De esta forma, equivaldríamos a sumar un ?P ?P
precondition
entre y operaciones posteriores? PAG - Luego basamos
conditional rule