Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Resumen. Presentamos TRACER, un verificador para las propiedades de seguridad de los programas C secuenciales. Se
basa en la ejecución simbólica ( SE) y sus características únicas están en
cómo hace SE finito en presencia de bucles ilimitados y su uso de interpolantes de caminos inviables para
abordar el explosión de camino problema.
1. Introducción
Recientemente ejecución simbólica SE) [ 15] se ha demostrado con éxito que es una alternativa
a CEGAR para la verificación del programa que ofrece los siguientes beneficios amo ng otros [12,
18]: (1) no explora caminos inviables evitando gastar refinamientos sive, (2) evita
costoso imagen predicada cálculos (por ejemplo, cartesiano y Booleano abstracciones [2]),
y (3) puede recuperarse de demasiado específico abstracciones en oposición a los esquemas de refinamiento monótonos de uso
frecuente. Desafortunadamente, plantea su propio cha llenges: (C1) exponencial
número de rutas y (C2) en rutas de longitud infinita en presencia o f bucles sin límites.
Nosotros presentamos TRAZADOR, un SE- herramienta de verificación basada para estado finito propiedades de seguridad
Perezoso Ansioso 10, 21] son los mejores ejemplos de enfoques vagos mientras
SE- establecido
Figura 1. Verificadores de vanguardia
Las herramientas [12, 18] son para métodos entusiastas. Hombres especiales
Se requiere una acción para enfoques híbridos como YOGI [ 20] CONTROLADOR DE CPA [ 3], y
KRATOS [ 5] YOGUI calcula las precondiciones más débiles de la ejecución simbólica de rutas
∗ Este artículo amplía las ideas publicadas en [12, 13] al describir un método
para la informática
precondiciones más débiles como interpolantes, así como una descripción detallada de th e arquitectura de la
herramienta y una nueva evaluación experimental.
como un refinamiento barato para CEGAR Una desventaja es que no puede recuperarse demasiado
refinamientos específicos (ver programa diamante en [18]). CONTROLADOR DE CPA y KRATOS en-
codifique bloques libres de bucles en fórmulas booleanas que luego son su expulsado a un SMT solucionador en
para explotar sus capacidades (de aprendizaje) y evitar redefinir elementos debido a abstracciones más gruesas
a menudo se utilizan en CEGAR Por otro lado, el rendimiento de los verificadores basados en interpolación depende
de la fuerza lógica del interpolante. s 1) En enfoques perezosos, un débil
el interpolante puede contener errores espurios y causar refinamiento ts con demasiada frecuencia. Más fuerte en
los terpolantes pueden retrasar la convergencia a un punto fijo. En un ap ansioso Proaches, más débil inter-
los polants pueden ser mejores (p. ej., para fragmentos sin bucle) que s más fuertes ya que permiten
eliminando hechos más irrelevantes del modelo concreto.
TRAZADOR realiza SE cálculo eficiente aproximado precondiciones más débiles como
Esencialmente, TRAZADOR implementa ejecución simbólica clásica [15] con algunos nov el
características que describiremos a lo largo de esta sección. Se necesita sy entradas mbólicas en lugar de
datos reales y ejecuta el programa teniendo en cuenta esos symb entradas olicas. Durante el ex
En la ecuación de un camino, todas sus limitaciones se acumulan en un fuego. fórmula de lógica de orden t (FOL)
llamado condición de ruta (PC) . Siempre que el código del formulario Si( C) luego S1 más S2 se alcanza
la ejecución bifurca el estado simbólico actual y actualiza p condiciones atléticas a lo largo de ambos
los caminos: ordenador personal 1 ≡ ordenador personal ∧ C y ordenador personal 2 ≡ ordenador personal ∧¬ C. Luego, verifica
ordenadorsi personal 1 o ordenador personal 2
sonar solo en UN). Sin embargo, a diferencia de CIGARRO, RASTREADOR comienza desde el modelo concreto del programa y luego
elimina hechos irrelevantes. Por lo tanto, la w eaker el interpolante es el
más probable es para TRAZADOR para evitar explorar otras rutas simbólicas "similares". Esta es la motivación detrás de
un método de interpolación basado en precondiciones más débiles (wp) .
Ejemplo 1. La verificación del programa ideado en la Fig. 2 (a) ilust califica la necesidad
para wp, así como la esencia de nuestro enfoque para mitigar la "p problema de "explosión atómica".
La figura 2 (b) muestra el primer camino simbólico explorado por TRAZADOR lo cual es inviable. (*)
significa que la evaluación de la guardia puede ser cierto o falso. Después de renombrar obtenemos
las restricciones insatisfactorias s 0 = 0 0 ∧ s 1 = s 0 + 1 ∧ s 2 = s 1 + 1 ∧ s 2> 10) Estado-
Las técnicas de interpolación más avanzadas anotarán cada l ubicación con su correspondiente
1 Fórmulas dadas UN y si tal que UN ∧ si es insatisfactorio, un Craig interpolante [ 8] yo satisface: (1) A | = YO, ( 2) yo ∧ si es
〈 1 〉 Si(*)
cierto cierto cierto
s <= 0
más 1
s <= 0
1
s <= 0
1
(*)
s <= 0 (*) (*) (*)
〈 3 〉 s + = 2; 2
s <= 0
2
s <= 0
2 3
s ++ s ++ s ++
〈 4 4 〉 Si(*) s+=2s
más 55 55 66 55 66 55 66
〈 8 〉 error();
〈99〉
Figura 2. Árboles simbólicos con postcondiciones más fuertes o CLP-PROVER (ejecutando TRACER en pro-
gramo en la Fig. 2 (a) con opciones - intp sp o - intp clp)
s <= 8
1 s <= 8 s <= 8
1 1
(*)
s <= 8 (*) s <= 8 (*) (*)
s <= 8
2 2 2 2
s ++ s ++ s ++ s+=2
s <= 9 subsumido
44 s <= 9 44 s <= 9 44 4
(*) (*)
<= 9 (*) <= 9 (*) (*)
<= 9
55 55 66 55 66
s ++ s ++ s+=2 s ++ s+=2
Fig. 3. Árboles simbólicos con precondiciones más débiles (en ejecución RASTREADOR con - intp wp)
interpolante: ι 1: s 0 0 ≤ 0, ι 2: s 0 0 ≤ 0, ι 4: s 1 ≤ 1, ι 5: s 1 ≤ 1, y ι 7: s 2 ≤ 2 dónde
ι k se refiere al interpolante en la ubicación k. En todas las figuras, los interpolantes están encerrados en (rojo)
cajas La figura 2 (c) muestra el árbol después de la segunda palmada simbólica. h ha sido explorado. A
ubicación 7 7 del segundo camino TRAZADOR prueba si el estado simbólico actual s0= 0 0 ∧ s1=
2 por ι 7: s 2 ≤ 2, el interpolante en
s 0 + 1 ∧ s 2 = s 1 + 2 está subsumido 7) Sin embargo, esto
Por eficiencia, TRAZADOR sub-aproxima la precondición más débil por una mezcla de eliminación existencial de
cuantificadores, núcleos insatisfactorios, un y algunas heurísticas. Cuando
se detecta un camino inviable calculamos ¬ (∃ y · SOL), el postcondición que queremos
mapear en un condición previa, dónde sol es el guardia donde se detecta la inviabilidad y y
son SOL- variables locales Las dos reglas principales para propagar wp's ar mi:
2 Un estado simbólico σ es subsumido o cubierto por otro estado simbólico
σ ′ si se refieren a lo mismo
ubicación y el conjunto de estados representados por σ es un subconjunto de los representados por σ ′. Alternativamente,
Si σ y σ ′ son vistos como fórmulas entonces σ está subsumido por σ ′ Si σ | = σ ′.
(UN) wp (x: = mi, Q) = Q [e / x]
(SI) wp ( Si( C) S 1 más S 2, Q) = (C ⇒ wp (S 1, Q)) ∧ (¬ C ⇒ wp (S 2, Q))
La regla (A) reemplaza todas las ocurrencias de X con mi en la fórmula Q. El desafío es cómo
producir fórmulas eficientes (conjuntivas) a partir de la regla (B) a medida que ak como sea posible para aumentar
Ejemplo 2 Volviendo al programa en la Fig. 2 (a). La figura 3 (a) muestra el sam primero
camino simbólico explorado por TRAZADOR pero anotado con precondiciones más débiles: ι 1:
s 0 0 ≤ 8, ι 2: s 0 0 ≤ 8, ι 4: s 1 ≤ 9, ι 5: s 1 ≤ 9, y ι 7: s 2 ≤ 10) En este ejemplo, los cálculos de wp se simplifican notablemente ya
que los guardias son c irrelevante para el
inviabilidad de la ruta, y por lo tanto, solo la regla (A) es trigge rojo. Por ejemplo, ι 7: s 2 ≤ 10
se obtiene por ¬ (∃V \ { s 2} · s 2> 10) ≡ s 2 ≤ 10 dónde V es el conjunto de todas las variables del programa (incluidas las
variables renombradas) y ι 6: s 1 ≤ 9 9 se obtiene por wp (s 2 = s 1+ 1,
s 2 ≤ 10) = s 1 ≤ 9) La figura 3 (b) muestra la segunda ruta simbólica, pero tenga en cuenta que la pa th
ahora se puede incluir en la ubicación 7 7 desde el estado simbólico s0= 0 0 ∧ s1= s0+ 1 ∧
s 2 = s 1 + 2 | = s 2 ≤ 10) Los bordes discontinuos representan caminos subsumidos y están etiquetados con "subsumido".
Finalmente, la Fig. 3 (c) ilustra cómo el thi rd ruta simbólica puede ser también
subsumido en la ubicación 4 4 ya que s 0 = 0 0 ∧ s 1 = s 0 + 2 | = s 1 ≤ 9) TRAZADOR demuestra seguridad
de nuevo, pero el tamaño del árbol simbólico ahora es lineal en el número ber de ramas. ⊓⊔
Con bucles ilimitados, la única esperanza de producir una prueba es abstracción. En una palabra,
al encontrar un ciclo TRAZADOR calcula el mas fuerte posibles invariantes de asa Ψ
mediante el uso de técnicas de ampliación para hacer que el SE finito. Si un error abstracto espurio
se encuentra entonces un fase de refinamiento (Similar a CEGAR) descubre un interpolante yo que gobierna
Ejemplo 3 TRAZADOR ejecuta el programa hasta que se encuentra un ciclo y comprueba cuándo r
cierto conjunto de candidatos de bucle se mantiene después de la ejecución de el ciclo. Obtenemos el
camino simbólico π 1 ≡ bloquear 0 = 0 0 ∧ nuevo 0 = antiguo 0 + 1 ∧ ( nuevo 0 0 6 = antiguo 0) ∧ bloquear 1 =
1 ∧ antiguo 1 = nuevo 0 0 de ejecutar el más rama, que se muestra en la Fig. 4 (b). Asumir un ensanchamiento ∇ definido como C ∇
C ′, C Si C ′
| = C de otra manera cierto, dónde C y C ′ son los
== 0)
〈77〉 error();
55 55
〈8〉
{lock
1 (nuevo! = = 1, new = old} {lock
1 (nuevo! = = 1, new = old}
UN
{lock = 0, new = old + 1} UN
{lock = 0, new = old + 1}
bloqueo = 0, nuevo = antiguo + 1 (nuevo! = viejo) 1 (¡Ampliación fallida!) (nuevo! = viejo) 1 (nuevo == viejo)
44
3 7 (nuevo ==
(*) (*) bloqueo = 0, nuevo ++ 0
C
subsumido si
{lock = 1, new = old} 1 {lock = 0, new = old + 1}
1B {lock = 1, new = old} 1
55 55
(nuevo! = viejo) (nuevo! = viejo)
falso falso
6 (nuevo == viejo) 6 (nuevo == viejo)
{lock
1 (nuevo! = = 1, new = old} (bloqueo == 0) (bloqueo! = 0) (bloqueo == 0) (bloqueo! = 0)
falso 8 falso 8
0 0 ∧ nuevo 0 = antiguo 0 + 1 ∧ ( nuevo 0 = antiguo 0) ∧ ( bloquear 0 = 0) es insatisfactorio). Segundo, por precondiciones más débiles
inferimos un interpolante yo ≡ nuevo 0 0 6 = antiguo 0 0 eso es suficiente para gobernar
fuera del contraejemplo. Tercero, fortalecemos nuestro resumen de bucle acción cierto con YO, grabar
ese yo no se puede abstraer más y reiniciar.
Después de reiniciar, la ejecución de π 1 que se muestra en la Fig. 4 (e) no se puede detener en la ubicación
etiquetado con si ya que( nuevo 0 = antiguo 0 + 1) ∇ ( antiguo 1 = nuevo 0) es todavía cierto pero esta abstracción no
conserva nuevo 0 0 6 = antiguo 0, el interpolante de la fase de refinamiento.
Como resultado, no podemos abstraer al candidato nuevo 0 = antiguo 0 + 1 en el lugar UN
y, por lo tanto, la ruta debe desenrollarse una iteración más. Howeve r, la ruta desenrollada
ya no tome el cuerpo del bucle sino que siga la condición de salida p disimular las limitaciones
bloquear 1 = 1 ∧ nuevo 1 = antiguo 0. Por lo tanto, el camino desenrollado es seguro. Finalmente exploramos π 2 de
el luego rama mostrada en la Fig. 4 (f). Afortunadamente, podemos detenernos con seguridad e ejecución de
π 2 ( como antes) ya que no se necesita abstracción para este camino yh ence, nuevo 0 0 6 = antiguo 0 0 es
Preservado. Como resultado, el estado del niño C está subsumido por su antepasado A. ⊓⊔
Observaciones Se sabe que wp puede no generalizarse con algunos bucles como J hala y col.
señalado en [14]. TRAZADOR se puede alimentar con otros métodos de interpolación y / o con invariantes inductivos de
herramientas externas (ver Sec. 3). también , nuestra técnica de camino invariante
a través de la ampliación está estrechamente relacionado con la ampliación "hasta" S ( ∇ S) utilizado en [9], donde S estafa-
contiene las restricciones inferidas por la fase de refinamiento. Howe ver, lo usan para mejorar
CEGAR mientras SE plantea diferentes desafíos (ver [12] Sec.1, Ex.3). Finalmente , lo haríamos
quisiera enfatizar esa abstracción en TRAZADOR difiere de CEGAR en un fundamental
camino. TRAZADOR intentos de inferir el mas fuerte loop invariants modulo las limitaciones
de técnicas de ampliación mientras CEGAR así como herramientas híbridas como CONTROLADOR DE CPA y
KRATOS a menudo propagará abstracciones más gruesas. Aunque stro nger abstracciones pueden
ser más caros pueden converger más rápido en presencia de loo ps (ver [12] Sec.1, Ex.4).
3 Uso e implementación
Entrada. TRAZADOR toma como entrada un programa C con aserciones
Programa C
normalmente.
Refinamiento
SE Interprete C
Loop Inv.
Error Safe
• Restricción de resolución se basa en el CLP ( R) solucionador para razonar rápido sobre aritmética lineal
sobre reales aumentados con un procedimiento de decisión para matrices (o ption- mccarthy)
• Interpolación implementa dos métodos con diferente fuerza lógica. Th primero
método utiliza postcondiciones más fuertes [12, 13] (- intp sp). El segundo computa
precondiciones más débiles (- intp wp) pero actualmente solo admite aritmética lineal
sobre reales. TRAZADOR también proporciona interfaces a otros métodos de interpolación su ch as
PROBADOR CLP (- intp clp).
• Refinamiento invariante de bucle . Similar a CEGAR la efectividad del refinamiento
la fase generalmente depende de la heurística ( - h opción). Pero a diferencia CEGAR herramientas, SE solamente
realiza abstracciones en los encabezados de bucle. Por lo tanto, dado un camino th en alcanza un error lo-
catión TRAZADOR solo necesita visitar esos puntos de abstracción en el camino yc diablos si
uno de ellos causó la posibilidad de alcanzar el error. Si es así, yo t utiliza la interpolación para
elija qué restricciones pueden descartar el error. De otra manera, El error debe ser real.
• Generación Invariante de Bucle . Si se encuentra un encabezado de bucle TRAZADOR graba un conjunto de lazo
invariante candidatos proyectando sobre la estadística simbólica propagada mi. Cuando un cy-
cle π se encuentra ensancha el estado en el encabezado por C ∇ C ′ dónde C ′ es el candidato C
después de la ejecución de π. La implementación actual de la ampliación es C ∇ C ′, C Si C ′ | = C
de otra manera cierto. Muy importante si ∇ intenta abstraer una restricción necesaria para excluir un error, luego
falla y la ruta se desenrolla al menos t una iteración más. Alabama-
aunque nuestros experimentos muestran que nuestro método para descubrir los invariantes de bucle son rápidos
y efectivo, es incompleto( en el sentido de que puede causar la no terminación) por varias razones. Primero, la
generación de candidatos consi ders solo restricciones restricciones
acotado por SE a pesar de que TRAZADOR permite enriquecer este conjunto con invariantes inductivos proporcionados por I NTER PAGS
ROC. En segundo lugar, la implementación de ∇ Es bastante ingenuo. Tercero,
Nosotros corrimos TRAZADOR sobre el ntdrivers-simpli fi cado y ssh-simpli fi cado puntos de referencia de SVCOMP ( sv-comp.sosy-lab.org)
y comparado con dos herramientas de última generación: CONTROLADOR DE CPA [ 3]
y HSF [ 21]. La figura 6 muestra los resultados de esta comparación incluyendo t él impacta en
TRAZADOR utilizando las condiciones posteriores más fuertes ( SP) y precondiciones más débiles ( WP) como en-
TRAZADOR se ajusta en gran medida, principalmente porque los desenrollamientos de bucles son caros f o SE y por lo tanto
subsumir más a menudo es vital. por ssh-simpli fi cado puntos de referencia ( s3 clnt y s3 srvr)
TRAZADOR, con SP, no pudo finalizar todos los programas excepto uno, donde # #S, #R y T
#S #R T
Programa SP WP SP WP SP WP CPA HSF cdaudio 4663 2138 0 0 12
10 3 529
diskperf 4565 2829 0 0 14 11 3 513
fl oppy 1758 1357 0 0 4 4 2 568
kb fi ltr 319 230 0 0 2 2 2 55
s3 clnt 1 ∞ 6940 ∞ 33 ∞ 61 7 8
s3 clnt 2 ∞ 9871 ∞ 74 ∞ 115 12 5
s3 clnt 3 ∞ 17617 ∞ 114 ∞ 338 8 99
s3 clnt 4 ∞ 6990 ∞ 46 ∞ 80 5 8
s3 srvr 1 ∞ 5496 ∞ 12 ∞ 33 18 5
s3 srvr 2 ∞ 7295 ∞ 29 ∞ 120 98 11
s3 srvr 3 ∞ 5950 ∞ 14 ∞ 37 13 39
s3 srvr 4 47988 4349 143 12 372 27 25 10
Fig.6. Comparación entre TRAZADOR y veri fi cadores de última generación en Intel 2.33Ghz 3.2GB.
fueron alrededor de 10-15 veces más en comparación con WP. Comparado con HSF, un puro" CEGAR
veri fi cador TRAZADOR superado en el ntdrivers-simpli fi cado puntos de referencia (primeras 4 filas) y se superó en
el resto. Esto sugiere que CEGAR puede comportarse mejor cuando
Se necesitan numerosos desenrollamientos de bucle y SE puede ser más adecuado cuando la mayoría de las infecciones
los caminos sensibles afectan la seguridad (donde CEGAR realizaría muchos refinamientos). Comparando
con CPA un verificador híbrido y ganador de SV-COMP '12, TRAZADOR tarifas casi iguales
en el ntdrivers-simpli fi cado puntos de referencia y s3 srvr programas, pero se supera en el
s3 clnt puntos de referencia Sin embargo, nuestra evaluación demuestra que a TRAZADOR es competencia
Referencias
3. D. Beyer y col. Verificación del modelo de software mediante codificación de bloque grande . En FMCAD'09.
4. D. Beyer, TA Henzinger, R. Jhala y R. Majumdar. EXPLOSIÓN. En t. J. STTT, 2007
5. A. Cimatti y col. Kratos: un verificador de modelos de software para SystemC. En CAV'11.
6. A. Cimatti y col. Generación interpolante eficiente en SMT. En TACAS'08.
7. E. Clarke y col. Satabs: Abstracción de predicados basada en sat para Ansi-C. En TACAS'05.
8. W. Craig. Tres usos del teorema de Herbrand-Gentzen en Mod relacionado El y la teoría de la prueba. JSC'55.
9. BS Gulavani y col. Refinar interpretaciones abstractas. Inf. Proceso. Letón. , 2010
10. F. Ivancic y col. F-Soft: Plataforma de Verificación de Software. En CAV'05.
11. J. Jaffar, S. Michaylov, P. Stuckey y R. Yap. El CLP ( R) Sistema. TOPLAS 1992
12. J. Jaffar, JA Navas y AE Santosa. Simbólico ilimitado Ejecución para el programa Veri-
fi cación. En RV'11.
13. J. Jaffar, AE Santosa y R. Voicu. Un método de interpolación para r Recorrido CLP. En CP'09.
14. R. Jhala y col. Un enfoque práctico y completo para predecir el refinado ment. En TACAS'06.
15. J. Rey. La ejecución simbólica y las pruebas del programa. Com. ACM '76.
16. G. Lalire, M. Argoud y B. Jeannet. El analizador Interproc http: // pop-
art.inrialpes.fr/people/bjeannet/bjeannet-forge/interproc.
17. KL McMillan. Un teorema interpolador Prover. TCS 2005
18. KL McMillan. Anotación perezosa para pruebas de programa y verificación. En CAV'10.
19. GC Necula, S. McPeak, SP Rahul y W. Weimer. CIL. En CC'02.
20. AV Nori, SK Rajamani, S. Tetali, AV Thakur. El proyecto yogui t. En TACAS'09.
21. S.Grebenshchikov et.al. Verificadores de software de síntesis de Pr de las Reglas. En PLDI'12.
22. A. Rybalchenko y V. Sofronie. Solución de restricciones para interpola ción En VMCAI'07.