Commit Graph

107 Commits

Author SHA1 Message Date
Gerwin Klein
0d984f3fa3
camkes: update to Isabelle2023 mapsto syntax
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2023-10-06 14:41:53 +11:00
Gerwin Klein
98bb90e0c3 Makefiles: remove unused report-regression target
This target was used in the regression test setup before this repo
switched to `run_tests` and has been unused for some time.

Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2022-06-03 09:36:43 +10:00
Gerwin Klein
68bb97ef66 isabelle2021-1: CamkesCdlRefine
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2022-03-29 08:38:25 +11:00
Gerwin Klein
d92b4dcadb isabelle-2021: update CamkesCdlRefine
Signed-off-by: Gerwin Klein <gerwin.klein@proofcraft.systems>
2021-09-30 16:53:17 +10:00
Ryan Barry
8dd93a52a0 infoflow+dpolicy+cdl-refine: misc fixes
Signed-off-by: Ryan Barry <ryan.barry@unsw.edu.au>
2021-06-21 20:10:32 +10:00
Ben Fiedler
7983107b71 Fix refs_valid_procedures definition
The current formulation allows an interface of an instance to be
mentioned multiple times in the from side of the same connection.

Signed-off-by: Ben Fiedler <git@bfiedler.ch>
2021-03-24 10:47:01 +11:00
Gerwin Klein
a45adef66a all: remove theory import path references
In Isabelle2020, when isabelle jedit is started without a session
context, e.g. `isabelle jedit -l ASpec`, theory imports with path
references cause the isabelle process to hang.

Since sessions now declare directories, Isabelle can find those files
without path reference and we therefore remove all such path references
from import statements. With this, `jedit` and `build` should work with
and without explicit session context as before.

Signed-off-by: Gerwin Klein <gerwin.klein@data61.csiro.au>
2020-11-02 10:16:17 +10:00
Gerwin Klein
76dce46565 camkes: ROOT updates
Signed-off-by: Gerwin Klein <gerwin.klein@data61.csiro.au>
2020-10-27 15:52:31 +10:00
Gerwin Klein
e7fb36b7e2 ROOT files: file reorg for new ROOT requirements
Isabelle2020 requires each session to declare it own set of directories that
may not overlap with other session's directories. This commit reorganises
files to comply with that requirement.

Signed-off-by: Gerwin Klein <gerwin.klein@data61.csiro.au>
2020-10-27 15:52:31 +10:00
Gerwin Klein
c68915b92b license: provide documentation under CC-BY-SA-4.0
Datat61 provides all docs under CC-BY-SA-4.0.
2020-03-16 14:19:15 +08:00
Gerwin Klein
86a941e7e7 spdx: review missing copyright & license info
Some files were missing machine-readable copyright info, others were tagged
incorrectly.
2020-03-16 14:19:15 +08:00
Gerwin Klein
1448882cd9 camkes: remove NICTA logo
The logo can't be provided under an OSS license.
2020-03-16 14:19:15 +08:00
Gerwin Klein
a424d55e3e licenses: convert license tags to SPDX 2020-03-13 14:38:24 +08:00
Japheth Lim
f053fb0181 CamkesAdlSpec: allow ad-hoc additions to integrity policy
Each CAmkES assembly gets an extra field `policy_extra` to specify
extra policy edges. These are added to the default policy graph from
`policy_of`.

This feature is intended to support endpoint merging in the
`global-endpoint` CAmkES template, which could add communication
edges that were not present in the ADL.
2019-09-05 17:03:41 +10:00
Japheth Lim
a4019be323 camkes: allow specifying integrity groups
The new field `group_labels` specifies a mapping from ADL component
names to integrity policy labels. This will be used to support the
`group` keyword in CAmkES that allows components to share an address
space. See Jira VER-1109.
2019-09-05 17:03:41 +10:00
Japheth Lim
d00426a669 CamkesCdlRefine: helper lemmas for faster policy_wellformed proof 2019-08-27 17:08:35 +10:00
Japheth Lim
8fe0010140 CamkesAdlSpec: support maybe uses and maybe consumes interfaces
The CAmkES toolchain allows some interfaces to be declared optional.
We add such a flag to the ADL datatype and remove the requirement for
such interfaces to be connected.
2019-08-27 17:08:35 +10:00
Japheth Lim
6b54ecea33 camkes: further generalised connector semantics
This allows connectors to also grant access rights between the
from-ends themselves (and similarly the to-ends).

