대화형 답변 집합 프로그래밍: 다중샷 솔버와 인터랙티브 쉘 aspic
초록
본 논문은 전통적인 일회성 ASP 해결 방식에서 벗어나, 다중샷 솔버를 이용해 논리 프로그램을 동적으로 수정·질의할 수 있는 인터랙티브 ASP 프레임워크를 제안한다. 시스템 상태와 상태 변환 연산을 형식화하고, 이를 기반으로 사용자와의 대화형 질의·이론 탐색을 지원하는 aspic 쉘을 구현·평가한다.
상세 분석
논문은 먼저 ASP의 기존 한계—즉, 프로그램을 한 번에 전체 입력하고 결과를 얻은 뒤에는 다시 실행 없이 부분적인 수정이나 연속 질의가 어려운 점—을 지적한다. 이를 해결하기 위해 다중샷(Multi‑shot) solving 개념을 도입한다. 다중샷은 프로그램이 실행 중에도 규칙, 사실, 제약을 추가·삭제할 수 있게 하며, 클링고 4(clingo 4)의 제어 API를 활용한다.
핵심 기여는 ‘시스템 상태’를 (R, I, i, j) 네 튜플로 정의한 점이다. 여기서 R은 현재의 기본 프로그램, I는 외부 입력 원자 집합, i는 입력 원자에 대한 진리값 할당(참·거짓·미정), j는 모델 필터링을 위한 전역 원자 할당이다. 상태를 변환하는 연산은 크게 네 종류로 나뉜다.
- Assume / Cancel – 전역 원자 j에 대해 가정(assume)하거나 취소(cancel)함으로써 모델 필터를 조정한다. 이는 일시적인 가설 검증에 유용하며, 기존 ASP의 ‘query’와 유사한 역할을 한다.
- Assert / Open / Retract – 입력 원자 I에 대한 i 할당을 조작한다. assert는 원자를 참으로 고정, open은 미정으로 전환, retract는 완전히 제거한다. 이를 통해 사용자는 사실을 동적으로 삽입·삭제하며, 프로그램의 논리적 의미 변화를 즉시 관찰할 수 있다.
- Define / External / Release – 새로운 규칙 집합을 프로그램에 추가하거나, 외부 원자를 선언하거나, 기존 원자를 해제한다. define 연산은 프로그램 합성 이론에 기반해 원자 재정의를 방지하고, 양방향 의존성을 제한한다. external은 외부 제어가 가능한 원자를 I에 삽입하고, release는 해당 원자를 프로그램에서 제거하면서 a←a 같은 ‘항상 거짓’ 규칙을 삽입해 원자의 부정성을 보장한다.
이러한 연산들은 서로 상호작용하는 일련의 동등성 및 불변식(예: cancel(assume(…)) = identity 등)을 만족하도록 설계돼, 사용자가 복잡한 상태 전이를 직관적으로 조합할 수 있다.
질의 메커니즘은 두 단계로 구성된다. 먼저 모델 필터 ν와 엔타일먼트 모드 µ(교집합/합집합)를 정의해, 안정 모델 집합 AS(P)에서 관심 원자 집합을 추출한다. 그런 다음 query 연산은 원자 q 혹은 부울식 φ에 대해 ‘yes/no’를 반환한다. 부울식은 새로운 규칙 집합 Q(φ)로 변환되어 임시 원자 e를 통해 프로그램에 삽입·제거되는 과정을 거치며, 이는 기존 ASP 엔진에 부하를 최소화한다.
비그라운드(Non‑ground) 확장은 기존 그라운드 연산과 동일하게 동작하지만, 규칙과 외부 선언에 안전성 검사를 추가한다. 비그라운드 질의는 conjunctive 형태만 허용해, 변수 안전성을 보장한다.
마지막으로 논문은 이러한 형식적 정의를 바탕으로 aspic 쉘을 구현한다. aspic은 파이썬 API를 통해 사용자가 명령(assume, assert, define 등)을 입력하고, 클링고 4의 다중샷 모드에서 즉시 결과를 확인한다. 실험에서는 생물정보학 도메인의 대규모 데이터셋을 대상으로, 연속적인 가설 추가·제거와 질의가 기존 일회성 ASP 대비 5배 이상 빠른 인터랙티브 탐색을 가능하게 함을 보여준다.
전체적으로 이 논문은 ASP를 정적 문제 해결 도구에서 동적, 대화형 지식 탐색 플랫폼으로 전환시키는 이론적·시스템적 토대를 제공한다. 특히 상태 전이 연산의 형식화와 클링고 4 기반 구현은 향후 복합 스트림 처리, 로봇 제어, 실시간 의사결정 시스템 등에 적용될 가능성을 열어준다.
댓글 및 학술 토론
Loading comments...
의견 남기기