/-- The linear map `M ⊔ ⟨y⟩ ⟶ Q` by `x + r • y ↦ f x + φ r` is an extension of `f`-/
def extensionOfMaxAdjoin (h : Module.Baer R Q) (y : N) : ExtensionOf i f where
  domain := supExtensionOfMaxSingleton i f y -- (extensionOfMax i f).domain ⊔ Submodule.span R {y}
  le := le_trans (extensionOfMax i f).le le_sup_left
  toFun :=
    { toFun := ExtensionOfMaxAdjoin.extensionToFun i f h
      map_add' := fun a b => by
        have eq1 :
          ↑a + ↑b =
            ↑(ExtensionOfMaxAdjoin.fst i a + ExtensionOfMaxAdjoin.fst i b) +
              (ExtensionOfMaxAdjoin.snd i a + ExtensionOfMaxAdjoin.snd i b) • y := by
          rw [ExtensionOfMaxAdjoin.eqn, ExtensionOfMaxAdjoin.eqn, add_smul, Submodule.coe_add]
          ac_rfl
        rw [ExtensionOfMaxAdjoin.extensionToFun_wd (y := y) i f h (a + b) _ _ eq1,
          LinearPMap.map_add, map_add]
        unfold ExtensionOfMaxAdjoin.extensionToFun
        abel
      map_smul' := fun r a => by
        dsimp
        have eq1 :
          r • (a : N) =
            ↑(r • ExtensionOfMaxAdjoin.fst i a) + (r • ExtensionOfMaxAdjoin.snd i a) • y := by
          rw [ExtensionOfMaxAdjoin.eqn, smul_add, smul_eq_mul, mul_smul]
          rfl
        rw [ExtensionOfMaxAdjoin.extensionToFun_wd i f h (r • a :) _ _ eq1, LinearMap.map_smul,
          LinearPMap.map_smul, ← smul_add]
        congr }
  is_extension m := by
    

Proof state:
R : Type u
inst✝⁷ : Ring R
Q : TypeMax
inst✝⁶ : AddCommGroup Q
inst✝⁵ : Module R Q
M N : Type (max u v)
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
i : M →ₗ[R] N
f : M →ₗ[R] Q
inst✝ : Fact (Function.Injective ⇑i)
h : Baer R Q
y : N
m : M
⊢ f m =
    ↑{ domain := supExtensionOfMaxSingleton i f y,
          toFun :=
            {
              toAddHom :=
                { toFun := ExtensionOfMaxAdjoin.extensionToFun i f h,
                  map_add' :=
                    (_ :
                      ∀ (a b : ↥(supExtensionOfMaxSingleton i f y)),
                        ExtensionOfMaxAdjoin.extensionToFun i f h (a + b) =
                          ExtensionOfMaxAdjoin.extensionToFun i f h a + ExtensionOfMaxAdjoin.extensionToFun i f h b) },
              map_smul' :=
                (_ :
                  ∀ (r : R) (a : ↥(supExtensionOfMaxSingleton i f y)),
                    AddHom.toFun
                        { toFun := ExtensionOfMaxAdjoin.extensionToFun i f h,
                          map_add' :=
                            (_ :
                              ∀ (a b : ↥(supExtensionOfMaxSingleton i f y)),
                                ExtensionOfMaxAdjoin.extensionToFun i f h (a + b) =
                                  ExtensionOfMaxAdjoin.extensionToFun i f h a +
                                    ExtensionOfMaxAdjoin.extensionToFun i f h b) }
                        (r • a) =
                      (RingHom.id R) r •
                        AddHom.toFun
                          { toFun := ExtensionOfMaxAdjoin.extensionToFun i f h,
                            map_add' :=
                              (_ :
                                ∀ (a b : ↥(supExtensionOfMaxSingleton i f y)),
                                  ExtensionOfMaxAdjoin.extensionToFun i f h (a + b) =
                                    ExtensionOfMaxAdjoin.extensionToFun i f h a +
                                      ExtensionOfMaxAdjoin.extensionToFun i f h b) }
                          a) } }
      { val := i m,
        property :=
          (_ :
            i m ∈
              { domain := supExtensionOfMaxSingleton i f y,
                  toFun :=
                    {
                      toAddHom :=
                        { toFun := ExtensionOfMaxAdjoin.extensionToFun i f h,
                          map_add' :=
                            (_ :
                              ∀ (a b : ↥(supExtensionOfMaxSingleton i f y)),
                                ExtensionOfMaxAdjoin.extensionToFun i f h (a + b) =
                                  ExtensionOfMaxAdjoin.extensionToFun i f h a +
                                    ExtensionOfMaxAdjoin.extensionToFun i f h b) },
                      map_smul' :=
                        (_ :
                          ∀ (r : R) (a : ↥(supExtensionOfMaxSingleton i f y)),
                            AddHom.toFun
                                { toFun := ExtensionOfMaxAdjoin.extensionToFun i f h,
                                  map_add' :=
                                    (_ :
                                      ∀ (a b : ↥(supExtensionOfMaxSingleton i f y)),
                                        ExtensionOfMaxAdjoin.extensionToFun i f h (a + b) =
                                          ExtensionOfMaxAdjoin.extensionToFun i f h a +
                                            ExtensionOfMaxAdjoin.extensionToFun i f h b) }
                                (r • a) =
                              (RingHom.id R) r •
                                AddHom.toFun
                                  { toFun := ExtensionOfMaxAdjoin.extensionToFun i f h,
                                    map_add' :=
                                      (_ :
                                        ∀ (a b : ↥(supExtensionOfMaxSingleton i f y)),
                                          ExtensionOfMaxAdjoin.extensionToFun i f h (a + b) =
                                            ExtensionOfMaxAdjoin.extensionToFun i f h a +
                                              ExtensionOfMaxAdjoin.extensionToFun i f h b) }
                                  a) } }.domain) }

Next tactic:
dsimp