Axiom ghost_precise : forall sh {t} p, precise (EX f : share * hist (reptype t), ghost sh f p).

Lemma tqueue_inj : forall r (buf1 buf2 : list val) len1 len2 head1 head2 tail1 tail2 (addc1 addc2 remc1 remc2 : val) p r1 r2 (Hp1 : predicates_hered.app_pred(A := compcert_rmaps.R.rmap) (data_at Tsh tqueue (buf1, (vint len1, (vint head1, (vint tail1, (addc1, remc1))))) p) r1) (Hp2 : predicates_hered.app_pred(A := compcert_rmaps.R.rmap) (data_at Tsh tqueue (buf2, (vint len2, (vint head2, (vint tail2, (addc2, remc2))))) p) r2) (Hr1 : sepalg.join_sub r1 r) (Hr2 : sepalg.join_sub r2 r) (Hbuf1 : Forall (fun v => v <> Vundef) buf1) (Hl1 : Zlength buf1 = MAX) (Hbuf2 : Forall (fun v => v <> Vundef) buf2) (Hl2 : Zlength buf2 = MAX) (Haddc1 : addc1 <> Vundef) (Haddc2 : addc2 <> Vundef) (Hremc1 : remc1 <> Vundef) (Hremc2 : remc2 <> Vundef), r1 = r2 /\ buf1 = buf2 /\ Int.repr len1 = Int.repr len2 /\ Int.repr head1 = Int.repr head2 /\ Int.repr tail1 = Int.repr tail2 /\ addc1 = addc2 /\ remc1 = remc2.