6 | ||| Build an n-ary relation type from a Vect of Types
11 | ||| Universal quantification of a n-ary Relation over its
12 | ||| arguments to build a (function) type from a `Rel` type
13 | |||
14 | ||| ```
15 | ||| λ> All [Nat,Nat] LTE
16 | ||| (x : Nat) -> (x : Nat) -> LTE x x
17 | ||| ```
23 | ||| Existential quantification of a n-ary relation over its
24 | ||| arguments to build a dependent pair (eg. Sigma type).
25 | |||
26 | ||| Given a (type of) relation `p : [t_1, t_2 ... t_n] x r` where `t_i` and `r` are
27 | ||| types, `Ex` builds the type `Σ (x_1 : t_1). Σ (x_2 : t_2) ... . r`
28 | ||| For example:
29 | ||| ```
30 | ||| λ> Ex [Nat,Nat] LTE
31 | ||| (x : Nat ** (x : Nat ** LTE x x))
32 | ||| ```
33 | ||| Which is the type of a pair of natural numbers along with a proof that the first
34 | ||| is smaller or equal than the second.
40 | ||| Map a type-level function over the co-domain of a n-ary Relation