intros.
simpl in H; simpl in |- *.
red in H; red in |- *.
intro a; split; intros.
simpl in |- *; simpl in H0.
destruct H0.
elim (H (C x)).
intros.
assert (in_part (C x) C).
simpl in |- *.
auto with algebra.
generalize (H1 H3); clear H1 H2 H3; intro.
red in H1.
exists (Build_subtype H1).
simpl in |- *.
auto.
simpl in |- *; simpl in H0.
destruct H0.
elim (H (C' x)).
intros.
assert (in_part (C' x) C').
simpl in |- *.
auto with algebra.
generalize (H2 H3); clear H1 H2 H3; intro.
red in H1.
exists (Build_subtype H1).
simpl in |- *.
auto.
Qed.
Hint Resolve inject_subsets_comp: algebra.

Lemma inject_subsets_of_part_set_included :
forall (A : Setoid) (B : part_set A) (C : part_set B),
included (inject_subsets C) B.