Revising UNITY Programs: Possibilities and Limitations
We concentrate on automatic addition of untimed and real-time UNITY properties to programs by local redesign. The main focus of this paper is to identify instances where addition of UNITY properties can be achieved efficiently (in polynomial time) and where the problem of adding UNITY properties is difficult (NP-complete). Regarding addition of UNITY properties in polynomial time, we present a sound and complete algorithm that adds a single leads-to property (respectively, bounded-time leads-to property) and a conjunction of unless, stable, and invariant properties (respectively, bounded-time unless and stable) to an existing untimed (respectively, real-time) UNITY program. Since ensures can be expressed as a conjunction of a leads-to and unless, our algorithms can also be used to add one ensures property along with a conjunction of safety properties. Regarding hardness results, we show that (1) while one leads-to (respectively, ensures) property can be added in polynomial time, the problem of adding two such properties (or any combination of leads-to and ensures) is NP-complete, (2) if maximum non-determinism is desired then the problem of adding even a single leads-to property is NP-complete, and (3) the problem of providing maximum non-determinism while adding a single bounded-time leads-to property to a real-time program is NP-complete (in the size of the time-abstract bisimulation representation of the program) even if the original program satisfies the corresponding unbounded leads-to property.