simpl in |- *; auto with algebra.
intros M A y H'; try assumption.
elim H'; intros x E; elim E; intros H'0 H'1; try exact H'1; clear E H'.
exists x; try assumption.
Qed.

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