Functional Programming, Formal Methods.
an example (now, again on Church style): Nat = λ (n : Nat n) ∀ (P : (n : Nat n) -> Set) ∀ (S : (n : Nat n) -> P n -> P (Succ n)) ∀ (Z : P Zero) P n Zero = λ (P : (n : Nat n) -> Set) λ (S : (n : Nat n) -> P n -> P (Succ n)) λ (Z : P Zero) Z Succ = λ (n : Nat n) λ (P : (n : Nat n) -> Set) λ (S : (n :