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

Make VPDomain work #159

Closed
alexandernutz opened this issue Apr 11, 2017 · 2 comments
Closed

Make VPDomain work #159

alexandernutz opened this issue Apr 11, 2017 · 2 comments

Comments

@alexandernutz
Copy link
Member

Fix remaining bugs, fix support for procedure calls, and whatever is necessary to get VPDomain running and producing sensible results on practical programs.

@alexandernutz alexandernutz self-assigned this Apr 11, 2017
alexandernutz referenced this issue Apr 12, 2017
 - catch bottom-state special case through overwriting remove-/addVariable methods
 - cosmetics
@alexandernutz
Copy link
Member Author

alexandernutz commented Apr 18, 2017

New plan for VpTfStates:

  • move handleTransFormula into VpTfState, from VPPostOperator (probably)
  • add fields "inVariables" and "outVariables", indicating the scopes before/after the transition (roughly corresponding to inVars/outVars of TransFormulas, but with the full scope, i.e., including variables that the Transformula skips)
  • add method "patchIn(state)" that copies the relations in a state into the tfStates, using its In-Variables
  • add method "patchOut(state)" that copies the relations in the state into the given state, using the Out-Variables; also havocs assignedVars

Expected advantages:

  • support for Calls/Returns should be easy afterwards
  • avoids problem of the current solution where relations might get lost unnecessarily (because in the current solution TfStates only track variables that occur in the TransFormula, and thus sometimes loses relations to variables that are not in that set -- even on internal/non-context-switch transitions)

EDIT: this plan is made obsolete by the new one in Ticket #178

alexandernutz added a commit that referenced this issue Apr 18, 2017
 - moved code that does setup of tfStateBuilders from VPTfStateBuilder into new class CreateVanillaTfStateBuilder
 - rewrote the two VPPostOperator.apply(..) methods
 - the tfState applies its own TransFormula now -- moved methods that apply the TransFormula to VPTfState (handleEquality and others, from VPPostOperator)
alexandernutz added a commit that referenced this issue Apr 19, 2017
alexandernutz added a commit that referenced this issue Apr 19, 2017
alexandernutz added a commit that referenced this issue Apr 21, 2017
…wards #159

 --> before, this led to failing "isPostSound"-checks, because the HoareTripleChecker seems to take the primed versions in the of variables that neither state nor the TransFormula does know for the  postcondition..
alexandernutz added a commit that referenced this issue Apr 25, 2017
…moveVariables does not havoc anymore (we might lose information we want to keep), getTerm does not report (dis)equalities that contain variables that the state does not "officially" (indicated by its getVariables) know, see #159
alexandernutz added a commit that referenced this issue Apr 26, 2017
…C To Boogie and BoogieProcedureInliner introduce some renamings) (still not recognized: the memory array in the bitvector case)

 - VPState debug output now optionally shows equivalence classes instead of equivalence edges
 - minor cleanup
towards #159
alexandernutz added a commit that referenced this issue Apr 26, 2017
…s, we need more EqNodes than we created before.

Before we only created EqNodes corresponded to a term in a TransFormula of the program, now we ensure that if arrays a and b are equated they have the same accessing nodes each.
This means we now have EqNodes that do not correspond to a term in the program.
#159
alexandernutz added a commit that referenced this issue Apr 26, 2017
alexandernutz added a commit that referenced this issue May 9, 2017
 - introduced code that adds certain nodes into tfStates that are needed for exploiting array equations/extensionality
 - added comments
 - renamed VPTransFormulaStateBuilderPreparer.java
alexandernutz added a commit that referenced this issue May 9, 2017
…, too (and may not be represented by "through"-nodes!), #159
alexandernutz added a commit that referenced this issue May 9, 2017
…for array equalities are inserted with a different strategy now.

- bugfixes
towards #159
alexandernutz added a commit that referenced this issue May 10, 2017
…guments, the projection of the inVars/outVars only projected away the function symbol, but it needs to project away the symbols of the other arguments, too!

related to #159
alexandernutz added a commit that referenced this issue May 10, 2017
alexandernutz added a commit that referenced this issue Jun 26, 2017
alexandernutz added a commit that referenced this issue Jun 26, 2017
…nsional cases (only tested nested so far..)

 - the variables of an EqState are now exclusively determined from the 'outside', not from the constraint it holds (modified EqDisjunctiveConstraint.toEqStates(..))
#159
alexandernutz added a commit that referenced this issue Jun 27, 2017
 - pass over right method for merge operator
 - don't crash on unknown relation symbols (just use empty constraint)
 - bugfix: EqFunctionNode.getArgs() returned a writable list --> consequence: bugs
 - added some assertions in EqPostOperator, CongruenceGraph.havoc
 - fixed variable handling in EqState.union and EqState.intersect, also switched to hashing via int ids (not sure about the consequences..)
 - EqStateFactory caches the TopState (with no variables) now
alexandernutz added a commit that referenced this issue Jun 27, 2017
… some simple cases involving "bottom" and "top" (turns out they are quite important for performance..)

as a consequence added emptiness check for EqConstraint (i.e. when the constraint is "top")
#159
alexandernutz added a commit that referenced this issue Jun 27, 2017
…reported wrong results because it did not, and yielded "true"), #159

to be safe overwrote everything from EqConstraint
alexandernutz added a commit that referenced this issue Jun 27, 2017
… is set to true (currently hardcoded in VPDomainPreanalysis.Settings), then everything that occurs in a (dis)equation is tracked, #159
alexandernutz added a commit that referenced this issue Jun 27, 2017
alexandernutz added a commit that referenced this issue Jun 27, 2017
…ithmetic expressions "as a whole"), using CommuHashNormalForm

 - minor changes,
#159
alexandernutz added a commit that referenced this issue Jun 28, 2017
…ession/all/bug-nonrelationalpost-smtidentifier.bpl), #159

cosmetics
alexandernutz added a commit that referenced this issue Jun 28, 2017
…sumed to be distict), only literals of the same sort are marked distinct in the CongruenceGraph, #159
alexandernutz added a commit that referenced this issue Jul 1, 2017
alexandernutz added a commit that referenced this issue Jul 6, 2017
alexandernutz added a commit that referenced this issue Jul 26, 2017
alexandernutz added a commit that referenced this issue Sep 7, 2017
…an AffineTerm, and if that does not work, into CommuHashNormalForm, #159
alexandernutz added a commit that referenced this issue Sep 7, 2017
 - script locking
 - AffineTermTransformer does not return an AffineTerm if fed with a TermVariabel -- needed to catch that case
#159
alexandernutz added a commit that referenced this issue Sep 7, 2017
alexandernutz added a commit that referenced this issue Sep 9, 2017
alexandernutz added a commit that referenced this issue Sep 9, 2017
alexandernutz added a commit that referenced this issue Sep 11, 2017
@alexandernutz
Copy link
Member Author

I consider the VPDomain as "roughly working" now. For further problems I will try to make more specific issues than this one.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant