From: Makarius <makarius@sketis.net>
Since inx is polymorphic, special care is required when writing closed
expression without any syntactic correlation via fixed variables -- bound
variables (like e, x) and constants (like inx) do not propagate type
constraints.
It works with explicit type constraints, e.g. like this:
lemma "~ (EX e :: 'a * nat. e : inx)"
proof
assume "EX x :: 'a * nat. x : inx"
then obtain x :: "'a * nat" where "x : inx" ..
oops
BTW, you can use pattern comprehension when defining the "inx" set.
E.g. like this:
definition "inx = {(s :: 'a, n :: nat). True}"
Makarius
Last updated: Nov 21 2024 at 12:39 UTC