intros.
generalize H0; clear H0; elim P.
intros Pf pc H0.
simpl in |- *.
simpl in H0.
auto.
Qed.

Lemma cast_respects_all_elt_predicates :
forall (A D : Setoid) (B C : part_set A) (v : MAP D B)
(P : Predicate A) (H : forall i : D, in_part (Map_embed v i) C),
(forall i : D, Pred_fun P (Map_embed v i)) ->
forall j : D, Pred_fun P (Map_embed (cast_map_to_subset H) j).