You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Our first approach to unshadowing is quite drastic: add a scope suffix (_123 in varname_123) to all lambda parameters and let definitions. This is not ideal, as these suffix will appear on some places: like the generated TLA+ version or, now, the new nondetPicks fields.
In the unshadower improvement I'm working on, we stop unshadowing things that are not nested, which is unnecessary. However, I found that this breaks the translation to ApalacheIR in some specific cases like this:
set.filter(e => f(e)).forall(e => g(e))
because the operators: forall, exists, filter, map and mapBy are translated as bindings, so the result looks like:
∀e∈({e ∈ set):f(e)}): g(e): e.
And there is shadowing of e there, although there is no shadowing in the Quint version
The text was updated successfully, but these errors were encountered:
Our first approach to unshadowing is quite drastic: add a scope suffix (
_123
invarname_123
) to all lambda parameters and let definitions. This is not ideal, as these suffix will appear on some places: like the generated TLA+ version or, now, the new nondetPicks fields.In the unshadower improvement I'm working on, we stop unshadowing things that are not nested, which is unnecessary. However, I found that this breaks the translation to ApalacheIR in some specific cases like this:
because the operators: forall, exists, filter, map and mapBy are translated as bindings, so the result looks like:
And there is shadowing of
e
there, although there is no shadowing in the Quint versionThe text was updated successfully, but these errors were encountered: