Commit Graph

3418 Commits

Author SHA1 Message Date
Japheth Lim 211fbe6d28 asmrefine: print running time for each function's graph proof
These summary statistics should be useful while not being too verbose.
2019-05-29 14:23:29 +10:00
Japheth Lim f21e440c15 asmrefine: add some rules to help array-of-struct subgoals
This handles the new implementation of `init_freemem` in seL4, and thus
the workaround of seL4 d0d97779cb is no longer required.
2019-05-29 14:23:29 +10:00
Edward Pierzchalski c1e9a09e26 lib: move "tl_nat_list_simp" up. 2019-05-28 10:00:10 +10:00
Edward Pierzchalski 14c4722cef refine: remove stray 'thm' commands. 2019-05-28 10:00:10 +10:00
Edward Pierzchalski 59b07ad60d refine: mark "call_kernel_serial" as a theorem. 2019-05-28 10:00:10 +10:00
Edward Pierzchalski 2035f444a0 refine: Remove unused lemmas. 2019-05-28 10:00:10 +10:00
Japheth Lim c397b16f42 lib: license header for RangeMap 2019-05-20 00:15:31 +10:00
Japheth Lim 071ebbd398 lib: move @{mk_term} antiquotation from AutoCorres; add examples 2019-05-17 18:07:59 +10:00
Japheth Lim c96444b7d4 lib/RangeMap: cleanup; strengthen range lookup thms; add testsuite 2019-05-17 18:07:59 +10:00
Japheth Lim 4f1c452bd2 lib: add RangeMap data structure (no tests yet) 2019-05-17 13:58:50 +10:00
Japheth Lim 9cbf5e6ab5 lib: use `@{term_pat}` in FP_Eval; refactor term_pat testsuite 2019-05-17 13:58:13 +10:00
Japheth Lim 4c18e1f156 lib/FP_Eval: add license headers 2019-05-17 13:58:13 +10:00
Japheth Lim c94d3285df lib/FP_Eval: move let_weak_cong' to main tool; improve docs 2019-05-17 13:58:13 +10:00
Japheth Lim 450f83ffeb lib: initial version of FP_Eval tool
FP_Eval is an Isabelle/ML tool for functional program rewriting.
It has similarities with the Isabelle simplifier, but is simpler and
more scalable for performing computations in the logic.

See FP_Eval_Tests for basic tests and examples.
2019-05-17 13:58:13 +10:00
Matthew Brecknell e9ac64ba2d binary: improve support for array access via pointer addition 2019-05-15 14:49:20 +10:00
Matthew Brecknell 175c612f3f crefine: use mangled names in memzero and memset
This is required by a C kernel patch (to refactor some boot code) which
caused the Isabelle C parser to mangle the names of some local
variables.
2019-05-15 14:49:20 +10:00
Edward Pierzchalski 4e56da06dd docs: Add section on JEdit
- Add instructions for installing the `goto-error` macro in a place
  where we might be able to find them.
- Mention the improved auto-indenter, in the hope that we will use it
  when writing proofs.
2019-05-10 10:43:15 +10:00
Edward Pierzchalski 9809f4001f lib tutorial: Add `SELECT_GOAL` example. 2019-05-08 10:42:33 +10:00
Matthew Brecknell 503f7ce7de crefine: update proofs for statically allocated IRQ node
Previously, the C kernel maintained a global pointer to the IRQ node.
This pointer was only initialised during boot, when the actual IRQ node
was dynamically allocated from untyped memory.

The C kernel now includes a statically allocated IRQ node, which is just
a suitably sized array of CTEs. This commit updates the proofs to verify
this change to the C kernel.
2019-05-03 13:52:52 +10:00
Matthew Brecknell 206ee07c58 crefine: add abbreviations for global page table addresses 2019-05-03 13:52:52 +10:00
Matthew Brecknell 976eca1a28 binary: improve support for array access via pointer addition 2019-05-03 13:52:52 +10:00
Matthew Brecknell f47f1c6446 cleanup: move pt_Ptr etc up to Wellformed_C 2019-05-03 13:52:52 +10:00
Matthew Brecknell 009c0c98b5 cleanup: remove some redundant uses of if_1_0_0 2019-05-03 13:52:52 +10:00
Matthew Brecknell 17b0aca539 cleanup: remove duplicate cap_get_tag_isCap_ArchObject2 lemmas 2019-05-03 13:52:52 +10:00
Matthew Brecknell f1901beee0 cleanup: remove duplicates of invs'_invs_no_cicd 2019-05-03 13:52:52 +10:00
Matthew Brecknell eedf3d8fa2 cleanup: remove duplicates of objBitsKO_gt_0 2019-05-03 13:52:52 +10:00
Edward Pierzchalski ea06b8b708 lib: Add tutorial on tactic basics.
This is an explicit walkthrough about how one goes about doing a proof
in Isabelle/ML. The goal is that someone can run into such a proof, look
at this tutorial, and then at least be equipped to ask the right
questions about fixing the proof.
2019-05-03 11:38:56 +10:00
Edward Pierzchalski ea31a344c7 libtest: Fixes after new Ptr syntax changes. 2019-05-03 11:14:12 +10:00
Edward Pierzchalski 85ec1a61cb c-parser: add type syntax for Ptr and ptr_coerce
A common frustration is seeing a term `Ptr x :: foo ptr` and not being
able to inspect the inferred type `foo` (this is especially true when
`Ptr` occurs within another expression).

