Inductive contextlist' : (exprlist -> expr) -> Prop :=
| contextlist'_call: forall r1 rl0 ty C,
context RV RV C ->
contextlist' (fun rl => C (Ecall r1 (exprlist_app rl0 rl) ty))
| contextlist'_builtin: forall ef tyargs rl0 ty C,
context RV RV C ->
contextlist' (fun rl => C (Ebuiltin ef tyargs (exprlist_app rl0 rl) ty)).

(* Specifications: *)
Lemma exprlist_app_context:
forall rl1 rl2,
contextlist RV (fun x => exprlist_app rl1 (Econs x rl2)).
Lemma contextlist'_head:
forall rl C,
contextlist' C ->
context RV RV (fun x => C (Econs x rl)).
Lemma contextlist'_tail:
forall r1 C,
contextlist' C ->
contextlist' (fun x => C (Econs r1 x)).
Lemma exprlist_app_context:
forall rl1 rl2,
contextlist RV (fun x => exprlist_app rl1 (Econs x rl2)).
Lemma contextlist'_head:
forall rl C,
contextlist' C ->
context RV RV (fun x => C (Econs x rl)).
Lemma contextlist'_tail:
forall r1 C,
contextlist' C ->
contextlist' (fun x => C (Econs r1 x)).