Re: [isabelle-dev] jEdit: re-checking of main buffer

2013-09-02 Thread Makarius

On Sat, 31 Aug 2013, Christian Sternagel wrote:

Assuming that the grayish background highlighting really indicates 
prover activity in the background


This is outdated_color (RGB=EEE3E3 by default).  It means that the 
asynchronous protocol is in an intermediate state where the editor has no 
confirmation from the prover about the last round of updates yet.


The prover needs to update certain internal administrative structures of 
the document model until this confirmation (the assignment) can be given 
back to the editor.  This requires usually a few milliseconds, but depends 
on availability of CPU resources, and can get into the range of 0.5..2 
seconds.  (What are your hardware parameters?)


Until recently (notably in Isabelle2013) these update -- assign cycles 
of the document model involved explicit cancellation of all running 
executions of the prover *before* doing anything.  There was a restart of 
transactions that were still needed in the next document version.  This 
was OK for the majority of quick proof commands, but noticable for slow 
things like 'fun' or heavy proof tools.  With the integration of 
sledgehammer etc. into the document model, the end of this approach was 
come: accidental cancellation and restart of big ATP jobs was not 
feasible.



So I reworked the whole approach quite substantially.  As a consequence 
the prover never stops, it merely refrains from starting new tasks. Then 
edits are applied on-line and old tasks are cancelled afterwards if they 
are no longer needed.


This means that there are fewer CPU resources available for doing the 
administrative update of document content.  Often it is just the protocol 
thread itself, which pretends to be another worker thread for this purpose 
(this guarantees progress, but a fully saturated worker farm might still 
work against it).


For my part, I've seen the change in behaviour and got used to it after a 
few days. It is just a matter of tradeoff between seeing more outdated 
text views vs. long-running tools continuing all the time undisturbed. I 
am not aware of a genuine problem -- if there is one you should report 
that again.




I recently noticed that sometimes a re-check of the whole buffer


An actual re-check would be something else: new execs assigned to 
existing command transactions, involving a change to pink and purple etc. 
This should not happen here, unless there is something wrong in the 
implementation.


In fact the new strictly monotonic model should involve fewer re-checks. 
In the past, a long-running proof step upwards in the buffer could cause a 
reset to that position with a fresh start of everything in between.



when I select the second by auto (typically S+Home, since the courser 
is positioned directly behind it after just having typed it) and then 
replace the selected region by something different, the whole buffer is 
highlighted (thus re-chekced or re-parsed?).


Re-parsed is yet another thing: whenever you do some physical edits on 
the buffer, Isabelle/Scala will check on its side if anything has 
structurally changed to tell the prover about it.  This requires some JVM 
resources, but it should not be visible in the editing process.  Vacous 
updates in that respect are ignored.


On the other hand, just scrolling around is a full update of the document 
model, and might cause brief appearance of the outdated color scheme. 
This is particularly relevant to the new print functions and query 
operations of the document model.  Uncovering parts of the text might 
cause the prover to do anything from plain 'print_state' to 'sledgehammer' 
(in its auto mode).



Makarius


___
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev


[isabelle-dev] jEdit: re-checking of main buffer

2013-08-30 Thread Christian Sternagel
Just an observation. Assuming that the grayish background highlighting 
really indicates prover activity in the background, I recently noticed 
that sometimes a re-check of the whole buffer is done in situations 
where this is (as far as I see) not necessary. For example, having


  lemma ...
by auto

  lemma ...
by auto

when I select the second by auto (typically S+Home, since the courser 
is positioned directly behind it after just having typed it) and then 
replace the selected region by something different, the whole buffer is 
highlighted (thus re-chekced or re-parsed?).


This is not the only such situation, but one that I could reproduce 
reliably.


Note also that -- just making a subjective evaluation by feeling -- 
that this re-checking happens more frequently in a1cd4126a1c4 (and 
possibly earlier) than in Isabelle2013.


cheers

chris
___
isabelle-dev mailing list
isabelle-...@in.tum.de
https://mailmanbroy.informatik.tu-muenchen.de/mailman/listinfo/isabelle-dev