Definition tc_lvalue_b_norho Delta e :=
denote_tc_assert_b_norho (typecheck_lvalue Delta e).Definition tc_expr_b_norho Delta e :=
denote_tc_assert_b_norho (typecheck_expr Delta e).Definition tc_temp_id_b_norho id t Delta e:=
denote_tc_assert_b_norho (typecheck_temp_id id t Delta e).Definition tc_lvalue_b_norho' Delta e :=
  match e with
  | Ederef e0 t => denote_tc_assert_b_norho_forgive_isptr
                     (typecheck_lvalue Delta e) e0
  | _ => denote_tc_assert_b_norho (typecheck_lvalue Delta e)
  end.

(* Specifications: *)
Lemma tc_lvalue_b_sound : forall e Delta rho, tc_lvalue_b_norho Delta e = true -> tc_lvalue Delta e rho .
Lemma tc_expr_b_sound : forall e Delta rho, tc_expr_b_norho Delta e = true -> tc_expr Delta e rho .
Lemma tc_temp_id_b_sound : forall id t Delta e rho, tc_temp_id_b_norho id t Delta e= true -> tc_temp_id id t Delta e rho .
Lemma tc_lvalue_b'_sound : forall e Delta rho, tc_lvalue_b_norho' Delta e = true -> isptr (expr.eval_lvalue e rho) -> tc_lvalue Delta e rho .