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.