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
_______________________________________________
isabelle-dev mailing list
[email protected]
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

Reply via email to