Hint Resolve f_pred_precise f_pred_positive.

Lemma lock_struct : forall p, data_at_ Tsh (Tstruct _lock_t noattr) p |-- data_at_ Tsh tlock p.
Fixpoint join_hists (h1 h2 : list (hist * hist)) :=
match (h1, h2) with
| ((k1, v1) :: rest1, (k2, v2) :: rest2) => (k1 ++ k2, v1 ++ v2) :: join_hists rest1 rest2
| _ => []
end.