1. A method of scheduling a stateless model checking analysis, the method comprising: creating an exhaustive thread execution schedule that creates a nondeterministic assignment of thread executions for all threads during a cycle of a computer program; and removing unfair thread assignments from the exhaustive thread execution schedule to create a fair and exhaustive schedule.