제약 프로그래밍 기반 경계 프로그램 검증 프레임워크 CPBPV

CPBPV는 제약 저장소를 이용해 프로그램 사양과 실행 경로를 동시에 표현하고, 비결정적 심볼릭 실행으로 모든 실제 입력에 대한 경로를 탐색한다. 불일치가 발견되면 즉시 경로를 차단해 스푸리어스 경로를 방지하며, 여러 단계의 솔버(MIP → CP)를 순차적으로 적용해 효율성을 높인다. 실험 결과, 변수 도메인 크기에 거의 영향을 받지 않으며 기존 모델 체크 기반 도구보다 수십 배 빠른 검증이 가능하고, 미묘한 오류도 찾아낸다.

저자: ** 헬레네 콜라비자 (Hélène Collavizza) – Université de Nice‑Sophia Antipolis, 프랑스 미셸 루에르 (Michel Rueher) – Université de Nice‑Sophia Antipolis, 프랑스 파스칼 반 헨텐리크 (Pascal Van Hentenryck) – Brown University

본 논문은 프로그램이 사전조건(pre‑condition) 하에서 모든 가능한 입력에 대해 사후조건(post‑condition)을 만족하는지를 검증하는 “bounded program verification” 문제에 새로운 접근법인 CPBPV(Constraint‑Programming Framework for Bounded Program Verification)를 제안한다. CPBPV는 프로그램과 사양을 동일한 제약 저장소에 매핑하고, 실행 경로를 비결정적(symbolic) 방식으로 탐색한다. 먼저, 입력 프로그램은 Java와 JML 사양으로 기술되며, 사전조건은 제약식으로 변환된다. 실행 중 변수와 배열은 SSA‑유사 버전 번호를 부여받아 새로운 제약 변수로 전환된다. 예를 들어, `l = 0;`은 `l0 = 0`이라는 제약을, `l = l + 1;`은 `l1 = l0 + 1`이라는 제약을 추가한다. 배열 원소 접근은 element constraint(`a

원본 논문

고화질 논문을 불러오는 중입니다...

댓글 및 학술 토론

Loading comments...

의견 남기기