Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Linear Two Variable Equality Domain Refining Value Domain #1635

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

DrMichaelPetter
Copy link
Collaborator

In this PR, lin2vareq interprets inequality guards as opportunities to refine value domains beyond the syntactical obvious intersection with bounds. Check the following example:

int x, y, z;
x = 3*y + 1; // a
z = 5*x + 7; // b
if (x>0) {
  __goblint_check( x >  0 );
  __goblint_check( y > -1 ); // A
  __goblint_check( z >  7 ); // B
}

Invariants A and B can assumed to hold due to assignments a and b establishing relations. Both invariants can not be tracked via value analysis.

@DrMichaelPetter DrMichaelPetter added in progress precision relational Relational analyses (Apron, affeq, lin2var) labels Nov 29, 2024
@DrMichaelPetter DrMichaelPetter self-assigned this Nov 29, 2024
@DrMichaelPetter DrMichaelPetter marked this pull request as draft November 29, 2024 09:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
in progress precision relational Relational analyses (Apron, affeq, lin2var)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant