Skip to content

Stricter triggers on FVF snap extensionality axiom #936

Merged
marcoeilers merged 4 commits into
masterfrom
meilers_stricter_fvf_snap_ext_triggers
Jul 14, 2025
Merged

Stricter triggers on FVF snap extensionality axiom #936
marcoeilers merged 4 commits into
masterfrom
meilers_stricter_fvf_snap_ext_triggers

Conversation

@marcoeilers

@marcoeilers marcoeilers commented Jul 11, 2025

Copy link
Copy Markdown
Contributor

FVFs map receivers to field values. Some FVFs also have a defined domain, so they're associated with a set of receivers for which they have a value. This PR adds a new term, HasDomain, that marks FVFs that have this set.
The point is that the FVF extensionality axiom which is needed for function framing, is quadratic in nature, and can be quite expensive, only makes sense to trigger for FVFs that have a defined domain, because two FVFs are equal only if they have the same values and domain, which requires the domain to be defined.

So by marking FVFs with domains using the new term, we can add HasDomain as an additional trigger for the extensionality axiom for FVFs to avoid triggering it on FVFs that don't have domains, for which it is never useful.

@marcoeilers

Copy link
Copy Markdown
Contributor Author

This helps a bit with the example you sent me earlier @jcp19, though it's still slower than it should be.

@jcp19 jcp19 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not an expert in this part of the code, but from what I see, it looks fine.

Comment thread src/main/scala/state/Terms.scala
@marcoeilers marcoeilers merged commit 74722a8 into master Jul 14, 2025
4 checks passed
@marcoeilers marcoeilers deleted the meilers_stricter_fvf_snap_ext_triggers branch July 14, 2025 12:07
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.

2 participants