타입이 있는 용어 그래프의 종속형 형식화
초록
Agda2를 이용해 무타입·타입 용어 그래프를 집합 기반 구조와 gs‑모노이달 범주, 그리고 let‑식 형태로 형식화하였다. 종속형 타입을 통해 그래프 변환·조합 과정에서 타입 보존을 정형적으로 증명한다.
상세 분석
이 논문은 코드 생성 단계에서 발생하는 타입 불일치를 해결하고자, Haskell 대신 종속형 프로그래밍 언어 Agda2를 선택한다. Agda의 집합(Set)과 레벨(Level) 계층 구조를 활용해 그래프의 노드와 엣지를 각각 Setoid(동치 관계가 부여된 집합)으로 모델링한다. 무타입 용어 그래프(DHG₁)에서는 입력 노드와 내부 노드를 분리하고, 각 하이퍼엣지는 입력 아리티(k), 라벨, 입력 노드 벡터, 출력 노드(내부 노드)로 구성한다. 이때 eOut 함수가 전사·단사일 필요는 없으며, 필요 시 역함수 쌍을 도입해 bijection을 강제할 수 있다.
타입이 있는 용어 그래프에서는 전역 타입 집합 Tʏpe을 정의하고, 라벨을 입력·출력 타입 벡터에 의존하는 함수형 집합으로 설계한다. EdgeType 레코드에 inArity, outArity, inTypes, outTypes 필드를 두어 라벨마다 정확한 타입 시그니처를 명시한다. Typed A 타입을 Σ-형식(존재적 의존 쌍)으로 정의해, 각 노드가 특정 타입에 속함을 증명 가능하게 만든다. 이를 기반으로 TypedVec를 도입해 위치에 따라 타입이 달라지는 벡터를 구현한다.
그래프 조합 연산은 gs‑모노이달 범주의 구조를 그대로 차용한다. 순차 합성(seqJungle)은 두 그래프의 내부 노드 집합을 이산합(⊎)하고, 입력·출력 매핑을 적절히 재배치한다. 병렬 합성(parJungle) 역시 입력·출력 포지션을 shift·inject 연산으로 맞춘 뒤 이산합을 수행한다. 이 과정에서 Agda의 함수적 추상화와 레코드 모듈화를 활용해 복잡한 매핑을 간결히 표현한다.
또한, NotSoFresh 라이브러리를 이용해 let‑바인딩 형태의 중첩 표현을 제공한다. 이는 변수 바인딩과 스코프 관리가 자동화된 상태에서 그래프를 식으로 전환할 수 있게 하며, 종속형 타입 검증이 그대로 유지된다. 결과적으로, 그래프 변환·최적화 단계에서 발생할 수 있는 타입 오류를 정형적으로 방지하고, 증명 가능한 최적화 파이프라인을 구축한다는 점이 핵심 기여이다.
댓글 및 학술 토론
Loading comments...
의견 남기기