It was previously thought that production CAmkES systems would not
need these rights. However, some connectors (e.g. VirtQueue) don't
follow the standard ADL semantics and we need these rights to
express their behaviour. Limitations of the Access model also cause
`policy_wellformed` systems to have more rights than necessary; see
Jira VER-1108.
2019-08-27 17:08:35 +10:00
Japheth Lim
e5e4f23ca2 CamkesAdlSpec: tag Wellformed_CAMKES conditions
Checking an ill-formed spec can now yield a list of annotated
failures, rather than leaving a mess (or worse, just `1. False`).
2019-08-21 14:23:28 +10:00
Japheth Lim
2c3b4c24fc CamkesCdlRefine, Lib: add debug tag for integrity policy
This tags each generated policy goal with the object and cap that
led to that goal.

We create a new constant `generic_tag` in Lib for this purpose.
2019-08-21 14:23:22 +10:00
Japheth Lim
61e184a0ab CamkesCdlRefine: delete Generator theory
This theory was a project to specify the behaviour of the CAmkES
toolchain as an Isabelle function. However, this copy of the theory
is incomplete, the toolchain has moved on, and the ADL model is also
undergoing changes, so there is no longer much value in maintaining
this file.
2019-07-24 16:08:14 +10:00
Japheth Lim
ef6c377315 CamkesAdlSpec: relax wellformedness for empty procedures
The VirtQueueDev connector in global-components currently uses empty
procedures as a hack, and allowing empty procedures seems to be
harmless to the rest of the ADL semantics.
2019-07-24 16:08:14 +10:00
Japheth Lim
6c599a8dee camkes: support generalised connector semantics
The classic ADL formal model has a fixed palette of connectors, with
the interface type and seL4 integrity model also being fixed for each
connector type. This is unable to model new CAmkES connectors.

We change the ADL model to allow more combinations of connector
semantics, including arbitrary sets of Access rights between the
policy labels that a connector touches.

