Commit Graph

2 Commits

Author SHA1 Message Date
Gerwin Klein 17826f9b49 more Isabelle2015 update; AInvs up to (excluding) Syscall_AI
also includes some global replacements
2015-04-18 21:51:26 +01:00
David Greenaway 2e305baf24 lib: Add experimental "distinct" command.
The "distinct" command takes a list of 'n' terms, and generates O(n^2)
lemmas for you to prove that the 'n' terms are all distinct. These
proofs can typically be carried out by an "apply auto" command, giving
you O(n^2) distinctness theorems.

These new theorems can then be thrown into a simpset to avoid having to
constantly unfold definitions merely to prove distinctness.

This brings quite significant speedups in the "Example_Valid_State"
proof (demonstrated in the next commit), for example, as it means that
raw definitions need not be unfolded, and hence automated tactics don't
get side-tracked with their numerical definitions.

The "distinct" command is not really scalable, due to its O(n^2) proof
terms generated. If we wanted to use this in a larger example, we would
probably want a "ordered" command, which forces you to show that 'n'
terms have some ordering, and then automatically derive the O(n^2)
possible proof terms on-the-fly in a simproc (possibly using Isabelle's
existing "order_tac").
2014-10-07 08:59:17 +11:00