Adapt to Coq PR #18591: better refolding of List.app inducing "simpl never" now better respected #224
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.
Tactic
injection
(called here via the introduction pattern[]
) routinely callssimpl
to simplify the application of the underlying injectors to the terms to invert. We modify two cases inMM2_ZERO_HALTING_to_SSTS01.v
where, after coq/coq#18591, these calls tosimpl
stop reducing[] ++ l
intol
due toList.app
(i.e.++
) being declaredsimpl never
.The reason
simpl
formerly reduced[] ++ l
is thatsimpl
called on a subterm of the forminjector ([a] ++ l])
wrongly failed to refold the underlying occurrences ofList.app
, producing instead(fix f := ... code of List.app ...) [] l
, leading to miss thesimpl never
request.We fix the script by explicitly unfolding
++
in the two cases where[] ++ l
was produced.I tried at some time to understand if the use of
simpl never
in the file was actually motivated byList.app
being not enough refolded, but apparently no. So, I kept thesimpl never
and locally modified instead the two failing places.If I'm correct, the change is backwards compatible. So, if the change looks ok to you, it can be merged as soon as now.