위키득계정 ↗
기술

Souffle

Souffle기술
분류
Datalog 계열 분석 언어
표현 기반
관계 사실 규칙
실행 방식
해석과 코드 변환
주요 활용
프로그램 분석
Souffle는 관계와 규칙으로 분석 문제를 표현하는 Datalog 계열 언어 및 실행 도구다. 규칙을 해석하거나 병렬 C플러스플러스 코드로 변환해 실행할 수 있다.

관계로 분석 문제 표현

분석할 정보를 관계의 튜플로 두고, 어떤 관계에서 다른 사실이 따라오는지를 규칙으로 작성한다. 작업 절차를 하나씩 지정하는 코드와 달리 도출 관계를 표현하는 데 집중한다. 원래 프로그램에서 사실을 추출하는 과정은 분석 구성의 별도 부분이다.

실행 엔진의 역할

관계를 저장하는 자료구조와 인덱스 선택, 병렬 실행을 위한 코드 변환을 제공한다. 레코드와 대수적 자료형, 집계와 사용자 정의 함수 등 Datalog를 확장한 기능도 있다. 확장 문법의 의미와 종료 조건을 기본 Datalog와 같다고 가정하지 않는다.

추론 결과 살펴보기

프로파일링과 유도 근거를 살펴보는 기능은 규칙의 비용과 결과를 이해하는 데 쓰인다. 계산이 빠르게 끝났다는 사실과 규칙이 원하는 분석을 표현한다는 사실은 다르다. 입력 관계와 규칙, 실행 옵션을 함께 관리해야 결과를 재현할 수 있다.

관련 문서

Egglog / Egg 등식 포화 / Flix / Gillian 검증 플랫폼