Comprender `k: Nat ** 5 * k = n` Firma

La siguiente función compila:

onlyModByFive : (n : Nat) -> (k : Nat ** 5 * k = n) -> Nat
onlyModByFive n k = 100

Pero que hacek representar con suNat ** 5 * k = n ¿sintaxis?

Además, ¿cómo puedo llamarlo? Esto es lo que probé, pero no entiendo el resultado.

*Test> onlyModByFive 5 5
When checking an application of function Main.onlyModByFive:
        (k : Nat ** plus k (plus k (plus k (plus k (plus k 0)))) = 5) is not a
        numeric type

fuente de respuestahttps://groups.google.com/d/msg/idris-lang/ZPi9wCd95FY/eo3tRijGAAAJ

Respuestas a la pregunta(1)

Su respuesta a la pregunta