(* to make the proof faster, we avoid unfolding of those definitions *)
Definition Jspec'_juicy_mem_equiv_def CS ext_link :=
  ext_spec_stable juicy_mem_equiv (JE_spec _ ( @OK_spec (Concurrent_Espec unit CS ext_link))).Definition Jspec'_hered_def CS ext_link :=
   ext_spec_stable age (JE_spec _ ( @OK_spec (Concurrent_Espec unit CS ext_link))).

(* Specifications: *)
Lemma shape_of_args2 (F V : Type) (args : list val) v (ge : Genv.t F V) : Val.has_type_list args (sig_args (ef_sig CREATE)) -> v <> Vundef -> v = eval_id _args (make_ext_args (filter_genv (symb2genv (genv_symb_injective ge))) (_f :: _args :: nil) args) -> exists arg1, args = arg1 :: v :: nil.
Lemma shape_of_args3 (F V : Type) (args : list val) v (ge : Genv.t F V) : Val.has_type_list args (sig_args (ef_sig CREATE)) -> v <> Vundef -> v = eval_id _f (make_ext_args (filter_genv (symb2genv (genv_symb_injective ge))) (_f :: _args :: nil) args) -> exists arg2, args = v :: arg2 :: nil.
Lemma lock_coherence_age_to ge n m (tp : jstate ge) Phi : lock_coherence (lset tp) Phi m -> lock_coherence (AMap.map (option_map (age_to n)) (lset tp)) (age_to n Phi) m.
Lemma func_at_func_at'' fs loc phi : seplog.func_at fs loc phi = match fs with mk_funspec fsig cc A P Q _ _ => func_at'' fsig cc A P Q loc phi end.
Lemma cond_approx_eq_app n A P1 P2 phi : cond_approx_eq n A P1 P2 -> (level phi < n)%nat -> forall ts y z, app_pred (P1 ts (fmap (rmaps.dependent_type_functor_rec ts A) (approx n) (approx n) y) z) phi -> app_pred (P2 ts (fmap (rmaps.dependent_type_functor_rec ts A) (approx n) (approx n) y) z) phi.