Definition Qsh : share := fst (Share.split extern_retainer).Definition Qsh' := Share.lub (snd (Share.split extern_retainer)) Share.Rsh.

(* Specifications: *)
Lemma writable_share_Qsh': writable_share Qsh'.
Lemma readable_share_Qsh': readable_share Qsh'.
Lemma Qsh_Qsh': sepalg.join Qsh Qsh' Ews.
Lemma Qsh_not_readable: ~ readable_share Qsh.
Lemma Qsh_nonempty: Qsh <> Share.bot.
Lemma Qsh_nonidentity: sepalg.nonidentity Qsh.
Lemma sub_Qsh_Ews: sepalg.join_sub Qsh Ews.
Lemma body_surely_malloc: semax_body Vprog Gprog f_surely_malloc surely_malloc_spec.
Lemma body_fifo_empty: semax_body Vprog Gprog f_fifo_empty fifo_empty_spec.
Lemma body_fifo_new: semax_body Vprog Gprog f_fifo_new fifo_new_spec.
Lemma body_fifo_put: semax_body Vprog Gprog f_fifo_put fifo_put_spec.
Lemma body_fifo_get: semax_body Vprog Gprog f_fifo_get fifo_get_spec.
Lemma body_make_elem: semax_body Vprog Gprog f_make_elem make_elem_spec.
Lemma body_main: semax_body Vprog Gprog f_main main_spec.
Lemma prog_correct: semax_prog prog Vprog Gprog.