Nagoya 종료 도구: WPO 기반 고성능 종결 증명기
초록
본 논문은 트리 쓰기 시스템(TRS)의 종결성을 자동으로 증명하는 NaTT(Nagoya Termination Tool)를 소개한다. 핵심은 대부분의 기존 감소쌍을 포괄하는 가중 경로 순서(WPO)의 최초 구현과, 외부 SMT 솔버와의 긴밀한 연동을 통한 효율성이다. 논문은 DP 프레임워크 기반의 다양한 프로세서(EDG, Rule Removal, Uncurrying 등)와 WPO 템플릿, 전처리 기법, SMT 인터랙션 최적화 등을 상세히 기술한다.
상세 분석
NaTT는 종결성 검증을 위해 전통적인 의존 쌍(Dependency Pair, DP) 프레임워크를 기반으로 설계되었다. DP 프레임워크는 TRS R의 규칙을 의존 쌍 집합 DP(R)으로 변환하고, 이 집합을 SCC(Strongly Connected Component) 단위로 분해하여 각각을 독립적으로 처리한다. NaTT는 이 과정에서 네 가지 주요 프로세서를 구현한다. 첫째, EDG(Estimated Dependency Graph) 프로세서는 정확한 의존 그래프를 계산하기 어려운 경우 근사 그래프를 이용해 SCC를 추출한다. 둘째, Reduction Pair 프로세서는 핵심 모듈로, %와 ≻라는 두 순서를 이용해 규칙과 의존 쌍을 감소시키거나 제거한다. 여기서 NaTT는 기존 KBO, LPO, POLO, 매트릭스 해석 등 다양한 감소쌍을 모두 WPO라는 하나의 프레임워크 안에 통합한다. WPO는 (1) 가중 대수(weight algebra), (2) 전위(precedence) 함수, (3) 상태(status) 함수라는 세 파라미터로 정의되며, 템플릿 기반의 폴리노미얼(POL)과 맥스(Max) 대수를 조합한 MPOL을 제공한다. 템플릿 변수는 외부 SMT 솔버에 의해 정수값으로 결정되며, NaTT는 이를 선형화하기 위해 계수를 0·1 이진 변수로 치환하고 ite(조건부) 표현식으로 변환한다. 셋째, Rule Removal 프로세서는 감소쌍이 약하게 감소하는 규칙을 사전에 제거함으로써 DP 집합의 크기를 제곱 수준에서 감소시킨다. 넷째, Uncurrying 프로세서는 고차 함수 형태의 규칙을 평탄화하여 적용 가능성을 높인다.
SMT와의 연동은 NaTT의 성능을 좌우한다. NaTT는 SMT‑LIB 2.0을 지원하는 모든 솔버와 호환되며, 기본적으로 Z3를 사용한다. 각 감소쌍 탐색 단계에서 생성되는 수천 개의 제약식을 한 번에 풀지 않고, SMT의 push/pop, reset, get‑value 같은 인터랙티브 명령을 활용해 단계별로 추가·제거한다. 이는 동일한 규칙 집합에 대해 여러 SCC를 순차적으로 처리할 때 불필요한 재계산을 방지한다. 또한, 비선형 연산을 선형화하는 기법을 도입해 QF‑LIA(Linear Integer Arithmetic) 영역에서 빠르게 해결할 수 있도록 설계되었다.
NaTT의 구현은 OCaml로 6,000줄 정도이며, 전체 코드 중 약 40%가 WPO 구현에, 23%가 SMT 인터페이스에, 나머지는 파서·명령줄 처리·기타 프로세서에 할당된다. 실험 결과, TPDB(termination problem database)와 termination competition 2014에서 경쟁 도구들을 앞서는 성능을 보였으며, 특히 기본 전략(POLO → Uncurrying → 다양한 감소쌍 순서 적용)에서 높은 성공률과 짧은 실행 시간을 기록했다.
댓글 및 학술 토론
Loading comments...
의견 남기기