Session-qualified imports will be required for Isabelle2018 and help clarify
the structure of sessions in the build tree.
This commit mainly adds a new set of sessions for lib/, including a Lib
session that includes most theories in lib/ and a few separate sessions for
parts that have dependencies beyond CParser or are separate AFP sessions.
The group "lib" collects all lib/ sessions.
As a consequence, other theories should use lib/ theories by session name,
not by path, which in turns means spec and proof sessions should also refer
to each other by session name, not path, to avoid duplicate theory errors in
theory merges later.
This overrides the default proof state printing function to also
show any subgoals which have been hidden (protected).
This makes proof states shown during apply_debug more
comprehensible.
Both the breakpoint and "calling" method from
the original expression are highlighted as the breakpoint.
Note jEdit doesn't seem to highlight across theories (buffers?)
This makes use of modern dynamic markup so that
clicking on a "continue" can show us the current
breakpoint without needed strange proof state print
hacks.
I can't figure out how to keep the cleanup phase of the
Executions module while circumventing the scheduling limitation
imposed by max_threads.
This workaround just keeps max_threads high enough to schedule the threads needed
by all active apply_debug sessions.
- Avoid throwing exceptions on the proof thread, instead defer it to the final slot
- Manage current-method markup with extra thread, this properly clears on proof thread restarts
- Avoid starting the restart-managing thread until we have the first result.
- Fix accidental immediate restart.
- Better generational tracking to avoid stale threads manipulating the current
proof thread.