Skip to content

conjunctions in assertion causing violated invariants #88

@polgreen

Description

@polgreen

This works:

__CPROVER_bool EXPRESSION(int, int);
int nondet_int();

void main()
{
 int a=nondet_int();
 int b=nondet_int();
 int c=nondet_int();

__CPROVER_assert(EXPRESSION(a,b)==(a>b),"");
__CPROVER_assert(EXPRESSION(b,a)==(b>a),"");
}

This doesn't:

__CPROVER_bool EXPRESSION(int, int);
int nondet_int();

void main()
{
 int a=nondet_int();
 int b=nondet_int();
 int c=nondet_int();

__CPROVER_assert(EXPRESSION(a,b)==(a>b) && EXPRESSION(b,a)==(b>a),"");
}

Invariant violation:

Invariant check failed
File: goto_state.cpp:149 function: apply_condition
Condition: false
Reason: Unreachable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions