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
Audit the anywhere
attribute
#4132
Comments
The reasoning here is that it allows the LLVM backend to resolve overloading by actually just treating these axioms as anywhere rules and performing the associated rewrite. |
We want to document these cases rather than modify them, I think:
What does the legacy Haskell backend do here? |
Are there any direct uses of eth If those places are minimal, maybe we can require that the user puts the |
The C semantics uses it pretty pervasively in the translation semantics. Maybe those usages would be translatable? I'd need to check to see |
Are there any symbols that have some anywhere rules but not all of them? Or is it the case that every |
Yes, as pointed out by @dwightguth during today's K Compiler meeting, there might be rules for an So the only way to get rid of that pass is to do it in |
I don't understand, what is the example of a rule where there is an |
As opposed to e.g.
If we want to admit such symbols, then we cannot replace |
Yeah, I'm wondering what the use cases of such rules are. Are there any that are not re-writable to something else? What does it mean to have a non-anywhere rule where the LHS is a constructor in K? Does that mean it must be a topmost rule? If it's a function, why does it need to be |
Another confusing thing regarding the two uses of Attribute
There's also method
And this function is used to filter productions for generating no-confusion axioms:
Btw, for no-junk axioms, a third logic is used:
|
Related:
_module_to_kore
pyk#1022 (comment)In
ModuleToKORE
, theanywhere
attribute is added to a symbol in two cases.k/kernel/src/main/java/org/kframework/backend/kore/ModuleToKORE.java
Line 1647 in 57001ad
anywhere
.k/kernel/src/main/java/org/kframework/backend/kore/ModuleToKORE.java
Line 1651 in 57001ad
We should consider the possibility of the following simplifications.
overloaded
.anywhere
on productions instead of rules, similarly to howmacro
is used (first deprecate and emit a warning, then make it an error, etc).Try to eliminate case (1).symbol-overload
attribute on overload axioms.priorities
works.The text was updated successfully, but these errors were encountered: