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 threads of a computer program during a cycle of the computer program, the exhaustive thread execution schedule comprising a first list of thread execution events that includes exhaustive thread execution events for the threads of the computer program during a full execution of the computer program; identifying, in the first list of thread execution events, thread execution events that correspond with unfair assignments of one or more of the threads; and modifying the first list of thread execution events by replacing the identified thread execution events with alternate thread execution events to create a second list of thread execution events that includes a fair and exhaustive thread execution schedule for the computer program.