HOTFIX: restore subsort injections removed by LLVM #452
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Terms returned from the LLVM simplification are wrapped into a top-level
rawTerm(inj{S, SortKItem{}}(_))
which is removed when deserialising the result term from the returned string.However, when the returned term is of a subsort A of the required sort B, there would be a chain of injections
A -> B -> KItem
which is shortened out toA -> KItem
by the LLVM simplifier, apparently.In
simplifyTerm
we restore the requiredA -> B
injection when it is necessary, checking thatA
is indeed a subsort ofB
beforehand. If the result sortA
is not a subsort of the required sortB
, an error message is printed and the original unsimplified term is returned.Fixes #451