In this thesis, we describe techniques for statically analyzing new types of errors associated with concurrent software. We present an experimental implementation of a static analyzer to validate concurrent programs written in a proposed programming language which amounts to a subset of Concurrent Euclid. As a preliminary steps, synchronization constructs are simulated to produce concurrency states. Using these concurrency states, this analyzer addresses problems such as how processes are synchronized, what portions of a program can be executed in parallel, which variables are defined or referred indeterminately, and whether or not a concurrent program falls into an infinite waiting.