Skip to main content
QUICK REVIEW

[논문 리뷰] Software Model Checking via Large-Block Encoding

Dirk Beyer, Alessandro Cimatti|ArXiv.org|2009. 04. 29.
Formal Methods in Verification참고 문헌 11인용 수 88
한 줄 요약

이 논문은 단일 블록 프로그램 전이를 더 큰 요약된 프로그램 조각으로 대체함으로써 추상적 도달 가능성 트리(ART)에서 탐색하는 경로 수를 극적으로 줄이는 기호적 모델 체킹 기법인 대규모 블록 인코딩(LBE)을 제안한다. 부울 조건자 추상화를 사용한 SMT 솔버 기반 기호적 후속 상태 계산을 통해 LBE는 ART 크기를 지수적으로 감소시키며, 기존의 단일 블록 인코딩(SBE)과 Blast와 같은 최신 도구보다 성능과 확장성 면에서 뛰어나다.

ABSTRACT

The construction and analysis of an abstract reachability tree (ART) are the basis for a successful method for software verification. The ART represents unwindings of the control-flow graph of the program. Traditionally, a transition of the ART represents a single block of the program, and therefore, we call this approach single-block encoding (SBE). SBE may result in a huge number of program paths to be explored, which constitutes a fundamental source of inefficiency. We propose a generalization of the approach, in which transitions of the ART represent larger portions of the program; we call this approach large-block encoding (LBE). LBE may reduce the number of paths to be explored up to exponentially. Within this framework, we also investigate symbolic representations: for representing abstract states, in addition to conjunctions as used in SBE, we investigate the use of arbitrary Boolean formulas; for computing abstract-successor states, in addition to Cartesian predicate abstraction as used in SBE, we investigate the use of Boolean predicate abstraction. The new encoding leverages the efficiency of state-of-the-art SMT solvers, which can symbolically compute abstract large-block successors. Our experiments on benchmark C programs show that the large-block encoding outperforms the single-block encoding.

연구 동기 및 목표

  • 단일 블록 인코딩(SBE)에서 발생하는 경로 수의 폭발로 인한 소프트웨어 모델 체킹의 확장성 문제를 해결하기 위해.
  • 더 큰 프로그램 조각을 단일 전이로 요약하여 추상적 도달 가능성 트리(ART)의 노드 수를 줄이기 위해.
  • 경로의 명시적 열거 대신 SMT 솔버를 사용한 기호적 후속 상태 계산으로 효율성을 향상시키기 위해.
  • 대규모 블록 인코딩의 맥락에서 부울 추상화(정밀하지만 비용이 높음)와 카르테시안 추상화(효율적이지만 정밀도가 낮음) 간의 상충 관계를 평가하기 위해.
  • 실제로 기호적 대규모 블록 분석이 기존의 경로 기반 모델 체킹보다 뛰어나게 성능을 발휘할 수 있음을 보여주기 위해.

제안 방법

  • 대규모 블록 인코딩(LBE)은 ART 내에서 프로그램 연산의 시퀀스를 단일 전이로 요약하여 탐색해야 할 경로 수를 줄인다.
  • 추상 상태는 단순히 논리적 합성만을 사용하는 것이 아니라, 더 큰 코드 블록을 관통하는 복잡한 관계를 포괄하는 임의의 부울 조합으로 표현된다.
  • 기호적 후속 상태 계산은 부울 조건자 추상화를 사용하여 SMT 솔버가 전체 코드 블록을 대상으로 후속 상태를 계산할 수 있도록 한다.
  • 이 방법은 경로의 명시적 열거를 피하기 위해 대규모 프로그램 조각에 대해 효율적인 기호 추론을 수행하는 SMT 솔버를 활용한다.
  • 필요한 경우에만 추상화를 정밀화하기 위해 통합형 추론과 조건자 추상화 기법을 활용하여 점진적 검증을 지원한다.
  • 구현은 CPAchecker를 기반으로 하며, 표준 C 프로그램 벤치마크를 사용해 LBE를 SBE 및 Blast과 비교한다.

실험 결과

연구 질문

  • RQ1더 큰 프로그램 조각을 단일 전이로 요약함으로써 추상적 도달 가능성 트리(ART)의 크기를 줄이고 확장성을 향상시킬 수 있는가?
  • RQ2대규모 블록에서 부울 조건자 추상화를 사용한 기호적 후속 상태 계산이 SBE의 전통적 카르테시안 추상화보다 우수한가?
  • RQ3LBE는 올바른 프로그램과 버그가 있는 프로그램을 모두 검증할 때 SBE 및 Blast와 같은 최신 도구보다 뚜렷한 성능 향상을 달성할 수 있는가?
  • RQ4SMT 솔버의 사용이 SBE에서 관찰되는 경로 수의 지수적 증가 문제를 어느 정도 완화하는가?
  • RQ5LBE와 SBE 간의 추상화 정밀도와 계산 비용 간의 상충 관계는 어떻게 나타나는가?

주요 결과

  • LBE는 깊이 중첩된 조건문 구조에서도 ART 노드 수를 일정 수준으로 유지하는 반면, SBE는 노드 수가 지수적으로 증가하는 경향을 보였다.
  • 중첩된 조건문이 존재하는 환경에서 SBE는 24개의 벤치마크 중 14개에서 타임아웃이 발생했지만, LBE는 모든 24개를 합리적인 시간 내에 해결했다.
  • s3_srvr 벤치마크 세트의 경우, LBE는 16개의 모든 벤치마크를 총 188.67초 내에 해결했고, SBE는 16개 중 10개만 해결했으며 총 5747.10초가 소요되었다.
  • LBE는 Blast의 최고 설정(-dfs -predH 7)보다 모든 벤치마크에서 뛰어난 성능을 보였으며, Blast이 실패하거나 상당히 느렸던 24개의 안전 프로그램과 16개의 버그가 있는 프로그램을 모두 해결했다.
  • LBE는 요약 덕분에 ART 크기를 지수적으로 감소시켜 SBE가 내재하는 경로 폭발 문제를 피했다.
  • 부울 추상화의 높은 비용에도 불구하고, 후속 상태 계산 수의 감소로 인해 LBE는 전체적으로 SBE보다 뚜렷이 더 효율적이었다.

더 나은 연구,지금 바로 시작하세요

연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.