On Sat, 17 Apr 2010, Mamoun FILALI-AMINE wrote:

 Is it possible to have an "on the fly" facility for Isar:
 currently we have to remember theorem names in order to reuse them
 the onthefly would prove again the given theorem on the fly
 example:
 instead of
     unfolding imp_disjL
 one would write
    unfolding (onthefly "(a \/ b --> c) = ((a --> c) /\ (b --> c))")

Isar only allows such implicit facts modulo unification against the (visible) proof context. The notation is `prop` and can be used in any position where a fact is expected, e.g. "from `prop` have XXX by blast".

In this form the proof is done via the "fact" method. I.e. the following versions are equaivalent:

  note `prop`

  have "prop" by fact

Beyond the "fact" method, Isar requires explicit an explicit proof, e.g.

  have *: "prop" by auto

  have XXX unfolding * ...


Anyway, the example above uses 'unfolding' in a slightly non-standard way, namely a general simplification, not unfolding of a definition. In all these years, the Simplifier invocation behind unfolding/unfold has been a bit too liberal in admitting many other things, while failing to unfold definitions in certain situations where not all arguments are given. (I wonder if it can ever be put into a form where it really unfolds definitions reliably, no more no less.)


        Makarius
_______________________________________________
Isabelle-dev mailing list
[email protected]
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

Reply via email to