양방향 정제 알고리즘을 이용한 코카 구현
초록
Matita에 구현된 CIC 정제기는 외부 구문의 불완전한 입력을 내부 형식으로 변환한다. 기대 타입을 활용해 위‑아래로 타입 정보를 전파함으로써 오류 위치를 정확히 파악하고, 서브타이핑과 암시적 인자를 효율적으로 처리한다.
상세 분석
본 논문은 인터랙티브 정리 증명기 Matita에 구현된 계산적 (공)귀납적 구성(CIC)의 정제 알고리즘을 제시한다. 정제기는 사용자가 외부 구문으로 입력한 용어, 타입, 증명 스크립트를 내부 구문으로 변환하여 커널이 검증할 수 있는 형태로 만든다. 기존의 단방향 정제는 하위 용어의 타입을 먼저 추론하고, 최종적으로 상위 컨텍스트와 일치시키는 방식으로, 의존 타입이 복잡해질수록 오류 위치 파악과 통합 문제 해결이 어려웠다. 이에 저자들은 기대 타입을 입력으로 받아 하위 구조로 타입 정보를 전파하는 양방향 정제 방식을 채택한다. 구체적으로, 변수 바인더가 무타입일 때 기대 타입을 통해 자동으로 타입을 할당하고, 함수 적용 시 기대 결과 타입을 이용해 인자 타입을 역추론한다. 이러한 전파 메커니즘은 특히 의존 함수와 종속 타입의 경우, 인자와 결과 사이의 관계를 미리 파악함으로써 통합 제약을 크게 완화한다. 또한, 서브타이핑을 위한 강제 변환(coercion) 시스템이 양방향 흐름에 맞게 재구성되어, 필요한 경우 최소한의 강제 변환만 삽입하도록 최적화된다. 고차 통합 알고리즘이 본질적으로 불완전함을 감안할 때, 보다 단순하고 해결 가능성이 높은 통합 문제를 생성하는 것이 실용적이다. 논문은 새로운 양방향 규칙들을 제시하는데, 예를 들어 기대 타입이 Π형일 때 도메인 타입을 미리 추론하고, 결과 타입을 바인더에 전달하는 규칙이 포함된다. 이러한 규칙은 기존의 단방향 규칙에 비해 오류 메시지를 구체적인 위치에 제공하고, 사용자가 놓친 인자나 타입을 빠르게 식별하도록 돕는다. 더불어, 외부 구문에 벡터 형태의 플레이스홀더를 도입하여 다중 인자를 한 번에 생략할 수 있게 함으로써 암시적 인자 처리와 전술 구현을 크게 단순화한다. 벡터 플레이스홀더는 내부적으로 필요한 수만큼 새로운 메타변수를 생성하고, 이후 통합 단계에서 일괄적으로 해결한다. 전체적으로 이 논문은 양방향 정제와 플레이스홀더 메커니즘이 CIC 기반 증명기의 사용성을 향상시키고, 구현 복잡도를 낮추며, 고차 통합의 성공률을 높이는 데 기여함을 입증한다.