SMT에서 작은 불만족 코어를 찾는 Lemma Lifting 기법
초록
본 논문은 SMT(논리 이론 위의 만족도 검사) 문제에서 최소 규모의 불만족 코어를 효율적으로 추출하기 위한 Lemma‑Lifting 접근법을 제안한다. SMT 솔버가 탐색 과정에서 생성한 이론 레마를 Boolean 수준으로 동적으로 승격시켜, 기존의 SAT 코어 추출기와 결합함으로써 SMT 전용 코어를 얻는다. 구현이 간단하고, 모든 SAT 코어 추출기와 플러그인 형태로 연동 가능하며, SMT‑LIB 벤치마크 실험을 통해 높은 실용성을 입증한다.
상세 분석
SMT 문제는 부울 변수와 이론(예: 정수, 실수, 배열 등)의 제약을 동시에 다루어야 하므로, 전통적인 SAT 기반 불만족 코어 추출 기법을 그대로 적용하기 어렵다. 기존 연구는 주로 SAT 영역에 집중했으며, SMT에서의 코어 추출은 이론 레마를 어떻게 처리하느냐가 핵심 과제로 남아 있었다. 논문은 이 문제를 ‘Lemma‑Lifting’이라는 새로운 패러다임으로 해결한다. 구체적으로, SMT 솔버는 탐색 중에 발생한 충돌 원인인 이론 레마를 수집하고, 이를 Boolean 변수에 매핑해 부울 수준의 확장된 CNF에 삽입한다. 이렇게 확장된 부울 공식은 기존 SAT 코어 추출기에 그대로 전달될 수 있다. 코어 추출기가 반환한 불만족 코어에는 원래 SMT 제약과 함께 승격된 레마가 포함되는데, 여기서 다시 이론 레마를 제거하면 순수한 SMT 레벨의 불만족 코어가 얻어진다. 이 과정은 이론 레마를 최소한으로 승격시키는 ‘동적 승격’ 전략을 사용해 불필요한 부울 변수 폭증을 방지한다. 구현 측면에서는 기존 SMT 솔버에 레마 수집 모듈만 추가하면 되며, 코어 추출기와는 파일 입출력 혹은 API 호출 수준의 인터페이스만 필요하다. 따라서 새로운 코어 추출 알고리즘을 개발할 필요 없이, 최신 SAT 코어 축소 기법(예: MUS 추출, 핵심 최소화)과 즉시 결합할 수 있다. 실험에서는 SMT‑LIB 2.6 베이스라인을 활용해 다양한 이론(정수, 실수, 비트벡터, 배열 등)과 문제 규모에 대해 평가했으며, 전통적인 SMT 전용 코어 추출기 대비 평균 30%~45%의 실행 시간 절감과 코어 크기 감소를 달성했다. 특히, 복합 이론이 혼합된 케이스에서 Lemma‑Lifting은 레마 재사용을 통해 중복 계산을 크게 줄여, 대규모 검증 작업에 실용적인 성능을 보였다. 한계점으로는 레마 승격 과정에서 발생할 수 있는 부울 공식의 폭증을 완전히 억제하지 못한다는 점이며, 이론 레마의 선택 기준이 현재는 경험적 휴리스틱에 의존한다는 점을 들 수 있다. 향후 연구에서는 레마 선택을 정형화하고, 동적 승격 전략을 이론별 특성에 맞게 최적화하는 방향이 제시된다.