[isabelle-dev] Some experiences with MicroJava, Jinja, JinjaThreads

Gerwin Klein gerwin.klein at nicta.com.au
Mon Jul 28 13:43:33 CEST 2008

Florian Haftmann wrote:
> A) Archaic, hardly readable and fragile proof techniques:
>   * unfolding definitions of predicates over logical formulae instead of
>     proper intro/elim-rules

There was some discussion on this already, and I'd agree with Tobias and Amine 
that it's just a matter of taste. Having intro/elim rules can be more brittle 
than unfolding.

>   * long apply-Scripts with sometimes obscure tacticss

Indeed, I don't like these either. Some of them go back to the time of ML 
scripts. I don't see the value in investing a lot of time into making them 
beautiful, though. No-one wants to read them. The only reason would be to make 
maintenance easier, but it didn't seem to be a problem so far.

> B) Naive use of locales (instead of proper interpretation):
>   * somehow arbitrary mixed explicit locales and simple predicates
>   * free-floating use of uninterpreted global rules from locales
>   * use of "defines", where definition etc. would be appropriate

Dude ;-) These things were written when locales didn't even fully exist yet. 
It is the first substantial use of the idea (hence the use of "open", which 
was the only kind of locale that existed at the time). Of course they're not 
using interpretations, we hadn't even thought of the concept yet (in fact, I 
believe that we started discussing them because of this application), and 
definition was something I'd very much have liked to have (and also suggested 
at the time) but it was still many years too early.

In short: you're perfectly right, with modern locales this could be written a 
lot nicer. At the time it was as good as it got, though. I'm perfectly fine 
with someone going over these and making them into proper locales. I'm not 
volunteering, though ;-)

> C) A lot of forked (but not shared) theories in MicroJava, Jinja,
> JinjaThreads.
> Of course, all these are due to historic reasons, layers of increasing
> state of the art built on top of each other.  Anyway, concerning C),
> IMHO in the future we should try harder to avoid such duplication by
> distilling reasonable libraries out of large-sized projects.  E.g. these
> projects contain independent developments of semilattices, work which
> would fit more appropriately in HOL-Algebra and then could simply be
> re-used.  Such shared libraries would greatly increase the motivation
> and benefit for keeping them technically at the height of the day than
> such (superficially) "specialized" and "adapted" theories scattered over
> different projects.

Quite right. The problem with that is that it costs considerable time and when 
your focus is the large project and not the distribution, you will just not 
care enough to do it. We should get into the habit of explicitly allocating 
time for activities like that.


More information about the isabelle-dev mailing list