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

Wip/nk/icfgbuilder #690

Open
wants to merge 48 commits into
base: dev
Choose a base branch
from
Open

Wip/nk/icfgbuilder #690

wants to merge 48 commits into from

Conversation

Heizmann
Copy link
Member

Commits for switching from RCFGBuilder to IcfgBuilder are missing in this branch. But Frank convinced me to already start a pull request.

NiklasKult and others added 30 commits October 23, 2024 15:45
Otherwise the StepInfo is reset, since mutable sets are used.
We need that BooleanLiteral have a type.
We now ensure this by using the ExpressionFactory#createBooleanLiteral
This reverts commit f13a388.
… startet when we build the new block"

This reverts commit ba104cf.
Bugfix for cases where atomic blocks end with an IfStatement.
Heizmann and others added 17 commits October 23, 2024 15:45
* Rename identifiers
* Add documentation
* Make method void (returned object is an argument of method)
* Rename identifiers
* Add documentation
* Make method void (returned object is an argument of method)
* extract method for building IcfgLocations
* remove method that became obsolete
* Bugfix: Do not merge loop entry and location after invariant.
* Rename identifiers
Do not copy annotations directly from original statements to edges but only to
auxiliary statements. (Because annotations are copied from all
statements to edges anyway.)
Unify code for prepending statements
Use assumption that mapping returns singleton except for calls.
Copy link
Contributor

@schuessf schuessf 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 your work! I did not have a detailed look yet, but here are already some more general comments.

@@ -0,0 +1,27 @@
#Thu Jan 30 13:20:28 CET 2014
Copy link
Contributor

Choose a reason for hiding this comment

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

These settings can be removed, once IcfgBuilder is the default.

@@ -0,0 +1,10 @@
<rundefinition>
Copy link
Contributor

Choose a reason for hiding this comment

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

This toolchain can be removed, once IcfgBuilder is the default.

VAL [#NULL!base=0, #NULL!offset=0]
[L31] assert false;
VAL [#NULL!base=0, #NULL!offset=0]
[L49] CALL call ULTIMATE.init();
Copy link
Contributor

Choose a reason for hiding this comment

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

What has changed in the backtranslation that is relevant for this test?

Copy link
Member Author

Choose a reason for hiding this comment

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

Could you fix this?

Copy link
Contributor

Choose a reason for hiding this comment

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

I was just wondering why you changed already this path and not the others.

import de.uni_freiburg.informatik.ultimate.lib.smtlibutils.solverbuilder.SolverBuilder.SolverMode;
import de.uni_freiburg.informatik.ultimate.plugins.generator.icfgbuilder.Activator;

public class IcfgPreferenceInitializer extends UltimatePreferenceInitializer {
Copy link
Contributor

Choose a reason for hiding this comment

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

Please make sure that these settings are actually the same as for RCFGBuilder (this was at least not the case in the past for CodeBlockSize).

Copy link
Member Author

Choose a reason for hiding this comment

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

Could you fix this?

Copy link
Contributor

Choose a reason for hiding this comment

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

I am not sure, if there is a problem in the current version. I just remember that there was some issue in the past. So this comment is more of a reminder 😉

import de.uni_freiburg.informatik.ultimate.boogie.ast.VarList;
import de.uni_freiburg.informatik.ultimate.core.model.models.ModelUtils;

public class WeakestPrecondition extends BoogieTransformer {
Copy link
Contributor

Choose a reason for hiding this comment

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

I suppose this class (along with some others) was simply copied from RCFGBuilder without any change? I think we should rather have another plugin Library-CFG with such classes, s.t. RCFGBuilder could be safely deleted.

Copy link
Member Author

Choose a reason for hiding this comment

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

Plan is to move the classes to from RCFGBuilder to IcfgBuilder if we want to get rid of the RCFGBuilder.

Copy link
Contributor

Choose a reason for hiding this comment

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

I see, this class is really just used in IcfgBuilder / RCFGBuilder, so it makes sense to keep it there. But there are some other classes (e.g. TransFormulaAdder) that are also used in other Plugins. So it would make sense to move them to some library, also to reduce the dependencies to IcfgBuilder / RCFGBuilder.

#Tue Mar 19 19:15:08 CET 2024
file_export_version=3.0
\!/instance/de.uni_freiburg.informatik.ultimate.boogie.preprocessor=
/instance/de.uni_freiburg.informatik.ultimate.boogie.preprocessor/Replace\ while\ statements\ and\ if-then-else\ statements=false
Copy link
Contributor

Choose a reason for hiding this comment

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

This should be our new default now, maybe you can simply change it in BoogiePreprocessor.

The setting "Only consider context switches at boundaries of atomic blocks"
(aka the nodatarace-LBE) is only meant to affect concurrent programs. It
performs a kind of large-block encoding (LBE) that is usually not desirable
for sequential programs.
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.

5 participants