Description
CBMC version: 5.63.0
In general, property names have the format <function>.<class>.<counter>
. Until now, we had assumed in Kani that <function>.
was optional, so extracting the property class was still easy enough.
Some time ago, we had a regression in Kani for detecting missing function definitions when we tried to upgrade to CBMC 5.59.0 (more details in model-checking/kani#1271). Now I'm reviewing the code which extracts information from property names (using CBMC JSON output), and I've found that all of these variants are possible:
<function>.<class>.<counter>
<class>.<counter>
<function>.<counter>
.recursion
(specific case with description"recursion unwinding assertion"
)
It's very complicated for us to know whether we are in case (2) or (3). And case (4) was totally unexpected. Is there a reason not to add these attributes (function, class and counter) as separate fields in the JSON output?