Inductive empty_type : Type := .
Definition withtype_of_NDfunspec fs := match fs with
mk_funspec _ _ (rmaps.ConstType A) _ _ _ _ => A | _ => empty_type end.
Definition withtype_of_funspec fs := match fs with
mk_funspec _ _ A _ _ _ _ => A end.

Lemma NDsubsume_funspec_trans:
forall fsig1 cc1 A1 P1 Q1 fsig2 cc2 A2 P2 Q2 fsig3 cc3 A3 P3 Q3,
NDsubsume_funspec (NDmk_funspec fsig1 cc1 A1 P1 Q1) (NDmk_funspec fsig2 cc2 A2 P2 Q2) ->
NDsubsume_funspec (NDmk_funspec fsig2 cc2 A2 P2 Q2) (NDmk_funspec fsig3 cc3 A3 P3 Q3) ->
NDsubsume_funspec (NDmk_funspec fsig1 cc1 A1 P1 Q1) (NDmk_funspec fsig3 cc3 A3 P3 Q3).