See Jira VER-1110 for more context.
2019-07-24 16:08:14 +10:00
Japheth Lim
20fed3bff5 camkes: add flag for hardware components
Currently unused, but may be used for future wellformedness checks.
2019-07-24 16:08:14 +10:00
Japheth Lim
f785e6fcf5 trivial: CamkesCdlRefine: add license header 2019-07-16 17:58:40 +10:00
Japheth Lim
fe3a0449eb CamkesCdlRefine: better base cases for assign_schematic methods 2019-07-15 17:21:37 +10:00
Japheth Lim
261c7a308f CamkesCdlRefine: detect ARM sections in mapped_pts_of 2019-07-15 17:21:37 +10:00
Japheth Lim
c79fb455cb trivial: CamkesCdlRefine: drop unused lemma 2019-07-15 17:21:14 +10:00
Japheth Lim
e1ca4baab7 CamkesCdlRefine: add support library for capDL refinement toolchain
This adds a library theory of useful lemmas, simpsets and methods,
to be used in the camkes-tool's capDL refinement templates.
2019-07-15 17:20:55 +10:00
Gerwin Klein
c34840d09b global: isabelle update_cartouches 2019-06-14 11:41:21 +10:00
Michael McInerney
c13432b0c4 misc updates for Isabelle2019 2019-06-14 11:41:20 +10:00
Japheth Lim
252991e9a7 CamkesCdlRefine: update policy_of to work with GrantReply 2019-01-11 14:39:11 +11:00
Japheth Lim
9792798c1b CamkesAdlSpec: avoid hardcoding C types; better wellformed_* automation
Instead of hardcoding basic C types, this passes most of them along as
uninterpreted strings. This allows typedefs such as time_t or ssize_t
to be used, without requiring the formal model to recognise them.
2019-01-11 14:39:11 +11:00
Japheth Lim
c03323f20c camkes: remove ConnectorProperties_CAMKES theory
This was created long ago for a report and is no longer relevant.
2018-09-06 20:47:38 +10:00
Japheth Lim
95cae4756c camkes: initial updates for new CDL refinement framework
Summary of changes:
- change ADL spec to support connectors with many endpoints [VER-992]
- more connector synonyms
- refactor integrity policy spec
2018-09-06 20:45:58 +10:00
Gerwin Klein
3101eba8e7 remove trailing whitespace from ulem.sty 2018-08-21 15:15:08 +10:00
Gerwin Klein
e2f8ec0bab Isabelle2018: CamkesCdlRefine 2018-08-20 09:06:37 +10:00
Gerwin Klein
b148b0c94a Isabelle2018: CamkesGlueSpec 2018-08-20 09:06:37 +10:00
Gerwin Klein
0ce3e653d1 Isabelle2018 camkes: declare external file dependencies 2018-08-20 09:06:37 +10:00
Gerwin Klein
8af6b2ec1a Isabelle2018: add ulem.sty which is now required by isabelle.sty
(available by default in newer tetex installs, but not older ones)
2018-08-20 09:06:37 +10:00
Gerwin Klein
6b9d9d24dd Isabelle2018: new "op x" syntax; now is "(x)"
(result of "isabelle update_op -m <dir>")
2018-08-20 09:06:35 +10:00
Gerwin Klein
011e08458e Isabelle2018: new comment syntax
(result of "isabelle update_comments <dirs>")
2018-08-20 09:06:35 +10:00
Gerwin Klein
7a5416dc05 Isabelle2018 spec: new handling of external file deps 2018-08-20 09:06:34 +10:00
Gerwin Klein
6486bad264 lib: make Lib session a test dependency
Also ensure that the C parser is built before Lib, because it depends
on generated grammar files that need `make'.
2018-08-20 09:06:34 +10:00
Gerwin Klein
b5cdf4703f globally use session-qualified imports; add Lib session
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.
2018-08-20 09:06:34 +10:00
Japheth Lim
a6c11a2b28 access-control, infoflow: use generic relation for pasDomainAbs
This patch generalises the mapping between authority labels and
scheduler domains, so that the access-control integrity property still
holds when labels are not partitioned into domains. This lets us use
the integrity result on systems that don't use the domain scheduler.

The information flow proofs still rely on the domain partitioning,
hence we add constraints on the label-domain mapping for the info-flow
results to hold.

Jira VER-945
2018-08-02 15:01:42 +10:00
Matthew Brecknell
0102ef172a Isabelle2017: remove String_Compare
This was a workaround for an Isabelle2016-1 performace regression, and
is no longer required.
2017-10-30 12:23:26 +11:00
Matthew Brecknell
184d6b70b7 remove most tab characters 2017-10-20 14:22:36 +11:00
Alejandro Gomez-Londono
796887d9b1 Removes all trailing whitespaces 2017-07-12 15:13:51 +10:00
Gerwin Klein
47119bf43e wp_cleanup: update proofs for new wp behaviour
The things that usually go wrong:
  - wp fall through: add +, e.g.
      apply (wp select_wp) -> apply (wp select_wp)+

  - precondition: you can remove most hoare_pre, but wpc still needs it, and
    sometimes the wp instance relies on being able to fit a rule to the
    current non-schematic precondition. In that case, use "including no_pre"
    to switch off the automatic hoare_pre application.

  - very rarely there is a schematic postcondition that interferes with the
    new trivial cleanup rules, because the rest of the script assumes some
    specific state afterwards (shouldn't happen in a reasonable proof, but
    not all proofs are reasonable..). In that case, (wp_once ...)+ should
    emulate the old behaviour precisely.
2017-01-13 14:04:15 +01:00