Satu perbedaan lain antara Idris dan Agda adalah bahwa kesetaraan proposisional Idris heterogen, sedangkan Agda adalah homogen.
Dengan kata lain, definisi diduga kesetaraan dalam Idris adalah:
data (=) : {a, b : Type} -> a -> b -> Type where
refl : x = x
sementara di Agda, itu
data _≡_ {l} {A : Set l} (x : A) : A → Set a where
refl : x ≡ x
Aku dalam definisi Agda dapat diabaikan, karena ada hubungannya dengan polimorfisme alam semesta yang Edwin sebutkan dalam jawabannya.
Perbedaan penting adalah bahwa tipe kesetaraan dalam Agda mengambil dua elemen A sebagai argumen, sementara di Idris dapat mengambil dua nilai dengan tipe yang berpotensi berbeda .
Dengan kata lain, di Idris kita dapat mengklaim bahwa dua hal dengan tipe yang berbeda adalah sama (bahkan jika itu berakhir dengan klaim yang tidak dapat dibuktikan), sedangkan di Agda, pernyataan itu sama sekali tidak masuk akal.
Ini memiliki konsekuensi penting dan jangkauan luas untuk teori tipe, terutama mengenai kelayakan bekerja dengan teori tipe homotopy. Untuk ini, kesetaraan heterogen tidak akan berfungsi karena memerlukan aksioma yang tidak konsisten dengan HoTT. Di sisi lain, dimungkinkan untuk menyatakan teorema yang berguna dengan kesetaraan heterogen yang tidak dapat secara langsung dinyatakan dengan kesetaraan homogen.
Mungkin contoh termudah adalah asosiatif penggabungan vektor. Diberikan daftar panjang-diindeks yang disebut vektor yang didefinisikan demikian:
data Vect : Nat -> Type -> Type where
Nil : Vect 0 a
(::) : a -> Vect n a -> Vect (S n) a
dan rangkaian dengan tipe berikut:
(++) : Vect n a -> Vect m a -> Vect (n + m) a
kami mungkin ingin membuktikan bahwa:
concatAssoc : (xs : Vect n a) -> (ys : Vect m a) -> (zs : Vect o a) ->
xs ++ (ys ++ zs) = (xs ++ ys) ++ zs
Pernyataan ini omong kosong di bawah kesetaraan homogen, karena sisi kiri kesetaraan memiliki tipe Vect (n + (m + o)) a
dan sisi kanan memiliki tipe Vect ((n + m) + o) a
. Ini adalah pernyataan yang sangat masuk akal dengan kesetaraan heterogen.