TEL, an acronym for types, equations and logic, is a second generation logic programming language. It is the practical outcome of a research effort aimed at the integration of types and functions with logic programming ā la Prolog. TEL was developed from 1986 to 1989 at the Universität Kaiserslautern and the DFKI by Werner Nutt, Ralf Scheidhauer, Georg Seul, and Gert Smolka.

Here are some highlights of TEL:

Most of the theoretical and practical effort was devoted to the development of TEL's type system. TEL is a language integrating parametric polymorphism ā la ML with subtypes ā la OBJ2. This combination regains much of the flexibility of untyped languages such as Lisp and Prolog while providing the classical advantages of typed languages: The presence of subtypes makes TEL's type system more than a syntactic discipline merely visible at compile time. TEL actually computes with types: at run time values are tested for membership in subtypes and variables are constrained to subtypes. Constraining variables to subtypes rather than binding them tentatively to particular elements (as in Prolog) avoids expensive backtracking.

The goal in designing TEL was to come up with a practical language that is a significant improvement over Prolog and can be implemented efficiently right now. The quest for practicability strongly constrained the design of TEL: