aboutsummaryrefslogtreecommitdiffstats
path: root/backend/CSE3analysisproof.v
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-12 12:41:28 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2020-03-12 12:41:28 +0100
commit935dcae6384e718d26d29377e4c50e53151809e4 (patch)
tree7f01f1f8f03101c8e99f0fc68becd183d7d54378 /backend/CSE3analysisproof.v
parenta3be6358778bb02b03b62486a60b9fd9ef1f1c04 (diff)
downloadcompcert-kvx-935dcae6384e718d26d29377e4c50e53151809e4.tar.gz
compcert-kvx-935dcae6384e718d26d29377e4c50e53151809e4.zip
store sound
Diffstat (limited to 'backend/CSE3analysisproof.v')
-rw-r--r--backend/CSE3analysisproof.v20
1 files changed, 19 insertions, 1 deletions
diff --git a/backend/CSE3analysisproof.v b/backend/CSE3analysisproof.v
index f5dd7bf9..05c7a8f3 100644
--- a/backend/CSE3analysisproof.v
+++ b/backend/CSE3analysisproof.v
@@ -689,5 +689,23 @@ Section SOUNDNESS.
eauto.
Qed.
- Hint Resolve store2_sound : cse3.
+ Hint Resolve store1_sound : cse3.
+
+ Theorem store_sound:
+ forall no chunk addr args a src rel tenv rs m m',
+ sem_rel rel rs m ->
+ wt_regset tenv rs ->
+ eval_addressing genv sp addr (rs ## args) = Some a ->
+ Mem.storev chunk m a (rs#src) = Some m' ->
+ sem_rel (store (ctx:=ctx) no chunk addr args src (tenv src) rel) rs m'.
+ Proof.
+ unfold store.
+ intros until m'.
+ intros REL WT ADDR STORE.
+ rewrite <- forward_move_l_sound with (rel:=rel) (m:=m) in ADDR by trivial.
+ rewrite <- forward_move_sound with (rel:=rel) (m:=m) in STORE by trivial.
+ apply store1_sound with (a := a) (m := m); trivial.
+ rewrite forward_move_sound with (rel:=rel) (m:=m) in STORE by trivial.
+ assumption.
+ Qed.
End SOUNDNESS.