Skip to content

Apparent unsoundness when doing nested (un)foldings with wildcards #892

@marcoeilers

Description

@marcoeilers

The following verifies but shouldn't:

predicate P(r: Ref) {
  Q(r) &&
  unfolding Q(r) in true
}

predicate Q(r: Ref) {true}

predicate R(r: Ref) {
  P(r) && unfolding P(r) in true
}

method test01(r: Ref) returns ()
  requires P(r)
{
  fold acc(R(r), wildcard)

  //:: ExpectedOutput(assert.failed:assertion.false)
  assert false
}

The problem is that constrainableARPs contains more than it should, so this is a variation of #290.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions