Definition cstring {CS : compspecs} sh (s: list byte) p :=
!!(~In Byte.zero s) &&
data_at sh (tarray tschar (Zlength s + 1)) (map Vbyte (s ++ [Byte.zero])) p.

Lemma cstring_local_facts: forall {CS : compspecs} sh s p,
cstring sh s p |-- !! (isptr p /\ Zlength s + 1 < Ptrofs.modulus).