{N : Type u_1} →
  {E : Type u_2} →
    {G : Type u_3} →
      [inst : AddGroup N] →
        [inst_1 : AddGroup E] →
          [inst_2 : AddGroup G] →
            {motive : AddGroupExtension N E G → Sort u} →
              ((inl : N →+ E) →
                  (rightHom : E →+ G) →
                    (inl_injective : Function.Injective ⇑inl) →
                      (range_inl_eq_ker_rightHom : inl.range = rightHom.ker) →
                        (rightHom_surjective : Function.Surjective ⇑rightHom) →
                          motive
                            { inl := inl, rightHom := rightHom, inl_injective := inl_injective,
                              range_inl_eq_ker_rightHom := range_inl_eq_ker_rightHom,
                              rightHom_surjective := rightHom_surjective }) →
                (t : AddGroupExtension N E G) → motive t