(* Hint Rewrite move_prop_from_SEP move_local_from_SEP : norm. *)

(* Specifications: *)
Lemma lower_PROP_LOCAL_SEP:
forall P Q R rho, PROPx P (LOCALx Q (SEPx R)) rho =
(!!fold_right and True P && (local (fold_right (`and) (`True) (map locald_denote Q)) && `(fold_right sepcon emp R))) rho.
Lemma semax_extract_later_prop1:
forall {cs: compspecs} {Espec: OracleKind} Delta (PP: Prop) P c Q,
(PP -> semax Delta (|> P) c Q) ->
semax Delta (|> (!!PP && P)) c Q.
Lemma assert_later_PROP:
forall P1 Espec {cs: compspecs} Delta PQR c Post,
ENTAIL Delta, PQR|-- !! P1 ->
(P1 -> @semax cs Espec Delta (|> PQR) c Post) ->
@semax cs Espec Delta (|> PQR) c Post.
Lemma assert_PROP' {A}{NA: NatDed A}:
forall P Pre (Post: A),
Pre |-- !! P ->
(P -> Pre |-- Post) ->
Pre |-- Post.