[isabelle-dev] auto raises a TYPE exception
Makarius
makarius at sketis.net
Tue May 28 11:36:09 CEST 2013
On Tue, 28 May 2013, Stefan Berghofer wrote:
> Types as well as terms are unified. The outermost functions assume
> the terms to be unified already have the same type. In resolution,
> this is assured because both have type "prop".
>
> So it is the expected behaviour that the unification functions cannot
> cope with the above example, since it does not satisfy this
> precondition.
I am getting a bit uneasy about that for two reasons:
(1) There might be really something wrong in Thm.bicompose_aux or
Thm.assumption that fails to "assure" such implicit assumptions of
unify.ML.
(2) The notorious problem of "hidden polymorphism", i.e. extra
generality of types that is not seen on the surface, and thus needs
to be treated while walking into the term structure.
The second point might be relevant for Pattern.match as well: it does one
typ_match thy on the outside, and then only for Free/Const/Bound, but not
for Var.
So we seem to be back at the implicit global assumption that the types of
Vars happen to work out "magically", without further ado. There used to
be that comment in really ancient Isabelle versions, before Stefan made an
explicit check that it does not go wrong, but here it did go wrong.
Makarius
More information about the isabelle-dev
mailing list