Program Definition rel_expr {CS: compspecs} (e: expr) (v: val) (rho: environ) : pred rmap :=
    fun phi => rel_expr' rho phi e v.Program Definition rel_lvalue {CS: compspecs}  (e: expr) (v: val) (rho: environ) : pred rmap :=
    fun phi => rel_lvalue' rho phi e v.Definition rel_lvalue'_expr'_sch CS rho phi P P0 :=
  fun H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17 =>
  conj (rel_expr'_sch CS rho phi P P0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17)
       (rel_lvalue'_sch CS rho phi P P0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13 H14 H15 H16 H17).

Lemma rel_lvalue_expr_relate: forall {CS: compspecs} ge te ve rho jm, genv_cenv ge = cenv_cs -> rho = construct_rho (filter_genv ge) ve te -> (forall e v, rel_expr e v rho (m_phi jm) -> Clight.eval_expr ge ve te (m_dry jm) e v) /\ (forall e v, rel_lvalue e v rho (m_phi jm) -> match v with | Vptr b z => Clight.eval_lvalue ge ve te (m_dry jm) e b z | _ => False end).