(* Where should this sit? *)
Section Timeless.
Definition except0 P := P || |>FF.
Definition timeless P := |>P |-- except0 P.
Definition timeless' (P : mpred) := forall (a a' : rmap),
predicates_hered.app_pred P a' -> age a a' ->
predicates_hered.app_pred P a.

Lemma struct_pred_timeless : forall {CS : compspecs} sh m f t off
(IH : Forall (fun it : ident * type =>
forall (v : reptype (t it)) (p : val),
timeless (data_at_rec sh (t it) v p)) m) v p,
timeless (struct_pred m (fun (it : ident * type) v =>
withspacer sh (f it + sizeof (t it)) (off it)
(at_offset (data_at_rec sh (t it) v) (f it))) v p).