Ще одна відмінність Ідріса від Агди полягає в тому, що пропорційна рівність Ідріса неоднорідна, а Агда - однорідна.
Іншими словами, можливим визначенням рівності в Ідрісі було б:
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
Визначення Аґда можна ігнорувати, як це стосується поліморфізму Всесвіту, про який згадує Едвін у своїй відповіді.
Важлива відмінність полягає в тому, що тип рівності в Агді бере два аргументи А як аргументи, тоді як в Idris він може приймати два значення з потенційно різними типами.
Іншими словами, в Ідрісі можна стверджувати, що дві речі з різними типами рівні (навіть якщо це в кінцевому підсумку є невиправданим твердженням), тоді як в Агді саме твердження - це нісенітниця.
Це має важливі та широкомасштабні наслідки для теорії типів, особливо щодо доцільності роботи з теорією типу гомотопії. З цього приводу гетерогенна рівність просто не буде працювати, оскільки для неї потрібна аксіома, несумісна з 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
. Це ідеально розумне твердження з неоднорідною рівністю.