(* We give the 'lightest' possible specification to define morphisms: local   *)
(* congruence, in D, with the group law of aT. We then provide the properties *)
(* for the 'textbook' notion of morphism, when the required structures are    *)
(* available (e.g. its domain is a group).                                    *)

Definition morphism_for D of phant rT := morphism D.Notation "G \homg H" := (homg G H)
  (at level 70, no associativity) : group_scope.Notation "[ 'morphism' 'of' f ]" := (clone_morphism (@Morphism _ _ _ f))
   (at level 0, format "[ 'morphism'  'of'  f ]") : form_scope.Notation morPhantom := (phantom (aT -> rT)).Definition MorPhantom := Phantom (aT -> rT).Definition dom of morPhantom f := D.Definition ker mph := morphpre mph 1.Implicit Types A B : {set aT}.Implicit Type G : {group gT}.Implicit Type R : {set rT}.Implicit Types M : {group rT}.

(* Specifications: *)
Lemma morph1 : f 1 = 1.