I've made another round of refinements (presently at Isabelle/f7ceebe2f1b5). There were some situations where the change propagation of blobs (auxiliary files) versus theories was not right, leading to an invalid perspective of the latter, and causing it to be rechecked to the bottom whenever it lost its physical editor view. This and some other fine points are now sorted out.

Note that the basic model is this: auxiliary files are either managed by the editor (via document updates) or the prover (via file-system access). If that status changes, e.g. by opening or closing some ML file in the editor, the corresponding thy_load command (e.g. 'ML_file') is updated, and the theories rechecked from that point (according to their own perspective, not the whole text as before). Anything apart from that is probably a mistake.

I could try harder to manage files always from the editor side, as done for theories, but then we hit the performance problems reported below ...


On Tue, 18 Feb 2014, Dmitriy Traytel wrote:

However, once I had to restart Isabelle as JEdit became quite irresponsive (using almost 4GB of memory, forced GC didn't help). Maybe I just hat too many ML files open (I usually don't close them once opened) or my ML files are just too big: e.g. ~~/src/HOL/Tools/BNF/bnf_gfp.ML, although on a fresh start after opening just this ML file the system is responsive (with some understandable delay in displaying the markup, but instantly processing edits). Maybe slightly lighter type annotations (at every constant/variable rather than at every subterm) would dodge such problems?

I have experimented with this a bit, opening $ISABELLE_HOME/src/HOL/Complex_Main.thy and *all* ML files (using "isabelle build -nl HOL" to figure that out). This basically works, but the poly and java processes both converge towards 2-4 GB. Note that I have reduced the overall size of PIDE markup trees in Isabelle/33ad12ef79ff (independently of the above observation), so it might help a little.

Main HOL has become quite huge, and a lower middle class machine with only 8 GB is barely sufficient to edit it with everything continuously checked, including all ML modules (which now outweigh the theories).

For the moment I recommend to "swap out" ML files manually, by closing the jEdit buffer. Then the prover takes over for that piece of source, and no PIDE markup is produced. In the experiment with all ML files, this makes a difference of 2600 MB vs. 600 MB JVM heap size.


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

Reply via email to