1. A computer-implemented method for implementing a design, comprising: using at least one processor to perform a process, the process comprising: designing the design at a high level of abstraction; refining the design in successively lower levels of abstraction based at least in part upon the design that is designed at the high level of abstraction, wherein a higher abstraction version of the design comprises one or more stubs that will be later refined as corresponding detailed design encodings at a lower abstraction version of the design, and the action of refining the design in successively lower levels of abstraction comprises at least enforcing non-determinism of the one or more stubs; verifying one or more properties at some or all of different abstraction levels of the design, wherein a property verified at first abstraction level of the design will remain true at a second abstraction level of the design; and displaying results of verifying the one or more properties on a display device or storing the results in a data structure configured on a computer readable medium for storing the results.