종속적으로 유형이 지정된 프로그래밍에는 데이터를 분해하고 재귀를 수행하는 두 가지 주요 방법이 있습니다.
- 종속 패턴 일치 : 함수 정의는 여러 절로 제공됩니다. 통일은 모든 생략 된 경우가 불가능하고 외부 솔버가 재귀가 잘 이루어 지도록합니다.
- 제거기 : 각 유도 데이터 유형 에는 유도 상수 역할을하는 상수 와 유형 값을 분해하는 재귀 함수로 사용됩니다 . 이것들은 더 장황하지만 전체 (모든 경우는 로 덮여 )이고 건설로 종료되는 이점이 있습니다.
필자 는 기본적으로 수학 유도 인 또는 제거기가 기본적으로 접기 인 와 같은 일반적인 데이터 유형에 대한 제거기를 보았습니다 .
필자는 종속 패턴 일치에 관한 여러 논문을 읽었으며 많은 사람들이 데이터 유형을 정의 할 수있는 유형 이론을 언급하고 이론에 의해 제거기가 제공됩니다. 예를 들어, 종속 패턴 일치 제거 는 UTT가 제거기를 기반으로하는 방법과 axiom 있을 때 패턴 일치를 제거로 변환하는 방법을 설명합니다 . 데이터 형식이 정의되면 이론은 제거기를 제공한다는 것을 이해합니다.
내가 찾지 못했거나 최소한 본 적이 없다면 인식하지 못한 것은 제거기 (유형과 의미)를 어떻게 도출 할 수 있는지에 대한 좋은 설명입니다.
누군가 데이터 유형의 정의에서 제거기를 얻는 방법을 설명하는 참조를 알려 줄 수 있습니까?
나는 구조 또는 Coq 문헌의 계산법에 설명이 있다고 확신합니다 (엄격하게 긍정적 인 유형의 경우-더 복잡한 유형의 Coq 제거기는 완전히 일반적인 것은 아닙니다).
—
Gilles 'SO- 악마 그만해'
@Gilles 내 이해는 Coq가 제거기를 사용하지 않고 대신 별도의 일치 및 (보호) 수정 연산자를 사용한다는 것입니다.
—
jmite
핵심 언어는 제거기를 사용하지 않지만 유형을 정의 할 때 Coq는
—
Gilles 'SO- 악마 그만해'8
fix
및로 정의 된 제거기를 생성합니다 match
. 참고 자료는 없지만이 제거기가 어떻게 생성되는지에 대해 읽은 것을 알고 있습니다. cs.stackexchange.com/questions/104/… 에 관심이있을 수 있습니다.
모든 유도 유형
—
chi
T
에 대해 Coq는 T_ind
종속 제거기 인 유도 원리 를 정의합니다 . 이것은 재귀 및 패턴 일치 측면에서 정의되지만 원칙적으로 동일한 유형 (동의 의미론)을 갖는 새로운 상수로 가정 할 수 있습니다.