Basic abstractions of the type system