1. An iterative, interactive method of generating a formal, directly-executable specification for a complex digital system, comprising: establishing a desired behavior for a complex digital system; creating a formal specification for the complex digital system using a formal, directly-executable specification language; and iteratively performing the steps of: a) checking for syntactical correctness of the formal specification; b) checking for logical consistency of the formal specification; c) checking for completeness of the formal specification; d) checking for correctness of the formal specification; e) comparing the desired behavior with the behavior described by the formal specification; f) determining the existence of at least one realizable implementation of the formal specification; and g) correcting any problems detected in steps a)-f) above by revising the formal specification; until the formal specification is syntactically correct, logically consistent, correct and complete, reflects the desired behavior, and has at least one realizable implementation.