-
Notifications
You must be signed in to change notification settings - Fork 43
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
CHC support #183
CHC support #183
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
All in all, I think this is a very nice work. I left some minor comments. The only major thing missing (and we do not set a good example on this matter 😅) is to add the copyright to the new source files you created.
See an example here. Please do update the year though.
private static SmtLibTypeTransformer typeTransformer = new GenericSmtLibTypeTransformer(null); | ||
private static SmtLibTermTransformer termTransformer = new GenericSmtLibTermTransformer(initialSymbolTable); | ||
private static CharStream charStream; | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missing private constructor.
private ChcUtils() {} | |
@@ -83,7 +83,7 @@ public class XcfaPassManager { | |||
// new AssignmentChainRemoval(), | |||
// new NoReadVarRemovalPass(), | |||
// new GlobalVarsToStoreLoad(), | |||
new UnusedVarRemovalPass(), | |||
// new UnusedVarRemovalPass(), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a global modification that will also affect C source codes. My questions are:
- Why was this modification needed?
- If the change is needed for CHCs, can we somehow make XcfaPassManager configurable to include the pass for C codes and remove it for CHCs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The modification was necessary because the pass removed variables that would've been necessary for correct verification, resulting in incorrect answers. I added methods to XcfaPassManager that can remove passes and moved the removal to CHC handling part of XcfaCli.
I implemented the requested changes.
I added the license text to all |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for the changes! I think this can be merged @leventeBajczi .
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the result of my BSc degree project: a CHC frontend implemented in Theta. It can be enabled with the
--chc
flag, and different transformation methods can be chosen using the--chc-transformation FORWARD/BACKWARD
flag. See the documentation for details.