1. A method for an implementation of type system for a computer language, comprising the steps of: creating a finite state automata for a data type of the computer language, wherein said finite state automata includes states and transitions, wherein each transition includes a symbol of the alphabet of finite state automata; augmenting said finite state automata with additional transitions that include secondary symbols, wherein each secondary symbol is a subtype of said symbol; and, using the augmented finite state automata for automata algorithms of the type system, wherein said automata algorithms include intersection and union.