Scheme expr_ind2 := Induction for Csyntax.expr Sort Prop
  with exprlist_ind2 := Induction for Csyntax.exprlist Sort Prop.Combined Scheme expr_exprlist_ind from expr_ind2, exprlist_ind2.

(* Specifications: *)
Lemma transl_meets_spec: (forall r dst g sl a g' I, transl_expr dst r g = Res (sl, a) g' I -> dest_below dst g -> exists tmps, (forall le, tr_expr le dst r sl a (add_dest dst tmps)) /\ contained tmps g g') /\ (forall rl g sl al g' I, transl_exprlist rl g = Res (sl, al) g' I -> exists tmps, (forall le, tr_exprlist le rl sl al tmps) /\ contained tmps g g').
Lemma transl_expr_meets_spec: forall r dst g sl a g' I, transl_expr dst r g = Res (sl, a) g' I -> dest_below dst g -> exists tmps, forall ge e le m, tr_top ge e le m dst r sl a tmps.
Lemma transl_expression_meets_spec: forall r g s a g' I, transl_expression r g = Res (s, a) g' I -> tr_expression r s a.
Lemma transl_expr_stmt_meets_spec: forall r g s g' I, transl_expr_stmt r g = Res s g' I -> tr_expr_stmt r s.
Lemma transl_if_meets_spec: forall r s1 s2 g s g' I, transl_if r s1 s2 g = Res s g' I -> tr_if r s1 s2 s.
Lemma transl_stmt_meets_spec: forall s g ts g' I, transl_stmt s g = Res ts g' I -> tr_stmt s ts with transl_lblstmt_meets_spec: forall s g ts g' I, transl_lblstmt s g = Res ts g' I -> tr_lblstmts s ts.