Specifically, properties that identify preconditions over which a function can be used without resulting in undefined behavior or data races.
For example, I am familiar with 3 important properties:
My question is whether:
- is this set of properties non-overlapping and complete?
- If not, is there a set of properties that makes it non-overlapping and complete?
Note that there are environment-specific properties (e.g. thread-safe in multi-threaded environments), or programming languages (generic vs non-generic, number of arguments, etc) that are not of relevance in this context. To reason, we can think of properties of a AWS Lambda or Azure Function, where these environment-specific do not apply.
By non-overlapping I mean that no property in the set has an if and only if relationship with a subset of any other properties in the set.
By complete I mean that any other property not in the set of properties can be logically derived from the said set of properties.