Mohl bych se @Idris připomenout? Samozřejmě chápu, že máš dost svých starostí, ale třeba budu mít štěstí.
I'm back

No, vezmu to zkrátka, jako jednoduchý příklad budeme mít unární predikát
Even : Nat -> Type. Konstruktory budou dva, a sice
EvenZ : Even Z a
EvenSS : Even n -> Even (S (S n))(tady je krásně vidět, jak typový konstruktor pro funkce je vlastně implikace, včetně stejného zápisu).
Jako příklad použití mějme funkci pro dělení dvěma, která akceptuje pouze sudá čísla:
div2 : (n:Nat) -> {auto prf:Even n} -> NatPro nulu máme
div2 Z {prf=EvenZ} = 0a jinak
div2 (S (S n)) {prf=EvenSS prf} = S (div2 n {prf})Takže teď můžu jednoduše volat
div2 n, přičemž ten druhý argument (důkaz sudosti) mi překladač odvodí sám.