Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Conversation

@makaimann
Copy link
Collaborator

As discussed elsewhere, there was an issue with state variables being removed from the system. Since COI ignores the initial state constraints, some removed variables may appear in init. When those are removed, the transition system becomes invalid (i.e. it contains non-variables in init). This prevented us from use COI with some techniques. This PR simply doesn't remove those state variables. This should not impact performance too much because those variables only occur in init.

If it ends up affecting performance negatively, we can look into analyzing init to remove the state variables. This is not so simple though, because even for functional transition systems init can be arbitrary formulas over current state variables.

@makaimann
Copy link
Collaborator Author

FYI, since this is a simple change, I wasn't planning to run on the cluster. However, I'll be running lots of other jobs this week so if this introduces performance issues, I'll notice after it's merged.

Copy link
Collaborator

@lonsing lonsing left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for that fix, looks good to me!

@lonsing
Copy link
Collaborator

lonsing commented Jan 8, 2021

@makaimann, I agree with your comments on potential difficulties in analyzing init if it consist of arbitrary formulas. As you pointed out in a discussion elsewhere, it would be simple if init was a conjunction of equalities. Could we perhaps enforce that via the API? Or would that be too much of a restriction and limitation of usability?

@makaimann
Copy link
Collaborator Author

@makaimann, I agree with your comments on potential difficulties in analyzing init if it consist of arbitrary formulas. As you pointed out in a discussion elsewhere, it would be simple if init was a conjunction of equalities. Could we perhaps enforce that via the API? Or would that be too much of a restriction and limitation of usability?

That's a good question. I think a conjunction of equalities is the most common case but is too restrictive in general. One possible solution is to just have a flag that gets set if a more general constraint is added and then we can check to flag to see how much simplification we can do. What do you think about that? I was thinking we could address that later and just merge this PR for now though if that works for you?

@lonsing
Copy link
Collaborator

lonsing commented Jan 8, 2021

Yes of course, sounds good, let's merge that PR.

@makaimann makaimann merged commit 92f74db into master Jan 8, 2021
@makaimann makaimann deleted the coi-fix branch January 8, 2021 04:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants