(* Now, we can specialize these to the history PCM. *)
Inductive hist_el := Load (v : val) | Store (v : val) | CAS (r : val) (c : val) (w : val).(* Now, we can specialize these to the history PCM. *)
Inductive hist_el := Load (v : val) | Store (v : val) | CAS (r : val) (c : val) (w : val).(* Now, we can specialize these to the history PCM. *)
Inductive hist_el := Load (v : val) | Store (v : val) | CAS (r : val) (c : val) (w : val).(* Now, we can specialize these to the history PCM. *)
Inductive hist_el := Load (v : val) | Store (v : val) | CAS (r : val) (c : val) (w : val).Instance EqDec_hist_el : EqDec hist_el.Notation hist := (list (nat * hist_el)).

(* Specifications: *)
Lemma apply_hist_app : forall h1 i h2, apply_hist i (h1 ++ h2) = match apply_hist i h1 with Some v => apply_hist v h2 | None => None end.
Lemma apply_hist_app : forall h1 i h2, apply_hist i (h1 ++ h2) = match apply_hist i h1 with Some v => apply_hist v h2 | None => None end.