Section Inverse_image1_1.
Variable f : MAP E F.
Definition invimage : part_set F -> part_set E.
intros A.
apply (Build_Predicate (Pred_fun:=fun x : E => in_part (f x) A)).
red in |- *.
intros x y H' H'0; try assumption.
apply in_part_comp_l with (Ap f x); auto with algebra.
Defined.
End Inverse_image1_1.
Variable f : MAP E F.
simpl in |- *; auto with algebra.
Qed.
simpl in |- *; auto with algebra.
Qed.
Hint Resolve in_invimage: algebra.
unfold included in |- *.
simpl in |- *; auto with algebra.
Qed.
Hint Resolve invimage_included: algebra.
intros A B H'; try assumption.
apply included_antisym; auto with algebra.
Qed.
Hint Resolve invimage_comp: algebra.
unfold included in |- *.
simpl in |- *; auto with algebra.
intros A x H'; try assumption.
elim H'; intros x0 E0; elim E0; intros H'0 H'1; try exact H'1; clear E0 H'.
apply in_part_comp_l with (Ap f x0); auto with algebra.
Qed.
unfold included in |- *.
simpl in |- *; auto with algebra.
intros A x H'; exists x; split; [ try assumption | idtac ]; auto with algebra.
Qed.
Hint Resolve invimage_image image_invimage: algebra.
simpl in |- *.
unfold eq_part in |- *.
intros A x; split; [ idtac | intros H'; try assumption ].
simpl in |- *.
intros H'; try assumption.
elim H'; intros x0 E0; elim E0; intros H'0 H'1; try exact H'0; clear E0 H'.
apply in_part_comp_l with (Ap f x0); auto with algebra.
auto with algebra.
Qed.

Lemma image_invimage_image :
forall A : part_set E, Equal (image f (invimage f (image f A))) (image f A).