Skip to content

Fix issue 1239#1254

Merged
robdockins merged 2 commits intomasterfrom
issue1239
Aug 3, 2021
Merged

Fix issue 1239#1254
robdockins merged 2 commits intomasterfrom
issue1239

Conversation

@robdockins
Copy link
Contributor

No description provided.

@robdockins robdockins requested a review from brianhuffman July 26, 2021 21:46
Previously, when indexing into a sequence, there were code paths
in both the SBV and What4 backends where an if/then/else tree
would be built to compute the value of a symbolic lookup, with one
branch for each valid sequence index.  They differed, however, in
what value they would comute for out-of-bound indices.  For SBV,
we would compute a `zero` value, whereas for What4 we would
raise an error.  For What4, this resulted in unfortunate and redundant
proof obligations, as we elsewhere add a test for in-bounds contditions
to the safety predicate.  Moreover, the strategy of returning a
`zero` value could panic in some situations, as not every type
has a `zero` value anymore (e.g., newtypes).

In both cases, we now do the same thing, which is not to have a case
of the if/then/else tree for out-of-bounds indices; the final element
of the sequence will simply be returned instead.  We will only raise
an out of bounds error in this code path if the sequence is actually
empty.

Fixes #1239
This tracks changes to the symbolic indexing primitives.
@robdockins robdockins merged commit 52fd555 into master Aug 3, 2021
@RyanGlScott RyanGlScott deleted the issue1239 branch March 22, 2024 14:48
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