Commit graph

4 commits

Author SHA1 Message Date
Joachim Breitner
af6d2077a0
refactor: use match compilation to generate splitter (#11220)
This PR changes how match splitters are generated: Rather than rewriting
the match statement, the match compilation pipeline is used again.


The benefits are:

* Re-doing the match compilation means we can do more intelligent book
keeping, e.g. prove overlap assumptions only once and re-use the proof,
or prune the context of the MVar to speed up `contradiction`. This may
have allowed a different solution than #11200.
 
* It would unblock #11105, as the existing splitter implementation would
have trouble dealing with the matchers produced that way.
 
* It provides the necessary machinery also for source-exposed “none of
the above” bindings, a feature that we probably want at some point (and
we mostly need to find good syntax for, see #3136, although maybe I
should open a dedicated RFC).

* It allows us to skip costly things during matcher creation that would
only be useful for the splitter, and thus allows performance
improvements like #11508.
 
 * We can drop the existing implementation.
 
It’s not entirely free:

* We have to run `simpH` twice, once for the match equations and once
for the splitter.
2025-12-04 15:03:13 +00:00
Leonardo de Moura
c7d797f5b6 feat: add simpMatch and use it at splitMatch 2021-08-31 12:53:41 -07:00
Leonardo de Moura
d37d340bb0 test: MatchEqs.lean 2021-08-31 06:10:10 -07:00
Leonardo de Moura
aba0a479ec fix: intro at split tactic 2021-08-30 20:58:04 -07:00