Gerwin Klein
9ebaa2c3ea
arm-hyp refine: new invariant: VMNoAccess is unused
2017-06-19 14:32:35 +10:00
Alejandro Gomez-Londono
a488e8dd44
arm-hyp refine: various fixes and renames for obj_at' related rules
2017-06-19 14:32:34 +10:00
Alejandro Gomez-Londono
2dc5ec8601
arm-hyp refine: update for do_flush/doFlush
2017-06-19 14:32:32 +10:00
Alejandro Gomez-Londono
b96877f244
arm-hyp refine: (Fix) Correctly defining setCurrentPD
2017-06-19 14:32:32 +10:00
Rafal Kolanski
a8b7b7887d
arm-hyp refine: update for asidHighBits change
2017-06-19 14:32:31 +10:00
Miki Tanaka
fc74a6440f
arm-hyp refine: repair for rebase (new corres)
...
- fixes the fallout from the updated corres method.
- also includes some fixes by: Daniel Matichuk <daniel.matichuk@data61.csiro.au>
2017-06-19 14:32:31 +10:00
Miki Tanaka
bf98897a98
arm-hyp refine: Refine sorry free
2017-06-19 14:32:31 +10:00
Miki Tanaka
ca9582a2e8
arm-hyp refine: VSpace_R sorry free
2017-06-19 14:32:31 +10:00
Alejandro Gomez-Londono
ddb5c4043c
arm-hyp refine: VSpace_R, 2 sorries left
2017-06-19 14:32:31 +10:00
Alejandro Gomez-Londono
34a7c911e2
arm-hyp refine: VSpace_R, 2 sorries left, 1 sorry elsewhere
2017-06-19 14:32:31 +10:00
Gerwin Klein
37ef712322
arm-hyp refine: zobj_refs adjustments; Arch_R sorry-free
2017-06-19 14:32:31 +10:00
Gerwin Klein
0bf8d784b5
arm-hyp refine: zobj_refs' for VCPU (needed for liveness)
2017-06-19 14:32:31 +10:00
Gerwin Klein
e48643f785
arm-hyp refine: reduce sorries in Arch_R
2017-06-19 14:32:30 +10:00
Miki Tanaka
19b519ba29
arm-hyp refine: VSpace_R, 4 sorries left
2017-06-19 14:32:30 +10:00
Miki Tanaka
3edf057812
arm-hyp refine: tidying up Schedule_R
2017-06-19 14:32:30 +10:00
Alejandro Gomez-Londono
bee7435458
arm-hyp refine: reduce sorries in Arch_R
2017-06-19 14:32:30 +10:00
Gerwin Klein
5e9080c77b
arm-hyp refine: Syscall_R sorry-free
2017-06-19 14:32:30 +10:00
Gerwin Klein
501e71adbe
arm-hyp refine: CNodeInvs_R sorry-free
2017-06-19 14:32:30 +10:00
Gerwin Klein
8118968a05
arm-hyp refine: remove sorry in Syscall_R
2017-06-19 14:32:30 +10:00
Gerwin Klein
c34aef1ee3
arm-hyp refine: DomainTime_R sorry-free
2017-06-19 14:32:30 +10:00
Gerwin Klein
14b0f600ab
arm-hyp refine: Finalise_R sorry-free
2017-06-19 14:32:30 +10:00
Gerwin Klein
187611825c
arm-hyp refine: dissociateVCPUTCB_invs'
2017-06-19 14:32:30 +10:00
Alejandro Gomez-Londono
31575f1065
arm-hyp refine: reduce sorries in Arch_R
2017-06-19 14:32:30 +10:00
Miki Tanaka
ff6da2f76c
arm-hyp refine: Retype_R sorry free
2017-06-19 14:32:30 +10:00
Gerwin Klein
6f32ddc7e9
arm-hyp refine: remove setVCPU_invs from wp set.
...
(The rule will need more preconditions, so we don't want it used
automatically yet.)
2017-06-19 14:32:30 +10:00
Gerwin Klein
f727cc983c
arm-hyp refine: remove crunch sorries in DomainTime_R
...
Still two sorries left that depend on vgicMaintenance.
2017-06-19 14:32:30 +10:00
Alejandro Gomez-Londono
23d80dd261
arm-hyp refine: Ipc_R sorry free
2017-06-19 14:32:30 +10:00
Alejandro Gomez-Londono
fa5448625b
arm-hyp refine: reduce sorries in Arch_R
2017-06-19 14:32:29 +10:00
Miki Tanaka
cb5e0bcd7e
arm-hyp refine: VSpace_R incremental progress (vcpuSwitch invariants)
2017-06-19 14:32:29 +10:00
Miki Tanaka
b74e8c59a2
arm-hyp refine: Schedule_R sorry free
...
- last few sorries are moved to VSpace_R
2017-06-19 14:32:29 +10:00
Miki Tanaka
774448a7de
arm-hyp refine: Untyped_R sorry free
2017-06-19 14:32:29 +10:00
Gerwin Klein
35e751f005
arm-hyp refine: PageTableDuplicates sorry-free
2017-06-19 14:32:29 +10:00
Alejandro Gomez-Londono
10e8973abb
arm-hyp refine: reduce sorries in Ipc_R
2017-06-19 14:32:29 +10:00
Alejandro Gomez-Londono
8ccba110a1
arm-hyp refine: reduce (more) sorries in VSpace_R
2017-06-19 14:32:29 +10:00
Alejandro Gomez-Londono
36146506ee
arm-hyp refine: reduce sorries in VSpace_R
2017-06-19 14:32:29 +10:00
Gerwin Klein
4067704e99
arm-hyp refine: reduce sorries in PageTableDuplicates
2017-06-19 14:32:29 +10:00
Gerwin Klein
8ae1d84e94
arm-hyp refine: reduce sorries in Finalise_R
2017-06-19 14:32:29 +10:00
Gerwin Klein
96958113ef
arm-hyp refine: IPCCancel sorry-free
...
inlcuding simplification to ep and ntftn state_hyp_refs_of lemmas
2017-06-19 14:32:29 +10:00
Gerwin Klein
1e9d0dc006
arm-hyp refine: completed remaining instances of no_vcpu class
2017-06-19 14:32:29 +10:00
Alejandro Gomez-Londono
2f972cfffd
arm-hyp refine: more vcpuSwitch hoare triples
2017-06-19 14:32:29 +10:00
Alejandro Gomez-Londono
69d16699ee
arm-hyp refine: Introducing no_vcpu typeclass to avoid duplicated lemmas
...
* Then idea with this class is to be able to genericaly constrain
predicates over pspace_storable values to are not of type VCPU,
this is useful for invariants such as obj_at' that are trivialy
true (sort of) if the predicate and the function (in the hoare
triple)
2017-06-19 14:32:29 +10:00
Gerwin Klein
89496b3d90
arm-hyp: valid_arch_state'
2017-06-19 14:32:28 +10:00
Alejandro Gomez-Londono
a751e4f798
arm-hyp refine: More invariants for vcpuSwitch and alike
2017-06-19 14:32:28 +10:00
Miki Tanaka
d1eef6c026
arm-hyp refine: Detype_R sorry free
2017-06-19 14:32:28 +10:00
Miki Tanaka
511d3f5c40
arm-hyp refine: one sorry left in Detype_R
2017-06-19 14:32:28 +10:00
Miki Tanaka
bdd6f9c896
arm-hyp refine: add armUSGlobalPD to global_refs' in Invariants_H
2017-06-19 14:32:28 +10:00
Alejandro Gomez-Londono
a6b0559e23
arm-hyp refine: set_vm_root_corres and auxiliary lemmas
2017-06-19 14:32:28 +10:00
Alejandro Gomez-Londono
e52c985b4b
arm-hyp refine: add valid_arch_tcb' invariant (vcpu_at' for atcbVCPUPtr)
2017-06-19 14:32:28 +10:00
Miki Tanaka
9103207d8a
arm-hyp refine: fix storePDE/storePTE sorries in VSpace_R
2017-06-19 14:32:28 +10:00
Miki Tanaka
4260a2c545
arm-hyp refine: new definition of valid_arch_state', with more sorries for now
...
valid_arch_state' now requires armHSCurVCPU to be a pointer to a live' vcpu
2017-06-19 14:32:28 +10:00
Miki Tanaka
aa82471c17
arm-hyp refine: Invariants_H sorry free
2017-06-19 14:32:28 +10:00
Miki Tanaka
1c85326bac
arm-hyp refine: new definition of valid_vcpu'
...
this introduces a more accessible definition of valid_vcpu'
2017-06-19 14:32:27 +10:00
Alejandro Gomez-Londono
4e90b0558f
arm-hyp refine: fixing some broken lemmas after the last batch of changes
2017-06-19 14:32:27 +10:00
Alejandro Gomez-Londono
b7e754bf1b
arm-hyp refine: vcpu{Switch,Save,Enable,etc}_corres + other related lemmas
2017-06-19 14:32:27 +10:00
Alejandro Gomez-Londono
76b02fe736
arm-hyp ainvs: Fixing StateRelation due to some renaming in abstract/haskell
2017-06-19 14:32:27 +10:00
Gerwin Klein
740d606774
refine: closed the Orphanage
...
Not necessary for CRefine and better proved on the abstract spec now.
To be resurrected (on abstract) in the future.
2017-06-19 14:32:27 +10:00
Gerwin Klein
75acdb3823
arm-hyp refine: add IRQReserved to state relation
2017-06-19 14:32:27 +10:00
Gerwin Klein
e2d8a0ae50
arm-hyp refine: Tcb_R sorry free
2017-06-19 14:32:27 +10:00
Gerwin Klein
bc40dc4a46
arm-hyp refine: remove unused ADT_H lemma
2017-06-19 14:32:27 +10:00
Gerwin Klein
e9d3c3eb54
arm-hyp: remove unused ParityEnabled in aspec; solve sorries in ADT_H
...
ParityEnabled isn't used in ARM_HYP and we had to prove its absence as
invariant, which in turn makes the abstraction function from Haskell
to abstract partial (only works when invariants hold).
This commit removes that problem by removing ParityEnabled from the
abstract spec. Updated ainv and refine as necessary.
2017-06-19 14:32:27 +10:00
Gerwin Klein
61136c29fd
arm-hyp: wp_pre rebase repair
2017-06-19 14:32:27 +10:00
Gerwin Klein
f33d584cac
arm-hyp refine: proof repair for spec updates
2017-06-19 14:32:26 +10:00
Gerwin Klein
5a03004e2c
refine: minor cleanup
2017-06-19 14:32:26 +10:00
Gerwin Klein
29abd9a19e
arm-hyp/refine: vgic maintenance updates
2017-06-19 14:32:26 +10:00
Gerwin Klein
e4d8bb1d4f
arm_hyp/refine: 'getActiveIRQ in_kernel' updates
2017-06-19 14:32:26 +10:00
Alejandro Gomez-Londono
e6c70be8a5
arm-hyp refine: Adding vcpuSwitch_corres and similar
2017-06-19 14:32:25 +10:00
Matthew Brecknell
43c742901b
arm-hyp refine: trivial: remove spurious Eisbach import
2017-06-19 14:32:25 +10:00
Matthew Brecknell
edee892ac0
arch_split: refine: remove spurious reference to ARM namespace
2017-06-19 14:32:25 +10:00
Matthew Brecknell
4d97cdd6a3
arch_split: refine: update DetSchedSchedule_AI imports
2017-06-19 14:32:25 +10:00
Miki Tanaka
56c00ab03a
arm-hyp refine: sorrying done
2017-06-19 14:32:25 +10:00
Miki Tanaka
18d76773fa
arm-hyp refine: sorrying done upto VSpace_R
2017-06-19 14:32:25 +10:00
Alejandro Gomez-Londono
fd79501491
arm-hyp refine: ArchAcc_R done
...
tags: [VER-696]
2017-06-19 14:32:24 +10:00
Miki Tanaka
881ce3e8cb
arm-hyp refine: Invariants_H done for now, sorried up to ArchAcc_R
2017-06-19 14:32:24 +10:00
Miki Tanaka
9060562bfe
arm-hyp refine: update refine for the rebase (includes all the changes)
...
None of these files contain arm-hyp specific changes yet.
2017-06-19 14:32:24 +10:00
Miki Tanaka
00a68d1470
arm-hyp refine: sorrying in progress (now in CSpase_R)
2017-06-19 14:32:23 +10:00
Miki Tanaka
8cf46846b5
arm-hyp refine: Invariants_H and StateRelation updated
2017-06-19 14:32:23 +10:00
Miki Tanaka
e3cb71ef04
arm-hyp refine: copy ARM files to ARM_HYP directory, updating invariants in progress
2017-06-19 14:32:23 +10:00
Pang Luo
da28d94974
VER-717: refactor tpidrurwRegister and fix corresponding proof
2017-05-05 15:17:41 +10:00
Joel Beeren
71e2db88a4
arm: refactor sanitise_register to take a bool instead of a kernel_object
...
This simplified the sanitise_register logic in CRefine for arm-hyp.
2017-05-03 21:51:57 +10:00
Matthew Brecknell
2c742ed2c6
x64 refine: fix proofs after rebase and spec updates
2017-04-24 23:58:05 +10:00
Joel Beeren
1a3debd78e
x64: refine: clear sorries for setVMRoot
2017-04-24 15:44:36 +10:00
Joel Beeren
2652a7d773
x64: refine: proved perform_aci_invs
2017-04-24 14:46:12 +10:00
Matthew Brecknell
fe26c457d3
x64 refine: fix findVSpaceForASID_vs_at_wp
2017-04-24 14:36:56 +10:00
Matthew Brecknell
c01e9f68c6
x64: progress in VSpace_R
...
Corres lemmas are proven. Remaining:
- A handfull of Hoare triples.
- The Haskell spec for invalidateASID needs to be updated
to close a small hole in each of unmap_pd_corres and
unmap_pdpt_corres.
2017-04-24 13:58:37 +10:00
Joel Beeren
990b6a02df
x64: cleared sorries in Detype_R
2017-04-24 12:11:39 +10:00
Joel Beeren
93f6029fbf
x64: refine: Refine.thy fixed again
2017-04-21 14:32:53 +10:00
Joel Beeren
3b2c465497
x64: refine: KernelInit_R done
2017-04-21 14:25:48 +10:00
Joel Beeren
1463da973f
x64: refine: EmptyFail_H done
2017-04-21 14:25:03 +10:00
Joel Beeren
84f827a042
x64: refine: Refine.thy done
2017-04-21 14:15:56 +10:00
Joel Beeren
9c10fde9f7
x64: refine: PageTableDuplicates done
2017-04-21 14:01:56 +10:00
Joel Beeren
8cd3ae5389
x64: refine: DomainTime_R done
2017-04-21 13:37:09 +10:00
Joel Beeren
c0296a7bf1
x64: refine: ADT_H done
2017-04-21 13:33:06 +10:00
Joel Beeren
35f147d3fa
x64: refine: Syscall_R done
2017-04-21 10:49:24 +10:00
Joel Beeren
0ce6a7da88
x64: refine: finished sorries in Arch_R
2017-04-20 16:56:51 +10:00
Joel Beeren
d725084ae6
x64: refine: Arch_R done with sorries
2017-04-20 14:38:45 +10:00
Joel Beeren
991fa244e4
x64: refine: Untyped_R done
2017-04-13 16:11:07 +10:00
Joel Beeren
774570483e
x64: refine: fix sameRegionAs_def2
2017-04-13 15:39:45 +10:00
Joel Beeren
1b46cb1379
x64: refine: Detype_R done with some sorries
2017-04-12 18:14:45 +10:00
Joel Beeren
1696932ad2
x64: refine: readd VSpace_R to Retype_R imports
2017-04-12 18:14:32 +10:00
Joel Beeren
2c9aa53c6b
x64: refine: Tcb_R done
2017-04-12 13:45:21 +10:00
Joel Beeren
ae5d190220
x64: refine: CNodeInv_R done
2017-04-12 11:20:48 +10:00
Joel Beeren
ac7232326c
x64: refine: Interrupt_R done
2017-04-11 18:48:40 +10:00
Joel Beeren
0d5a0e42cc
x64: refine: finished Ipc_R
2017-04-11 11:42:07 +10:00
Matthew Brecknell
5788ada1eb
x64 refine: fix Retype_R
...
Also:
- Design spec and haskell invariants fixes.
- Moves corresK rules for mapM and mapM_x into Corres_Method.
2017-04-11 10:19:21 +10:00
Joel Beeren
b331932786
x64: fix Finalise_R
2017-04-10 15:35:18 +10:00
Matthew Brecknell
f86b7b078e
x64 refine: fix InterruptAcc_R
2017-04-07 18:03:03 +10:00
Matthew Brecknell
c2aba18e1d
ainvs x64: replace a conditional simp rule lookup_empty_refl
...
This was causing simplifier loops in some places, and slow-downs in
others.
2017-04-07 18:01:49 +10:00
Joel Beeren
1e5fe128fd
x64: refine: fixed IpcCancel_R
2017-04-07 16:43:50 +10:00
Joel Beeren
72cd56340f
x64: refine: fix Schedule_R
2017-04-07 16:05:02 +10:00
Joel Beeren
a6807f9fe6
x64: refine: adjust setCurrentCR3 et al after rename
2017-04-07 16:05:02 +10:00
Matthew Brecknell
ac0a55496c
x64: Retype_R checking with sorry proofs
2017-04-07 11:38:41 +10:00
Joel Beeren
25ea0a9422
x64: refine: VSpace_R now processes with correct sorries
2017-04-06 14:47:49 +10:00
Joel Beeren
431b134b19
x64: refine: remove valid_pde_mappings' for the moment
2017-04-06 14:47:26 +10:00
Joel Beeren
5c574a6da4
x64: refine: perform vspace functions done with a few sorries
2017-04-06 11:42:58 +10:00
Joel Beeren
83b2f30c53
x64: progress in VSpace_R
2017-04-04 17:33:35 +10:00
Joel Beeren
53e0f5e476
x64: refine: update group lemma
2017-04-03 17:48:15 +10:00
Joel Beeren
0c011df0ef
x64: refine: CSpace_R, TcbAcc_R done
2017-03-31 16:58:51 +11:00
Joel Beeren
1768779b90
x64: refine: update valid_irq_node
2017-03-31 16:58:31 +11:00
Joel Beeren
94ba60b07c
x64: fixed sorries in CSpace1_R
2017-03-31 16:57:17 +11:00
Joel Beeren
7827c2fc73
x64: CSpace1_R now processes with a few minor sorries
2017-03-30 13:13:45 +11:00
Matthew Brecknell
659088cc13
x64: merge master
2017-03-29 20:22:12 +11:00
Joel Beeren
aaa9d19ed5
x64: progress in CSpace1_R.thy
2017-03-29 18:28:14 +11:00
Joel Beeren
c0a998140d
x64: refine: CSpace_I now builds, updated for new specs
2017-03-29 17:23:25 +11:00
Daniel Matichuk
df7693b687
refinement refactor: up to resolve_address_bits
...
Proofs have been refactored to use new corres methods, including
marking rules with the [corres] attribute so they are automatically
applied.
VER-737
2017-03-28 22:37:34 +11:00
Joel Beeren
03e25952e3
x64: progress in CSpace_I
2017-03-23 16:48:39 +11:00
Joel Beeren
e6fcfaf476
x64: refine: ArchAcc_R done
2017-03-23 15:35:02 +11:00
Joel Beeren
62fb7c8ae8
x64: refine: s/find_pd_for_asid/find_vspace_for_asid/g
2017-03-23 15:34:52 +11:00
Joel Beeren
263ebe904a
x64: s/ARM/X64/g proof/refine/X64/*.thy
2017-03-22 18:06:52 +11:00
Joel Beeren
72f6b33659
x64: progress in ArchAcc_R
2017-03-22 18:06:21 +11:00
Joel Beeren
bdbaef2e64
x64: KHeap_R done
2017-03-21 17:06:33 +11:00
Joel Beeren
e4c5679050
x64: get StateRelation, Invariants_H building
...
This will now allow sorrying of proofs in refine to aid parallelism as
we proceed.
Note: the invariants are in no way complete and the aim should be to
update them as required - allowing people to start working on refine
proofs without the high initial cost of fixing/writing all of the
invariants.
2017-03-21 15:09:37 +11:00
Gerwin Klein
4620f7622f
refine ARM: minor cleanup
2017-03-17 15:14:41 +11:00
Joel Beeren
16ec027469
x64: progress in Invariants_H
2017-03-17 10:22:29 +11:00
Miki Tanaka
7ad3ef3b3e
wp: update the proofs for the new wp/wpc/wpsimp
2017-03-16 19:39:11 +11:00
Joel Beeren
a0eb3c6f23
x64: add refine files, copied from ARM
2017-03-14 13:36:27 +11:00
Matthew Brecknell
6ce6c97397
arch_split: DetSchedDomainTime_AI, DetSchedSchedule_AI for ARM
2017-03-09 12:10:44 +11:00
Matthew Brecknell
c0c52700fb
trivial: rename split_if to if_split following Isabelle2016-1
2017-03-09 11:59:33 +11:00
Gerwin Klein
99c7dd8a04
cleanup: remove old wp_cleanup comments
2017-03-03 09:01:28 +11:00
Gerwin Klein
8a7d450f3a
ainvs + refine: remove hv_inv_ex
...
The lemma was convenient, but is subsumed by others. It is not true on
ARM_HYP.
2017-03-02 10:26:10 +11:00
Miki Tanaka
2699254382
Refine: updates for Hypervisor stub
2017-02-22 15:26:49 +11:00
Miki Tanaka
3db5dd778d
Refine fix for prepare_thread_delete
2017-02-20 09:23:55 +11:00
Daniel Matichuk
2ac4fa3509
corres_method: use corres method by default
2017-02-15 15:00:23 +11:00
Gerwin Klein
520921351a
provide TCB argument for sanitiseRegister
...
Other platforms such as arm-hyp will need to look into additional TCB state
such as VCPU in sanitiseRegister. This commit provides the scaffolding for
that.
2017-02-12 12:54:42 +11:00
Rafal Kolanski
7657681fca
move refine/* to refine/ARM/*, parametrise over $L4V_ARCH
2017-01-30 12:22:22 +11:00
Joel Beeren
3dafec7d46
backport changes to ARM proofs from X64 work in progress
...
- replace ARM-specific constants and types with aliases which can be
instantiated separately for each architecture.
- expand lib with lemmas used in X64 proofs.
- simplify some proofs.
Also-by: Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>
2017-01-27 08:31:07 +11: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
Matthew Brecknell
b5158e31bc
Isabelle2016-1: fix proofs involving UNION
...
SUPREMUM changed from a definition to an abbreviation.
A number of proofs that previously used blast, fastforce or auto to
solve goals involving UNION, now either fail or loop. This commit
includes various ad-hoc workarounds.
2017-01-05 14:27:33 +11:00
Matthew Brecknell
08d8a8f2fa
Isabelle2016-1: replace 'unfolded' attr with 'simplified' where the former now loops
2017-01-05 14:27:04 +11:00
Matthew Brecknell
a84ac9c411
Isabelle2016-1: remove references to empty 'assms'
...
Isabelle now only creates a local fact named 'assms' when there is a
non-zero number of structured assumptions.
2017-01-05 14:26:47 +11:00
Matthew Brecknell
aadc5125ba
Isabelle2016-1: follow Isabelle's choice of meta-forall bindings
...
Fix some proofs that were broken because Isabelle chose different
names for meta-forall-bound variables.
2017-01-05 14:25:18 +11:00
Matthew Brecknell
511c6b2d3a
Isabelle2016-1: rename free variables to avoid capture
2017-01-05 14:24:36 +11:00
Matthew Brecknell
41d4aa4f1d
Isabelle2016-1: update references to renamed constants and facts
2017-01-05 14:23:05 +11:00
Alejandro Gomez-Londono
5fcb3c3197
Refine: Updating refine for tcb_arch reserved_irq and arch_fault changes
...
* Changes to StateRelation.thy, most notably the addition of
arch_tcb_relation and arch_fault_map to acount for the new
arch_tcb and arch_fault types
* On ADT_H ArchFault_Map and ArchTcbMap were added to account for
(yet again) the new arch_tcb and arch_fault types
* Also irq_state_map and IRQStateMap were extended to support the new
IRQReserved
* Everything else was mostly unfolding stuff and
(tcb_arch -> tcb_context) rearrangement
tags: [VER-623][SELFOUR-413]
2016-11-25 13:05:55 +11:00
Xin,Gao
d7450607a8
SELFOUR-553: rebase and fix styles and comments
2016-11-21 20:47:15 +11:00
Miki Tanaka
a2d707d17e
SELFOUR-553: update rpidrurw in TCBConfigure for simpler Infoflow proofs.
2016-11-18 16:27:26 +11:00
Miki Tanaka
f8f88c6952
SELFOUR-553: Change Spec according to C code and fix ASpec and AInvs
2016-11-18 16:19:14 +11:00
Joel Beeren
2553371a14
SELFOUR-64: Remove general Recycle operation
...
This removes the RecycleCap CNodeInvocation, whilst
retaining recycle behaviour for Endpoints -- now renamed
CNodeCancelBadgedSends.
2016-11-18 14:11:12 +11:00
Rafal Kolanski
72349f81fd
Revert SELFOUR-242: invert bitfield scheduler and optimise fast path
...
This reverts:
- a67b443ca5
"SELFOUR-242: update goal number based indentation in Fastpath_C"
- f704cf0404
"SELFOUR-242: invert bitfield scheduler and optimise fast path"
Verification confirmed functional correctness and refinement of the
system in this case. However, guarantees on thread scheduling and
fairness are not modeled in the current verification. Once this issue is
addressed, SELFOUR-242 will be re-examined.
2016-11-16 14:02:50 +11:00
Rafal Kolanski
f704cf0404
SELFOUR-242: invert bitfield scheduler and optimise fast path
...
* Reverse the level 2 of the bitmap scheduler to move the highest priority
threads' level 2 entries into the same cache line as the level 1.
* Use the bitfield scheduler to make the fast path a more common occurrence.
* Change possibleSwitchTo to not invoke scheduler when the fast path would not
invoke it either (using implicit assumptions about the current thread being
the highest priority schedulable thread)
2016-11-15 09:20:31 +11:00
Ramana Kumar
c1c636a24f
Simplify obj_bits to not check well_formed_cnode_n
2016-11-11 16:24:37 +11:00
Rafal Kolanski
ff7ca60df7
ADT: add kernel entry/exit constraints on domain time left
...
These changes to the automatons are required by:
SELFOUR-242: invert bitfield scheduler and optimise fast path
Details:
When we enter the kernel, the domain time left (ksDomainTime) is never zero.
If we entered on a timer interrupt, we may decrement it to zero before the
scheduler runs. If we do so, we set the scheduler state to choose_new_thread.
When choosing a new thread, the scheduler switches to a new domain if the
present one is required, and sets the new domain time left from domain_list
(ksDomSchedule).
When entering the kernel on a non-interrupt event, we never touch the domain
time left, which trivially preserves the new constraints.
To prove these, we had to ban a transition from kernel entry to kernel being
preempted when handling an interrupt event in InfoFlow. This is fine, as by
design handling interrupts is not meant to be preempted by interrupts.
2016-11-11 06:01:30 +11:00
Thomas Sewell
f1d546db85
SELFOUR-444: Fix for rebase.
2016-11-02 11:19:10 +11:00
Thomas Sewell
dcd7fd8c17
SELFOUR-444: Refine proof with ghost invariant.
2016-11-02 11:19:09 +11:00
Thomas Sewell
9e7fb1daf0
SELFOUR-444: Structure of crefine.
...
Figured out how to pass the necessary assumptions about the region
being zeroed through the createNewObjects loop and resolve at
invokeUntyped_Retype. Still WIP.
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
7ebefa69ab
SELFOUR-444: Work on untyped zero invariant.
...
The invariant just proves that the ghost field is up to date.
2016-11-02 11:19:09 +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
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
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
ba03caf644
SELFOUR-421: commit before change abstract again
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
765d8aa88e
SELFOUR-421: fixed Refine after merge with master
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
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
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
Miki Tanaka
eb7f7b1564
arch-split: Tcb_AI.thy done
2016-07-07 13:57:16 +10:00
Matthew Brecknell
b9313f6d11
arch_split: invariants: tidied
2016-06-15 10:15:26 +10:00
Japheth Lim
26a7907c95
Merge pull request #43 in SEL4/l4v from ~JALIM/l4v:autocorres-seL4 to master
...
* commit 'ecbb860532b4c576fc4726a805802f16bcf5302c': (29 commits)
autocorres-crefine: specialise corres_no_failI for compatibility with Refine
Add license tags for autocorres-crefine files
crefine: refactor AutoCorresTest a bit
autocorres-crefine: remove local debugging imports
Fix InfoFlowC to accommodate corres_underlying changes.
Fix DRefine to accommodate corres_underlying changes.
autocorres-crefine: experiment with manually translating a function (clzl).
autocorres-crefine: experiment with translating bitfield_gen specs.
autocorres-crefine: start a test case for function calls.
autocorres-crefine: update example proofs to work with no_c_termination, which does not require proving termination for the C spec.
autocorres: add user option "no_c_termination" for previous patch.
Making termination proof optional for AutoCorres.
WIP: autocorres: hacky proof of concept for incremental translation.
autocorres: add some missing WordAbstract rules.
autocorres-crefine: fix some comments in work theory.
autocorres-crefine: prove modifies and (simple) terminates specs.
autocorres-crefine: experiment with generating modifies proofs
autocorres-crefine: run autocorres in kernel_all_substitute locale
autocorres-crefine: update another corres_UL that snuck in before rebasing.
autocorres-crefine: working ccorres for handleYield (modulo some white lies).
...
2016-05-19 01:19:58 +00:00
Japheth Lim
ecbb860532
autocorres-crefine: specialise corres_no_failI for compatibility with Refine
...
The generic rule is now named corres_no_failI_base.
2016-05-18 15:28:43 +10:00
Gerwin Klein
322f1023f5
word_lib: adjust theory dependencies
2016-05-16 21:11:40 +10:00
Gerwin Klein
445efb7c29
lib: closure for Word_Lib and own session
2016-05-16 21:11:40 +10:00
Gerwin Klein
f0faa90f8a
lib/spec/proof/tools: fix word change fallout
2016-05-16 21:11:40 +10:00
Japheth Lim
0f0f731ab7
Merge branch 'master' of ssh://bitbucket.keg.ertos.in.nicta.com.au:7999/SEL4/l4v into autocorres-seL4
...
This is to prepare for merging back into master.
Conflicts:
proof/crefine/Refine_C.thy
2016-05-11 15:08:22 +10:00
Matthew Brecknell
60afdc1288
trivial: fixups including some licence headers
2016-05-09 13:27:15 +10:00
Matthew Brecknell
b16496e7cf
arch_split: InfoFlowC checking
2016-05-06 13:15:37 +10:00
Matthew Brecknell
56b226a608
arch_split: CRefine: use requalify instead of shadow
2016-05-06 08:59:33 +10:00
Daniel Matichuk
9ceed1eb12
arch_split: fix proofs after removing shadow and unqualify commands and adding fix for crunch. Checks up to DPolicy.
2016-05-04 15:14:41 +10:00
Matthew Brecknell
ec399ad38e
arch_split: CRefine checking
2016-05-04 15:07:51 +10:00
Matthew Brecknell
33b4848061
arch_split: Refine: fixup some qualified references
2016-05-02 16:11:13 +10:00
Matthew Brecknell
a2135ca8ce
arch_split: Refine checking, including Orphanage
2016-04-30 16:25:20 +10:00
Matthew Brecknell
e8c5b916ef
arch_split: Refine checking, except Orphanage
2016-04-29 18:15:54 +10:00
Matthew Brecknell
e0ecdf2281
arch_split: Refine checking up to ADT_H
2016-04-29 15:06:32 +10:00