Inną różnicą między Idrisem i Agdą jest to, że propozycjonalna równość Idrisa jest heterogeniczna, podczas gdy Agda jest jednorodna.
Innymi słowy, domniemana definicja równości w Idrisie brzmiałaby:
data (=) : {a, b : Type} -> a -> b -> Type where
refl : x = x
podczas gdy w Agdzie jest
data _≡_ {l} {A : Set l} (x : A) : A → Set a where
refl : x ≡ x
L w definicji Agdy można zignorować, ponieważ ma ono związek z polimorfizmem wszechświata, o którym wspomina Edwin w swojej odpowiedzi.
Ważną różnicą jest to, że typ równości w Agdzie przyjmuje dwa elementy A jako argumenty, podczas gdy w Idrisie może przyjmować dwie wartości o potencjalnie różnych typach.
Innymi słowy, w Idrisie można twierdzić, że dwie rzeczy o różnych typach są sobie równe (nawet jeśli okaże się to twierdzeniem nie do udowodnienia), podczas gdy u Agdy samo stwierdzenie jest nonsensem.
Ma to ważne i szeroko zakrojone konsekwencje dla teorii typów, zwłaszcza w odniesieniu do wykonalności pracy z teorią typów homotopii. W tym celu heterogeniczna równość po prostu nie zadziała, ponieważ wymaga aksjomatu, który jest niespójny z HoTT. Z drugiej strony możliwe jest sformułowanie użytecznych twierdzeń o niejednorodnej równości, której nie można w prosty sposób stwierdzić przy jednorodnej równości.
Być może najłatwiejszym przykładem jest asocjatywność konkatenacji wektorów. Biorąc pod uwagę listy indeksowane długością zwane wektorami zdefiniowanymi w ten sposób:
data Vect : Nat -> Type -> Type where
Nil : Vect 0 a
(::) : a -> Vect n a -> Vect (S n) a
i konkatenacja z następującym typem:
(++) : Vect n a -> Vect m a -> Vect (n + m) a
możemy chcieć udowodnić, że:
concatAssoc : (xs : Vect n a) -> (ys : Vect m a) -> (zs : Vect o a) ->
xs ++ (ys ++ zs) = (xs ++ ys) ++ zs
To stwierdzenie jest nonsensowne w warunkach jednorodnej równości, ponieważ lewa strona równości ma typ, Vect (n + (m + o)) a
a prawa strona ma typ Vect ((n + m) + o) a
. To całkowicie rozsądne stwierdzenie z heterogeniczną równością.