import algebra.group data.set namespace group_hom open algebra -- ⁻¹ in eq.ops conflicts with group ⁻¹ -- open eq.ops open set open function local attribute set [reducible] structure is_subgroup [class] {A : Type} (H : set A) : Type section variables {A B : Type} variable [s1 : group A] variable [s2 : group B] include s1 include s2 definition is_hom (f : A → B) := ∀ a b, f (a*b) = (f a)*(f b) variable f : A → B variable Hom : is_hom f definition ker : set A := λ a, (f a) = 1 lemma ker.has_one (Hom : is_hom f) : 1 ∈ ker f := sorry theorem hom_map_one : f 1 = 1 := sorry theorem hom_map_mul_closed (Hom : is_hom f) (H : set A) : unit := sorry variable {H : set A} variable [is_subgH : is_subgroup H] include is_subgH end end group_hom