Alloy와 SMT 기반 유한 모델 탐색을 연결하는 Portus
초록
Portus는 Alloy 모델을 다종 정렬 일차 논리(MSFOL)로 변환하고, 이를 EUF 로 매핑해 SMT 솔버가 유한 모델을 찾도록 하는 새로운 백엔드이다. 기존 Kodkod‑SAT 기반 방식과 비교해 큰 스코프에서도 경쟁력 있는 성능을 보이며, Alloy Analyzer에 완전히 통합된다.
상세 분석
Portus의 핵심 기여는 Alloy의 서명·관계·제약을 MSFOL 형태로 정확히 매핑하는 번역 체계이다. 이를 위해 저자들은 ‘정렬 정책(sort policy)’과 ‘정렬 해석자(sort resolvant)’ 개념을 도입해, Alloy 서명 계층 구조가 여러 정렬에 겹칠 수 있는 문제를 해결한다. 기본 정책은 모든 서명을 단일 ‘univ’ 정렬에 매핑하지만, 최적화 정책에서는 서명별로 구체적인 정렬을 부여해 양자화와 함수 선언을 최소화한다.
번역 과정은 세 단계로 구성된다. 첫째, 각 서명에 대해 멤버십 술어 inS 를 정의하고, 정확/비정확 스코프를 EUF의 범위 제약으로 변환한다. 둘째, 필드(관계)는 정렬된 함수로 표현하고, 다중성(multiplicity) 제약을 함수의 도메인·코도메인 범위 식으로 인코딩한다. 셋째, 사실(fact)과 명령(run/check) 구문을 재귀적으로 순회하며 논리 연산·집합 연산·전이 폐쇄(transitive closure)를 MSFOL 식으로 변환한다. 특히 전이 폐쇄는 Burch et al.의 반복 제곱 기법을 차용해 로그(k)개의 보조 정의만으로 구현한다.
Portus는 번역 후 Fortress 라이브러리를 통해 MSFOL 이론을 EUF 로 변환한다. EUF는 SMT 솔버가 효율적으로 처리할 수 있는 결정 가능한 조각이며, 범위 제약을 통해 해석이 반드시 유한 집합에 제한되도록 강제한다. 또한, Fortress는 대칭 깨기(symmetry breaking)와 정수 오버플로 방지(OPFI) 기법을 제공해 탐색 공간을 크게 축소한다.
실험에서는 63개의 전문가 수준 Alloy 모델을 대상으로 Kodkod과 성능을 비교했다. 결과는 대부분의 경우 Portus가 Kodkod과 동등하거나 더 나은 스케일링을 보였으며, 특히 복잡한 서명 계층과 큰 스코프를 가진 모델에서 SMT 기반 접근법이 우위를 나타냈다. 이는 SMT 솔버가 함수 구조와 정수 연산을 원시적으로 활용할 수 있기 때문이며, SAT 기반 번역이 모든 경우에 최적은 아님을 시사한다.
Portus는 Alloy Analyzer에 플러그인 형태로 완전 통합돼, 사용자는 기존 UI에서 바로 SMT 백엔드를 선택할 수 있다. 이는 모델링 단계에서 빠른 피드백을 유지하면서도, 필요 시 더 큰 스코프와 복합 제약을 다룰 수 있는 유연성을 제공한다. 향후 연구에서는 무한 스코프와 유한·무한 혼합 문제를 다루기 위해 SMT의 풍부한 이론(예: 배열, 비선형 산술)과 결합하는 방향을 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기