Commit Graph

162 Commits

Author SHA1 Message Date
Thomas Sewell dcd7fd8c17 SELFOUR-444: Refine proof with ghost invariant. 2016-11-02 11:19:09 +11:00
Thomas Sewell 74adb7a283 SELFOUR-444: Avoid unnecessary cache clears.
Adjust both specs and propagate the changes.
2016-11-02 11:19:09 +11:00
Thomas Sewell a96346e308 SELFOUR-444: Finished InfoFlow and DRefine. 2016-11-02 11:19:09 +11:00
Thomas Sewell 411af12ee9 SELFOUR-444: Logic generalised; Access finished.
Tweak AInvs proof for Untyped to be more reusable, finish integrity
proofs.
2016-11-02 11:19:08 +11:00
Thomas Sewell d765a64b81 SELFOUR-444: Haskell implementation, begin refine.
First attempt at a haskell implementation of preemptible retyping
and the refinement proof to abstract.
2016-11-02 11:19:08 +11:00
Thomas Sewell 63888fa98d SELFOUR-444: AInvs proven for preemptible retype. 2016-11-02 11:19:08 +11:00
Matthew Brecknell a3714e8190 SELFOUR-276: Finish proofs for maximum controlled priority (MCP)
To finish the proof of refinement to C, the specification for checkPrio
needed strengthening: the checkPrio spec now takes a machine word
argument. In the spec, priorities are still stored as 8-bit quantities,
however. Once the spec was strenthened, it was possible to remove some
redundant checks and mask operations from the C code.

A thread's maximum controlled priority (MCP) determines the maximum
thread priority or MCP it can assign to another thread (or itself).
2016-10-05 02:43:41 +11:00
Joel Beeren b352769016 SELFOUR-276: Prove refinement to Haskell for MCP
Also includes fixes to specs and invariants, and initial progress
towards C refinement.

A thread's maximum controlled priority (MCP) determines the maximum
thread priority or MCP it can assign to another thread (or itself).
2016-10-05 02:43:41 +11:00
Sophie Taylor 20539620f9 SELFOUR-276: Add MCP to specs and invariants
A thread's maximum controlled priority (MCP) determines the maximum
thread priority or MCP it can assign to another thread (or itself).
2016-10-05 02:43:41 +11:00
Xin,Gao 8d4a8eb238 SELFOUR-421: fix coding style 2016-09-22 19:23:28 +10:00
Xin,Gao 8f3a4dee31 SELFOUR-421: merge with master, fix wholesystem proofs 2016-09-22 19:23:19 +10:00
Xin,Gao 113315d9a6 SELFOUR-421: merge and fix up to ArmConfidentiality proof 2016-09-22 19:21:56 +10:00
Xin,Gao 252ce8df4c SELFOUR-421: infoflow and infoflow_c builds 2016-09-22 19:11:37 +10:00
Xin,Gao 328846ee1a SELFOUR-421: crefine builds 2016-09-22 19:11:37 +10:00
Xin,Gao 7784e80940 SELFOUR-421: fix refine 2016-09-22 19:11:36 +10:00
Xin,Gao c3be923ca0 SELFOUR-421: a defend version before wild changes 2016-09-22 19:11:36 +10:00
Joel Beeren 9617e22ce6 SELFOUR-421: random uncommitted stuff before merge 2016-09-22 19:11:36 +10:00
Joel Beeren df877769fc SELFOUR-421: refine done 2016-09-22 19:11:36 +10:00
Joel Beeren 0d787cf1c6 SELFOUR-421: added check to decoding asid control invocations and stole an asid bit from the high bits not the low ones 2016-09-22 19:11:36 +10:00
Joel Beeren 3c223b42fe SELFOUR-421: AInvs done, no added invariants yet 2016-09-22 19:11:29 +10:00
Thomas Sewell 9a1ec71a2d Refactor of crunch.
Substantial adjustments to crunch. Main user changes are:
  - 'lift' and 'unfold' mechanisms replaced by more general 'rule'.
  - some more 'ignores' standardised.
  - crunch has a more principled overall design:
    + discover crunch rule
      * provided or by definition extraction
    + recurse according to rule
    + prove goal based on rule, recursive discoveries, standard tactic
      * wp/simp adjustments tweak tactic
