Skip to content

Extracting information from property names is unreliable #7069

Open
@adpaco-aws

Description

@adpaco-aws

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:

  1. <function>.<class>.<counter>
  2. <class>.<counter>
  3. <function>.<counter>
  4. .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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    KaniBugs or features of importance to Kani Rust VerifierawsBugs or features of importance to AWS CBMC users

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions