∀ {R : Type u} {M : Type v} {N : Type u_2} [inst : Semiring R] [inst_1 : AddCommMonoid M] [inst_2 : AddCommMonoid N]
  [inst_3 : Module R M] [inst_4 : Module R N] (f : M →ₗ[R] N),
  Function.Surjective ⇑f → ∀ (S : Submodule R N) [hI : (Submodule.comap f S).IsPrincipal], S.IsPrincipal