[isabelle-dev] [isabelle] Higher-order matching against schematic variables
Makarius
makarius at sketis.net
Fri Nov 19 22:35:39 CET 2010
On Fri, 19 Nov 2010, Lawrence Paulson wrote:
> Indeed I find the code peculiar, in that it delivers the higher-order
> matchers followed by the first-order ones. But these are different
> things. And I imagine there is often redundancy.
Unify.matchers started as Isar-specific ProofContext.simult_matches many
years ago. The main idea is to make Isar "is" patterns behave as sensible
as possible. Browsing a little through the changset history, you can see
how I have struggled with it over the years.
In 2000 everything is still relatively plain and simple, e.g. see
http://isabelle.in.tum.de/repos/isabelle/annotate/4da940d100f5/src/Pure/Isar/proof_context.ML#l564
Around 2006 I've made some further revisions, and things became much more
complicated:
227a01b8db80 moved to unify.ML
8257e52164a1 matchers: try pattern_matchers only *after* general
matching (The pattern version is not a faithful approximation because
it falls back on first-order matching!);
9e7d3d06c643 matchers: fall back on plain first_order_matchers, not pattern;
Etc. Maybe you find some more explanations.
Makarius
More information about the isabelle-dev
mailing list