Section Maps1_3.
Comments "We define the composition of maps:".
Variable E F G : Setoid.
Variable g : MAP F G.
Variable f : MAP E F.
Comments
"First, we define the composition of the functions associated to two maps:"
f "and" g.
Definition comp_map_fun (x : E) := g (f x).
Comments "Then, we proof that the result is compatible with equality:".
red in |- *.
unfold comp_map_fun in |- *.
auto with algebra.
Qed.
Comments "With this result, we can build the composed map:".
Definition comp_map_map : MAP E G := Build_Map comp_map_fun_compatible.
End Maps1_3.
Comments "We note" (comp_map_map g f) "the composition of" g "and" f.
Comments "Composition is compatible with equality of maps:".
unfold comp_map_map in |- *; simpl in |- *.
unfold Map_eq in |- *; simpl in |- *; auto with algebra.
unfold comp_map_fun in |- *.
auto with algebra.
Qed.
Hint Resolve comp_map_comp: algebra.
Comments "Composition is associative:".

Lemma comp_map_assoc :
forall (A B C D : Setoid) (f : MAP A B) (g : MAP B C) (h : MAP C D),
Equal (comp_map_map h (comp_map_map g f))
(comp_map_map (comp_map_map h g) f).