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
ff: kinds file and deps (enumerator, type-checker, rewriter) #9059
Conversation
(somehow the generated file is still on my machine?)
@@ -311,6 +311,11 @@ std::string LogicInfo::getLogicString() const { | |||
ss << "BV"; | |||
++seen; | |||
} | |||
if (d_theories[THEORY_FF]) |
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.
I'd just remove this (this is the reason why the PR is failing CI). For now, I would suggest enabling finite fields only when the logic is set to ALL
.
Logic strings are in need of refactoring (at the SMT-LIB standard level), so this code will likely be rewritten later.
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.
Hmm. So most of my CLI regression tests (yet un-merged) use the QF_FF
logic string, so I left this code and just fixed the failing test.
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.
Ok no worries.
@@ -445,6 +450,11 @@ void LogicInfo::setLogicString(std::string logicString) | |||
enableTheory(THEORY_BV); | |||
p += 2; | |||
} | |||
if (!strncmp(p, "FF", 2)) |
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.
Delete this as well.
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.
Some minor comments. Btw. looking at FiniteField
again, it seems like the name could be a bit confusing. What do you think about renaming it to FfVal
/FiniteFieldVal
/FiniteFieldValue
?
src/theory/ff/theory_ff_rewriter.cpp
Outdated
namespace theory { | ||
namespace ff { | ||
|
||
// static |
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.
// static |
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.
👍
Co-authored-by: Andres Noetzli <andres.noetzli@gmail.com>
Thanks for the review, Andres. I've address the specific comments, and re-named |
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.
LGTM, thanks for the updates! Especially the renaming to FfVal
:)
Previously, we had no configuration that tested the `--cocoa` option. This lead to broken unit tests when the option was enabled. PR cvc5#9059 fixed one of the unit tests. This commit adds `--cocoa` to a configuration to ensure that this does not happen in the future.
Add the ff kinds file and immediate dependencies.
The diff is huge, and I'd like to shrink it before proper review. Suggestions? I describe the contents of this PR below, as a dependency tree:
I guess I could stub out chunks of the type rules and theory rewriter? I guess I could also omit some parts of the kinds file, but I don't really know what parts depend on what, or if you are allowed to omit parts.