Core Concepts
프런트엔드 번역이 입력 프로그램의 의미를 중간 검증 언어 프로그램에 충실하게 포착하고 있음을 보장하는 새로운 검증 방법론을 제시한다.
Abstract
이 논문은 프로그램 검증기의 신뢰성을 높이기 위한 새로운 검증 방법론을 제안한다. 프로그램 검증기는 일반적으로 중간 검증 언어(IVL)를 사용하여 자동화된다. 이때 프런트엔드 번역이 입력 프로그램의 의미를 IVL 프로그램에 충실하게 포착하고 있어야 한다.
논문에서는 다음과 같은 핵심 내용을 다룬다:
프런트엔드 번역과 IVL 간의 큰 의미적 격차, 다양한 번역 기법, 비국소적 검사 등의 문제를 해결하기 위한 새로운 전방 시뮬레이션 기반 검증 방법론을 제안한다.
Viper와 Boogie 언어를 대상으로 이 방법론을 구체화하고, 기존 Viper-to-Boogie 구현체에 대한 자동 검증 도구를 개발한다.
다양한 Viper 프로그램에 대한 평가를 통해 제안한 방법론의 효과성을 입증한다.
이를 통해 프로그램 검증기의 신뢰성을 크게 향상시킬 수 있다.
Stats
Viper 프런트엔드의 크기는 약 8.5 KLOC이며, Dafny-to-Boogie 프런트엔드는 약 17.2 KLOC 규모이다.
기존 Viper-to-Boogie 구현체는 복잡한 조합의 저수준 연산과 배경 논리 공리화를 사용하여 입력 언어 개념을 표현한다.
Quotes
"프로그램 검증기의 신뢰성을 위해서는 구현체의 실제 구현에 대한 공식적 보장이 필요하다. 단순히 사용된 프로그램 논리의 건전성을 증명하는 것만으로는 충분하지 않다."
"실제 구현된 프런트엔드 번역과 이론적으로 증명된 번역 사이에는 매우 큰 격차가 존재한다."