2016-08-24 15:53:53 +10:00
Matthew Brecknell c17fffd526 arch_split invariants: TcbAcc_AI
Somehow we missed this on our previous pass.
2016-08-10 18:50:56 +10:00
Matthew Brecknell 1013e959c1 arch_split: give some vspace concepts more generic names
In particular rename "pd" to "vspace", when the pd represents
an address space.
2016-08-03 14:46:48 +10:00
Matthew Brecknell d7a49c7bbd x64 invariants: reorder imports so that Include_AI comes before BCorres_AI
This makes forM_x and "crunch ignore" rules available to an arch-specific
crunch in BCorres_AI.
2016-08-03 14:46:48 +10:00
Matthew Brecknell 6b6b8786e8 arch_split: move kernel_base and idle_thread_ptr to arch-specific theories 2016-08-03 14:46:48 +10:00
Matthew Brecknell f9f160ed14 arch_split: replace some fixed word sizes with type aliases
Changed some instances of word32 to machine_word, and "10 word" to irq.
Also introduce a type_synonym for "machine_word_len".
2016-08-03 14:46:23 +10:00
Matthew Brecknell 3e3baf7b49 arch_split: invariants: split DetSchedAux_AI [VER-602] 2016-07-17 15:20:02 +10:00
Matthew Brecknell 0448444776 arch_split: invariants: split Deterministic_AI [VER-600] 2016-07-16 23:02:14 +10:00
Matthew Brecknell 138344f90a arch_split: invariants: split Syscall_AI [VER-571] 2016-07-12 16:50:32 +10:00
Matthew Brecknell ed2f1e1ca3 arch_split: split PDPTEntries_AI, rename as VSpaceEntries_AI [VER-580] 2016-07-12 16:50:32 +10:00
Matthew Brecknell 9b342f5ccf arch_split: invariants: split KernelInit_AI [VER-620] 2016-07-12 16:50:32 +10:00
Matthew Brecknell 6b93e4bc81 arch_split: invariants: split BCorres2_AI [VER-577] 2016-07-12 16:50:32 +10:00
Matthew Brecknell ae3644affc arch_split: invariants: split EmptyFail_AI [VER-576] 2016-07-10 11:33:02 +10:00
Matthew Brecknell 6ef4c2d60f arch_split: invariants: split InterruptAcc_AI [VER-606] 2016-07-09 11:04:22 +10:00
Matthew Brecknell 27c5ae792e arch_split: invariants: split CSpaceInv_AI [VER-604], CSpace_AI [VER-605] 2016-07-09 11:04:22 +10:00
Alejandro Gomez-Londono dced98a45d arch_split: AInvs.thy [VER-581] 2016-07-07 14:13:40 +10:00
Miki Tanaka eb7f7b1564 arch-split: Tcb_AI.thy done 2016-07-07 13:57:16 +10:00
Alejandro Gomez-Londono 3ef9d3221c arch_split: Interrupt_AI [VER-578] 2016-07-05 17:53:53 +10:00
Matthew Brecknell d50e43d717 arch_split: invariants: split CNodeInv_AI [VER-573] 2016-07-04 11:56:53 +10:00
Matthew Brecknell 33a7c4becb merge master into arch_split 2016-06-27 17:19:39 +10:00
Matthew Brecknell b3c809983b arch_split: invariants: split Ipc_AI [VER-572] 2016-06-27 17:19:11 +10:00
Alejandro Gomez-Londono 3d7660613a arch_split: Finalise_AI [VER-568] 2016-06-26 15:26:50 +10:00
Miki Tanaka 820cf2d366 Arch-split: Untyped.thy done [VER-566] 2016-06-23 12:00:59 +10:00
Matthew Brecknell b9313f6d11 arch_split: invariants: tidied 2016-06-15 10:15:26 +10:00
Gerwin Klein b172836ff3 ainvs: remove dependency on internal file; mark as unused 2016-06-09 19:27:32 +10:00
Matthew Brecknell 1537a8ec4d arch_split: invariants: split Arch_AI [VER-574] 2016-06-09 14:05:49 +10:00
Matthew Brecknell aceb021f88 arch_split: invariants: split Retype_AI [VER-556] 2016-06-08 10:33:09 +10:00
Alejandro Gomez-Londono eb40bef27c arch_split: IpcCancel_AI [VER-567] 2016-06-02 17:49:05 +10:00
Alejandro Gomez-Londono 9c608c62dc arch_split: Schedule_AI [VER-565] 2016-06-02 14:20:06 +10:00
Alejandro Gomez-Londono e1ae9e94dd arch_split: Detype_AI [VER-557] 2016-05-31 15:17:04 +10:00