Section Single1.
Variable E : Setoid.
Definition single : E -> part_set E.
intros x.
apply (Build_Predicate (Pred_fun:=fun y : E => Equal y x)).
red in |- *.
intros x0 y H' H'0; try assumption.
apply Trans with x0; auto with algebra.
Defined.
simpl in |- *; auto with algebra.
Qed.
Hint Resolve in_single: algebra.
unfold single in |- *; simpl in |- *.
unfold eq_part in |- *; simpl in |- *.
intros x y H' x0; split; [ intros H'0; try assumption | idtac ].
apply Trans with x; auto with algebra.
intros H'0; try assumption.
apply Trans with y; auto with algebra.
Qed.
Hint Resolve single_law: algebra.
simpl in |- *; auto with algebra.
Qed.
Hint Immediate single_prop: algebra.
simpl in |- *; auto with algebra.
Qed.
Hint Immediate single_prop_rev: algebra.

Lemma single_simpl : forall x y : E, Equal (single x) (single y) -> Equal x y.