(* Lemma SEPx_super_non_expansive: forall A (R: list (forall ts, functors.MixVariantFunctor._functor (rmaps.dependent_type_functor_rec ts (rmaps.ArrowType A rmaps.Mpred)) mpred)), Forall (fun R0: (forall ts, functors.MixVariantFunctor._functor (rmaps.dependent_type_functor_rec ts (rmaps.ArrowType A rmaps.Mpred)) mpred) => @super_non_expansive A (fun ts (a: functors.MixVariantFunctor._functor (rmaps.dependent_type_functor_rec ts A) mpred) (_: environ) => R0 ts a)) R -> @super_non_expansive A (fun ts (a: functors.MixVariantFunctor._functor (rmaps.dependent_type_functor_rec ts A) mpred) (rho: environ) => SEPx (map (fun R0: forall ts, functors.MixVariantFunctor._functor (rmaps.dependent_type_functor_rec ts (rmaps.ArrowType A rmaps.Mpred)) mpred => R0 ts a) R) rho).*)

(* Specifications: *)
Lemma LOCALx_super_non_expansive: forall A Q R,
super_non_expansive R ->
Forall (fun Q0 => @super_non_expansive A (fun ts a rho => prop (locald_denote (Q0 ts a) rho))) Q ->
@super_non_expansive A (fun ts a rho => LOCALx (map (fun Q0 => Q0 ts a) Q) (R ts a) rho).
Lemma PROPx_super_non_expansive: forall A P Q,
super_non_expansive Q ->
Forall (fun P0 => @super_non_expansive A (fun ts a (rho: environ) => prop (P0 ts a))) P ->
@super_non_expansive A (fun ts a rho => PROPx (map (fun P0 => P0 ts a) P) (Q ts a) rho).
Lemma PROP_LOCAL_SEP_super_non_expansive: forall A P Q R,
Forall (fun P0 => @super_non_expansive A (fun ts a _ => prop (P0 ts a))) P ->
Forall (fun Q0 => @super_non_expansive A (fun ts a rho => prop (locald_denote (Q0 ts a) rho))) Q ->
Forall (fun R0 => @super_non_expansive A (fun ts a _ => R0 ts a)) R ->
@super_non_expansive A (fun ts a rho =>
PROPx (map (fun P0 => P0 ts a) P)
(LOCALx (map (fun Q0 => Q0 ts a) Q)
(SEPx (map (fun R0 => R0 ts a) R))) rho).
Lemma SEPx_nonexpansive: forall R rho,
Forall (fun R0 => predicates_rec.nonexpansive R0) R ->
nonexpansive (fun S => SEPx (map (fun R0 => R0 S) R) rho).
Lemma LOCALx_nonexpansive: forall Q R rho,
nonexpansive (fun S => R S rho) ->
nonexpansive (fun S => LOCALx Q (R S) rho).
Lemma PROPx_nonexpansive: forall P Q rho,
Forall (fun P0 => nonexpansive (fun S => prop (P0 S))) P ->
nonexpansive (fun S => Q S rho) ->
nonexpansive (fun S => PROPx (map (fun P0 => P0 S) P) (Q S) rho).
Lemma PROP_LOCAL_SEP_nonexpansive: forall P Q R rho,
Forall (fun P0 => nonexpansive (fun S => prop (P0 S))) P ->
Forall (fun R0 => nonexpansive R0) R ->
nonexpansive (fun S => PROPx (map (fun P0 => P0 S) P) (LOCALx Q (SEPx (map (fun R0 => R0 S) R))) rho).