Skip to content

Fixing old in triggers#710

Merged
marcoeilers merged 4 commits into
masterfrom
meilers_old_in_triggers
Apr 20, 2023
Merged

Fixing old in triggers#710
marcoeilers merged 4 commits into
masterfrom
meilers_old_in_triggers

Conversation

@marcoeilers

@marcoeilers marcoeilers commented Apr 20, 2023

Copy link
Copy Markdown
Contributor

This PR fixes two issues:

In a quantifier with trigger f(e), it could happen that if the quantifier body contained old(f(e)), that Silicon accidentally emitted a trigger essentially equivalent to old(f(e)) instead of the intended trigger (that's the problem behind issue #509). The reason is that when remembering what terms expressions evaluate to, Silicon did not take into acount old, so when evaluating old(f(e)) to some term t during the evaluation of the quantifier body, it would incorrectly remember that f(e) evaluates to t, and thus translate a trigger f(e) accordingly. Now, Silicon correctly remembers that t is the value of old(f(e)).

Second, Silicon used to discard old on the outside of trigger expressions. So if the user supplied a trigger old(e), Silicon would treat this as if they'd just written e. Now it no longer does this.

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.

1 participant