[isabelle-dev] Type variables without default sort
Lars Noschinski
noschinl at in.tum.de
Wed Jun 29 16:58:26 CEST 2011
Hi all,
every once in a while, I manage to create a goal state which contains
type variables with the empty sort (for example in "f x = 0", x is of
type "'b :: {}", if there are no additional constraints on f. Some tools
don't like this (e.g. metis omits a warning, SMT fails altogether) and
it always takes me a while to find out, what went wrong.
From an user perspective, this behaviour is a bit puzzling, because it
only occurs if a type variable is invented by Isabelle (explicitly
mentioned type variables always get the default sort). So I wonder why
the default sort is not added for invented type variables. Are there
certain situations where type variables with empty sort are needed?
If this is not the case, would it be possible to just always infer at
least the default case? Otherwise some kind of warning (similar to the
one emitted if a fresh type variable is invented for a fix-ed variable)
might be useful. Tobias suggested that such a "warning" could also be
done in a similar way like for numerals, by adding an "::'a::{}"
annotation in the output.
-- Lars
More information about the isabelle-dev
mailing list