Definition
Partial Correctness
A program is partially correct with respect to a precondition and a postcondition if, for every execution that starts in a state satisfying and terminates, the resulting state satisfies .
In Hoare notation, this is written as:
Formal Semantics
Using the set of states , we represent the set of states in which a formula is true as:
A triple is partially correct if for all :
Characteristics
- Non-Termination: Partial correctness does not guarantee that the program will actually finish. If a program enters an infinite loop, it is still vacuously partially correct for any postcondition, because there is no final state to violate the requirement.
- Safety Property: Partial correctness is often viewed as a safety property (“nothing bad happens”), whereas termination is a liveness property (“something good eventually happens”).
Verification
Proving partial correctness typically involves using the rules of the Hoare calculus, such as the composition rule and the assignment rule. For loops, a loop invariant must be identified.