(* @Qinxiang: it would be great to complete the annotation *)

Definition spawn_arg_type := rmaps.ProdType (rmaps.ProdType (rmaps.ProdType (rmaps.ConstType (val * val))
  (rmaps.ArrowType (rmaps.DependentType 0) (rmaps.ConstType globals))) (rmaps.DependentType 0))
  (rmaps.ArrowType (rmaps.DependentType 0) (rmaps.ArrowType (rmaps.ConstType val) rmaps.Mpred)).

(* Specifications: *)
Lemma approx_idem : forall n P, compcert_rmaps.R.approx n (compcert_rmaps.R.approx n P) = compcert_rmaps.R.approx n P.
Lemma spawn_pre_nonexpansive: @super_non_expansive spawn_arg_type spawn_pre.
Lemma spawn_post_nonexpansive: @super_non_expansive spawn_arg_type spawn_post.
Lemma approx_idem : forall n P, compcert_rmaps.R.approx n (compcert_rmaps.R.approx n P) = compcert_rmaps.R.approx n P.
Lemma spawn_pre_nonexpansive: @super_non_expansive spawn_arg_type spawn_pre.
Lemma spawn_post_nonexpansive: @super_non_expansive spawn_arg_type spawn_post.