(* Lemma typecheck_environ_join_switch2: forall sl Delta rho, typecheck_environ Delta rho -> typecheck_environ (join_tycon_labeled sl Delta) rho.  Lemma typecheck_environ_join_switch1: forall n sl rho Delta, typecheck_environ (update_tycon Delta (seq_of_labeled_statement (select_switch n sl))) rho -> typecheck_environ (join_tycon_labeled sl Delta) rho. *)

(* Specifications: *)
Lemma frame_tc_expr:
forall {CS: compspecs} (Q F: mpred) Delta e rho,
Q |-- tc_expr Delta e rho ->
Q * F |-- tc_expr Delta e rho.
Lemma subp_trans':
forall A (NA: ageable A) (P Q R: pred A) w,
app_pred (P >=> Q) w ->
app_pred (Q >=> R) w ->
app_pred (P >=> R) w.
Lemma prop_subp:
forall A (NA: ageable A) (P Q: Prop) (w: nat),
(P -> Q) -> app_pred (!! P >=> !! Q)  w.
Lemma andp_subp'_right:
forall A (NA: ageable A) (P Q R: pred A) w,
app_pred (P >=> Q) w ->
app_pred (P >=> R) w ->
app_pred (P >=> Q && R) w.
Lemma prop_true_imp:
forall {A} {agA: ageable A} (P: Prop) (Q: pred A),
P ->   (!! P --> Q)%pred = Q.
Lemma prop_imp_right: forall A (agA: ageable A) (P: Prop) (Q R: pred A),
(P -> (Q |-- R)) ->
Q |-- !! P --> R.