[논문 리뷰] Program Synthesis using Abstraction Refinement
이 논문은 추상화 정밀도를 이용한 합성(SYNGAR)을 소개한다. SYNGAR는 동일한 추상적 동작을 갖는 프로그램을 그룹화함으로써 검색 공간을 줄이는 추상 유한 트리 오토마타(AFTA)를 사용하는 프로그램 합성 기법이다. 잘못된 프로그램에 대한 증명을 반복적으로 이용해 추상화를 정밀화함으로써, SYNGAR는 정확한 프로그램을 효율적으로 찾거나 그 존재하지 않음을 증명할 수 있으며, 행렬 조작 분야에서는 최신 기술 대비 최대 90배 빠른 성능을 달성하고, 문자열 변환 분야에서는 FlashFill와 비교해도 유리한 성능을 보인다.
We present a new approach to example-guided program synthesis based on counterexample-guided abstraction refinement. Our method uses the abstract semantics of the underlying DSL to find a program $P$ whose abstract behavior satisfies the examples. However, since program $P$ may be spurious with respect to the concrete semantics, our approach iteratively refines the abstraction until we either find a program that satisfies the examples or prove that no such DSL program exists. Because many programs have the same input-output behavior in terms of their abstract semantics, this synthesis methodology significantly reduces the search space compared to existing techniques that use purely concrete semantics. While synthesis using abstraction refinement (SYNGAR) could be implemented in different settings, we propose a refinement-based synthesis algorithm that uses abstract finite tree automata (AFTA). Our technique uses a coarse initial program abstraction to construct an initial AFTA, which is iteratively refined by constructing a proof of incorrectness of any spurious program. In addition to ruling out the spurious program accepted by the previous AFTA, proofs of incorrectness are also useful for ruling out many other spurious programs. We implement these ideas in a framework called ool. We have used the BLAZE framework to build synthesizers for string and matrix transformations, and we compare BLAZE with existing techniques. Our results for the string domain show that BLAZE compares favorably with FlashFill, a domain-specific synthesizer that is now deployed in Microsoft PowerShell. In the context of matrix manipulations, we compare BLAZE against Prose, a state-of-the-art general-purpose VSA-based synthesizer, and show that BLAZE results in a 90x speed-up over Prose.
연구 동기 및 목표
- 기하학적 검색 공간으로 인해 발생하는 예제 기반 프로그램 합성의 확장성 문제를 해결한다.
- 구체적 의미 체계 대신 동일한 추상적 의미 체계를 갖는 프로그램을 그룹화하여 검색 공간을 줄인다.
- 사용자 정의 의미 체계를 통해 다양한 DSL을 지원하는 도메인에 종속되지 않는 합성 프레임워크를 개발한다.
- 허위 프로그램에 대한 잘못된 증명을 반복적으로 이용해 추상화를 정밀화함으로써 정확성을 확보한다.
- 기존 기술보다 훨씬 뛰어난 성능을 달성하면서도, 합성 과정에서 정당성과 완전성을 확보한다.
제안 방법
- 프로그램의 추상적 의미 기반 등가 클래스를 표현하기 위해 추상 유한 트리 오토마타(AFTA)를 사용한다.
- 시작 단계에서 굵은 추상화를 설정하고, 동일한 추상적 동작을 갖는 프로그램을 표현하기 위해 초기 AFTA를 구성한다.
- 허위 프로그램이 추상화 하에서 예제를 만족하지만 구체적 의미 체계에서는 만족하지 못하는 경우를 탐지함으로써, 반복적 추상화 정밀도 개선(CFGAR)을 적용한다.
- 기호 실행과 조건 강화를 이용해 허위 프로그램에 대한 잘못된 증명을 구성함으로써, 해당 프로그램 뿐만 아니라 유사한 프로그램들까지 제거한다.
- AFTA에서 사용하는 조건 집합을 확장하여 추상화를 정밀화함으로써, 다음 반복에서 허위 프로그램이 제외되도록 보장한다.
- 비용 기반 순위 함수를 사용해 프로그램 탐색 우선순위를 정함으로써, 종료성과 완전성을 확보한다.
실험 결과
연구 질문
- RQ1구체적 의미 체계 대비 추상화 정밀도를 사용하면 프로그램 합성에서 검색 공간을 크게 줄일 수 있는가?
- RQ2잘못된 증명을 통해 특정 허위 프로그램 뿐만 아니라 유사한 프로그램들의 전체 집합을 제거할 수 있는가?
- RQ3AFTA와 CEGAR를 기반으로 한 도메인에 종속되지 않는 프레임워크가 프로그램 합성에서 정당성과 완전성을 동시에 달성할 수 있는가?
- RQ4추상화 기반 합성의 성능은 FlashFill 및 Prose와 같은 최신 기술과 비교해 실용적 도메인에서 어떻게 나타나는가?
- RQ5기존 도구가 성능 저하 문제를 겪는 복잡한 도메인, 예를 들어 행렬 변환 분야에서 이 방법은 효과적으로 확장 가능한가?
주요 결과
- SYNGAR의 구현체인 Blaze는 행렬 조작 작업에서 최신 기술인 VSA 기반 합성기 Prose 대비 최대 90배 빠른 성능 향상을 달성한다.
- 문자열 변환 도메인에서는 Microsoft PowerShell에 널리 배포된 합성기인 FlashFill보다 최소 한 계단 이상 빠른 성능을 보인다.
- 문자열 및 행렬 도메인 전반에서 SYNGAR는 두 가지 다른 존재 기술보다 최소 한 계단 이상의 성능 향상을 지속적으로 달성한다.
- 이 방법은 정당성과 완전성을 갖춘다: 정확한 프로그램이 존재한다면, SYNGAR는 반복적인 추상화 정밀도 개선을 통해 결국 그 프로그램을 찾을 수 있다.
- 잘못된 증명은 특정 허위 프로그램 뿐만 아니라 유사한 추상적 동작을 갖는 많은 다른 프로그램까지 효과적으로 제거한다.
- 추상 유한 트리 오토마타의 사용은 프로그램 등가 클래스의 효율적 표현과 정밀도 개선을 가능하게 하여 탐색해야 할 프로그램 수를 극적으로 줄인다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.