[isabelle-dev] auto raises a TYPE exception
Makarius
makarius at sketis.net
Wed May 29 22:49:51 CEST 2013
On Tue, 28 May 2013, Makarius wrote:
> * No change to unify.ML (and especially pattern.ML, which was not really
> covered so far). My 3b9c31867707 is backed-out.
>
> * Instead Thm.bicompose_aux in the non-lifted case (i.e. the "compose"
> variants) ensures that the types of all Vars are unified
> beforehand. So mentioning some ?x::?'a here and some ?x::nat=>bool
> there means they become both ?x::nat=>bool before entering
> Unify.unifiers (and Pattern.unify as well).
>
> Thus we acknowledge the observation that the old code from 25 years ago
> does not work with Vars of different type: Stefan's check from 2005
> raises suitable exceptions, and the above pre-stage avoids that this
> happens.
I've done this now in c4264f71dc3b .. 568b2cd65d50. The main thing is
0fa3b456a267 to "unify types of schematic variables in non-lifted case".
This was rather trivial, but there were some surprises nonetheless: Metis
proof reconstruction seems to require the non-unification of types of
Vars, despite having a separate workaround for exactly that problem
(see resolve_inc_tyvars in 568b2cd65d50).
Without the latter, src/HOL/Metis_Examples/Clausification.thy crashes at
the very end, due to divergence of types of certain Vars, types that
cannot be unified. This is very odd, but should not be a problem at the
moment: Metis should work as before.
If any of the experts on Metis proof reconstruction want to clean that up:
Thm.bicompose {incremented = false, ...} means types get unified, while
{incremented = true, ...} means there is no need for it since variables
have been incremented as for resolution. If it works one day without the
extra toggle, we can simplify the low-level Thm.bicompose once again. (And
all these "compose" variants are definitely outside normal user space.)
Anyway, apart from having seen a lot of boundary cases of the unification
code -- things we've seen more often in distant past -- the conclusion is
inconclusive. The system cannot be changed substantially at its very
bottom, but we knew that already.
Makarius
More information about the isabelle-dev
mailing list