Outra diferença entre Idris e Agda é que a igualdade proposicional de Idris é heterogênea, enquanto a da Agda é homogênea.
Em outras palavras, a suposta definição de igualdade em Idris seria:
data (=) : {a, b : Type} -> a -> b -> Type where
refl : x = x
enquanto estiver na Agda, é
data _≡_ {l} {A : Set l} (x : A) : A → Set a where
refl : x ≡ x
O l na definição de Agda pode ser ignorado, como tem a ver com o polimorfismo do universo que Edwin menciona em sua resposta.
A diferença importante é que o tipo de igualdade no Agda aceita dois elementos de A como argumentos, enquanto no Idris ele pode aceitar dois valores com tipos potencialmente diferentes .
Em outras palavras, em Idris, pode-se afirmar que duas coisas com tipos diferentes são iguais (mesmo que isso acabe sendo uma reivindicação improvável), enquanto na Agda, a própria afirmação é um absurdo.
Isso tem conseqüências importantes e abrangentes para a teoria dos tipos, especialmente no que diz respeito à viabilidade de trabalhar com a teoria dos tipos de homotopia. Para isso, a igualdade heterogênea simplesmente não funciona porque requer um axioma inconsistente com o HoTT. Por outro lado, é possível afirmar teoremas úteis com igualdade heterogênea que não podem ser declaradas diretamente com igualdade homogênea.
Talvez o exemplo mais fácil seja a associatividade da concatenação de vetores. Dadas as listas indexadas em comprimento chamadas vetores definidos da seguinte forma:
data Vect : Nat -> Type -> Type where
Nil : Vect 0 a
(::) : a -> Vect n a -> Vect (S n) a
e concatenação com o seguinte tipo:
(++) : Vect n a -> Vect m a -> Vect (n + m) a
podemos querer provar que:
concatAssoc : (xs : Vect n a) -> (ys : Vect m a) -> (zs : Vect o a) ->
xs ++ (ys ++ zs) = (xs ++ ys) ++ zs
Essa afirmação não faz sentido sob igualdade homogênea, porque o lado esquerdo da igualdade tem tipo Vect (n + (m + o)) a
e o lado direito tem tipo Vect ((n + m) + o) a
. É uma afirmação perfeitamente sensata com igualdade heterogênea.