공동귀환을 통한 코인덕티브 데이터의 내재 복잡도 분석
초록
이 논문은 등식 프로그램을 기반으로 귀납·공동귀납 데이터를 동시에 다루는 프레임워크를 제시한다. 생산성(공정성)을 핵심 명제로 삼아, 데이터 술어가 부정적으로 등장하지 않는 공식에 대한 공동귀납 증명이 가능한 함수와, 코어커런스(corecurrence)로 정의 가능한 함수가 정확히 일치함을 보인다. 이는 Leivant의 원시 재귀에 대한 내재 복잡도 특성과 유사하지만, 공동귀납적 맥락에서 약화된 형태로 구현된다.
상세 분석
논문은 먼저 기존의 함수 정의 방식이 귀납적(재귀)과 공동귀납적(코어커런스)으로 구분된다는 점을 짚고, 특히 공동귀납 데이터(무한 스트림, 트리 등)의 경우 생산성 보장이 핵심 과제임을 강조한다. 이를 위해 저자들은 ‘등식 프로그램(equational program)’이라는 형식적 모델을 도입한다. 등식 프로그램은 함수 정의를 방정식 형태로 기술하고, 각 방정식은 패턴 매칭과 재귀 호출을 포함한다. 이 모델은 프로그램 자체가 증명 객체가 되도록 설계돼, 계산과 논리를 자연스럽게 결합한다는 장점이 있다.
핵심 아이디어는 생산성을 ‘공정성(productivity)’이라는 단일 논리적 명제로 전환하고, 이를 증명하기 위해 ‘공동귀납(coinduction)’을 활용한다는 점이다. 기존에 공동귀납적 정의의 정당성을 보일 때는 보통 ‘바이시뮬레이션(bisimulation)’을 사용했지만, 저자는 이를 부정적인 데이터 술어가 없는 공식에 대한 공동귀납 증명으로 대체한다. 구체적으로, 함수 f가 코어커런스로 정의될 수 있다는 것은 f의 출력이 무한 구조를 생성하면서도 매 단계마다 유한한 관측값을 생산한다는 의미이며, 이는 ‘데이터 술어가 부정적으로 나타나지 않는다(negative occurrence)’는 제약 하에 공동귀납 논리로 증명될 수 있다.
이와 같은 제한은 Leivant(2004)의 ‘단극 유도(unipolar induction)’와 직접적인 유사성을 가진다. Leivant는 귀납적 데이터에 대해 데이터 술어가 부정적으로 나타나지 않는 경우에만 원시 재귀가 가능하다고 보였는데, 본 논문은 이를 공동귀납적 데이터에 적용해 ‘코어커런스와 생산성 증명’ 사이의 정확한 동치 관계를 제시한다. 즉, 함수가 코어커런스로 정의될 수 있는지 여부는 해당 함수의 생산성을 ‘데이터 술어가 부정적으로 등장하지 않는 공식’에 대한 공동귀납 증명으로 판단할 수 있다.
기술적 측면에서 저자들은 두 가지 주요 정리를 증명한다. 첫 번째는 ‘생산성 ⇒ 공동귀납 증명 가능’ 방향으로, 코어커런스 정의를 통해 얻은 함수가 자동으로 생산성을 만족함을 보이며, 이를 공식화된 공동귀납 규칙으로 변환한다. 두 번째는 ‘공동귀납 증명 가능 ⇒ 코어커런스 정의 가능’ 방향으로, 주어진 생산성 증명을 분석해 함수의 코어커런스 형태(코드스트림 생성 규칙)를 추출한다. 이 과정에서 부정적 데이터 술어가 없다는 조건이 핵심적인 역할을 하며, 이를 위반하면 증명과 정의 사이의 동치가 깨진다.
또한 논문은 복잡도 관점에서 이 동등성을 활용한다. 코어커런스는 본질적으로 ‘단계당 한 번씩 관측값을 생산’하는 제한된 형태의 연산이므로, 해당 함수들의 시간·공간 복잡도는 자연스럽게 ‘다항적·선형적’ 범주에 머문다. 따라서 생산성 증명을 통해 함수가 코어커런스에 속함을 확인하면, 그 함수는 내재 복잡도 이론에서 ‘초기 함수(primitive)’ 수준에 해당한다는 결론을 얻을 수 있다.
마지막으로 저자는 이 프레임워크가 기존의 함수 정의와 검증 도구(예: Coq, Agda)와 통합될 가능성을 제시한다. 등식 프로그램은 이러한 증명 보조기와의 연동이 용이하도록 설계돼, 생산성 검증을 자동화하고, 코어커런스 정의를 추출하는 메타 프로그램을 구현할 수 있다. 이는 무한 데이터 구조를 다루는 실용적인 프로그램 개발에 큰 도움이 될 전망이다.