Loading "Trace_Attrib" causes strange, unexplained lock-ups in
Isabelle/jEdit (and possibly Isabelle build). In particular, at random
times shortly after Trace_Attrib is loaded, everything will stop
processing with the CPU at 0%.
The root cause of this is currently unknown. This patch disables it
until the problem can be tracked down further.
Was investigating if Focus could help solve a particular problem
(involving "apply subst" not being able to work with bound variables).
Didn't solve the particular problem I was facing, but committing the fix
to Focus none-the-less.
The fact that the C infoflow adt refines the abstract infoflow adt now only requires that given user operation is nonempty and not sane (nonempty and doesn't return an interrupt).
Also added some more general lemmas about fw_sim and refinement to lib/Simulation.thy.
The idea of this file is to allow users to determine how the simpset,
cong set, intro set, wp sets, etc. have changed from an old version of
the repository to a new version.
The process is as follows:
1. A user runs "save_attributes" on an old, working version of the
theory.
2. This tool will write out a ".foo.attrib_trace" file for each
theory processed.
3. The user modifies imports statements as required, possibly
breaking the proof.
4. The user can now run "diff_attributes" to determine what
commands they should run to restore the simpset / congset /etc
to something closer to the old version.
The tool is not complete, in that it won't always suggest the full set
of "simp add", "simp del", etc commands. Nor does it know that a rule
added to the simpset is causing a problem. It merely lists
a hopefully-sensible set of differences.
The "distinct" command takes a list of 'n' terms, and generates O(n^2)
lemmas for you to prove that the 'n' terms are all distinct. These
proofs can typically be carried out by an "apply auto" command, giving
you O(n^2) distinctness theorems.
These new theorems can then be thrown into a simpset to avoid having to
constantly unfold definitions merely to prove distinctness.
This brings quite significant speedups in the "Example_Valid_State"
proof (demonstrated in the next commit), for example, as it means that
raw definitions need not be unfolded, and hence automated tactics don't
get side-tracked with their numerical definitions.
The "distinct" command is not really scalable, due to its O(n^2) proof
terms generated. If we wanted to use this in a larger example, we would
probably want a "ordered" command, which forces you to show that 'n'
terms have some ordering, and then automatically derive the O(n^2)
possible proof terms on-the-fly in a simproc (possibly using Isabelle's
existing "order_tac").
NICTATools contains the occassionally-useful "unused meta-foralls"
warning, and the very-useful-but-still broken "apply_trace" command.
Add the import back, hoping that someone (Hi Dan!) comes and fixes the
"apply_trace" tool.
Excessinve tracing messages cause jEdit to pause, waiting for the user
to click "Show more tracing output. We eliminate the debugging tracing
messages by default, and use "writeln" instead for the remainder.
("writeln" doesn't cause jEdit to pause.)
IRQ Nodes are now their own object type in capDL. This makes it much easier
to distinguish between "real" CNodes and IRQ Nodes.
Updated:
* the capDL refinement,
* the access proofs, and
* the system initialiser.
In detail:
- add a general user-specified exception to c_exntype
(for use in tools like Substitute)
- wrap calls to 'halt' in Guard {}, making it clearer that
halt is never called, simplifying asmrefine
- repair halt changes in crefine
- avoid use of some suspicious 'modifies' properties in crefine
which were generated by the parser for functions where inline
ASM blocks have been elided, and which may be inaccurate.
CParser not finished yet, though: getting errors in cparser_test about linear
theory updates at end of thy.
Found more instances where we should be using Local_Theory.exit_global, but
might be besides the point (didn't help). Also might be overshooting the goal.