Idris와 Agda의 또 다른 차이점은 Idris의 명제 평등은 이질적이며 Agda는 동 질적이라는 것입니다.
다시 말해, Idris에서 평등에 대한 추정의 정의는 다음과 같습니다.
data (=) : {a, b : Type} -> a -> b -> Type where
refl : x = x
아그 다에있는 동안
data _≡_ {l} {A : Set l} (x : A) : A → Set a where
refl : x ≡ x
Edda가 대답에서 언급 한 우주 다형성과 관련이 있기 때문에 Agda 정의의 l은 무시할 수 있습니다.
중요한 차이점은 Agda의 등식 유형은 A의 두 가지 요소를 인수로 사용하지만 Idris에서는 잠재적으로 다른 유형으로 두 개의 값을 사용할 수 있다는 것 입니다.
다시 말해, Idris에서 다른 유형을 가진 두 가지가 동일하다고 주장 할 수 있지만 (아직 증명할 수없는 주장이더라도) Agda에서는 그 말이 의미가 없습니다.
이것은 유형 이론, 특히 호모 토피 유형 이론과의 작업 가능성에 관한 중요하고 광범위한 결과를 가져옵니다. 이를 위해 이기종 평등은 HoTT와 일치하지 않는 공리가 필요하기 때문에 작동하지 않습니다. 다른 한편으로, 동질적인 평등으로 간단하게 언급 될 수없는 이질적인 평등을 가진 유용한 정리를 진술하는 것이 가능하다.
아마도 가장 쉬운 예는 벡터 연결의 연관성입니다. 이렇게 정의 된 벡터라는 길이 인덱스 목록 :
data Vect : Nat -> Type -> Type where
Nil : Vect 0 a
(::) : a -> Vect n a -> Vect (S n) a
다음 유형으로 연결하십시오.
(++) : Vect n a -> Vect m a -> Vect (n + m) a
우리는 그것을 증명하고 싶을 것입니다 :
concatAssoc : (xs : Vect n a) -> (ys : Vect m a) -> (zs : Vect o a) ->
xs ++ (ys ++ zs) = (xs ++ ys) ++ zs
평등의 왼쪽에는 type이 Vect (n + (m + o)) a
있고 오른쪽 에는 type이기 때문에이 명령문은 동종 평등에서 넌센스 Vect ((n + m) + o) a
입니다. 이질적인 평등을 가진 완벽하게 합리적인 진술입니다.