イドリスとアグダのもう1つの違いは、イドリスの命題の等式は不均一であるのに対し、アグダの均一性は同質であるということです。
つまり、イドリスにおける平等の推定上の定義は次のようになります。
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
アグダ定義のlは無視できます。これは、エドウィンが彼の回答で言及している宇宙多形性に関係しているためです。
重要な違いは、Agdaの等値型はAの2つの要素を引数として取るのに対し、イドリスでは、型が異なる可能性のある2つの値をとることができることです。
言い換えると、イドリスでは、タイプが異なる2つのものが等しいと主張できます(たとえそれが最終的に証明不可能な主張になったとしても)。
これは、特にホモトピー型理論を扱うことの実現可能性に関して、型理論にとって重要で広範囲に及ぶ結果をもたらします。このため、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
等式の左側には型がVect (n + (m + o)) a
あり、右側には型があるので、このステートメントは同種の等式の下ではナンセンスVect ((n + m) + o) a
です。それは異質な平等を伴う完全に賢明な声明です。