Commit Graph

1479 Commits

Author SHA1 Message Date
Edward Pierzchalski 2035f444a0 refine: Remove unused lemmas. 2019-05-28 10:00:10 +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
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 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
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 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
Corey Lewis d5f08b7a21 access: trivial proof repair after adding a new comb rule 2019-04-17 11:19:49 +10:00
Amirreza Zarrabi 51cfddab32 crefine: update for increased capIRQ field bits on 64-bit platforms (VER-1047) 2019-03-25 07:47:45 +11:00
Edward Pierzchalski 642399ca01 proof: increase SimplExportAndRefine timeout.
VER-1072: Something in the recent C parser changes has increased the
time taken by SimplExportAndRefine by around 30%. This is a quick fix
for the regression timeouts while we take a closer look.

Increased to 8 hours.
2019-03-19 14:55:15 +11:00
Edward Pierzchalski 7cea1ad1b4 lib: don't extend core signatures.
Just because we *can* extend the core SML `List` signature, that doesn't
mean we *should*. It's a neat trick, but it makes it harder to find uses
of the new modules, and obfuscates definitions for very little gain.
2019-03-07 15:29:13 +11:00
Edward Pierzchalski e039ecc6a1 crefine: shorten long c-parser names.
Previously, tactics like `ctac` and `csymbr` would use definition names
to produce new bound variables. Now that the C parser always emits long
name *definitions* and short name *aliases*, we adjust these tactics to
try and shorten any new names they produce.
2019-03-07 13:34:32 +11:00
Michael Sproul 934386e97d dpolicy: remove opt_object_def 2019-02-28 15:58:11 +11:00
Michael Sproul c44fd87594 capdl: remove redundant definition `opt_object`
A lot of the proofs in SysInit and DRefine previously had to unfold opt_object,
which was really just an alias for cdl_objects with the arguments in the
opposite order! This commit deletes opt_object in favour of using cdl_objects
directly, which should slightly reduce the burden of unfolding.
2019-02-28 14:34:01 +11:00
Callum Bannister 4c79675879 sysinit: implement support for shared frames
Co-authored-by: Michael Sproul <michael.sproul@data61.csiro.au>
2019-02-19 14:47:00 +11:00
Michael Sproul 01fb050e42 sep-capDL: delete sep_state_irq_map print transl
The print translation triggered over-eagerly and would abbreviate all mappings
from words to word options (sizes were ignored).
2019-02-19 14:25:10 +11:00
Michael Sproul 045683cd9c ainvs: Rights_AI theory with facts about VM rights
SysInit requires some facts about VM rights that are shared with AInvs, so this
commit introduces a new theory to contain the shared lemmas.
2019-02-19 14:24:41 +11:00
Japheth Lim 3fc4166e7e AInvs: cleaner way to express ARM page table alignment 2019-02-01 14:11:37 +11:00
Japheth Lim 016a5d33ac AInvs: adjust pointer alignment invariants for PTEs, PDEs, etc.
Addresses issue VER-1036.

Previously, there were pointer alignment invariants in valid_pte, etc.
However, these had two problems:
1. valid_pte was conditioned on the PTE being mapped, so we couldn't
   rely on PTE pointers being aligned unconditionally (see VER-1036).
2. The existing alignments were actually incorrect for large pages.
   Proofs that needed the true alignments, obtained them from other
   parts of invs (e.g. valid_objs).

This commit moves the alignment invariants to wellformed_pte, etc.
and changes them to use the correct values.
2019-02-01 14:11:37 +11:00
Matthew Brecknell 8272f79c0f arm-hyp crefine: remove named interrupt identifiers
Recent changes to the C kernel mean that various structures and
constants are generated from DTS files. In particular, verification now
sees interrupt identifiers as integer literals instead of defined
constants.
2019-01-30 17:13:03 +11:00
Japheth Lim 5516fea8a0 capDL-api, sys-init: fix for GrantReply (SELFOUR-6)
The badge condition for the CNode_Mint lemmas was incorrect and ought
to be untangled. This commit patches up the specs, but with ad-hoc
proof fixes.
2018-12-11 14:54:42 +11:00
Japheth Lim bd6b934613 infoflow: clearer comment for the subjectAffects case for Reply 2018-12-10 20:01:38 +11:00
Japheth Lim c0fac42147 InfoflowC: fix for GrantReply (SELFOUR-6) 2018-12-10 20:01:38 +11:00
Japheth Lim 186d610db7 DPolicy: fix for GrantReply (SELFOUR-6) 2018-12-10 20:01:38 +11:00
Japheth Lim 3758df05df dspec, drefine: fix for GrantReply (SELFOUR-6)
Nothing too exciting here, just duplicating the new GrantReply logic
from ASpec and repairing the proofs.
2018-12-10 20:01:38 +11:00
Japheth Lim 4d4de9098b infoflow: delete commented-out sections 2018-12-10 20:01:38 +11:00
Japheth Lim 2735ad42a1 access: proof cleanup for tro_alt_trans_spec
The proof structure still largely follows Thibaut's scheme; this commit
merely adds some speedup, style cleanup, and documentation.

Unfortunately, the proof state seems to be just large enough that the
built-in record update ruleset runs into limitations, and the standard
clasimp tactics start to fail on subgoals in an unpredictable way.
2018-12-10 20:01:38 +11:00
Japheth Lim ab2e097e60 infoflow: proof style cleanup (for GrantReply patch)
As the title says, this commit introduces general formatting and style
cleanup, but only for the parts touched by the recent GrantReply patch.
2018-12-10 20:01:38 +11:00
Japheth Lim 9eaf630e48 infoflow: more minor FinalCaps cleanup 2018-12-10 20:01:38 +11:00
Japheth Lim f49aefd4a4 infoflow: style cleanup (for GrantReply patch): FinalCaps and Noninterference 2018-12-10 20:01:38 +11:00
Japheth Lim 6e2fbbe7f1 access: improve comments for policy_wellformed and integrity_obj 2018-12-10 20:01:38 +11:00
Japheth Lim 99bd4b0723 access, infoflow: replace "pi_cases" proofs with structured cases 2018-12-10 20:01:38 +11:00
Japheth Lim 6b48805ef1 access: use monad_commute to prove empty_slot commute lemma
This is ostensibly more principled than the earlier proof, which simply
unfolded all the monad combinators. However, there was also no existing
framework for using monad_commute, so we need to make one up just to
do this single proof.
2018-12-10 20:01:38 +11:00
Japheth Lim 5d1525bb7a access: proof style cleanup (for GrantReply patch)
As the title says, this commit introduces general formatting and style
cleanup, but only for the parts touched by the recent GrantReply patch.
2018-12-10 20:01:38 +11:00