proposition: Lemma list_append_null: forall (ls: listspec list_structid list_link list_token) (dsh psh: share) (hd mid: val) ct1 ct2, lseg ls dsh psh ct1 hd mid * lseg ls dsh psh ct2 mid nullval |-- lseg ls dsh psh (ct1++ct2) hd nullval.
proof: Proof. intros. rewrite <- sepcon_emp. eapply derives_trans; [ | apply (list_append hd mid nullval ct1 ct2 (fun _ => emp))]. normalize. intros. unfold lseg_cell. simpl. saturate_local. destruct H. contradiction H. Qed.
imports: VST.floyd.base2 VST.floyd.client_lemmas VST.floyd.closed_lemmas VST.floyd.nested_pred_lemmas VST.floyd.nested_field_lemmas VST.floyd.efield_lemmas VST.floyd.mapsto_memory_block VST.floyd.reptype_lemmas VST.floyd.data_at_rec_lemmas VST.floyd.field_at VST.floyd.nested_loadstore VST.floyd.entailer