SCHUR 프로그램 정역 함수 형식 검증
본 논문은 대수 조합학 소프트웨어 SCHUR의 핵심 함수인 정역(conjugate) 연산을 C 코드 수준에서 형식 검증한다. Frama‑C와 Jessie 플러그인을 이용해 ACSL 주석을 달고, 자동 정리 증명기와 Coq을 활용해 모든 검증 조건을 증명함으로써 함수의 정확성을 기계적으로 보증한다.
저자: Franck Butelle, Florent Hivert, Micaela Mayero
이 논문은 대수 조합학 및 대칭 함수 계산을 지원하는 오픈소스 소프트웨어 SCHUR의 핵심 기능 중 하나인 정역(conjugate) 함수에 대한 형식 검증을 수행한다. SCHUR은 원래 Pascal으로 작성된 뒤 자동 변환을 통해 C 코드가 된 5만 줄 이상의 복잡한 프로그램이며, 전역 변수와 비정형적인 네이밍으로 유지보수가 어려운 상태다. 저자들은 먼저 SCHUR에서 가장 많이 사용되는 정수 분할 구조와 그 정역 연산을 독립적인 모듈로 분리한다. 정역은 분할의 Ferrers 도형을 대각선 대칭시켜 얻는 새로운 분할이며, 이후 240여 개 명령 중 절반 이상이 이 연산에 의존한다는 점에서 검증 대상의 중요성을 강조한다.
형식 검증 도구로는 Frama‑C 플랫폼을 선택하고, 그 위에 Jessie 플러그인을 이용해 ACSL(ANSI/ISO C Specification Language) 주석을 삽입한다. 정역 함수는 두 개의 정수 배열 A와 B를 인자로 받아, A에 저장된 분할을 B에 정역 형태로 기록한다. 배열 크기는 MAX=100으로 고정하고, 0을 종료 마커로 사용한다. 검증을 위해 먼저 ‘is_partition’ 전제를 정의해 배열이 비증가 순서이며 각 원소가 허용 범위 내에 있음을 명시한다. 이어서 ‘countIfSup’라는 보조 전제를 도입해 특정 열 높이 k에 대해 A에서 k 이상인 원소의 개수를 계산하는 논리를 형식화한다. 최종 목표인 ‘is_conjugate’ 전제는 모든 k에 대해 B
원본 논문
고화질 논문을 불러오는 중입니다...
댓글 및 학술 토론
Loading comments...
의견 남기기