Commit Graph

76 Commits

Author SHA1 Message Date
Matthew Fernandez 075349ec40 camkes: Prove there are no address space objects in a low-level generated spec.
The low-level specification roughly maps to the code generator and template
instantiation phases of CAmkES. At this point no address space objects exist
(excepting slight infidelity with respect to page directories). The address
space objects are introduced in the "extra" objects that we append, which map
roughly to the ELF derivation and CapDL filters.

Separating the two collections of objects gives us some nice preserved
properties that can be shown over generation from an abstract input. In
particular, we can phrase some provable properties that are resilient against
things like changes in compiler optimisation levels and allocation strategies.
2015-05-27 17:13:07 +10:00
Matthew Fernandez 06e01e9e08 camkes: Add CamkesCdlRefine to regression tests. 2015-05-27 16:22:24 +10:00
Matthew Fernandez abb783acbd camkes: Add CAmkES↔CapDL beginnings.
These theories construct a locale with holes that are filled in by generated
code. Interpreting the locale manually is quite tedious and error prone, but we
entirely automate this process during code generation. For the details of this,
see the CAmkES 'architecture-semantics' and 'label-mapping' back ends.
2015-05-27 16:06:14 +10:00
Matthew Fernandez 69676bbae1 camkes: Add CamkesCdlBase session.
This session encompasses the theories relevant for reasoning about the
relationship between CAmkES and CapDL.
2015-05-27 15:57:18 +10:00
Matthew Fernandez b5b9248583 camkes: Update architectural model.
This brings the architectural model in line with the current implementation by
making the following adjustments:
 - Remove "trait" terminology and replace with "procedure." This was already
   done in the datatypes, but had not been updated in the accompanying text.
 - Remove both fixed size and NULL-terminated arrays and replace with the more
   recent arbitrary sized arrays. Neither of the former are supported, but can
   now be emulated if necessary.
 - Remove references to `RPCEvent` and `DirectCall` connectors. `RPCEvent` no
   longer exists and `DirectCall`, while still present, introduces complexities
   that are not adequately explained in the context of this document.
 - Remove legacy comments.
 - Various typo fixes.
2015-04-23 14:37:11 +10:00
Matthew Fernandez c80ae67666 camkes: Move libsel4 proofs to internal. 2014-11-11 11:24:15 +11:00
Matthew Fernandez 5d52e8b421 camkes: Move libsel4-related proofs to internal. 2014-11-04 09:12:25 +11:00
Matthew Fernandez 91a024bba3 camkes: Add WP lemmas for the remaining types_gen functions. 2014-10-28 16:09:44 +11:00
Matthew Fernandez 671a25f1d5 camkes: Add some generated proofs about generated bitfield code. 2014-10-28 12:08:41 +11:00
Matthew Fernandez 6387bcdb73 camkes: Update ROOT files to Isabelle 2014. 2014-10-21 11:37:55 +11:00
Matthew Fernandez 73d29ecfc3 camkes: Extend set_length proof to cover const of other fields of message info.
JIRA: VER-159
2014-10-06 16:41:48 +11:00
Matthew Fernandez ee489639c8 camkes: Setting length of a MessageInfo doesn't affect the label.
JIRA: VER-159
2014-10-06 15:28:16 +11:00
Matthew Fernandez b43511b5d8 camkes: Incorporate message info setter and getter.
JIRA: VER-159
2014-10-02 18:49:02 +10:00
Matthew Fernandez 9d07ec6a7f camkes: Another reordering lemma on SetMR.
Again, more of a sanity check as something that should be true.

JIRA: VER-159
2014-10-02 13:27:13 +10:00
Matthew Fernandez 7c16b05f88 camkes: WP lemma for seL4_MessageInfo_new.
JIRA: VER-159
2014-10-02 09:08:06 +10:00
Matthew Fernandez de6306280e camkes: Rename SetMR.thy to Libsel4.thy.
JIRA: VER-159
2014-10-02 09:08:06 +10:00
Matthew Fernandez 689993a1d9 camkes: SetMRs can be reordered.
JIRA: VER-159
2014-10-01 14:04:16 +10:00
Matthew Fernandez 30978b5078 camkes: SetMR with the existing value of a message register does nothing.
JIRA: VER-159
2014-09-30 21:26:15 +10:00
Matthew Fernandez f7fb269a26 camkes: SetMR is idempotent.
JIRA: VER-159
2014-09-30 19:52:32 +10:00
Matthew Fernandez 1b261b524f camkes: Remove some unat/of_int noise in GetMR/SetMR proofs.
JIRA: VER-159
2014-09-30 19:09:38 +10:00
Matthew Fernandez 7f4cb7e411 camkes: General user-level proof about GetMR/SetMR.
These kind of properties are required for future reasoning about glue code
marshalling and unmarshalling. However, almost any lemma we need about libsel4
is desirable for any user-level program on seL4. Nothing is particularly
compositional right now, which isn't too much of a problem for CAmkES where
we're generating proofs, but anyone else who wants to use this is stuck with
copy-and-paste.

JIRA: VER-159
2014-09-30 15:55:27 +10:00
David Greenaway cf0d1abce6 Merge 'master' into 'isabelle-2014'.
Conflicts:
	proof/crefine/Fastpath_C.thy
	proof/drefine/KHeap_DR.thy
	proof/infoflow/Noninterference.thy
	spec/design/version
	sys-init/DuplicateCaps_SI.thy
	sys-init/InitTCB_SI.thy
	sys-init/Proof_SI.thy
	tools/asmrefine/SimplExport.thy
	tools/autocorres/tests/examples/SchorrWaite.thy
2014-09-17 14:21:13 +10:00
David Greenaway 71a2e0548a camkes: Fix include paths in auto-generated glue proofs.
The generator itself will need to be fixed longer term, but Matt
apparently has that in the pipeline.
2014-09-16 17:04:03 +10:00
David Greenaway a50574d353 camkes: Port to Isabelle 2014.
The only major change is that "embed" is now a constant in HOL, removing
it from the set of valid names for free variables.

Have renamed uses of "embed" to "embed_data"; a better name could
probably be chosen by someone more familiar with the code.
2014-09-15 10:42:46 +10:00
Gerwin Klein 84595f4233 release cleanup 2014-07-17 18:22:50 +02:00
Gerwin Klein 2a03e81df4 Import release snapshot. 2014-07-14 21:32:44 +02:00