Copying the style of `UCAST`, this adds syntax rules for displaying `Ptr
x :: foo ptr` as `PTR(foo) x` and `ptr_coerce (bar :: a ptr) :: b ptr`
as `PTR_COERCE(a -> b) bar`.
2019-05-02 10:34:25 +10:00
Edward Pierzchalski e4f0651f6b docs: Update installation instructions.
Figuring out that you need to install an extra package _after_ waiting
three hours for CRefine to build isn't fun. Changes the installation
instructions to be like most other projects, i.e. "here is everything
you'll need for anything you'll want to do".
2019-04-29 16:44:39 +10:00
Edward Pierzchalski 3dbe9fb100 misc: Use TS settings file.
For internal use, we want to configure Isabelle to use our custom
multiple-heap settings.
2019-04-24 14:45:58 +10:00
Victor Phan 834dd88681 refine: remove as_user_valid_etcbs from architecture specific files
as_user_valid_etcbs can be reasoned in an architecture generic setting.
2019-04-18 14:32:08 +10:00
Victor Phan 1689dd94fe cleanup
arm ainvs: cleanup

Abbreviate Hoare triples that do not care about the return value and
whose pre and post conditions are the same.

x64 ainvs: cleanup

ainvs: cleanup

x64 ainvs: cleanup

drefine: cleanup
2019-04-18 14:32:08 +10:00
Victor Phan 8c5cf5b13f bisim: update for new definition of set_object 2019-04-18 14:32:08 +10:00
Victor Phan bed48eba13 access-control: update for new definition of set_object 2019-04-18 14:32:08 +10:00
Victor Phan 93888ccb07 infoflow: remove oopsied lemma 2019-04-18 14:32:08 +10:00
Victor Phan 3807eb3b8f infoflow: update for new definition of set_object 2019-04-18 14:32:08 +10:00
Victor Phan d93eb12b7f drefine: update for new definition of set_object 2019-04-18 14:32:08 +10:00
Victor Phan 1c35127dcc x64 aspec: trivial - removed filename prefix in set_asid_pool definition 2019-04-18 14:32:08 +10:00
Victor Phan 1fd4c1ab0b x64 refine: update for new definition of set_object 2019-04-18 14:32:08 +10:00
Victor Phan c323da2f5c arm-hyp refine: update for new definition of set_object 2019-04-18 14:32:08 +10:00
Victor Phan d707c97df9 arm refine: update for new definition of set_object 2019-04-18 14:32:08 +10:00
Victor Phan c9094ccbb3 ainvs: update for new definition of set_object
Added set_object_wp_strong, which infers from a given hoare triple with
command set_object that the object of same type already exists in the
heap, and hoare_set_object_weaken_pre which does the same thing, but can
be applied on top of existing lemmas about set_object.

ainvs: improve proof of set_thread_state_runnable_valid_blocked

ainvs: change return value to a more general one

in_set_object has a return value that is empty '()', but the theorem
still holds true when replaced with a generic parameter 'rv' making it
easier to use this lemma.

ainvs: trivial - updated style of proof

ainvs: strengthen set_object_idle lemma

Add conditions imposed by valid_idle into precondition.
Thank you to Matt Brecknell for the help.

ainvs: abbreviated Hoare triples and proof fix

ainvs: restated set_object_wp_strong with auxiliary lemmas

ainvs: update for new definition of set_object

ainvs: update for new definition of set_object

Move in a few set_object and set_aobject theorems from x64 theory files
as these theorems were architecture generic.

ainvs: update for new definition of set_object

ainvs: update for new definition of set_object
2019-04-18 14:32:08 +10:00
Victor Phan e9449ee263 x64 ainvs: update for new definition of set_object
Removed update_object, which does the same thing as the new version of
set_object, and replaced it with set_object.

x64 ainvs: update for new definition of set_object

Rename legacy update_object definitions to set_object definitions and
remove related lemmas (to move up into architecture generic
KHeap_AI.thy). Remove simpler_defs as the set_object definitions are now
equivalent.

x64 ainvs: move x64 specific lemma back to ArchKHeap_AI

set_aobject_valid_arch move back after confirmation with Matt Brecknell
that it is x64 specific

x64 ainvs: update for new definition of set_object

Fixed some proofs a result of removing set_arch_obj_simps from the simp
set.
2019-04-18 14:32:08 +10:00
Victor Phan 71b6cfccef arm-hyp ainvs: update for new definition of set_object 2019-04-18 14:32:08 +10:00
Victor Phan 96787bae7a arm ainvs: update for new definition of set_object 2019-04-18 14:32:08 +10:00
Victor Phan 27a46bbe94 aspec: move type checking assert to set_object
Move type checking assert from kernel object set functions to
set_object. This improves proofs by generic reasoning of set_object
instead of kernel object specific lemmas.
2019-04-18 14:32:08 +10:00
Corey Lewis d5f08b7a21 access: trivial proof repair after adding a new comb rule 2019-04-17 11:19:49 +10:00
Corey Lewis 410eb275f4 lib: add a comb parameter to wpsimp, along with two new comb rules 2019-04-16 15:29:48 +10:00
Corey Lewis 95ddba3da5 lib: improve the parser for crunch.
The main benefit of this is that everything in crunch is now ctrl clickable.
As an added benefit, supplied rules can now be modified by attributes when
needed.
2019-04-16 15:18:49 +10:00