Communicating Sequential Processes (CSP) is a language used to describe and reason about concurrent systems. It consists of a process algebra combined with a functional language. This combination poses unique problems when attempting to design a type checker. In this paper the differences between a conventional functional language type checker and a type checker for the CSP language are discussed. This type checker was developed to identify polymorphic types, an important first step towards the goal of automating data independence [4 ]. The result of this work has been incorporated into the Adelaide Refinement Checker [8 ] (ARC)-a CSP based tool suite for model checking concurrent systems.