Skip to content

Unsoundness related to QPs with unsatisfiable conditions #842

@marcoeilers

Description

@marcoeilers

The following program verifies even though it should not:

field f: Ref
field g: Ref

function one(): Int {1}
function two(): Int {2}

predicate P(x: Ref) {
  forall i: Int :: one() == two() && x.f != null ==> acc(x.g.f)
}


method hmmm(x: Ref)
{
  fold P(x)
  assert false
}

This seems to be the problem behind the --conditionalizePermissions unsoundness recently discovered by @jcp19 and @Dspil

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