나는 타입 이론들 사이에서 가장 잘 알려진 차이점들과 관련이없는 Agda와 Coq 사이의 혼란스러운 의견 차이를 우연히 발견했다 (예 : (im) predicativity, induction-recursion 등).
특히 다음 정의는 Agda에 의해 허용됩니다.
data Ty : Set0 -> Set0 where
c1 : Ty ℕ
c2 : Ty (Ty ℕ)
반면에 동등한 Coq 정의는 거부된다. c2에서 그 자체의 지수로서 [Ty_]의 출현은 엄격한 양성을 위반하는 것으로 간주되기 때문이다.
Inductive Ty : Set -> Set :=
| c1 : Ty nat
| c2 : Ty (Ty nat).
실제로,이 경우는 엄격한 양성을 위반하는 Coq'Art 섹션 14.1.2.1의 예제입니다.
Inductive T : Set -> Set := c : (T (T nat)).
그러나 나는 유형 이론들 사이의 이러한 차이점에 대한 이유를 보지 못했습니다. 생성자 인수에서 유형의 음수 발생을 사용하여 False를 증명하는 고전적인 예는 나에게 분명하지만,이 색인 스타일에서 모순을 파생시킬 수있는 방법을 알 수는 없습니다 (엄격히 긍정적 인 생성자 인수에 관계없이).
Dybjer의 초기 Inductive Families 논문은 약간의 제한이있는 CID 논문에서 Paulin-Mohring의 솔루션에 대해 불쾌한 의견을 제시하며, 그 차이가 비현실 성과 관련이있을 수 있지만 더 자세히 설명하지는 않는다고 모호하게 암시합니다. Dybjer의 논문은 이것을 허용하는 것처럼 보이지만 Paulin-Mohring은 분명히 그것을 금지합니다.
분명히 나는이 의견 차이를 가장 먼저 알지 못하며, 어떤 사람들은이 정의가 두 시스템 ( https://lists.chalmers.se/pipermail/agda/2012/004249.html ) 에서 허용되어서는 안된다고 생각 하지만 왜 한 시스템에서는 들리지만 다른 시스템에서는 들리지 않는지 또는 의견의 차이에 대한 설명을 찾지 못했습니다.
그래서 몇 가지 질문이 있다고 가정합니다.
- 이것이 모노톤이지만 엄격하지 않은 유형의 예입니까? (Coq에서; 분명히 Agda는 그것을 엄격하게 긍정적으로 간주합니다)
- Coq가 거부하는 동안 Agda는 왜 이것을 허용합니까? 그것은 "엄격히 긍정적 인"해석에있어서의 특이한 차이 일 뿐이며, Coq와 Agda 사이에 미묘한 차이가있어 Agda에서 소리가 나고 Coq에서 소리가 나지 않거나, 특정한 이론적 선호에 의해 맛이 문제가됩니까?
- 위의 첫 번째 정의와 아래의 동등한 귀납적 재귀 정의 사이에 의미있는 차이가 있습니까?
귀납적 재귀 정의 :
mutual
data U : Set0 -> Set0 where
c : (i : Fin 2) -> U (T i)
T : Fin 2 -> Set0
T zero = ℕ
T (suc zero) = U ℕ
관련 문헌에 대한 정보를 알려 드리겠습니다.
미리 감사드립니다.
Ty is not strictly positive, because it occurs in an index of the target type of the constructor c2 in the definition of Ty.