Corollary add_items_trace_mono : forall h la h', add_items_trace h la h' ->
  hists_mono h h'.

(* Specifications: *)
Lemma apply_no_write : forall i h l v (Hl : hist_list' h l) (Hv : apply_hist i l = Some v) (Hh : Forall (fun p => ~writes (snd p) v) h), v = i /\ Forall (fun e => forall w, ~writes e w) l.
Lemma one_CAS_succeeds : forall h v a t1 t2 b1 b2 (Hl : full_hist' h v) (Hin1 : In (t1, CAS a a b1) h) (Hin2 : In (t2, CAS a a b2) h) (Ha : Forall (fun p => ~writes (snd p) a) h), t1 = t2 /\ b1 = b2.
Lemma add_items_Znth : forall h la h' j, add_items_trace h la h' -> 0 <= j < Zlength la -> exists h1 h2, let '(k, v, i, s) := Znth j la (0, 0, 0, false) in add_item_trace h1 k v i s h2 /\ hists_mono h h1 /\ hists_mono h2 h'.
Lemma body_main : semax_body Vprog Gprog f_main main_spec.
Lemma make_map_eq : forall h h', Forall2 (fun a b => value_of_hist (fst a) = value_of_hist (fst b) /\ value_of_hist (snd a) = value_of_hist (snd b)) h h' -> make_map h = make_map h'.
Lemma make_map_no_key : forall h k (Hout : Forall (fun x => make_int (value_of_hist (fst x)) <> k) h), Forall (fun x => fst x <> k) (make_map h).
Lemma get_item_trace_map : forall h k v i h' (Hwf : wf_hists h) (Hlenh : Zlength h = size) (Htrace : get_item_trace h k v i h') (Hk : k <> 0) (Hrepk : repable_signed k) (Hrepv : repable_signed v), wf_hists h' /\ match get (make_map h') k with | Some v' => v' = v /\ map_incl (upd_Znth i (make_map h) (k, v)) (make_map h') | None => v = 0 /\ map_incl (make_map h) (make_map h') end.