“…In the functional programming community, 'strongly typed' encodings are a popular motivating example for generalized algebraic datatypes (GADTs) [10,24,27], and similar techniques can also be applied in modern object oriented languages [19]. In the type theory and automated reasoning community, such 'internal' representations have been described by a number of authors [1,2,8,12,13,16,23]. So the idea is well-known, and it is intuitively clear that dependently-typed calculi such as CiC have the power to express intrinsic encodings of, for example, simply typed languages.…”