unfold included in |- *.
simpl in |- *.
intros M A x H'; try assumption.
exists (Var (V:=A) (Build_subtype (E:=M) (P:=A) (subtype_elt:=x) H')); split;
[ idtac | try assumption ].
auto with algebra.
simpl in |- *.
auto with algebra.
Qed.

Lemma generated_monoid_prop :
forall (M : MONOID) (A : part_set M) (y : M),
in_part y (generated_monoid A) ->
exists x : FM A, Equal y (FM_lift (inj_part A) x).