-- Module: Mathlib.RingTheory.AdicCompletion.AsTensorProduct
Goal:
R : Type u_1
inst : CommRing R
I : Ideal R
M : Type u_2
inst_1 : AddCommGroup M
inst_2 : Module R M
N : Type u_3
inst_3 : AddCommGroup N
inst_4 : Module R N
x y : AdicCompletion I R
h :
  ∀ (x_1 : M),
    Eq (α := AdicCompletion I M)
      (((↑R :
                  {S : Type u_1} →
                    {M M₂ : Type u_2} →
                      [inst : Semiring R] →
                        [inst_5 : Semiring S] →
                          [inst_6 : AddCommMonoid M] →
                            [inst_7 : AddCommMonoid M₂] →
                              [inst_8 : Module R M] →
                                [inst_9 : Module R M₂] →
                                  [inst_10 : Module S M] →
                                    [inst_11 : Module S M₂] →
                                      [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
                (S := AdicCompletion I R)
                ((LinearMap.lsmul (AdicCompletion I R) (AdicCompletion I M) :
                    (a : AdicCompletion I R) → AdicCompletion I M →ₗ[AdicCompletion I R] AdicCompletion I M)
                  (x + y)) ∘ₗ
              of I M :
            (a : M) → AdicCompletion I M)
          x_1 :
        AdicCompletion I M)
      ((HAdd.hAdd (α := M →ₗ[R] AdicCompletion I M)
              ((↑R :
                    {S : Type u_1} →
                      {M M₂ : Type u_2} →
                        [inst : Semiring R] →
                          [inst_5 : Semiring S] →
                            [inst_6 : AddCommMonoid M] →
                              [inst_7 : AddCommMonoid M₂] →
                                [inst_8 : Module R M] →
                                  [inst_9 : Module R M₂] →
                                    [inst_10 : Module S M] →
                                      [inst_11 : Module S M₂] →
                                        [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
                  (S := AdicCompletion I R)
                  ((LinearMap.lsmul (AdicCompletion I R) (AdicCompletion I M) :
                      (a : AdicCompletion I R) → AdicCompletion I M →ₗ[AdicCompletion I R] AdicCompletion I M)
                    x) ∘ₗ
                of I M)
              ((↑R :
                    {S : Type u_1} →
                      {M M₂ : Type u_2} →
                        [inst : Semiring R] →
                          [inst_5 : Semiring S] →
                            [inst_6 : AddCommMonoid M] →
                              [inst_7 : AddCommMonoid M₂] →
                                [inst_8 : Module R M] →
                                  [inst_9 : Module R M₂] →
                                    [inst_10 : Module S M] →
                                      [inst_11 : Module S M₂] →
                                        [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
                  (S := AdicCompletion I R)
                  ((LinearMap.lsmul (AdicCompletion I R) (AdicCompletion I M) :
                      (a : AdicCompletion I R) → AdicCompletion I M →ₗ[AdicCompletion I R] AdicCompletion I M)
                    y) ∘ₗ
                of I M) :
            (a : M) → AdicCompletion I M)
          x_1 :
        AdicCompletion I M)
⊢ (↑R :
          {S : Type u_1} →
            {M M₂ : Type u_2} →
              [inst : Semiring R] →
                [inst_5 : Semiring S] →
                  [inst_6 : AddCommMonoid M] →
                    [inst_7 : AddCommMonoid M₂] →
                      [inst_8 : Module R M] →
                        [inst_9 : Module R M₂] →
                          [inst_10 : Module S M] →
                            [inst_11 : Module S M₂] →
                              [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
        (S := AdicCompletion I R)
        ((LinearMap.lsmul (AdicCompletion I R) (AdicCompletion I M) :
            (a : AdicCompletion I R) → AdicCompletion I M →ₗ[AdicCompletion I R] AdicCompletion I M)
          (x + y)) ∘ₗ
      of I M =
    HAdd.hAdd (α := M →ₗ[R] AdicCompletion I M)
      ((↑R :
            {S : Type u_1} →
              {M M₂ : Type u_2} →
                [inst : Semiring R] →
                  [inst_5 : Semiring S] →
                    [inst_6 : AddCommMonoid M] →
                      [inst_7 : AddCommMonoid M₂] →
                        [inst_8 : Module R M] →
                          [inst_9 : Module R M₂] →
                            [inst_10 : Module S M] →
                              [inst_11 : Module S M₂] →
                                [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
          (S := AdicCompletion I R)
          ((LinearMap.lsmul (AdicCompletion I R) (AdicCompletion I M) :
              (a : AdicCompletion I R) → AdicCompletion I M →ₗ[AdicCompletion I R] AdicCompletion I M)
            x) ∘ₗ
        of I M)
      ((↑R :
            {S : Type u_1} →
              {M M₂ : Type u_2} →
                [inst : Semiring R] →
                  [inst_5 : Semiring S] →
                    [inst_6 : AddCommMonoid M] →
                      [inst_7 : AddCommMonoid M₂] →
                        [inst_8 : Module R M] →
                          [inst_9 : Module R M₂] →
                            [inst_10 : Module S M] →
                              [inst_11 : Module S M₂] →
                                [LinearMap.CompatibleSMul M M₂ R S] → (fₗ : M →ₗ[S] M₂) → M →ₗ[R] M₂)
          (S := AdicCompletion I R)
          ((LinearMap.lsmul (AdicCompletion I R) (AdicCompletion I M) :
              (a : AdicCompletion I R) → AdicCompletion I M →ₗ[AdicCompletion I R] AdicCompletion I M)
            y) ∘ₗ
        of I M)

Tactic:
apply LinearMap.ext

Premises used: LinearMap.ext