Require Import Vbase Varith.
Require Import Relations Classical ClassicalDescription.
Require Import List Permutation Vlistbase Vlist extralib.
Require Import c11 exps fslassn fslassnlemmas fslmodel.
Require Import fslhmap fslhmapna fslhmapa fsltriple fsltriple2.
Require Import ihc initread.
Set Implicit Arguments.

Soundness of atomic load rules

A helper lemma

Definition preciseish P :=
  ∀ hP (SEM: assn_sem P hP) hP´ (SEM´: assn_sem P hP´)
         hF (DEF: hplus hP hF ≠ Hundef) hF´ (EQ: hplus hP hF = hplus hP´ hF´),
  hP = hP´ ∧ Hsim hF hF´.

Lemma precise_nabla P: precise P → preciseish (Anabla P).

Acquire load


Theorem rule_load_acq typ E QQ (PREC: ∀ v, precise (QQ v)) (NORM: ∀ v, normalizable (QQ v))
   (TYP : acquire_typ typ) :
  triple (Astar (Aacq E QQ) (Arainit E))
         (Eload typ E)
         (fun v ⇒ Astar (Aacq E (hupd QQ v Aemp)) (Astar (Arainit E) (QQ v))).

Relaxed load


Theorem rule_load_rlx E QQ (PREC: ∀ v, precise (QQ v)) (NORM: ∀ v, normalizable (QQ v)) :
  triple (Astar (Aacq E QQ) (Arainit E))
         (Eload ATrlx E)
         (fun v ⇒ Astar (Aacq E (hupd QQ v Aemp)) (Astar (Arainit E) (Anabla (QQ v)))).


This page has been generated by coqdoc