동등한 표현을 함께 다루기
표현을 한 방향으로 계속 바꾸면 먼저 선택한 규칙이 뒤의 선택을 제한할 수 있다. e-graph는 동등한 표현들을 함께 다루는 접근을 제공한다. 어떤 변환을 허용할지에 관한 규칙은 라이브러리를 사용하는 쪽에서 구성한다.
라이브러리와 분석기의 구분
Egg는 완성된 범용 컴파일러가 아니라 분석기를 만드는 기반이다. 적용할 언어와 재작성 규칙, 결과를 평가하는 방식을 목적에 맞게 정한다. 잘못된 등식을 넣으면 분석 결과의 의미도 달라지므로 규칙 자체의 정확성이 중요하다.
실험과 성능 측정
저장소에는 논리식과 수학적 표현, 람다 계산 등을 다루는 테스트가 있다. 성능을 비교할 때는 최적화된 빌드와 같은 실행 조건을 맞춰야 한다. 표현의 크기나 탐색 시간 중 무엇을 개선하려는지도 구분해서 평가한다.
관련 문서
Egglog / Souper / Alive2 / Rosette 프로그래밍 언어