[isabelle-dev] Remaining uses of Proof General?

Andreas Lochbihler andreas.lochbihler at inf.ethz.ch
Mon Apr 28 09:14:01 CEST 2014

Hi Makarius,

Over the past weeks, I've been using Isabelle/jEdit about half of my Isabelle time (and 
ProofGeneral with XEmacs the other half). Isabelle/jEdit is great when it comes to 
working on small projects or refactoring existing sources. I really like the negative line 
spacing setting and completion of fact names! Thanks!

My main usage of PG is when I want to construct a complicated proof method call like

(fastforce intro: ... dest: ... elim: ... simp add: ... cong: ... del: ... simp del: ...)+

that collapses an apply script of a hundred lines. I haven't yet found a convenient way to 
write the apply script in Isabelle/jEdit, because of reactivity issues (see item 2 below) 
and the continuous updates of the output window (when I scroll to some other part of the 
apply script using the cursor keys). Are there key bindings for scrolling that do not move 
the cursor?

Here are some things that could be improved in Isabelle/jEdit (I am currently on 

1. Symbol completion in PG was absolutely deterministic. The immediate symbol completion 
in jEdit works great, too, I merely had to learn new sequences of key strokes. Symbol 
completion of non-unique results is not satisfactory.

a) Given some text like

definition foo where "foo = ..."

when I add an attribute like [simp]: after the where, I get a symbol completion popup to 
replace the : with the element sign. Usually, my next thing is to move the cursor with the 
cursor keys. But the popup gobbles all the key strokes until I explicitly close it with 
ESC. As colons are used everywhere in Isabelle's outer syntax, it would really be great if 
the popup only appears when I am in inner syntax.

b) Sometimes, when I write a HOL term, I used to not get the completion popup when I enter 
something like \un if there were sufficiently many parse errors in that partial term. Even 
Ctrl-b did not help. However, I cannot reproduce it in a small example at the moment.

2. Reactivity when processing large files

With PG, I knew how to control the Isabelle prover. When I edit a large file in a larger 
project like JinjaThreads, every now and then, Isabelle changes the background colour from 
red to gray and then, apparently nothing happens for minutes before Isabelle turns it red 
again and starts reprocessing. Is there some way to explicitly tell Isabelle that it 
should now start to check again. Toggling "continuous checking" does not help. Sometimes, 
I even have to close the theory file and reopen it again.

3. Navigation between theories files

In PG, I usually have only a small subset of the loaded theories and ML files open as 
buffers, and I conveniently switch between them with Ctrl-x b. In jEdit, I use Ctrl-` to 
go to the previous file, but going to a different one is a pain, because I have to search 
it in the complete list of open files.

It would be great if there was a list of just those files that I had on my screen 
previously, not all loaded files.

Moreover, when I close a file and then press Ctrl-` in the file that shows up, I do not 
get to the file I have visited before the two, but to some arbitrary other. Can jEdit 
remember the order in which files have been visited? XEmacs at least does this.

Maybe there are already solutions to the above annoyances, I just don't know them. There's 
another thing I would like to see in jEdit: The window layout has three columns (one dock 
on the left and one on the right) and the middle column (with the editor area) can be 
divided in three rows (dock - text - dock). Is there some way that I can split the right 
column into two rows to show two information areas at the same time (e.g. Output at the 
top and Find below)?


On 27/04/14 20:14, Makarius wrote:
> Are there any remaining uses of Proof General, e.g. in the situation of current
> Isabelle/5b6f4655e2f2 ?
> This is neither a joke nor a running gag -- I just can't think of anything myself after
> the introduction of the spell checker.
>      Makarius
> _______________________________________________
> isabelle-dev mailing list
> isabelle-dev at in.tum.de
> https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev

More information about the isabelle-dev mailing list