Skip to content

Verification aborted exceptionally: pure quantifier and unfolding expression in function body #491

@gauravpartha

Description

@gauravpartha

The following program leads to Silicon aborting verification exceptionally:

field elem: Int
field next: Ref

predicate list2(this: Ref, i: Int) {
  acc(this.elem) && acc(this.next) &&
  (this.next != null ==> list2(this.next, i))
}

function foo(l:Ref, i: Int) : Bool
  requires list2(l, i)
{ 
  forall j:Int ::
        i == j ==> unfolding list2(l,j) in l.next == null ? true : foo(l.next, j) 
}

Silicon's output is:

Verification aborted exceptionally: java.util.concurrent.ExecutionException: viper.silicon.reporting.Z3InteractionFailed: Unexpected output of Z3. Expected 'success' but found: (error "line 737 column 68: unknown constant
j")
Cause: viper.silicon.reporting.Z3InteractionFailed: Unexpected output of Z3. Expected 'success' but found: (error "line 737 column 68: unknown constant j")
Silicon found 1 error in 4.68s:
[0] Interaction with Z3 (instance 00) failed: Unexpected output of Z3. Expected 'success' but found: (error "line 737 column 68: unknown constant j")

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    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