/-
Copyright (c) 2020 Kenny Lau. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Kenny Lau, Eric Wieser

! This file was ported from Lean 3 source module algebra.triv_sq_zero_ext
! leanprover-community/mathlib commit 932872382355f00112641d305ba0619305dc8642
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathbin.Algebra.Algebra.Basic
import Mathbin.LinearAlgebra.Prod

/-!
# Trivial Square-Zero Extension

> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
> Any changes to this file require a corresponding PR to mathlib4.

Given a ring `R` together with an `(R, R)`-bimodule `M`, the trivial square-zero extension of `M`
over `R` is defined to be the `R`-algebra `R ⊕ M` with multiplication given by
`(r₁ + m₁) * (r₂ + m₂) = r₁ r₂ + r₁ m₂ + m₁ r₂`.

It is a square-zero extension because `M^2 = 0`.

Note that expressing this requires bimodules; we write these in general for a
not-necessarily-commutative `R` as:
```lean
variables {R M : Type*} [semiring R] [add_comm_monoid M]
variables [module R M] [module Rᵐᵒᵖ M] [smul_comm_class R Rᵐᵒᵖ M]
```
If we instead work with a commutative `R'` acting symmetrically on `M`, we write
```lean
variables {R' M : Type*} [comm_semiring R'] [add_comm_monoid M]
variables [module R' M] [module R'ᵐᵒᵖ M] [is_central_scalar R' M]
```
noting that in this context `is_central_scalar R' M` implies `smul_comm_class R' R'ᵐᵒᵖ M`.

Many of the later results in this file are only stated for the commutative `R'` for simplicity.

## Main definitions

* `triv_sq_zero_ext.inl`, `triv_sq_zero_ext.inr`: the canonical inclusions into
  `triv_sq_zero_ext R M`.
* `triv_sq_zero_ext.fst`, `triv_sq_zero_ext.snd`: the canonical projections from
  `triv_sq_zero_ext R M`.
* `triv_sq_zero_ext.algebra`: the associated `R`-algebra structure.
* `triv_sq_zero_ext.lift`: the universal property of the trivial square-zero extension; algebra
  morphisms `triv_sq_zero_ext R M →ₐ[R] A` are uniquely defined by linear maps `M →ₗ[R] A` for
  which the product of any two elements in the range is zero.

-/

universe u v w

#print TrivSqZeroExt /-
/-- "Trivial Square-Zero Extension".

Given a module `M` over a ring `R`, the trivial square-zero extension of `M` over `R` is defined
to be the `R`-algebra `R × M` with multiplication given by
`(r₁ + m₁) * (r₂ + m₂) = r₁ r₂ + r₁ m₂ + r₂ m₁`.

It is a square-zero extension because `M^2 = 0`.
-/
def TrivSqZeroExt (R : Type u) (M : Type v) :=
  R × M
#align triv_sq_zero_ext TrivSqZeroExt
-/

-- mathport name: exprtsze
local notation "tsze" => TrivSqZeroExt

open BigOperators

namespace TrivSqZeroExt

open MulOpposite (op)

section Basic

variable {R : Type u} {M : Type v}

#print TrivSqZeroExt.inl /-
/-- The canonical inclusion `R → triv_sq_zero_ext R M`. -/
def inl [Zero M] (r : R) : tsze R M :=
  (r, 0)
#align triv_sq_zero_ext.inl TrivSqZeroExt.inl
-/

#print TrivSqZeroExt.inr /-
/-- The canonical inclusion `M → triv_sq_zero_ext R M`. -/
def inr [Zero R] (m : M) : tsze R M :=
  (0, m)
#align triv_sq_zero_ext.inr TrivSqZeroExt.inr
-/

#print TrivSqZeroExt.fst /-
/-- The canonical projection `triv_sq_zero_ext R M → R`. -/
def fst (x : tsze R M) : R :=
  x.1
#align triv_sq_zero_ext.fst TrivSqZeroExt.fst
-/

#print TrivSqZeroExt.snd /-
/-- The canonical projection `triv_sq_zero_ext R M → M`. -/
def snd (x : tsze R M) : M :=
  x.2
#align triv_sq_zero_ext.snd TrivSqZeroExt.snd
-/

#print TrivSqZeroExt.fst_mk /-
@[simp]
theorem fst_mk (r : R) (m : M) : fst (r, m) = r :=
  rfl
#align triv_sq_zero_ext.fst_mk TrivSqZeroExt.fst_mk
-/

#print TrivSqZeroExt.snd_mk /-
@[simp]
theorem snd_mk (r : R) (m : M) : snd (r, m) = m :=
  rfl
#align triv_sq_zero_ext.snd_mk TrivSqZeroExt.snd_mk
-/

#print TrivSqZeroExt.ext /-
@[ext]
theorem ext {x y : tsze R M} (h1 : x.fst = y.fst) (h2 : x.snd = y.snd) : x = y :=
  Prod.ext h1 h2
#align triv_sq_zero_ext.ext TrivSqZeroExt.ext
-/

section

variable (M)

#print TrivSqZeroExt.fst_inl /-
@[simp]
theorem fst_inl [Zero M] (r : R) : (inl r : tsze R M).fst = r :=
  rfl
#align triv_sq_zero_ext.fst_inl TrivSqZeroExt.fst_inl
-/

#print TrivSqZeroExt.snd_inl /-
@[simp]
theorem snd_inl [Zero M] (r : R) : (inl r : tsze R M).snd = 0 :=
  rfl
#align triv_sq_zero_ext.snd_inl TrivSqZeroExt.snd_inl
-/

#print TrivSqZeroExt.fst_comp_inl /-
@[simp]
theorem fst_comp_inl [Zero M] : fst ∘ (inl : R → tsze R M) = id :=
  rfl
#align triv_sq_zero_ext.fst_comp_inl TrivSqZeroExt.fst_comp_inl
-/

#print TrivSqZeroExt.snd_comp_inl /-
@[simp]
theorem snd_comp_inl [Zero M] : snd ∘ (inl : R → tsze R M) = 0 :=
  rfl
#align triv_sq_zero_ext.snd_comp_inl TrivSqZeroExt.snd_comp_inl
-/

end

section

variable (R)

#print TrivSqZeroExt.fst_inr /-
@[simp]
theorem fst_inr [Zero R] (m : M) : (inr m : tsze R M).fst = 0 :=
  rfl
#align triv_sq_zero_ext.fst_inr TrivSqZeroExt.fst_inr
-/

#print TrivSqZeroExt.snd_inr /-
@[simp]
theorem snd_inr [Zero R] (m : M) : (inr m : tsze R M).snd = m :=
  rfl
#align triv_sq_zero_ext.snd_inr TrivSqZeroExt.snd_inr
-/

#print TrivSqZeroExt.fst_comp_inr /-
@[simp]
theorem fst_comp_inr [Zero R] : fst ∘ (inr : M → tsze R M) = 0 :=
  rfl
#align triv_sq_zero_ext.fst_comp_inr TrivSqZeroExt.fst_comp_inr
-/

#print TrivSqZeroExt.snd_comp_inr /-
@[simp]
theorem snd_comp_inr [Zero R] : snd ∘ (inr : M → tsze R M) = id :=
  rfl
#align triv_sq_zero_ext.snd_comp_inr TrivSqZeroExt.snd_comp_inr
-/

end

#print TrivSqZeroExt.inl_injective /-
theorem inl_injective [Zero M] : Function.Injective (inl : R → tsze R M) :=
  Function.LeftInverse.injective <| fst_inl _
#align triv_sq_zero_ext.inl_injective TrivSqZeroExt.inl_injective
-/

#print TrivSqZeroExt.inr_injective /-
theorem inr_injective [Zero R] : Function.Injective (inr : M → tsze R M) :=
  Function.LeftInverse.injective <| snd_inr _
#align triv_sq_zero_ext.inr_injective TrivSqZeroExt.inr_injective
-/

end Basic

/-! ### Structures inherited from `prod`

Additive operators and scalar multiplication operate elementwise. -/

section Additive

variable {T : Type _} {S : Type _} {R : Type u} {M : Type v}

instance [Inhabited R] [Inhabited M] : Inhabited (tsze R M) :=
  Prod.inhabited

instance [Zero R] [Zero M] : Zero (tsze R M) :=
  Prod.hasZero

instance [Add R] [Add M] : Add (tsze R M) :=
  Prod.hasAdd

instance [Sub R] [Sub M] : Sub (tsze R M) :=
  Prod.hasSub

instance [Neg R] [Neg M] : Neg (tsze R M) :=
  Prod.hasNeg

instance [AddSemigroup R] [AddSemigroup M] : AddSemigroup (tsze R M) :=
  Prod.addSemigroup

instance [AddZeroClass R] [AddZeroClass M] : AddZeroClass (tsze R M) :=
  Prod.addZeroClass

instance [AddMonoid R] [AddMonoid M] : AddMonoid (tsze R M) :=
  Prod.addMonoid

instance [AddGroup R] [AddGroup M] : AddGroup (tsze R M) :=
  Prod.addGroup

instance [AddCommSemigroup R] [AddCommSemigroup M] : AddCommSemigroup (tsze R M) :=
  Prod.addCommSemigroup

instance [AddCommMonoid R] [AddCommMonoid M] : AddCommMonoid (tsze R M) :=
  Prod.addCommMonoid

instance [AddCommGroup R] [AddCommGroup M] : AddCommGroup (tsze R M) :=
  Prod.addCommGroup

instance [SMul S R] [SMul S M] : SMul S (tsze R M) :=
  Prod.smul

instance [SMul T R] [SMul T M] [SMul S R] [SMul S M] [SMul T S] [IsScalarTower T S R]
    [IsScalarTower T S M] : IsScalarTower T S (tsze R M) :=
  Prod.isScalarTower

instance [SMul T R] [SMul T M] [SMul S R] [SMul S M] [SMulCommClass T S R] [SMulCommClass T S M] :
    SMulCommClass T S (tsze R M) :=
  Prod.sMulCommClass

instance [SMul S R] [SMul S M] [SMul Sᵐᵒᵖ R] [SMul Sᵐᵒᵖ M] [IsCentralScalar S R]
    [IsCentralScalar S M] : IsCentralScalar S (tsze R M) :=
  Prod.isCentralScalar

instance [Monoid S] [MulAction S R] [MulAction S M] : MulAction S (tsze R M) :=
  Prod.mulAction

instance [Monoid S] [AddMonoid R] [AddMonoid M] [DistribMulAction S R] [DistribMulAction S M] :
    DistribMulAction S (tsze R M) :=
  Prod.distribMulAction

instance [Semiring S] [AddCommMonoid R] [AddCommMonoid M] [Module S R] [Module S M] :
    Module S (tsze R M) :=
  Prod.module

#print TrivSqZeroExt.fst_zero /-
@[simp]
theorem fst_zero [Zero R] [Zero M] : (0 : tsze R M).fst = 0 :=
  rfl
#align triv_sq_zero_ext.fst_zero TrivSqZeroExt.fst_zero
-/

#print TrivSqZeroExt.snd_zero /-
@[simp]
theorem snd_zero [Zero R] [Zero M] : (0 : tsze R M).snd = 0 :=
  rfl
#align triv_sq_zero_ext.snd_zero TrivSqZeroExt.snd_zero
-/

#print TrivSqZeroExt.fst_add /-
@[simp]
theorem fst_add [Add R] [Add M] (x₁ x₂ : tsze R M) : (x₁ + x₂).fst = x₁.fst + x₂.fst :=
  rfl
#align triv_sq_zero_ext.fst_add TrivSqZeroExt.fst_add
-/

#print TrivSqZeroExt.snd_add /-
@[simp]
theorem snd_add [Add R] [Add M] (x₁ x₂ : tsze R M) : (x₁ + x₂).snd = x₁.snd + x₂.snd :=
  rfl
#align triv_sq_zero_ext.snd_add TrivSqZeroExt.snd_add
-/

#print TrivSqZeroExt.fst_neg /-
@[simp]
theorem fst_neg [Neg R] [Neg M] (x : tsze R M) : (-x).fst = -x.fst :=
  rfl
#align triv_sq_zero_ext.fst_neg TrivSqZeroExt.fst_neg
-/

#print TrivSqZeroExt.snd_neg /-
@[simp]
theorem snd_neg [Neg R] [Neg M] (x : tsze R M) : (-x).snd = -x.snd :=
  rfl
#align triv_sq_zero_ext.snd_neg TrivSqZeroExt.snd_neg
-/

#print TrivSqZeroExt.fst_sub /-
@[simp]
theorem fst_sub [Sub R] [Sub M] (x₁ x₂ : tsze R M) : (x₁ - x₂).fst = x₁.fst - x₂.fst :=
  rfl
#align triv_sq_zero_ext.fst_sub TrivSqZeroExt.fst_sub
-/

#print TrivSqZeroExt.snd_sub /-
@[simp]
theorem snd_sub [Sub R] [Sub M] (x₁ x₂ : tsze R M) : (x₁ - x₂).snd = x₁.snd - x₂.snd :=
  rfl
#align triv_sq_zero_ext.snd_sub TrivSqZeroExt.snd_sub
-/

/- warning: triv_sq_zero_ext.fst_smul -> TrivSqZeroExt.fst_smul is a dubious translation:
lean 3 declaration is
  forall {S : Type.{u3}} {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : SMul.{u3, u1} S R] [_inst_2 : SMul.{u3, u2} S M] (s : S) (x : TrivSqZeroExt.{u1, u2} R M), Eq.{succ u1} R (TrivSqZeroExt.fst.{u1, u2} R M (SMul.smul.{u3, max u1 u2} S (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasSmul.{u1, u2, u3} S R M _inst_1 _inst_2) s x)) (SMul.smul.{u3, u1} S R _inst_1 s (TrivSqZeroExt.fst.{u1, u2} R M x))
but is expected to have type
  forall {S : Type.{u1}} {R : Type.{u2}} {M : Type.{u3}} [_inst_1 : SMul.{u1, u2} S R] [_inst_2 : SMul.{u1, u3} S M] (s : S) (x : TrivSqZeroExt.{u2, u3} R M), Eq.{succ u2} R (TrivSqZeroExt.fst.{u2, u3} R M (HSMul.hSMul.{u1, max u2 u3, max u2 u3} S (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.{u2, u3} R M) (instHSMul.{u1, max u2 u3} S (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.smul.{u2, u3, u1} S R M _inst_1 _inst_2)) s x)) (HSMul.hSMul.{u1, u2, u2} S R R (instHSMul.{u1, u2} S R _inst_1) s (TrivSqZeroExt.fst.{u2, u3} R M x))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.fst_smul TrivSqZeroExt.fst_smulₓ'. -/
@[simp]
theorem fst_smul [SMul S R] [SMul S M] (s : S) (x : tsze R M) : (s • x).fst = s • x.fst :=
  rfl
#align triv_sq_zero_ext.fst_smul TrivSqZeroExt.fst_smul

/- warning: triv_sq_zero_ext.snd_smul -> TrivSqZeroExt.snd_smul is a dubious translation:
lean 3 declaration is
  forall {S : Type.{u3}} {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : SMul.{u3, u1} S R] [_inst_2 : SMul.{u3, u2} S M] (s : S) (x : TrivSqZeroExt.{u1, u2} R M), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (SMul.smul.{u3, max u1 u2} S (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasSmul.{u1, u2, u3} S R M _inst_1 _inst_2) s x)) (SMul.smul.{u3, u2} S M _inst_2 s (TrivSqZeroExt.snd.{u1, u2} R M x))
but is expected to have type
  forall {S : Type.{u1}} {R : Type.{u2}} {M : Type.{u3}} [_inst_1 : SMul.{u1, u2} S R] [_inst_2 : SMul.{u1, u3} S M] (s : S) (x : TrivSqZeroExt.{u2, u3} R M), Eq.{succ u3} M (TrivSqZeroExt.snd.{u2, u3} R M (HSMul.hSMul.{u1, max u2 u3, max u2 u3} S (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.{u2, u3} R M) (instHSMul.{u1, max u2 u3} S (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.smul.{u2, u3, u1} S R M _inst_1 _inst_2)) s x)) (HSMul.hSMul.{u1, u3, u3} S M M (instHSMul.{u1, u3} S M _inst_2) s (TrivSqZeroExt.snd.{u2, u3} R M x))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_smul TrivSqZeroExt.snd_smulₓ'. -/
@[simp]
theorem snd_smul [SMul S R] [SMul S M] (s : S) (x : tsze R M) : (s • x).snd = s • x.snd :=
  rfl
#align triv_sq_zero_ext.snd_smul TrivSqZeroExt.snd_smul

/- warning: triv_sq_zero_ext.fst_sum -> TrivSqZeroExt.fst_sum is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} {ι : Type.{u3}} [_inst_1 : AddCommMonoid.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] (s : Finset.{u3} ι) (f : ι -> (TrivSqZeroExt.{u1, u2} R M)), Eq.{succ u1} R (TrivSqZeroExt.fst.{u1, u2} R M (Finset.sum.{max u1 u2, u3} (TrivSqZeroExt.{u1, u2} R M) ι (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_1 _inst_2) s (fun (i : ι) => f i))) (Finset.sum.{u1, u3} R ι _inst_1 s (fun (i : ι) => TrivSqZeroExt.fst.{u1, u2} R M (f i)))
but is expected to have type
  forall {R : Type.{u2}} {M : Type.{u3}} {ι : Type.{u1}} [_inst_1 : AddCommMonoid.{u2} R] [_inst_2 : AddCommMonoid.{u3} M] (s : Finset.{u1} ι) (f : ι -> (TrivSqZeroExt.{u2, u3} R M)), Eq.{succ u2} R (TrivSqZeroExt.fst.{u2, u3} R M (Finset.sum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) ι (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_1 _inst_2) s (fun (i : ι) => f i))) (Finset.sum.{u2, u1} R ι _inst_1 s (fun (i : ι) => TrivSqZeroExt.fst.{u2, u3} R M (f i)))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.fst_sum TrivSqZeroExt.fst_sumₓ'. -/
theorem fst_sum {ι} [AddCommMonoid R] [AddCommMonoid M] (s : Finset ι) (f : ι → tsze R M) :
    (∑ i in s, f i).fst = ∑ i in s, (f i).fst :=
  Prod.fst_sum
#align triv_sq_zero_ext.fst_sum TrivSqZeroExt.fst_sum

/- warning: triv_sq_zero_ext.snd_sum -> TrivSqZeroExt.snd_sum is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} {ι : Type.{u3}} [_inst_1 : AddCommMonoid.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] (s : Finset.{u3} ι) (f : ι -> (TrivSqZeroExt.{u1, u2} R M)), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (Finset.sum.{max u1 u2, u3} (TrivSqZeroExt.{u1, u2} R M) ι (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_1 _inst_2) s (fun (i : ι) => f i))) (Finset.sum.{u2, u3} M ι _inst_2 s (fun (i : ι) => TrivSqZeroExt.snd.{u1, u2} R M (f i)))
but is expected to have type
  forall {R : Type.{u2}} {M : Type.{u3}} {ι : Type.{u1}} [_inst_1 : AddCommMonoid.{u2} R] [_inst_2 : AddCommMonoid.{u3} M] (s : Finset.{u1} ι) (f : ι -> (TrivSqZeroExt.{u2, u3} R M)), Eq.{succ u3} M (TrivSqZeroExt.snd.{u2, u3} R M (Finset.sum.{max u2 u3, u1} (TrivSqZeroExt.{u2, u3} R M) ι (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_1 _inst_2) s (fun (i : ι) => f i))) (Finset.sum.{u3, u1} M ι _inst_2 s (fun (i : ι) => TrivSqZeroExt.snd.{u2, u3} R M (f i)))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_sum TrivSqZeroExt.snd_sumₓ'. -/
theorem snd_sum {ι} [AddCommMonoid R] [AddCommMonoid M] (s : Finset ι) (f : ι → tsze R M) :
    (∑ i in s, f i).snd = ∑ i in s, (f i).snd :=
  Prod.snd_sum
#align triv_sq_zero_ext.snd_sum TrivSqZeroExt.snd_sum

section

variable (M)

#print TrivSqZeroExt.inl_zero /-
@[simp]
theorem inl_zero [Zero R] [Zero M] : (inl 0 : tsze R M) = 0 :=
  rfl
#align triv_sq_zero_ext.inl_zero TrivSqZeroExt.inl_zero
-/

/- warning: triv_sq_zero_ext.inl_add -> TrivSqZeroExt.inl_add is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Add.{u1} R] [_inst_2 : AddZeroClass.{u2} M] (r₁ : R) (r₂ : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M _inst_2) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_1) r₁ r₂)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHAdd.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasAdd.{u1, u2} R M _inst_1 (AddZeroClass.toHasAdd.{u2} M _inst_2))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M _inst_2) r₁) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M _inst_2) r₂))
but is expected to have type
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Add.{u1} R] [_inst_2 : AddZeroClass.{u2} M] (r₁ : R) (r₂ : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toZero.{u2} M _inst_2) (HAdd.hAdd.{u1, u1, u1} R R R (instHAdd.{u1} R _inst_1) r₁ r₂)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHAdd.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.add.{u1, u2} R M _inst_1 (AddZeroClass.toAdd.{u2} M _inst_2))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toZero.{u2} M _inst_2) r₁) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toZero.{u2} M _inst_2) r₂))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_add TrivSqZeroExt.inl_addₓ'. -/
@[simp]
theorem inl_add [Add R] [AddZeroClass M] (r₁ r₂ : R) :
    (inl (r₁ + r₂) : tsze R M) = inl r₁ + inl r₂ :=
  ext rfl (add_zero 0).symm
#align triv_sq_zero_ext.inl_add TrivSqZeroExt.inl_add

/- warning: triv_sq_zero_ext.inl_neg -> TrivSqZeroExt.inl_neg is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Neg.{u1} R] [_inst_2 : SubNegZeroMonoid.{u2} M] (r : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (SubNegZeroMonoid.toSubNegMonoid.{u2} M _inst_2)))) (Neg.neg.{u1} R _inst_1 r)) (Neg.neg.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasNeg.{u1, u2} R M _inst_1 (SubNegMonoid.toHasNeg.{u2} M (SubNegZeroMonoid.toSubNegMonoid.{u2} M _inst_2))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (SubNegZeroMonoid.toSubNegMonoid.{u2} M _inst_2)))) r))
but is expected to have type
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Neg.{u1} R] [_inst_2 : SubNegZeroMonoid.{u2} M] (r : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M _inst_2)) (Neg.neg.{u1} R _inst_1 r)) (Neg.neg.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.neg.{u1, u2} R M _inst_1 (NegZeroClass.toNeg.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M _inst_2))) (TrivSqZeroExt.inl.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M _inst_2)) r))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_neg TrivSqZeroExt.inl_negₓ'. -/
@[simp]
theorem inl_neg [Neg R] [SubNegZeroMonoid M] (r : R) : (inl (-r) : tsze R M) = -inl r :=
  ext rfl neg_zero.symm
#align triv_sq_zero_ext.inl_neg TrivSqZeroExt.inl_neg

/- warning: triv_sq_zero_ext.inl_sub -> TrivSqZeroExt.inl_sub is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Sub.{u1} R] [_inst_2 : SubNegZeroMonoid.{u2} M] (r₁ : R) (r₂ : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (SubNegZeroMonoid.toSubNegMonoid.{u2} M _inst_2)))) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R _inst_1) r₁ r₂)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHSub.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasSub.{u1, u2} R M _inst_1 (SubNegMonoid.toHasSub.{u2} M (SubNegZeroMonoid.toSubNegMonoid.{u2} M _inst_2)))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (SubNegZeroMonoid.toSubNegMonoid.{u2} M _inst_2)))) r₁) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (SubNegZeroMonoid.toSubNegMonoid.{u2} M _inst_2)))) r₂))
but is expected to have type
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Sub.{u1} R] [_inst_2 : SubNegZeroMonoid.{u2} M] (r₁ : R) (r₂ : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M _inst_2)) (HSub.hSub.{u1, u1, u1} R R R (instHSub.{u1} R _inst_1) r₁ r₂)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHSub.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.sub.{u1, u2} R M _inst_1 (SubNegMonoid.toSub.{u2} M (SubNegZeroMonoid.toSubNegMonoid.{u2} M _inst_2)))) (TrivSqZeroExt.inl.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M _inst_2)) r₁) (TrivSqZeroExt.inl.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M _inst_2)) r₂))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_sub TrivSqZeroExt.inl_subₓ'. -/
@[simp]
theorem inl_sub [Sub R] [SubNegZeroMonoid M] (r₁ r₂ : R) :
    (inl (r₁ - r₂) : tsze R M) = inl r₁ - inl r₂ :=
  ext rfl (sub_zero _).symm
#align triv_sq_zero_ext.inl_sub TrivSqZeroExt.inl_sub

/- warning: triv_sq_zero_ext.inl_smul -> TrivSqZeroExt.inl_smul is a dubious translation:
lean 3 declaration is
  forall {S : Type.{u3}} {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Monoid.{u3} S] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : SMul.{u3, u1} S R] [_inst_4 : DistribMulAction.{u3, u2} S M _inst_1 _inst_2] (s : S) (r : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (SMul.smul.{u3, u1} S R _inst_3 s r)) (SMul.smul.{u3, max u1 u2} S (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasSmul.{u1, u2, u3} S R M _inst_3 (SMulZeroClass.toHasSmul.{u3, u2} S M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u3, u2} S M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u3, u2} S M _inst_1 _inst_2 _inst_4)))) s (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) r))
but is expected to have type
  forall {S : Type.{u1}} {R : Type.{u2}} (M : Type.{u3}) [_inst_1 : Monoid.{u1} S] [_inst_2 : AddMonoid.{u3} M] [_inst_3 : SMul.{u1, u2} S R] [_inst_4 : DistribMulAction.{u1, u3} S M _inst_1 _inst_2] (s : S) (r : R), Eq.{max (succ u2) (succ u3)} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.inl.{u2, u3} R M (AddMonoid.toZero.{u3} M _inst_2) (HSMul.hSMul.{u1, u2, u2} S R R (instHSMul.{u1, u2} S R _inst_3) s r)) (HSMul.hSMul.{u1, max u3 u2, max u2 u3} S (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.{u2, u3} R M) (instHSMul.{u1, max u2 u3} S (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.smul.{u2, u3, u1} S R M _inst_3 (SMulZeroClass.toSMul.{u1, u3} S M (AddMonoid.toZero.{u3} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u3} S M (AddMonoid.toAddZeroClass.{u3} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u3} S M _inst_1 _inst_2 _inst_4))))) s (TrivSqZeroExt.inl.{u2, u3} R M (AddMonoid.toZero.{u3} M _inst_2) r))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_smul TrivSqZeroExt.inl_smulₓ'. -/
@[simp]
theorem inl_smul [Monoid S] [AddMonoid M] [SMul S R] [DistribMulAction S M] (s : S) (r : R) :
    (inl (s • r) : tsze R M) = s • inl r :=
  ext rfl (smul_zero s).symm
#align triv_sq_zero_ext.inl_smul TrivSqZeroExt.inl_smul

/- warning: triv_sq_zero_ext.inl_sum -> TrivSqZeroExt.inl_sum is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} (M : Type.{u2}) {ι : Type.{u3}} [_inst_1 : AddCommMonoid.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] (s : Finset.{u3} ι) (f : ι -> R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Finset.sum.{u1, u3} R ι _inst_1 s (fun (i : ι) => f i))) (Finset.sum.{max u1 u2, u3} (TrivSqZeroExt.{u1, u2} R M) ι (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_1 _inst_2) s (fun (i : ι) => TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (f i)))
but is expected to have type
  forall {R : Type.{u2}} (M : Type.{u3}) {ι : Type.{u1}} [_inst_1 : AddCommMonoid.{u2} R] [_inst_2 : AddCommMonoid.{u3} M] (s : Finset.{u1} ι) (f : ι -> R), Eq.{max (succ u2) (succ u3)} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.inl.{u2, u3} R M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (Finset.sum.{u2, u1} R ι _inst_1 s (fun (i : ι) => f i))) (Finset.sum.{max u3 u2, u1} (TrivSqZeroExt.{u2, u3} R M) ι (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_1 _inst_2) s (fun (i : ι) => TrivSqZeroExt.inl.{u2, u3} R M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_2)) (f i)))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_sum TrivSqZeroExt.inl_sumₓ'. -/
theorem inl_sum {ι} [AddCommMonoid R] [AddCommMonoid M] (s : Finset ι) (f : ι → R) :
    (inl (∑ i in s, f i) : tsze R M) = ∑ i in s, inl (f i) :=
  (LinearMap.inl ℕ _ _).map_sum
#align triv_sq_zero_ext.inl_sum TrivSqZeroExt.inl_sum

end

section

variable (R)

#print TrivSqZeroExt.inr_zero /-
@[simp]
theorem inr_zero [Zero R] [Zero M] : (inr 0 : tsze R M) = 0 :=
  rfl
#align triv_sq_zero_ext.inr_zero TrivSqZeroExt.inr_zero
-/

/- warning: triv_sq_zero_ext.inr_add -> TrivSqZeroExt.inr_add is a dubious translation:
lean 3 declaration is
  forall (R : Type.{u1}) {M : Type.{u2}} [_inst_1 : AddZeroClass.{u1} R] [_inst_2 : AddZeroClass.{u2} M] (m₁ : M) (m₂ : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R _inst_1) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toHasAdd.{u2} M _inst_2)) m₁ m₂)) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHAdd.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasAdd.{u1, u2} R M (AddZeroClass.toHasAdd.{u1} R _inst_1) (AddZeroClass.toHasAdd.{u2} M _inst_2))) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R _inst_1) m₁) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R _inst_1) m₂))
but is expected to have type
  forall (R : Type.{u1}) {M : Type.{u2}} [_inst_1 : AddZeroClass.{u1} R] [_inst_2 : AddZeroClass.{u2} M] (m₁ : M) (m₂ : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toZero.{u1} R _inst_1) (HAdd.hAdd.{u2, u2, u2} M M M (instHAdd.{u2} M (AddZeroClass.toAdd.{u2} M _inst_2)) m₁ m₂)) (HAdd.hAdd.{max u2 u1, max u2 u1, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHAdd.{max u2 u1} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.add.{u1, u2} R M (AddZeroClass.toAdd.{u1} R _inst_1) (AddZeroClass.toAdd.{u2} M _inst_2))) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toZero.{u1} R _inst_1) m₁) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toZero.{u1} R _inst_1) m₂))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inr_add TrivSqZeroExt.inr_addₓ'. -/
@[simp]
theorem inr_add [AddZeroClass R] [AddZeroClass M] (m₁ m₂ : M) :
    (inr (m₁ + m₂) : tsze R M) = inr m₁ + inr m₂ :=
  ext (add_zero 0).symm rfl
#align triv_sq_zero_ext.inr_add TrivSqZeroExt.inr_add

/- warning: triv_sq_zero_ext.inr_neg -> TrivSqZeroExt.inr_neg is a dubious translation:
lean 3 declaration is
  forall (R : Type.{u1}) {M : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u1} R] [_inst_2 : Neg.{u2} M] (m : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (SubNegMonoid.toAddMonoid.{u1} R (SubNegZeroMonoid.toSubNegMonoid.{u1} R _inst_1)))) (Neg.neg.{u2} M _inst_2 m)) (Neg.neg.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasNeg.{u1, u2} R M (SubNegMonoid.toHasNeg.{u1} R (SubNegZeroMonoid.toSubNegMonoid.{u1} R _inst_1)) _inst_2) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (SubNegMonoid.toAddMonoid.{u1} R (SubNegZeroMonoid.toSubNegMonoid.{u1} R _inst_1)))) m))
but is expected to have type
  forall (R : Type.{u1}) {M : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u1} R] [_inst_2 : Neg.{u2} M] (m : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inr.{u1, u2} R M (NegZeroClass.toZero.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R _inst_1)) (Neg.neg.{u2} M _inst_2 m)) (Neg.neg.{max u2 u1} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.neg.{u1, u2} R M (NegZeroClass.toNeg.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R _inst_1)) _inst_2) (TrivSqZeroExt.inr.{u1, u2} R M (NegZeroClass.toZero.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R _inst_1)) m))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inr_neg TrivSqZeroExt.inr_negₓ'. -/
@[simp]
theorem inr_neg [SubNegZeroMonoid R] [Neg M] (m : M) : (inr (-m) : tsze R M) = -inr m :=
  ext neg_zero.symm rfl
#align triv_sq_zero_ext.inr_neg TrivSqZeroExt.inr_neg

/- warning: triv_sq_zero_ext.inr_sub -> TrivSqZeroExt.inr_sub is a dubious translation:
lean 3 declaration is
  forall (R : Type.{u1}) {M : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u1} R] [_inst_2 : Sub.{u2} M] (m₁ : M) (m₂ : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (SubNegMonoid.toAddMonoid.{u1} R (SubNegZeroMonoid.toSubNegMonoid.{u1} R _inst_1)))) (HSub.hSub.{u2, u2, u2} M M M (instHSub.{u2} M _inst_2) m₁ m₂)) (HSub.hSub.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHSub.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasSub.{u1, u2} R M (SubNegMonoid.toHasSub.{u1} R (SubNegZeroMonoid.toSubNegMonoid.{u1} R _inst_1)) _inst_2)) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (SubNegMonoid.toAddMonoid.{u1} R (SubNegZeroMonoid.toSubNegMonoid.{u1} R _inst_1)))) m₁) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (SubNegMonoid.toAddMonoid.{u1} R (SubNegZeroMonoid.toSubNegMonoid.{u1} R _inst_1)))) m₂))
but is expected to have type
  forall (R : Type.{u1}) {M : Type.{u2}} [_inst_1 : SubNegZeroMonoid.{u1} R] [_inst_2 : Sub.{u2} M] (m₁ : M) (m₂ : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inr.{u1, u2} R M (NegZeroClass.toZero.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R _inst_1)) (HSub.hSub.{u2, u2, u2} M M M (instHSub.{u2} M _inst_2) m₁ m₂)) (HSub.hSub.{max u2 u1, max u2 u1, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHSub.{max u2 u1} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.sub.{u1, u2} R M (SubNegMonoid.toSub.{u1} R (SubNegZeroMonoid.toSubNegMonoid.{u1} R _inst_1)) _inst_2)) (TrivSqZeroExt.inr.{u1, u2} R M (NegZeroClass.toZero.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R _inst_1)) m₁) (TrivSqZeroExt.inr.{u1, u2} R M (NegZeroClass.toZero.{u1} R (SubNegZeroMonoid.toNegZeroClass.{u1} R _inst_1)) m₂))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inr_sub TrivSqZeroExt.inr_subₓ'. -/
@[simp]
theorem inr_sub [SubNegZeroMonoid R] [Sub M] (m₁ m₂ : M) :
    (inr (m₁ - m₂) : tsze R M) = inr m₁ - inr m₂ :=
  ext (sub_zero _).symm rfl
#align triv_sq_zero_ext.inr_sub TrivSqZeroExt.inr_sub

/- warning: triv_sq_zero_ext.inr_smul -> TrivSqZeroExt.inr_smul is a dubious translation:
lean 3 declaration is
  forall {S : Type.{u3}} (R : Type.{u1}) {M : Type.{u2}} [_inst_1 : Zero.{u1} R] [_inst_2 : Zero.{u3} S] [_inst_3 : SMulWithZero.{u3, u1} S R _inst_2 _inst_1] [_inst_4 : SMul.{u3, u2} S M] (r : S) (m : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inr.{u1, u2} R M _inst_1 (SMul.smul.{u3, u2} S M _inst_4 r m)) (SMul.smul.{u3, max u1 u2} S (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasSmul.{u1, u2, u3} S R M (SMulZeroClass.toHasSmul.{u3, u1} S R _inst_1 (SMulWithZero.toSmulZeroClass.{u3, u1} S R _inst_2 _inst_1 _inst_3)) _inst_4) r (TrivSqZeroExt.inr.{u1, u2} R M _inst_1 m))
but is expected to have type
  forall {S : Type.{u1}} (R : Type.{u2}) {M : Type.{u3}} [_inst_1 : Zero.{u2} R] [_inst_2 : Zero.{u1} S] [_inst_3 : SMulWithZero.{u1, u2} S R _inst_2 _inst_1] [_inst_4 : SMul.{u1, u3} S M] (r : S) (m : M), Eq.{max (succ u2) (succ u3)} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.inr.{u2, u3} R M _inst_1 (HSMul.hSMul.{u1, u3, u3} S M M (instHSMul.{u1, u3} S M _inst_4) r m)) (HSMul.hSMul.{u1, max u3 u2, max u2 u3} S (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.{u2, u3} R M) (instHSMul.{u1, max u3 u2} S (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.smul.{u2, u3, u1} S R M (SMulZeroClass.toSMul.{u1, u2} S R _inst_1 (SMulWithZero.toSMulZeroClass.{u1, u2} S R _inst_2 _inst_1 _inst_3)) _inst_4)) r (TrivSqZeroExt.inr.{u2, u3} R M _inst_1 m))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inr_smul TrivSqZeroExt.inr_smulₓ'. -/
@[simp]
theorem inr_smul [Zero R] [Zero S] [SMulWithZero S R] [SMul S M] (r : S) (m : M) :
    (inr (r • m) : tsze R M) = r • inr m :=
  ext (smul_zero _).symm rfl
#align triv_sq_zero_ext.inr_smul TrivSqZeroExt.inr_smul

/- warning: triv_sq_zero_ext.inr_sum -> TrivSqZeroExt.inr_sum is a dubious translation:
lean 3 declaration is
  forall (R : Type.{u1}) {M : Type.{u2}} {ι : Type.{u3}} [_inst_1 : AddCommMonoid.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] (s : Finset.{u3} ι) (f : ι -> M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R _inst_1))) (Finset.sum.{u2, u3} M ι _inst_2 s (fun (i : ι) => f i))) (Finset.sum.{max u1 u2, u3} (TrivSqZeroExt.{u1, u2} R M) ι (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_1 _inst_2) s (fun (i : ι) => TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R _inst_1))) (f i)))
but is expected to have type
  forall (R : Type.{u2}) {M : Type.{u3}} {ι : Type.{u1}} [_inst_1 : AddCommMonoid.{u2} R] [_inst_2 : AddCommMonoid.{u3} M] (s : Finset.{u1} ι) (f : ι -> M), Eq.{max (succ u2) (succ u3)} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.inr.{u2, u3} R M (AddMonoid.toZero.{u2} R (AddCommMonoid.toAddMonoid.{u2} R _inst_1)) (Finset.sum.{u3, u1} M ι _inst_2 s (fun (i : ι) => f i))) (Finset.sum.{max u3 u2, u1} (TrivSqZeroExt.{u2, u3} R M) ι (TrivSqZeroExt.addCommMonoid.{u2, u3} R M _inst_1 _inst_2) s (fun (i : ι) => TrivSqZeroExt.inr.{u2, u3} R M (AddMonoid.toZero.{u2} R (AddCommMonoid.toAddMonoid.{u2} R _inst_1)) (f i)))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inr_sum TrivSqZeroExt.inr_sumₓ'. -/
theorem inr_sum {ι} [AddCommMonoid R] [AddCommMonoid M] (s : Finset ι) (f : ι → M) :
    (inr (∑ i in s, f i) : tsze R M) = ∑ i in s, inr (f i) :=
  (LinearMap.inr ℕ _ _).map_sum
#align triv_sq_zero_ext.inr_sum TrivSqZeroExt.inr_sum

end

/- warning: triv_sq_zero_ext.inl_fst_add_inr_snd_eq -> TrivSqZeroExt.inl_fst_add_inr_snd_eq is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u1} R] [_inst_2 : AddZeroClass.{u2} M] (x : TrivSqZeroExt.{u1, u2} R M), Eq.{succ (max u1 u2)} (TrivSqZeroExt.{u1, u2} R M) (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHAdd.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasAdd.{u1, u2} R M (AddZeroClass.toHasAdd.{u1} R _inst_1) (AddZeroClass.toHasAdd.{u2} M _inst_2))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M _inst_2) (TrivSqZeroExt.fst.{u1, u2} R M x)) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R _inst_1) (TrivSqZeroExt.snd.{u1, u2} R M x))) x
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u1} R] [_inst_2 : AddZeroClass.{u2} M] (x : TrivSqZeroExt.{u1, u2} R M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HAdd.hAdd.{max u1 u2, max u2 u1, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHAdd.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.add.{u1, u2} R M (AddZeroClass.toAdd.{u1} R _inst_1) (AddZeroClass.toAdd.{u2} M _inst_2))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toZero.{u2} M _inst_2) (TrivSqZeroExt.fst.{u1, u2} R M x)) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toZero.{u1} R _inst_1) (TrivSqZeroExt.snd.{u1, u2} R M x))) x
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_fst_add_inr_snd_eq TrivSqZeroExt.inl_fst_add_inr_snd_eqₓ'. -/
theorem inl_fst_add_inr_snd_eq [AddZeroClass R] [AddZeroClass M] (x : tsze R M) :
    inl x.fst + inr x.snd = x :=
  ext (add_zero x.1) (zero_add x.2)
#align triv_sq_zero_ext.inl_fst_add_inr_snd_eq TrivSqZeroExt.inl_fst_add_inr_snd_eq

/- warning: triv_sq_zero_ext.ind -> TrivSqZeroExt.ind is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddZeroClass.{u1} R] [_inst_2 : AddZeroClass.{u2} M] {P : (TrivSqZeroExt.{u1, u2} R M) -> Prop}, (forall (r : R) (m : M), P (HAdd.hAdd.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHAdd.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasAdd.{u1, u2} R M (AddZeroClass.toHasAdd.{u1} R _inst_1) (AddZeroClass.toHasAdd.{u2} M _inst_2))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M _inst_2) r) (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R _inst_1) m))) -> (forall (x : TrivSqZeroExt.{u1, u2} R M), P x)
but is expected to have type
  forall {R : Type.{u2}} {M : Type.{u1}} [_inst_1 : AddZeroClass.{u2} R] [_inst_2 : AddZeroClass.{u1} M] {P : (TrivSqZeroExt.{u2, u1} R M) -> Prop}, (forall (r : R) (m : M), P (HAdd.hAdd.{max u1 u2, max u1 u2, max u2 u1} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.{u2, u1} R M) (instHAdd.{max u1 u2} (TrivSqZeroExt.{u2, u1} R M) (TrivSqZeroExt.add.{u2, u1} R M (AddZeroClass.toAdd.{u2} R _inst_1) (AddZeroClass.toAdd.{u1} M _inst_2))) (TrivSqZeroExt.inl.{u2, u1} R M (AddZeroClass.toZero.{u1} M _inst_2) r) (TrivSqZeroExt.inr.{u2, u1} R M (AddZeroClass.toZero.{u2} R _inst_1) m))) -> (forall (x : TrivSqZeroExt.{u2, u1} R M), P x)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.ind TrivSqZeroExt.indₓ'. -/
/-- To show a property hold on all `triv_sq_zero_ext R M` it suffices to show it holds
on terms of the form `inl r + inr m`.

This can be used as `induction x using triv_sq_zero_ext.ind`. -/
theorem ind {R M} [AddZeroClass R] [AddZeroClass M] {P : TrivSqZeroExt R M → Prop}
    (h : ∀ r m, P (inl r + inr m)) (x) : P x :=
  inl_fst_add_inr_snd_eq x ▸ h x.1 x.2
#align triv_sq_zero_ext.ind TrivSqZeroExt.ind

/- warning: triv_sq_zero_ext.linear_map_ext -> TrivSqZeroExt.linearMap_ext is a dubious translation:
lean 3 declaration is
  forall {S : Type.{u3}} {R : Type.{u1}} {M : Type.{u2}} {N : Type.{u4}} [_inst_1 : Semiring.{u3} S] [_inst_2 : AddCommMonoid.{u1} R] [_inst_3 : AddCommMonoid.{u2} M] [_inst_4 : AddCommMonoid.{u4} N] [_inst_5 : Module.{u3, u1} S R _inst_1 _inst_2] [_inst_6 : Module.{u3, u2} S M _inst_1 _inst_3] [_inst_7 : Module.{u3, u4} S N _inst_1 _inst_4] {{f : LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7}} {{g : LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7}}, (forall (r : R), Eq.{succ u4} N (coeFn.{max (succ (max u1 u2)) (succ u4), max (succ (max u1 u2)) (succ u4)} (LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) (fun (_x : LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) => (TrivSqZeroExt.{u1, u2} R M) -> N) (LinearMap.hasCoeToFun.{u3, u3, max u1 u2, u4} S S (TrivSqZeroExt.{u1, u2} R M) N _inst_1 _inst_1 (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1))) f (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) r)) (coeFn.{max (succ (max u1 u2)) (succ u4), max (succ (max u1 u2)) (succ u4)} (LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) (fun (_x : LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) => (TrivSqZeroExt.{u1, u2} R M) -> N) (LinearMap.hasCoeToFun.{u3, u3, max u1 u2, u4} S S (TrivSqZeroExt.{u1, u2} R M) N _inst_1 _inst_1 (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1))) g (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_3))) r))) -> (forall (m : M), Eq.{succ u4} N (coeFn.{max (succ (max u1 u2)) (succ u4), max (succ (max u1 u2)) (succ u4)} (LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) (fun (_x : LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) => (TrivSqZeroExt.{u1, u2} R M) -> N) (LinearMap.hasCoeToFun.{u3, u3, max u1 u2, u4} S S (TrivSqZeroExt.{u1, u2} R M) N _inst_1 _inst_1 (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1))) f (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R _inst_2))) m)) (coeFn.{max (succ (max u1 u2)) (succ u4), max (succ (max u1 u2)) (succ u4)} (LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) (fun (_x : LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) => (TrivSqZeroExt.{u1, u2} R M) -> N) (LinearMap.hasCoeToFun.{u3, u3, max u1 u2, u4} S S (TrivSqZeroExt.{u1, u2} R M) N _inst_1 _inst_1 (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1))) g (TrivSqZeroExt.inr.{u1, u2} R M (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R _inst_2))) m))) -> (Eq.{max (succ (max u1 u2)) (succ u4)} (LinearMap.{u3, u3, max u1 u2, u4} S S _inst_1 _inst_1 (RingHom.id.{u3} S (Semiring.toNonAssocSemiring.{u3} S _inst_1)) (TrivSqZeroExt.{u1, u2} R M) N (TrivSqZeroExt.addCommMonoid.{u1, u2} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) f g)
but is expected to have type
  forall {S : Type.{u1}} {R : Type.{u3}} {M : Type.{u4}} {N : Type.{u2}} [_inst_1 : Semiring.{u1} S] [_inst_2 : AddCommMonoid.{u3} R] [_inst_3 : AddCommMonoid.{u4} M] [_inst_4 : AddCommMonoid.{u2} N] [_inst_5 : Module.{u1, u3} S R _inst_1 _inst_2] [_inst_6 : Module.{u1, u4} S M _inst_1 _inst_3] [_inst_7 : Module.{u1, u2} S N _inst_1 _inst_4] {{f : LinearMap.{u1, u1, max u4 u3, u2} S S _inst_1 _inst_1 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1)) (TrivSqZeroExt.{u3, u4} R M) N (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7}} {{g : LinearMap.{u1, u1, max u4 u3, u2} S S _inst_1 _inst_1 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1)) (TrivSqZeroExt.{u3, u4} R M) N (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7}}, (forall (r : R), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : TrivSqZeroExt.{u3, u4} R M) => N) (TrivSqZeroExt.inl.{u3, u4} R M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_3)) r)) (FunLike.coe.{max (max (succ u3) (succ u4)) (succ u2), max (succ u3) (succ u4), succ u2} (LinearMap.{u1, u1, max u4 u3, u2} S S _inst_1 _inst_1 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1)) (TrivSqZeroExt.{u3, u4} R M) N (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) (TrivSqZeroExt.{u3, u4} R M) (fun (_x : TrivSqZeroExt.{u3, u4} R M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : TrivSqZeroExt.{u3, u4} R M) => N) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, max u3 u4, u2} S S (TrivSqZeroExt.{u3, u4} R M) N _inst_1 _inst_1 (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1))) f (TrivSqZeroExt.inl.{u3, u4} R M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_3)) r)) (FunLike.coe.{max (max (succ u3) (succ u4)) (succ u2), max (succ u3) (succ u4), succ u2} (LinearMap.{u1, u1, max u4 u3, u2} S S _inst_1 _inst_1 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1)) (TrivSqZeroExt.{u3, u4} R M) N (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) (TrivSqZeroExt.{u3, u4} R M) (fun (_x : TrivSqZeroExt.{u3, u4} R M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : TrivSqZeroExt.{u3, u4} R M) => N) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, max u3 u4, u2} S S (TrivSqZeroExt.{u3, u4} R M) N _inst_1 _inst_1 (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1))) g (TrivSqZeroExt.inl.{u3, u4} R M (AddMonoid.toZero.{u4} M (AddCommMonoid.toAddMonoid.{u4} M _inst_3)) r))) -> (forall (m : M), Eq.{succ u2} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : TrivSqZeroExt.{u3, u4} R M) => N) (TrivSqZeroExt.inr.{u3, u4} R M (AddMonoid.toZero.{u3} R (AddCommMonoid.toAddMonoid.{u3} R _inst_2)) m)) (FunLike.coe.{max (max (succ u3) (succ u4)) (succ u2), max (succ u3) (succ u4), succ u2} (LinearMap.{u1, u1, max u4 u3, u2} S S _inst_1 _inst_1 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1)) (TrivSqZeroExt.{u3, u4} R M) N (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) (TrivSqZeroExt.{u3, u4} R M) (fun (_x : TrivSqZeroExt.{u3, u4} R M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : TrivSqZeroExt.{u3, u4} R M) => N) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, max u3 u4, u2} S S (TrivSqZeroExt.{u3, u4} R M) N _inst_1 _inst_1 (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1))) f (TrivSqZeroExt.inr.{u3, u4} R M (AddMonoid.toZero.{u3} R (AddCommMonoid.toAddMonoid.{u3} R _inst_2)) m)) (FunLike.coe.{max (max (succ u3) (succ u4)) (succ u2), max (succ u3) (succ u4), succ u2} (LinearMap.{u1, u1, max u4 u3, u2} S S _inst_1 _inst_1 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1)) (TrivSqZeroExt.{u3, u4} R M) N (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) (TrivSqZeroExt.{u3, u4} R M) (fun (_x : TrivSqZeroExt.{u3, u4} R M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : TrivSqZeroExt.{u3, u4} R M) => N) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, max u3 u4, u2} S S (TrivSqZeroExt.{u3, u4} R M) N _inst_1 _inst_1 (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1))) g (TrivSqZeroExt.inr.{u3, u4} R M (AddMonoid.toZero.{u3} R (AddCommMonoid.toAddMonoid.{u3} R _inst_2)) m))) -> (Eq.{max (max (succ u3) (succ u4)) (succ u2)} (LinearMap.{u1, u1, max u4 u3, u2} S S _inst_1 _inst_1 (RingHom.id.{u1} S (Semiring.toNonAssocSemiring.{u1} S _inst_1)) (TrivSqZeroExt.{u3, u4} R M) N (TrivSqZeroExt.addCommMonoid.{u3, u4} R M _inst_2 _inst_3) _inst_4 (TrivSqZeroExt.module.{u3, u4, u1} S R M _inst_1 _inst_2 _inst_3 _inst_5 _inst_6) _inst_7) f g)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.linear_map_ext TrivSqZeroExt.linearMap_extₓ'. -/
/-- This cannot be marked `@[ext]` as it ends up being used instead of `linear_map.prod_ext` when
working with `R × M`. -/
theorem linearMap_ext {N} [Semiring S] [AddCommMonoid R] [AddCommMonoid M] [AddCommMonoid N]
    [Module S R] [Module S M] [Module S N] ⦃f g : tsze R M →ₗ[S] N⦄
    (hl : ∀ r, f (inl r) = g (inl r)) (hr : ∀ m, f (inr m) = g (inr m)) : f = g :=
  LinearMap.prod_ext (LinearMap.ext hl) (LinearMap.ext hr)
#align triv_sq_zero_ext.linear_map_ext TrivSqZeroExt.linearMap_ext

variable (R M)

#print TrivSqZeroExt.inrHom /-
/-- The canonical `R`-linear inclusion `M → triv_sq_zero_ext R M`. -/
@[simps apply]
def inrHom [Semiring R] [AddCommMonoid M] [Module R M] : M →ₗ[R] tsze R M :=
  { LinearMap.inr R R M with toFun := inr }
#align triv_sq_zero_ext.inr_hom TrivSqZeroExt.inrHom
-/

#print TrivSqZeroExt.sndHom /-
/-- The canonical `R`-linear projection `triv_sq_zero_ext R M → M`. -/
@[simps apply]
def sndHom [Semiring R] [AddCommMonoid M] [Module R M] : tsze R M →ₗ[R] M :=
  { LinearMap.snd _ _ _ with toFun := snd }
#align triv_sq_zero_ext.snd_hom TrivSqZeroExt.sndHom
-/

end Additive

/-! ### Multiplicative structure -/

section Mul

variable {R : Type u} {M : Type v}

instance [One R] [Zero M] : One (tsze R M) :=
  ⟨(1, 0)⟩

instance [Mul R] [Add M] [SMul R M] [SMul Rᵐᵒᵖ M] : Mul (tsze R M) :=
  ⟨fun x y => (x.1 * y.1, x.1 • y.2 + op y.1 • x.2)⟩

#print TrivSqZeroExt.fst_one /-
@[simp]
theorem fst_one [One R] [Zero M] : (1 : tsze R M).fst = 1 :=
  rfl
#align triv_sq_zero_ext.fst_one TrivSqZeroExt.fst_one
-/

#print TrivSqZeroExt.snd_one /-
@[simp]
theorem snd_one [One R] [Zero M] : (1 : tsze R M).snd = 0 :=
  rfl
#align triv_sq_zero_ext.snd_one TrivSqZeroExt.snd_one
-/

#print TrivSqZeroExt.fst_mul /-
@[simp]
theorem fst_mul [Mul R] [Add M] [SMul R M] [SMul Rᵐᵒᵖ M] (x₁ x₂ : tsze R M) :
    (x₁ * x₂).fst = x₁.fst * x₂.fst :=
  rfl
#align triv_sq_zero_ext.fst_mul TrivSqZeroExt.fst_mul
-/

#print TrivSqZeroExt.snd_mul /-
@[simp]
theorem snd_mul [Mul R] [Add M] [SMul R M] [SMul Rᵐᵒᵖ M] (x₁ x₂ : tsze R M) :
    (x₁ * x₂).snd = x₁.fst • x₂.snd + op x₂.fst • x₁.snd :=
  rfl
#align triv_sq_zero_ext.snd_mul TrivSqZeroExt.snd_mul
-/

section

variable (M)

#print TrivSqZeroExt.inl_one /-
@[simp]
theorem inl_one [One R] [Zero M] : (inl 1 : tsze R M) = 1 :=
  rfl
#align triv_sq_zero_ext.inl_one TrivSqZeroExt.inl_one
-/

/- warning: triv_sq_zero_ext.inl_mul -> TrivSqZeroExt.inl_mul is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] (r₁ : R) (r₂ : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r₂)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasMul.{u1, u2} R M (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4))))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) r₁) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) r₂))
but is expected to have type
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] (r₁ : R) (r₂ : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r₂)) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.mul.{u1, u2} R M (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4))))) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) r₁) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) r₂))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_mul TrivSqZeroExt.inl_mulₓ'. -/
@[simp]
theorem inl_mul [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
    (r₁ r₂ : R) : (inl (r₁ * r₂) : tsze R M) = inl r₁ * inl r₂ :=
  ext rfl <| show (0 : M) = r₁ • 0 + op r₂ • 0 by rw [smul_zero, zero_add, smul_zero]
#align triv_sq_zero_ext.inl_mul TrivSqZeroExt.inl_mul

/- warning: triv_sq_zero_ext.inl_mul_inl -> TrivSqZeroExt.inl_mul_inl is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] (r₁ : R) (r₂ : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasMul.{u1, u2} R M (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4))))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) r₁) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) r₂)) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r₂))
but is expected to have type
  forall {R : Type.{u1}} (M : Type.{u2}) [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] (r₁ : R) (r₂ : R), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.mul.{u1, u2} R M (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4))))) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) r₁) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) r₂)) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (HMul.hMul.{u1, u1, u1} R R R (instHMul.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1))) r₁ r₂))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_mul_inl TrivSqZeroExt.inl_mul_inlₓ'. -/
theorem inl_mul_inl [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
    (r₁ r₂ : R) : (inl r₁ * inl r₂ : tsze R M) = inl (r₁ * r₂) :=
  (inl_mul M r₁ r₂).symm
#align triv_sq_zero_ext.inl_mul_inl TrivSqZeroExt.inl_mul_inl

end

section

variable (R)

/- warning: triv_sq_zero_ext.inr_mul_inr -> TrivSqZeroExt.inr_mul_inr is a dubious translation:
lean 3 declaration is
  forall (R : Type.{u1}) {M : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2] (m₁ : M) (m₂ : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasMul.{u1, u2} R M (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4)))))) (TrivSqZeroExt.inr.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) m₁) (TrivSqZeroExt.inr.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) m₂)) (OfNat.ofNat.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) 0 (OfNat.mk.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) 0 (Zero.zero.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasZero.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))))))
but is expected to have type
  forall (R : Type.{u1}) {M : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2] (m₁ : M) (m₂ : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HMul.hMul.{max u2 u1, max u2 u1, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u2 u1} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.mul.{u1, u2} R M (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.zero.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoidWithZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4)))))) (TrivSqZeroExt.inr.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) m₁) (TrivSqZeroExt.inr.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) m₂)) (OfNat.ofNat.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) 0 (Zero.toOfNat0.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.zero.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inr_mul_inr TrivSqZeroExt.inr_mul_inrₓ'. -/
@[simp]
theorem inr_mul_inr [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M] (m₁ m₂ : M) :
    (inr m₁ * inr m₂ : tsze R M) = 0 :=
  ext (MulZeroClass.mul_zero _) <|
    show (0 : R) • m₂ + (0 : Rᵐᵒᵖ) • m₁ = 0 by rw [zero_smul, zero_add, zero_smul]
#align triv_sq_zero_ext.inr_mul_inr TrivSqZeroExt.inr_mul_inr

end

/- warning: triv_sq_zero_ext.inl_mul_inr -> TrivSqZeroExt.inl_mul_inr is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2] (r : R) (m : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasMul.{u1, u2} R M (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4)))))) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) r) (TrivSqZeroExt.inr.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) m)) (TrivSqZeroExt.inr.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (SMul.smul.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) r m))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2] (r : R) (m : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HMul.hMul.{max u1 u2, max u2 u1, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.mul.{u1, u2} R M (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.zero.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoidWithZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4)))))) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) r) (TrivSqZeroExt.inr.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) m)) (TrivSqZeroExt.inr.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HSMul.hSMul.{u1, u2, u2} R M M (instHSMul.{u1, u2} R M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3))))) r m))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_mul_inr TrivSqZeroExt.inl_mul_inrₓ'. -/
theorem inl_mul_inr [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M] (r : R) (m : M) :
    (inl r * inr m : tsze R M) = inr (r • m) :=
  ext (MulZeroClass.mul_zero r) <| show r • m + (0 : Rᵐᵒᵖ) • 0 = r • m by rw [smul_zero, add_zero]
#align triv_sq_zero_ext.inl_mul_inr TrivSqZeroExt.inl_mul_inr

/- warning: triv_sq_zero_ext.inr_mul_inl -> TrivSqZeroExt.inr_mul_inl is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2] (r : R) (m : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HMul.hMul.{max u1 u2, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasMul.{u1, u2} R M (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4)))))) (TrivSqZeroExt.inr.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) m) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) r)) (TrivSqZeroExt.inr.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (SMul.smul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4)))) (MulOpposite.op.{u1} R r) m))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2] (r : R) (m : M), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HMul.hMul.{max u2 u1, max u1 u2, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.{u1, u2} R M) (instHMul.{max u2 u1} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.mul.{u1, u2} R M (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.zero.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoidWithZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4)))))) (TrivSqZeroExt.inr.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) m) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) r)) (TrivSqZeroExt.inr.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (HSMul.hSMul.{u1, u2, u2} (MulOpposite.{u1} R) M M (instHSMul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.zero.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoidWithZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4))))) (MulOpposite.op.{u1} R r) m))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inr_mul_inl TrivSqZeroExt.inr_mul_inlₓ'. -/
theorem inr_mul_inl [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M] (r : R) (m : M) :
    (inr m * inl r : tsze R M) = inr (op r • m) :=
  ext (MulZeroClass.zero_mul r) <|
    show (0 : R) • 0 + op r • m = op r • m by rw [smul_zero, zero_add]
#align triv_sq_zero_ext.inr_mul_inl TrivSqZeroExt.inr_mul_inl

instance [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M] :
    MulOneClass (tsze R M) :=
  { TrivSqZeroExt.hasOne,
    TrivSqZeroExt.hasMul with
    one_mul := fun x =>
      ext (one_mul x.1) <|
        show (1 : R) • x.2 + op x.1 • 0 = x.2 by rw [one_smul, smul_zero, add_zero]
    mul_one := fun x =>
      ext (mul_one x.1) <|
        show (x.1 • 0 : M) + (1 : Rᵐᵒᵖ) • x.2 = x.2 by rw [smul_zero, zero_add, one_smul] }

instance [AddMonoidWithOne R] [AddMonoid M] : AddMonoidWithOne (tsze R M) :=
  { TrivSqZeroExt.addMonoid,
    TrivSqZeroExt.hasOne with
    natCast := fun n => inl n
    natCast_zero := by simp [Nat.cast]
    natCast_succ := fun _ => by ext <;> simp [Nat.cast] }

#print TrivSqZeroExt.fst_nat_cast /-
@[simp]
theorem fst_nat_cast [AddMonoidWithOne R] [AddMonoid M] (n : ℕ) : (n : tsze R M).fst = n :=
  rfl
#align triv_sq_zero_ext.fst_nat_cast TrivSqZeroExt.fst_nat_cast
-/

/- warning: triv_sq_zero_ext.snd_nat_cast -> TrivSqZeroExt.snd_nat_cast is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddMonoidWithOne.{u1} R] [_inst_2 : AddMonoid.{u2} M] (n : Nat), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M ((fun (a : Type) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{1, max (succ u1) (succ u2)} a b] => self.0) Nat (TrivSqZeroExt.{u1, u2} R M) (HasLiftT.mk.{1, max (succ u1) (succ u2)} Nat (TrivSqZeroExt.{u1, u2} R M) (CoeTCₓ.coe.{1, max (succ u1) (succ u2)} Nat (TrivSqZeroExt.{u1, u2} R M) (Nat.castCoe.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddMonoidWithOne.toNatCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addMonoidWithOne.{u1, u2} R M _inst_1 _inst_2))))) n)) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)))))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddMonoidWithOne.{u1} R] [_inst_2 : AddMonoid.{u2} M] (n : Nat), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (Nat.cast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddMonoidWithOne.toNatCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addMonoidWithOne.{u1, u2} R M _inst_1 _inst_2)) n)) (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (AddMonoid.toZero.{u2} M _inst_2)))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_nat_cast TrivSqZeroExt.snd_nat_castₓ'. -/
@[simp]
theorem snd_nat_cast [AddMonoidWithOne R] [AddMonoid M] (n : ℕ) : (n : tsze R M).snd = 0 :=
  rfl
#align triv_sq_zero_ext.snd_nat_cast TrivSqZeroExt.snd_nat_cast

/- warning: triv_sq_zero_ext.inl_nat_cast -> TrivSqZeroExt.inl_nat_cast is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddMonoidWithOne.{u1} R] [_inst_2 : AddMonoid.{u2} M] (n : Nat), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Nat R (HasLiftT.mk.{1, succ u1} Nat R (CoeTCₓ.coe.{1, succ u1} Nat R (Nat.castCoe.{u1} R (AddMonoidWithOne.toNatCast.{u1} R _inst_1)))) n)) ((fun (a : Type) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{1, max (succ u1) (succ u2)} a b] => self.0) Nat (TrivSqZeroExt.{u1, u2} R M) (HasLiftT.mk.{1, max (succ u1) (succ u2)} Nat (TrivSqZeroExt.{u1, u2} R M) (CoeTCₓ.coe.{1, max (succ u1) (succ u2)} Nat (TrivSqZeroExt.{u1, u2} R M) (Nat.castCoe.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddMonoidWithOne.toNatCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addMonoidWithOne.{u1, u2} R M _inst_1 _inst_2))))) n)
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddMonoidWithOne.{u1} R] [_inst_2 : AddMonoid.{u2} M] (n : Nat), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (Nat.cast.{u1} R (AddMonoidWithOne.toNatCast.{u1} R _inst_1) n)) (Nat.cast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddMonoidWithOne.toNatCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addMonoidWithOne.{u1, u2} R M _inst_1 _inst_2)) n)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_nat_cast TrivSqZeroExt.inl_nat_castₓ'. -/
@[simp]
theorem inl_nat_cast [AddMonoidWithOne R] [AddMonoid M] (n : ℕ) : (inl n : tsze R M) = n :=
  rfl
#align triv_sq_zero_ext.inl_nat_cast TrivSqZeroExt.inl_nat_cast

instance [AddGroupWithOne R] [AddGroup M] : AddGroupWithOne (tsze R M) :=
  { TrivSqZeroExt.addGroup,
    TrivSqZeroExt.addMonoidWithOne with
    intCast := fun z => inl z
    intCast_ofNat := fun n => ext (Int.cast_ofNat _) rfl
    intCast_negSucc := fun n => ext (Int.cast_negSucc _) neg_zero.symm }

/- warning: triv_sq_zero_ext.fst_int_cast -> TrivSqZeroExt.fst_int_cast is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddGroupWithOne.{u1} R] [_inst_2 : AddGroup.{u2} M] (z : Int), Eq.{succ u1} R (TrivSqZeroExt.fst.{u1, u2} R M ((fun (a : Type) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{1, max (succ u1) (succ u2)} a b] => self.0) Int (TrivSqZeroExt.{u1, u2} R M) (HasLiftT.mk.{1, max (succ u1) (succ u2)} Int (TrivSqZeroExt.{u1, u2} R M) (CoeTCₓ.coe.{1, max (succ u1) (succ u2)} Int (TrivSqZeroExt.{u1, u2} R M) (Int.castCoe.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddGroupWithOne.toHasIntCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addGroupWithOne.{u1, u2} R M _inst_1 _inst_2))))) z)) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int R (HasLiftT.mk.{1, succ u1} Int R (CoeTCₓ.coe.{1, succ u1} Int R (Int.castCoe.{u1} R (AddGroupWithOne.toHasIntCast.{u1} R _inst_1)))) z)
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddGroupWithOne.{u1} R] [_inst_2 : AddGroup.{u2} M] (z : Int), Eq.{succ u1} R (TrivSqZeroExt.fst.{u1, u2} R M (Int.cast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddGroupWithOne.toIntCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addGroupWithOne.{u1, u2} R M _inst_1 _inst_2)) z)) (Int.cast.{u1} R (AddGroupWithOne.toIntCast.{u1} R _inst_1) z)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.fst_int_cast TrivSqZeroExt.fst_int_castₓ'. -/
@[simp]
theorem fst_int_cast [AddGroupWithOne R] [AddGroup M] (z : ℤ) : (z : tsze R M).fst = z :=
  rfl
#align triv_sq_zero_ext.fst_int_cast TrivSqZeroExt.fst_int_cast

/- warning: triv_sq_zero_ext.snd_int_cast -> TrivSqZeroExt.snd_int_cast is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddGroupWithOne.{u1} R] [_inst_2 : AddGroup.{u2} M] (z : Int), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M ((fun (a : Type) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{1, max (succ u1) (succ u2)} a b] => self.0) Int (TrivSqZeroExt.{u1, u2} R M) (HasLiftT.mk.{1, max (succ u1) (succ u2)} Int (TrivSqZeroExt.{u1, u2} R M) (CoeTCₓ.coe.{1, max (succ u1) (succ u2)} Int (TrivSqZeroExt.{u1, u2} R M) (Int.castCoe.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddGroupWithOne.toHasIntCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addGroupWithOne.{u1, u2} R M _inst_1 _inst_2))))) z)) (OfNat.ofNat.{u2} M 0 (OfNat.mk.{u2} M 0 (Zero.zero.{u2} M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M _inst_2)))))))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddGroupWithOne.{u1} R] [_inst_2 : AddGroup.{u2} M] (z : Int), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (Int.cast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddGroupWithOne.toIntCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addGroupWithOne.{u1, u2} R M _inst_1 _inst_2)) z)) (OfNat.ofNat.{u2} M 0 (Zero.toOfNat0.{u2} M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (AddGroup.toSubtractionMonoid.{u2} M _inst_2))))))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_int_cast TrivSqZeroExt.snd_int_castₓ'. -/
@[simp]
theorem snd_int_cast [AddGroupWithOne R] [AddGroup M] (z : ℤ) : (z : tsze R M).snd = 0 :=
  rfl
#align triv_sq_zero_ext.snd_int_cast TrivSqZeroExt.snd_int_cast

/- warning: triv_sq_zero_ext.inl_int_cast -> TrivSqZeroExt.inl_int_cast is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddGroupWithOne.{u1} R] [_inst_2 : AddGroup.{u2} M] (z : Int), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (SubNegMonoid.toAddMonoid.{u2} M (AddGroup.toSubNegMonoid.{u2} M _inst_2)))) ((fun (a : Type) (b : Type.{u1}) [self : HasLiftT.{1, succ u1} a b] => self.0) Int R (HasLiftT.mk.{1, succ u1} Int R (CoeTCₓ.coe.{1, succ u1} Int R (Int.castCoe.{u1} R (AddGroupWithOne.toHasIntCast.{u1} R _inst_1)))) z)) ((fun (a : Type) (b : Sort.{max (succ u1) (succ u2)}) [self : HasLiftT.{1, max (succ u1) (succ u2)} a b] => self.0) Int (TrivSqZeroExt.{u1, u2} R M) (HasLiftT.mk.{1, max (succ u1) (succ u2)} Int (TrivSqZeroExt.{u1, u2} R M) (CoeTCₓ.coe.{1, max (succ u1) (succ u2)} Int (TrivSqZeroExt.{u1, u2} R M) (Int.castCoe.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddGroupWithOne.toHasIntCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addGroupWithOne.{u1, u2} R M _inst_1 _inst_2))))) z)
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : AddGroupWithOne.{u1} R] [_inst_2 : AddGroup.{u2} M] (z : Int), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.inl.{u1, u2} R M (NegZeroClass.toZero.{u2} M (SubNegZeroMonoid.toNegZeroClass.{u2} M (SubtractionMonoid.toSubNegZeroMonoid.{u2} M (AddGroup.toSubtractionMonoid.{u2} M _inst_2)))) (Int.cast.{u1} R (AddGroupWithOne.toIntCast.{u1} R _inst_1) z)) (Int.cast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (AddGroupWithOne.toIntCast.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.addGroupWithOne.{u1, u2} R M _inst_1 _inst_2)) z)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_int_cast TrivSqZeroExt.inl_int_castₓ'. -/
@[simp]
theorem inl_int_cast [AddGroupWithOne R] [AddGroup M] (z : ℤ) : (inl z : tsze R M) = z :=
  rfl
#align triv_sq_zero_ext.inl_int_cast TrivSqZeroExt.inl_int_cast

instance [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M] :
    NonAssocSemiring (tsze R M) :=
  { TrivSqZeroExt.addMonoidWithOne, TrivSqZeroExt.mulOneClass,
    TrivSqZeroExt.addCommMonoid with
    zero_mul := fun x =>
      ext (MulZeroClass.zero_mul x.1) <|
        show (0 : R) • x.2 + op x.1 • 0 = 0 by rw [zero_smul, zero_add, smul_zero]
    mul_zero := fun x =>
      ext (MulZeroClass.mul_zero x.1) <|
        show (x.1 • 0 : M) + (0 : Rᵐᵒᵖ) • x.2 = 0 by rw [smul_zero, zero_add, zero_smul]
    left_distrib := fun x₁ x₂ x₃ =>
      ext (mul_add x₁.1 x₂.1 x₃.1) <|
        show
          x₁.1 • (x₂.2 + x₃.2) + (op x₂.1 + op x₃.1) • x₁.2 =
            x₁.1 • x₂.2 + op x₂.1 • x₁.2 + (x₁.1 • x₃.2 + op x₃.1 • x₁.2)
          by simp_rw [smul_add, add_smul, add_add_add_comm]
    right_distrib := fun x₁ x₂ x₃ =>
      ext (add_mul x₁.1 x₂.1 x₃.1) <|
        show
          (x₁.1 + x₂.1) • x₃.2 + op x₃.1 • (x₁.2 + x₂.2) =
            x₁.1 • x₃.2 + op x₃.1 • x₁.2 + (x₂.1 • x₃.2 + op x₃.1 • x₂.2)
          by simp_rw [add_smul, smul_add, add_add_add_comm] }

instance [Ring R] [AddCommGroup M] [Module R M] [Module Rᵐᵒᵖ M] : NonAssocRing (tsze R M) :=
  { TrivSqZeroExt.addGroupWithOne, TrivSqZeroExt.nonAssocSemiring with }

/-- In the general non-commutative case, the power operator is

$$\begin{align}
(r + m)^n &= r^n + r^{n-1}m + r^{n-2}mr + \cdots + rmr^{n-2} + mr^{n-1} \\
          & =r^n + \sum_{i = 0}^{n - 1} r^{(n - 1) - i} m r^{i}
\end{align}$$

In the commutative case this becomes the simpler $(r + m)^n = r^n + nr^{n-1}m$.
-/
instance [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M] :
    Pow (tsze R M) ℕ :=
  ⟨fun x n =>
    ⟨x.fst ^ n, ((List.range n).map fun i => x.fst ^ (n.pred - i) • op (x.fst ^ i) • x.snd).Sum⟩⟩

#print TrivSqZeroExt.fst_pow /-
@[simp]
theorem fst_pow [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
    (x : tsze R M) (n : ℕ) : fst (x ^ n) = x.fst ^ n :=
  rfl
#align triv_sq_zero_ext.fst_pow TrivSqZeroExt.fst_pow
-/

/- warning: triv_sq_zero_ext.snd_pow_eq_sum -> TrivSqZeroExt.snd_pow_eq_sum is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] (x : TrivSqZeroExt.{u1, u2} R M) (n : Nat), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (HPow.hPow.{max u1 u2, 0, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.{u1, u2} R M) (instHPow.{max u1 u2, 0} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.Nat.hasPow.{u1, u2} R M _inst_1 _inst_2 _inst_3 _inst_4)) x n)) (List.sum.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (List.map.{0, u2} Nat M (fun (i : Nat) => SMul.smul.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R _inst_1)) (TrivSqZeroExt.fst.{u1, u2} R M x) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat Nat.hasSub) (Nat.pred n) i)) (SMul.smul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4))) (MulOpposite.op.{u1} R (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R _inst_1)) (TrivSqZeroExt.fst.{u1, u2} R M x) i)) (TrivSqZeroExt.snd.{u1, u2} R M x))) (List.range n)))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] (x : TrivSqZeroExt.{u1, u2} R M) (n : Nat), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (HPow.hPow.{max u1 u2, 0, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.{u1, u2} R M) (instHPow.{max u1 u2, 0} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.instPowTrivSqZeroExtNat.{u1, u2} R M _inst_1 _inst_2 _inst_3 _inst_4)) x n)) (List.sum.{u2} M (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (AddMonoid.toZero.{u2} M _inst_2) (List.map.{0, u2} Nat M (fun (i : Nat) => HSMul.hSMul.{u1, u2, u2} R M M (instHSMul.{u1, u2} R M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R _inst_1)) (TrivSqZeroExt.fst.{u1, u2} R M x) (HSub.hSub.{0, 0, 0} Nat Nat Nat (instHSub.{0} Nat instSubNat) (Nat.pred n) i)) (HSMul.hSMul.{u1, u2, u2} (MulOpposite.{u1} R) M M (instHSMul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4)))) (MulOpposite.op.{u1} R (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R _inst_1)) (TrivSqZeroExt.fst.{u1, u2} R M x) i)) (TrivSqZeroExt.snd.{u1, u2} R M x))) (List.range n)))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_pow_eq_sum TrivSqZeroExt.snd_pow_eq_sumₓ'. -/
theorem snd_pow_eq_sum [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
    (x : tsze R M) (n : ℕ) :
    snd (x ^ n) = ((List.range n).map fun i => x.fst ^ (n.pred - i) • op (x.fst ^ i) • x.snd).Sum :=
  rfl
#align triv_sq_zero_ext.snd_pow_eq_sum TrivSqZeroExt.snd_pow_eq_sum

/- warning: triv_sq_zero_ext.snd_pow_of_smul_comm -> TrivSqZeroExt.snd_pow_of_smul_comm is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] [_inst_5 : SMulCommClass.{u1, u1, u2} R (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4)))] (x : TrivSqZeroExt.{u1, u2} R M) (n : Nat), (Eq.{succ u2} M (SMul.smul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4))) (MulOpposite.op.{u1} R (TrivSqZeroExt.fst.{u1, u2} R M x)) (TrivSqZeroExt.snd.{u1, u2} R M x)) (SMul.smul.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (TrivSqZeroExt.fst.{u1, u2} R M x) (TrivSqZeroExt.snd.{u1, u2} R M x))) -> (Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (HPow.hPow.{max u1 u2, 0, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.{u1, u2} R M) (instHPow.{max u1 u2, 0} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.Nat.hasPow.{u1, u2} R M _inst_1 _inst_2 _inst_3 _inst_4)) x n)) (SMul.smul.{0, u2} Nat M (AddMonoid.SMul.{u2} M _inst_2) n (SMul.smul.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R _inst_1)) (TrivSqZeroExt.fst.{u1, u2} R M x) (Nat.pred n)) (TrivSqZeroExt.snd.{u1, u2} R M x))))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] [_inst_5 : SMulCommClass.{u1, u1, u2} R (MulOpposite.{u1} R) M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4)))] (x : TrivSqZeroExt.{u1, u2} R M) (n : Nat), (Eq.{succ u2} M (HSMul.hSMul.{u1, u2, u2} (MulOpposite.{u1} R) M M (instHSMul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4)))) (MulOpposite.op.{u1} R (TrivSqZeroExt.fst.{u1, u2} R M x)) (TrivSqZeroExt.snd.{u1, u2} R M x)) (HSMul.hSMul.{u1, u2, u2} R M M (instHSMul.{u1, u2} R M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (TrivSqZeroExt.fst.{u1, u2} R M x) (TrivSqZeroExt.snd.{u1, u2} R M x))) -> (Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (HPow.hPow.{max u1 u2, 0, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.{u1, u2} R M) (instHPow.{max u1 u2, 0} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.instPowTrivSqZeroExtNat.{u1, u2} R M _inst_1 _inst_2 _inst_3 _inst_4)) x n)) (HSMul.hSMul.{0, u2, u2} Nat M M (instHSMul.{0, u2} Nat M (AddMonoid.SMul.{u2} M _inst_2)) n (HSMul.hSMul.{u1, u2, u2} R M M (instHSMul.{u1, u2} R M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R _inst_1)) (TrivSqZeroExt.fst.{u1, u2} R M x) (Nat.pred n)) (TrivSqZeroExt.snd.{u1, u2} R M x))))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_pow_of_smul_comm TrivSqZeroExt.snd_pow_of_smul_commₓ'. -/
theorem snd_pow_of_smul_comm [Monoid R] [AddMonoid M] [DistribMulAction R M]
    [DistribMulAction Rᵐᵒᵖ M] [SMulCommClass R Rᵐᵒᵖ M] (x : tsze R M) (n : ℕ)
    (h : op x.fst • x.snd = x.fst • x.snd) : snd (x ^ n) = n • x.fst ^ n.pred • x.snd :=
  by
  have : ∀ n : ℕ, op (x.fst ^ n) • x.snd = x.fst ^ n • x.snd :=
    by
    intro n
    induction' n with n ih
    · simp
    ·
      rw [pow_succ', MulOpposite.op_mul, mul_smul, mul_smul, ← h,
        smul_comm (_ : R) (op x.fst) x.snd, ih]
  simp_rw [snd_pow_eq_sum, this, smul_smul, ← pow_add]
  cases n
  · rw [Nat.pred_zero, pow_zero, List.range_zero, zero_smul, List.map_nil, List.sum_nil]
  simp_rw [Nat.pred_succ]
  refine' (List.sum_eq_card_nsmul _ (x.fst ^ n • x.snd) _).trans _
  · rintro m hm
    simp_rw [List.mem_map, List.mem_range] at hm
    obtain ⟨i, hi, rfl⟩ := hm
    rw [tsub_add_cancel_of_le (nat.lt_succ_iff.mp hi)]
  · rw [List.length_map, List.length_range]
#align triv_sq_zero_ext.snd_pow_of_smul_comm TrivSqZeroExt.snd_pow_of_smul_comm

/- warning: triv_sq_zero_ext.snd_pow -> TrivSqZeroExt.snd_pow is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommMonoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M (CommMonoid.toMonoid.{u1} R _inst_1) _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)) _inst_2] [_inst_5 : IsCentralScalar.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M (CommMonoid.toMonoid.{u1} R _inst_1) _inst_2 _inst_3))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)) _inst_2 _inst_4)))] (x : TrivSqZeroExt.{u1, u2} R M) (n : Nat), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (HPow.hPow.{max u1 u2, 0, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.{u1, u2} R M) (instHPow.{max u1 u2, 0} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.Nat.hasPow.{u1, u2} R M (CommMonoid.toMonoid.{u1} R _inst_1) _inst_2 _inst_3 _inst_4)) x n)) (SMul.smul.{0, u2} Nat M (AddMonoid.SMul.{u2} M _inst_2) n (SMul.smul.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M (CommMonoid.toMonoid.{u1} R _inst_1) _inst_2 _inst_3))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) (TrivSqZeroExt.fst.{u1, u2} R M x) (Nat.pred n)) (TrivSqZeroExt.snd.{u1, u2} R M x)))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : CommMonoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M (CommMonoid.toMonoid.{u1} R _inst_1) _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)) _inst_2] [_inst_5 : IsCentralScalar.{u1, u2} R M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M (CommMonoid.toMonoid.{u1} R _inst_1) _inst_2 _inst_3))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1)) _inst_2 _inst_4)))] (x : TrivSqZeroExt.{u1, u2} R M) (n : Nat), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (HPow.hPow.{max u1 u2, 0, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.{u1, u2} R M) (instHPow.{max u1 u2, 0} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.instPowTrivSqZeroExtNat.{u1, u2} R M (CommMonoid.toMonoid.{u1} R _inst_1) _inst_2 _inst_3 _inst_4)) x n)) (HSMul.hSMul.{0, u2, u2} Nat M M (instHSMul.{0, u2} Nat M (AddMonoid.SMul.{u2} M _inst_2)) n (HSMul.hSMul.{u1, u2, u2} R M M (instHSMul.{u1, u2} R M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M (CommMonoid.toMonoid.{u1} R _inst_1) _inst_2 _inst_3)))) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R (CommMonoid.toMonoid.{u1} R _inst_1))) (TrivSqZeroExt.fst.{u1, u2} R M x) (Nat.pred n)) (TrivSqZeroExt.snd.{u1, u2} R M x)))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_pow TrivSqZeroExt.snd_powₓ'. -/
@[simp]
theorem snd_pow [CommMonoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
    [IsCentralScalar R M] (x : tsze R M) (n : ℕ) : snd (x ^ n) = n • x.fst ^ n.pred • x.snd :=
  snd_pow_of_smul_comm _ _ (op_smul_eq_smul _ _)
#align triv_sq_zero_ext.snd_pow TrivSqZeroExt.snd_pow

/- warning: triv_sq_zero_ext.inl_pow -> TrivSqZeroExt.inl_pow is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] (r : R) (n : Nat), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HPow.hPow.{max u1 u2, 0, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.{u1, u2} R M) (instHPow.{max u1 u2, 0} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.Nat.hasPow.{u1, u2} R M _inst_1 _inst_2 _inst_3 _inst_4)) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) r) n) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R _inst_1)) r n))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] (r : R) (n : Nat), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (HPow.hPow.{max u1 u2, 0, max u1 u2} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.{u1, u2} R M) (instHPow.{max u1 u2, 0} (TrivSqZeroExt.{u1, u2} R M) Nat (TrivSqZeroExt.instPowTrivSqZeroExtNat.{u1, u2} R M _inst_1 _inst_2 _inst_3 _inst_4)) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) r) n) (TrivSqZeroExt.inl.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (HPow.hPow.{u1, 0, u1} R Nat R (instHPow.{u1, 0} R Nat (Monoid.Pow.{u1} R _inst_1)) r n))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.inl_pow TrivSqZeroExt.inl_powₓ'. -/
@[simp]
theorem inl_pow [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M] (r : R)
    (n : ℕ) : (inl r ^ n : tsze R M) = inl (r ^ n) :=
  ext rfl <| by simp [snd_pow_eq_sum]
#align triv_sq_zero_ext.inl_pow TrivSqZeroExt.inl_pow

instance [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
    [SMulCommClass R Rᵐᵒᵖ M] : Monoid (tsze R M) :=
  {
    TrivSqZeroExt.mulOneClass with
    mul_assoc := fun x y z =>
      ext (mul_assoc x.1 y.1 z.1) <|
        show
          (x.1 * y.1) • z.2 + op z.1 • (x.1 • y.2 + op y.1 • x.2) =
            x.1 • (y.1 • z.2 + op z.1 • y.2) + (op z.1 * op y.1) • x.2
          by simp_rw [smul_add, ← mul_smul, add_assoc, smul_comm]
    npow := fun n x => x ^ n
    npow_zero := fun x => ext (pow_zero x.fst) (by simp [snd_pow_eq_sum])
    npow_succ := fun n x =>
      ext (pow_succ _ _)
        (by
          simp_rw [snd_mul, snd_pow_eq_sum, Nat.pred_succ]
          cases n
          · simp [List.range_succ]
          simp_rw [Nat.pred_succ]
          rw [List.range_succ, List.map_append, List.sum_append, List.map_singleton,
            List.sum_singleton, Nat.sub_self, pow_zero, one_smul, List.smul_sum, List.map_map,
            Function.comp, fst_pow]
          simp_rw [smul_smul, ← pow_succ, Nat.succ_eq_add_one]
          congr 2
          refine' List.map_congr fun i hi => _
          rw [List.mem_range, Nat.lt_succ_iff] at hi
          rw [Nat.sub_add_comm hi]) }

/- warning: triv_sq_zero_ext.fst_list_prod -> TrivSqZeroExt.fst_list_prod is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] [_inst_5 : SMulCommClass.{u1, u1, u2} R (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4)))] (l : List.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)), Eq.{succ u1} R (TrivSqZeroExt.fst.{u1, u2} R M (List.prod.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasMul.{u1, u2} R M (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (DistribSMul.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4)))) (TrivSqZeroExt.hasOne.{u1, u2} R M (MulOneClass.toHasOne.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2))) l)) (List.prod.{u1} R (MulOneClass.toHasMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (MulOneClass.toHasOne.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (List.map.{max u1 u2, u1} (TrivSqZeroExt.{u1, u2} R M) R (TrivSqZeroExt.fst.{u1, u2} R M) l))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Monoid.{u1} R] [_inst_2 : AddMonoid.{u2} M] [_inst_3 : DistribMulAction.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : DistribMulAction.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2] [_inst_5 : SMulCommClass.{u1, u1, u2} R (MulOpposite.{u1} R) M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4)))] (l : List.{max u2 u1} (TrivSqZeroExt.{u1, u2} R M)), Eq.{succ u1} R (TrivSqZeroExt.fst.{u1, u2} R M (List.prod.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.mul.{u1, u2} R M (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M _inst_2)) (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} R M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} R M _inst_1 _inst_2 _inst_3))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M _inst_2) (DistribSMul.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toAddZeroClass.{u2} M _inst_2) (DistribMulAction.toDistribSMul.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoid.{u1} R _inst_1) _inst_2 _inst_4)))) (TrivSqZeroExt.one.{u1, u2} R M (Monoid.toOne.{u1} R _inst_1) (AddMonoid.toZero.{u2} M _inst_2)) l)) (List.prod.{u1} R (MulOneClass.toMul.{u1} R (Monoid.toMulOneClass.{u1} R _inst_1)) (Monoid.toOne.{u1} R _inst_1) (List.map.{max u2 u1, u1} (TrivSqZeroExt.{u1, u2} R M) R (TrivSqZeroExt.fst.{u1, u2} R M) l))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.fst_list_prod TrivSqZeroExt.fst_list_prodₓ'. -/
theorem fst_list_prod [Monoid R] [AddMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
    [SMulCommClass R Rᵐᵒᵖ M] (l : List (tsze R M)) : l.Prod.fst = (l.map fst).Prod :=
  map_list_prod (⟨fst, fst_one, fst_mul⟩ : tsze R M →* R) _
#align triv_sq_zero_ext.fst_list_prod TrivSqZeroExt.fst_list_prod

instance [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M] [SMulCommClass R Rᵐᵒᵖ M] :
    Semiring (tsze R M) :=
  { TrivSqZeroExt.monoid, TrivSqZeroExt.nonAssocSemiring with }

/- warning: triv_sq_zero_ext.snd_list_prod -> TrivSqZeroExt.snd_list_prod is a dubious translation:
lean 3 declaration is
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2] [_inst_5 : SMulCommClass.{u1, u1, u2} R (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4))))] (l : List.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M)), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (List.prod.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.hasMul.{u1, u2} R M (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4))))) (TrivSqZeroExt.hasOne.{u1, u2} R M (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)))) l)) (List.sum.{u2} M (AddZeroClass.toHasAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (List.map.{max u1 u2, u2} (Prod.{0, max u1 u2} Nat (TrivSqZeroExt.{u1, u2} R M)) M (fun (x : Prod.{0, max u1 u2} Nat (TrivSqZeroExt.{u1, u2} R M)) => SMul.smul.{u1, u2} R M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (List.prod.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (List.take.{u1} R (Prod.fst.{0, max u1 u2} Nat (TrivSqZeroExt.{u1, u2} R M) x) (List.map.{max u1 u2, u1} (TrivSqZeroExt.{u1, u2} R M) R (TrivSqZeroExt.fst.{u1, u2} R M) l))) (SMul.smul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4)))) (MulOpposite.op.{u1} R (List.prod.{u1} R (Distrib.toHasMul.{u1} R (NonUnitalNonAssocSemiring.toDistrib.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (AddMonoidWithOne.toOne.{u1} R (AddCommMonoidWithOne.toAddMonoidWithOne.{u1} R (NonAssocSemiring.toAddCommMonoidWithOne.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1)))) (List.drop.{u1} R (Nat.succ (Prod.fst.{0, max u1 u2} Nat (TrivSqZeroExt.{u1, u2} R M) x)) (List.map.{max u1 u2, u1} (TrivSqZeroExt.{u1, u2} R M) R (TrivSqZeroExt.fst.{u1, u2} R M) l)))) (TrivSqZeroExt.snd.{u1, u2} R M (Prod.snd.{0, max u1 u2} Nat (TrivSqZeroExt.{u1, u2} R M) x)))) (List.enum.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) l)))
but is expected to have type
  forall {R : Type.{u1}} {M : Type.{u2}} [_inst_1 : Semiring.{u1} R] [_inst_2 : AddCommMonoid.{u2} M] [_inst_3 : Module.{u1, u2} R M _inst_1 _inst_2] [_inst_4 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2] [_inst_5 : SMulCommClass.{u1, u1, u2} R (MulOpposite.{u1} R) M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.zero.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoidWithZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4))))] (l : List.{max u2 u1} (TrivSqZeroExt.{u1, u2} R M)), Eq.{succ u2} M (TrivSqZeroExt.snd.{u1, u2} R M (List.prod.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.mul.{u1, u2} R M (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.zero.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoidWithZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4))))) (TrivSqZeroExt.one.{u1, u2} R M (Semiring.toOne.{u1} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) l)) (List.sum.{u2} M (AddZeroClass.toAdd.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (List.map.{max u1 u2, u2} (Prod.{0, max u2 u1} Nat (TrivSqZeroExt.{u1, u2} R M)) M (fun (x : Prod.{0, max u2 u1} Nat (TrivSqZeroExt.{u1, u2} R M)) => HSMul.hSMul.{u1, u2, u2} R M M (instHSMul.{u1, u2} R M (SMulZeroClass.toSMul.{u1, u2} R M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} R M (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_1) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} R M _inst_1 _inst_2 _inst_3))))) (List.prod.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Semiring.toOne.{u1} R _inst_1) (List.take.{u1} R (Prod.fst.{0, max u1 u2} Nat (TrivSqZeroExt.{u1, u2} R M) x) (List.map.{max u2 u1, u1} (TrivSqZeroExt.{u1, u2} R M) R (TrivSqZeroExt.fst.{u1, u2} R M) l))) (HSMul.hSMul.{u1, u2, u2} (MulOpposite.{u1} R) M M (instHSMul.{u1, u2} (MulOpposite.{u1} R) M (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R) M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.zero.{u1} R (MonoidWithZero.toZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.monoidWithZero.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_1)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_2)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_1) _inst_2 _inst_4))))) (MulOpposite.op.{u1} R (List.prod.{u1} R (NonUnitalNonAssocSemiring.toMul.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_1))) (Semiring.toOne.{u1} R _inst_1) (List.drop.{u1} R (Nat.succ (Prod.fst.{0, max u1 u2} Nat (TrivSqZeroExt.{u1, u2} R M) x)) (List.map.{max u2 u1, u1} (TrivSqZeroExt.{u1, u2} R M) R (TrivSqZeroExt.fst.{u1, u2} R M) l)))) (TrivSqZeroExt.snd.{u1, u2} R M (Prod.snd.{0, max u1 u2} Nat (TrivSqZeroExt.{u1, u2} R M) x)))) (List.enum.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) l)))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.snd_list_prod TrivSqZeroExt.snd_list_prodₓ'. -/
/-- The second element of a product $\prod_{i=0}^n (r_i + m_i)$ is a sum of terms of the form
$r_0\cdots r_{i-1}m_ir_{i+1}\cdots r_n$. -/
theorem snd_list_prod [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M]
    [SMulCommClass R Rᵐᵒᵖ M] (l : List (tsze R M)) :
    l.Prod.snd =
      (l.enum.map fun x : ℕ × tsze R M =>
          ((l.map fst).take x.1).Prod • op ((l.map fst).drop x.1.succ).Prod • x.snd.snd).Sum :=
  by
  induction' l with x xs ih
  · simp
  · rw [List.enum_cons, ← List.map_fst_add_enum_eq_enumFrom]
    simp_rw [List.map_cons, List.map_map, Function.comp, Prod.map_snd, Prod.map_fst, id,
      List.take_zero, List.take_cons, List.prod_nil, List.prod_cons, snd_mul, one_smul, List.drop,
      mul_smul, List.sum_cons, fst_list_prod, ih, List.smul_sum, List.map_map]
    exact add_comm _ _
#align triv_sq_zero_ext.snd_list_prod TrivSqZeroExt.snd_list_prod

instance [Ring R] [AddCommGroup M] [Module R M] [Module Rᵐᵒᵖ M] [SMulCommClass R Rᵐᵒᵖ M] :
    Ring (tsze R M) :=
  { TrivSqZeroExt.semiring, TrivSqZeroExt.nonAssocRing with }

instance [CommMonoid R] [AddCommMonoid M] [DistribMulAction R M] [DistribMulAction Rᵐᵒᵖ M]
    [IsCentralScalar R M] : CommMonoid (tsze R M) :=
  { TrivSqZeroExt.monoid with
    mul_comm := fun x₁ x₂ =>
      ext (mul_comm x₁.1 x₂.1) <|
        show x₁.1 • x₂.2 + op x₂.1 • x₁.2 = x₂.1 • x₁.2 + op x₁.1 • x₂.2 by
          rw [op_smul_eq_smul, op_smul_eq_smul, add_comm] }

instance [CommSemiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M] [IsCentralScalar R M] :
    CommSemiring (tsze R M) :=
  { TrivSqZeroExt.commMonoid, TrivSqZeroExt.nonAssocSemiring with }

instance [CommRing R] [AddCommGroup M] [Module R M] [Module Rᵐᵒᵖ M] [IsCentralScalar R M] :
    CommRing (tsze R M) :=
  { TrivSqZeroExt.nonAssocRing, TrivSqZeroExt.commSemiring with }

variable (R M)

#print TrivSqZeroExt.inlHom /-
/-- The canonical inclusion of rings `R → triv_sq_zero_ext R M`. -/
@[simps apply]
def inlHom [Semiring R] [AddCommMonoid M] [Module R M] [Module Rᵐᵒᵖ M] : R →+* tsze R M
    where
  toFun := inl
  map_one' := inl_one M
  map_mul' := inl_mul M
  map_zero' := inl_zero M
  map_add' := inl_add M
#align triv_sq_zero_ext.inl_hom TrivSqZeroExt.inlHom
-/

end Mul

section Algebra

variable (S : Type _) (R R' : Type u) (M : Type v)

variable [CommSemiring S] [Semiring R] [CommSemiring R'] [AddCommMonoid M]

variable [Algebra S R] [Algebra S R'] [Module S M]

variable [Module R M] [Module Rᵐᵒᵖ M] [SMulCommClass R Rᵐᵒᵖ M]

variable [IsScalarTower S R M] [IsScalarTower S Rᵐᵒᵖ M]

variable [Module R' M] [Module R'ᵐᵒᵖ M] [IsCentralScalar R' M] [IsScalarTower S R' M]

#print TrivSqZeroExt.algebra' /-
instance algebra' : Algebra S (tsze R M) :=
  {
    (TrivSqZeroExt.inlHom R M).comp
      (algebraMap S R) with
    smul := (· • ·)
    commutes' := fun s x =>
      ext (Algebra.commutes _ _) <|
        show algebraMap S R s • x.snd + op x.fst • 0 = x.fst • 0 + op (algebraMap S R s) • x.snd
          by
          rw [smul_zero, smul_zero, add_zero, zero_add]
          rw [Algebra.algebraMap_eq_smul_one, MulOpposite.op_smul, MulOpposite.op_one, smul_assoc,
            one_smul, smul_assoc, one_smul]
    smul_def' := fun r x =>
      ext (Algebra.smul_def _ _) <|
        show r • x.2 = algebraMap S R r • x.2 + op x.1 • 0 by
          rw [smul_zero, add_zero, algebraMap_smul] }
#align triv_sq_zero_ext.algebra' TrivSqZeroExt.algebra'
-/

-- shortcut instance for the common case
instance : Algebra R' (tsze R' M) :=
  TrivSqZeroExt.algebra' _ _ _

/- warning: triv_sq_zero_ext.algebra_map_eq_inl -> TrivSqZeroExt.algebraMap_eq_inl is a dubious translation:
lean 3 declaration is
  forall (R' : Type.{u1}) (M : Type.{u2}) [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))], Eq.{max (succ u1) (succ (max u1 u2))} (R' -> (TrivSqZeroExt.{u1, u2} R' M)) (coeFn.{max (succ u1) (succ (max u1 u2)), max (succ u1) (succ (max u1 u2))} (RingHom.{u1, max u1 u2} R' (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (Semiring.toNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))))) (fun (_x : RingHom.{u1, max u1 u2} R' (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (Semiring.toNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))))) => R' -> (TrivSqZeroExt.{u1, u2} R' M)) (RingHom.hasCoeToFun.{u1, max u1 u2} R' (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (Semiring.toNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))))) (algebraMap.{u1, max u1 u2} R' (TrivSqZeroExt.{u1, u2} R' M) _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15))) (TrivSqZeroExt.inl.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))))
but is expected to have type
  forall (R' : Type.{u1}) (M : Type.{u2}) [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.zero.{u1} R' (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.monoidWithZero.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))], Eq.{max (succ u1) (succ u2)} (forall (ᾰ : R'), (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R') => TrivSqZeroExt.{u1, u2} R' M) ᾰ) (FunLike.coe.{max (succ u1) (succ u2), succ u1, max (succ u1) (succ u2)} (RingHom.{u1, max u2 u1} R' (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (Semiring.toNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))))) R' (fun (_x : R') => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : R') => TrivSqZeroExt.{u1, u2} R' M) _x) (MulHomClass.toFunLike.{max u1 u2, u1, max u1 u2} (RingHom.{u1, max u2 u1} R' (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (Semiring.toNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))))) R' (TrivSqZeroExt.{u1, u2} R' M) (NonUnitalNonAssocSemiring.toMul.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (NonUnitalNonAssocSemiring.toMul.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))))))))) (NonUnitalRingHomClass.toMulHomClass.{max u1 u2, u1, max u1 u2} (RingHom.{u1, max u2 u1} R' (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (Semiring.toNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))))) R' (TrivSqZeroExt.{u1, u2} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))))) (RingHomClass.toNonUnitalRingHomClass.{max u1 u2, u1, max u1 u2} (RingHom.{u1, max u2 u1} R' (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (Semiring.toNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))))) R' (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (Semiring.toNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))))))) (RingHom.instRingHomClassRingHom.{u1, max u1 u2} R' (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (Semiring.toNonAssocSemiring.{max u2 u1} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))))))))))) (algebraMap.{u1, max u2 u1} R' (TrivSqZeroExt.{u1, u2} R' M) _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15))) (TrivSqZeroExt.inl.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.algebra_map_eq_inl TrivSqZeroExt.algebraMap_eq_inlₓ'. -/
theorem algebraMap_eq_inl : ⇑(algebraMap R' (tsze R' M)) = inl :=
  rfl
#align triv_sq_zero_ext.algebra_map_eq_inl TrivSqZeroExt.algebraMap_eq_inl

#print TrivSqZeroExt.algebraMap_eq_inlHom /-
theorem algebraMap_eq_inlHom : algebraMap R' (tsze R' M) = inlHom R' M :=
  rfl
#align triv_sq_zero_ext.algebra_map_eq_inl_hom TrivSqZeroExt.algebraMap_eq_inlHom
-/

/- warning: triv_sq_zero_ext.algebra_map_eq_inl' -> TrivSqZeroExt.algebraMap_eq_inl' is a dubious translation:
lean 3 declaration is
  forall (S : Type.{u3}) (R : Type.{u1}) (M : Type.{u2}) [_inst_1 : CommSemiring.{u3} S] [_inst_2 : Semiring.{u1} R] [_inst_4 : AddCommMonoid.{u2} M] [_inst_5 : Algebra.{u3, u1} S R _inst_1 _inst_2] [_inst_7 : Module.{u3, u2} S M (CommSemiring.toSemiring.{u3} S _inst_1) _inst_4] [_inst_8 : Module.{u1, u2} R M _inst_2 _inst_4] [_inst_9 : Module.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_2) _inst_4] [_inst_10 : SMulCommClass.{u1, u1, u2} R (MulOpposite.{u1} R) M (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_2)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_2) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R M _inst_2 _inst_4 _inst_8)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_2))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_2)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_2) _inst_4 _inst_9))))] [_inst_11 : IsScalarTower.{u3, u1, u2} S R M (SMulZeroClass.toHasSmul.{u3, u1} S R (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)))))) (SMulWithZero.toSmulZeroClass.{u3, u1} S R (MulZeroClass.toHasZero.{u3} S (MulZeroOneClass.toMulZeroClass.{u3} S (MonoidWithZero.toMulZeroOneClass.{u3} S (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1))))) (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)))))) (MulActionWithZero.toSMulWithZero.{u3, u1} S R (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)))))) (Module.toMulActionWithZero.{u3, u1} S R (CommSemiring.toSemiring.{u3} S _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (Algebra.toModule.{u3, u1} S R _inst_1 _inst_2 _inst_5))))) (SMulZeroClass.toHasSmul.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R M (MulZeroClass.toHasZero.{u1} R (MulZeroOneClass.toMulZeroClass.{u1} R (MonoidWithZero.toMulZeroOneClass.{u1} R (Semiring.toMonoidWithZero.{u1} R _inst_2)))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R M (Semiring.toMonoidWithZero.{u1} R _inst_2) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R M _inst_2 _inst_4 _inst_8)))) (SMulZeroClass.toHasSmul.{u3, u2} S M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u3, u2} S M (MulZeroClass.toHasZero.{u3} S (MulZeroOneClass.toMulZeroClass.{u3} S (MonoidWithZero.toMulZeroOneClass.{u3} S (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u3, u2} S M (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u3, u2} S M (CommSemiring.toSemiring.{u3} S _inst_1) _inst_4 _inst_7))))] [_inst_12 : IsScalarTower.{u3, u1, u2} S (MulOpposite.{u1} R) M (MulOpposite.hasSmul.{u1, u3} R S (SMulZeroClass.toHasSmul.{u3, u1} S R (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)))))) (SMulWithZero.toSmulZeroClass.{u3, u1} S R (MulZeroClass.toHasZero.{u3} S (MulZeroOneClass.toMulZeroClass.{u3} S (MonoidWithZero.toMulZeroOneClass.{u3} S (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1))))) (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)))))) (MulActionWithZero.toSMulWithZero.{u3, u1} S R (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (AddZeroClass.toHasZero.{u1} R (AddMonoid.toAddZeroClass.{u1} R (AddCommMonoid.toAddMonoid.{u1} R (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2)))))) (Module.toMulActionWithZero.{u3, u1} S R (CommSemiring.toSemiring.{u3} S _inst_1) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R (Semiring.toNonAssocSemiring.{u1} R _inst_2))) (Algebra.toModule.{u3, u1} S R _inst_1 _inst_2 _inst_5)))))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R) M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R) M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R) (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R) (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R) (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_2))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R) M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R) (MulOpposite.semiring.{u1} R _inst_2)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R) M (MulOpposite.semiring.{u1} R _inst_2) _inst_4 _inst_9)))) (SMulZeroClass.toHasSmul.{u3, u2} S M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u3, u2} S M (MulZeroClass.toHasZero.{u3} S (MulZeroOneClass.toMulZeroClass.{u3} S (MonoidWithZero.toMulZeroOneClass.{u3} S (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u3, u2} S M (Semiring.toMonoidWithZero.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u3, u2} S M (CommSemiring.toSemiring.{u3} S _inst_1) _inst_4 _inst_7))))] (s : S), Eq.{max (succ u1) (succ u2)} (TrivSqZeroExt.{u1, u2} R M) (coeFn.{max (succ u3) (succ (max u1 u2)), max (succ u3) (succ (max u1 u2))} (RingHom.{u3, max u1 u2} S (TrivSqZeroExt.{u1, u2} R M) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.semiring.{u1, u2} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10))) (fun (_x : RingHom.{u3, max u1 u2} S (TrivSqZeroExt.{u1, u2} R M) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.semiring.{u1, u2} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10))) => S -> (TrivSqZeroExt.{u1, u2} R M)) (RingHom.hasCoeToFun.{u3, max u1 u2} S (TrivSqZeroExt.{u1, u2} R M) (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (Semiring.toNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R M) (TrivSqZeroExt.semiring.{u1, u2} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10))) (algebraMap.{u3, max u1 u2} S (TrivSqZeroExt.{u1, u2} R M) _inst_1 (TrivSqZeroExt.semiring.{u1, u2} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10) (TrivSqZeroExt.algebra'.{u1, u2, u3} S R M _inst_1 _inst_2 _inst_4 _inst_5 _inst_7 _inst_8 _inst_9 _inst_10 _inst_11 _inst_12)) s) (TrivSqZeroExt.inl.{u1, u2} R M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (coeFn.{max (succ u3) (succ u1), max (succ u3) (succ u1)} (RingHom.{u3, u1} S R (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (fun (_x : RingHom.{u3, u1} S R (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) => S -> R) (RingHom.hasCoeToFun.{u3, u1} S R (Semiring.toNonAssocSemiring.{u3} S (CommSemiring.toSemiring.{u3} S _inst_1)) (Semiring.toNonAssocSemiring.{u1} R _inst_2)) (algebraMap.{u3, u1} S R _inst_1 _inst_2 _inst_5) s))
but is expected to have type
  forall (S : Type.{u1}) (R : Type.{u2}) (M : Type.{u3}) [_inst_1 : CommSemiring.{u1} S] [_inst_2 : Semiring.{u2} R] [_inst_4 : AddCommMonoid.{u3} M] [_inst_5 : Algebra.{u1, u2} S R _inst_1 _inst_2] [_inst_7 : Module.{u1, u3} S M (CommSemiring.toSemiring.{u1} S _inst_1) _inst_4] [_inst_8 : Module.{u2, u3} R M _inst_2 _inst_4] [_inst_9 : Module.{u2, u3} (MulOpposite.{u2} R) M (MulOpposite.semiring.{u2} R _inst_2) _inst_4] [_inst_10 : SMulCommClass.{u2, u2, u3} R (MulOpposite.{u2} R) M (SMulZeroClass.toSMul.{u2, u3} R M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R M (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_2)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R M (Semiring.toMonoidWithZero.{u2} R _inst_2) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R M _inst_2 _inst_4 _inst_8)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R) M (MulOpposite.zero.{u2} R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_2))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R) M (MulOpposite.monoidWithZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_2)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R) M (MulOpposite.semiring.{u2} R _inst_2) _inst_4 _inst_9))))] [_inst_11 : IsScalarTower.{u1, u2, u3} S R M (Algebra.toSMul.{u1, u2} S R _inst_1 _inst_2 _inst_5) (SMulZeroClass.toSMul.{u2, u3} R M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R M (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_2)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R M (Semiring.toMonoidWithZero.{u2} R _inst_2) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R M _inst_2 _inst_4 _inst_8)))) (SMulZeroClass.toSMul.{u1, u3} S M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u3} S M (CommMonoidWithZero.toZero.{u1} S (CommSemiring.toCommMonoidWithZero.{u1} S _inst_1)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u3} S M (Semiring.toMonoidWithZero.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u1, u3} S M (CommSemiring.toSemiring.{u1} S _inst_1) _inst_4 _inst_7))))] [_inst_12 : IsScalarTower.{u1, u2, u3} S (MulOpposite.{u2} R) M (MulOpposite.smul.{u2, u1} R S (Algebra.toSMul.{u1, u2} S R _inst_1 _inst_2 _inst_5)) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R) M (MulOpposite.zero.{u2} R (MonoidWithZero.toZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_2))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R) M (MulOpposite.monoidWithZero.{u2} R (Semiring.toMonoidWithZero.{u2} R _inst_2)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R) M (MulOpposite.semiring.{u2} R _inst_2) _inst_4 _inst_9)))) (SMulZeroClass.toSMul.{u1, u3} S M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u3} S M (CommMonoidWithZero.toZero.{u1} S (CommSemiring.toCommMonoidWithZero.{u1} S _inst_1)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u3} S M (Semiring.toMonoidWithZero.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u1, u3} S M (CommSemiring.toSemiring.{u1} S _inst_1) _inst_4 _inst_7))))] (s : S), Eq.{max (succ u2) (succ u3)} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => TrivSqZeroExt.{u2, u3} R M) s) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), succ u1, max (succ u2) (succ u3)} (RingHom.{u1, max u3 u2} S (TrivSqZeroExt.{u2, u3} R M) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{max u3 u2} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.semiring.{u2, u3} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10))) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => TrivSqZeroExt.{u2, u3} R M) _x) (MulHomClass.toFunLike.{max (max u2 u3) u1, u1, max u2 u3} (RingHom.{u1, max u3 u2} S (TrivSqZeroExt.{u2, u3} R M) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{max u3 u2} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.semiring.{u2, u3} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10))) S (TrivSqZeroExt.{u2, u3} R M) (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{max u2 u3} (TrivSqZeroExt.{u2, u3} R M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R M) (Semiring.toNonAssocSemiring.{max u3 u2} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.semiring.{u2, u3} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10)))) (NonUnitalRingHomClass.toMulHomClass.{max (max u2 u3) u1, u1, max u2 u3} (RingHom.{u1, max u3 u2} S (TrivSqZeroExt.{u2, u3} R M) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{max u3 u2} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.semiring.{u2, u3} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10))) S (TrivSqZeroExt.{u2, u3} R M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R M) (Semiring.toNonAssocSemiring.{max u3 u2} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.semiring.{u2, u3} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10))) (RingHomClass.toNonUnitalRingHomClass.{max (max u2 u3) u1, u1, max u2 u3} (RingHom.{u1, max u3 u2} S (TrivSqZeroExt.{u2, u3} R M) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{max u3 u2} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.semiring.{u2, u3} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10))) S (TrivSqZeroExt.{u2, u3} R M) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{max u3 u2} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.semiring.{u2, u3} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10)) (RingHom.instRingHomClassRingHom.{u1, max u2 u3} S (TrivSqZeroExt.{u2, u3} R M) (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{max u3 u2} (TrivSqZeroExt.{u2, u3} R M) (TrivSqZeroExt.semiring.{u2, u3} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10)))))) (algebraMap.{u1, max u3 u2} S (TrivSqZeroExt.{u2, u3} R M) _inst_1 (TrivSqZeroExt.semiring.{u2, u3} R M _inst_2 _inst_4 _inst_8 _inst_9 _inst_10) (TrivSqZeroExt.algebra'.{u2, u3, u1} S R M _inst_1 _inst_2 _inst_4 _inst_5 _inst_7 _inst_8 _inst_9 _inst_10 _inst_11 _inst_12)) s) (TrivSqZeroExt.inl.{u2, u3} ((fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) s) M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (FunLike.coe.{max (succ u2) (succ u1), succ u1, succ u2} (RingHom.{u1, u2} S R (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{u2} R _inst_2)) S (fun (_x : S) => (fun (x._@.Mathlib.Algebra.Hom.Group._hyg.2391 : S) => R) _x) (MulHomClass.toFunLike.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{u2} R _inst_2)) S R (NonUnitalNonAssocSemiring.toMul.{u1} S (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)))) (NonUnitalNonAssocSemiring.toMul.{u2} R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_2))) (NonUnitalRingHomClass.toMulHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{u2} R _inst_2)) S R (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} S (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1))) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u2} R (Semiring.toNonAssocSemiring.{u2} R _inst_2)) (RingHomClass.toNonUnitalRingHomClass.{max u2 u1, u1, u2} (RingHom.{u1, u2} S R (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{u2} R _inst_2)) S R (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{u2} R _inst_2) (RingHom.instRingHomClassRingHom.{u1, u2} S R (Semiring.toNonAssocSemiring.{u1} S (CommSemiring.toSemiring.{u1} S _inst_1)) (Semiring.toNonAssocSemiring.{u2} R _inst_2))))) (algebraMap.{u1, u2} S R _inst_1 _inst_2 _inst_5) s))
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.algebra_map_eq_inl' TrivSqZeroExt.algebraMap_eq_inl'ₓ'. -/
theorem algebraMap_eq_inl' (s : S) : algebraMap S (tsze R M) s = inl (algebraMap S R s) :=
  rfl
#align triv_sq_zero_ext.algebra_map_eq_inl' TrivSqZeroExt.algebraMap_eq_inl'

#print TrivSqZeroExt.fstHom /-
/-- The canonical `R`-algebra projection `triv_sq_zero_ext R M → R`. -/
@[simps]
def fstHom : tsze R M →ₐ[S] R where
  toFun := fst
  map_one' := fst_one
  map_mul' := fst_mul
  map_zero' := fst_zero
  map_add' := fst_add
  commutes' r := fst_inl M _
#align triv_sq_zero_ext.fst_hom TrivSqZeroExt.fstHom
-/

variable {R R' S M}

/- warning: triv_sq_zero_ext.alg_hom_ext -> TrivSqZeroExt.algHom_ext is a dubious translation:
lean 3 declaration is
  forall {R' : Type.{u1}} {M : Type.{u2}} [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u3}} [_inst_17 : Semiring.{u3} A] [_inst_18 : Algebra.{u1, u3} R' A _inst_3 _inst_17] {{f : AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18}} {{g : AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18}}, (forall (m : M), Eq.{succ u3} A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (fun (_x : AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) => (TrivSqZeroExt.{u1, u2} R' M) -> A) ([anonymous].{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) f (TrivSqZeroExt.inr.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) m)) (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (fun (_x : AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) => (TrivSqZeroExt.{u1, u2} R' M) -> A) ([anonymous].{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) g (TrivSqZeroExt.inr.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) m))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) f g)
but is expected to have type
  forall {R' : Type.{u2}} {M : Type.{u3}} [_inst_3 : CommSemiring.{u2} R'] [_inst_4 : AddCommMonoid.{u3} M] [_inst_13 : Module.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4] [_inst_14 : Module.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u2, u3} R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.zero.{u2} R' (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.monoidWithZero.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u1}} [_inst_17 : Semiring.{u1} A] [_inst_18 : Algebra.{u2, u1} R' A _inst_3 _inst_17] {{f : AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18}} {{g : AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18}}, (forall (m : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : TrivSqZeroExt.{u2, u3} R' M) => A) (TrivSqZeroExt.inr.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) m)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (TrivSqZeroExt.{u2, u3} R' M) (fun (_x : TrivSqZeroExt.{u2, u3} R' M) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : TrivSqZeroExt.{u2, u3} R' M) => A) _x) (SMulHomClass.toFunLike.{max (max u2 u3) u1, u2, max u2 u3, u1} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) R' (TrivSqZeroExt.{u2, u3} R' M) A (SMulZeroClass.toSMul.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (AddMonoid.toZero.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (AddMonoid.toAddZeroClass.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))))) (DistribMulAction.toDistribSMul.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))))))) (Module.toDistribMulAction.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)))))) (SMulZeroClass.toSMul.{u2, u1} R' A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))))) (DistribSMul.toSMulZeroClass.{u2, u1} R' A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))))) (DistribMulAction.toDistribSMul.{u2, u1} R' A (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17)))) (Module.toDistribMulAction.{u2, u1} R' A (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u3) u1, u2, max u2 u3, u1} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) R' (TrivSqZeroExt.{u2, u3} R' M) A (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17)))) (Module.toDistribMulAction.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15))) (Module.toDistribMulAction.{u2, u1} R' A (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) (SemilinearMapClass.distribMulActionHomClass.{u2, max u2 u3, u1, max (max u2 u3) u1} R' (TrivSqZeroExt.{u2, u3} R' M) A (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (AlgHomClass.linearMapClass.{u2, max u2 u3, u1, max (max u2 u3) u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18 (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (AlgHom.algHomClass.{u2, max u2 u3, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18))))) f (TrivSqZeroExt.inr.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) m)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (TrivSqZeroExt.{u2, u3} R' M) (fun (_x : TrivSqZeroExt.{u2, u3} R' M) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : TrivSqZeroExt.{u2, u3} R' M) => A) _x) (SMulHomClass.toFunLike.{max (max u2 u3) u1, u2, max u2 u3, u1} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) R' (TrivSqZeroExt.{u2, u3} R' M) A (SMulZeroClass.toSMul.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (AddMonoid.toZero.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (AddMonoid.toAddZeroClass.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))))) (DistribMulAction.toDistribSMul.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))))))) (Module.toDistribMulAction.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)))))) (SMulZeroClass.toSMul.{u2, u1} R' A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))))) (DistribSMul.toSMulZeroClass.{u2, u1} R' A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))))) (DistribMulAction.toDistribSMul.{u2, u1} R' A (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17)))) (Module.toDistribMulAction.{u2, u1} R' A (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u3) u1, u2, max u2 u3, u1} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) R' (TrivSqZeroExt.{u2, u3} R' M) A (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17)))) (Module.toDistribMulAction.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15))) (Module.toDistribMulAction.{u2, u1} R' A (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) (SemilinearMapClass.distribMulActionHomClass.{u2, max u2 u3, u1, max (max u2 u3) u1} R' (TrivSqZeroExt.{u2, u3} R' M) A (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (AlgHomClass.linearMapClass.{u2, max u2 u3, u1, max (max u2 u3) u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18 (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (AlgHom.algHomClass.{u2, max u2 u3, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18))))) g (TrivSqZeroExt.inr.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) m))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) f g)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.alg_hom_ext TrivSqZeroExt.algHom_extₓ'. -/
theorem algHom_ext {A} [Semiring A] [Algebra R' A] ⦃f g : tsze R' M →ₐ[R'] A⦄
    (h : ∀ m, f (inr m) = g (inr m)) : f = g :=
  AlgHom.toLinearMap_injective <|
    linearMap_ext (fun r => (f.commutes _).trans (g.commutes _).symm) h
#align triv_sq_zero_ext.alg_hom_ext TrivSqZeroExt.algHom_ext

/- warning: triv_sq_zero_ext.alg_hom_ext' -> TrivSqZeroExt.algHom_ext' is a dubious translation:
lean 3 declaration is
  forall {R' : Type.{u1}} {M : Type.{u2}} [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u3}} [_inst_17 : Semiring.{u3} A] [_inst_18 : Algebra.{u1, u3} R' A _inst_3 _inst_17] {{f : AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18}} {{g : AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18}}, (Eq.{max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (LinearMap.comp.{u1, u1, u1, u2, max u1 u2, u3} R' R' R' M (TrivSqZeroExt.{u1, u2} R' M) A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))))))))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, max u1 u2} R' (TrivSqZeroExt.{u1, u2} R' M) _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (RingHomCompTriple.right_ids.{u1, u1} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AlgHom.toLinearMap.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18 f) (TrivSqZeroExt.inrHom.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)) (LinearMap.comp.{u1, u1, u1, u2, max u1 u2, u3} R' R' R' M (TrivSqZeroExt.{u1, u2} R' M) A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))))))))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, max u1 u2} R' (TrivSqZeroExt.{u1, u2} R' M) _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (RingHomCompTriple.right_ids.{u1, u1} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AlgHom.toLinearMap.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18 g) (TrivSqZeroExt.inrHom.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) -> (Eq.{max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.algebra.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Mul.toSMul.{u1} R' (Distrib.toHasMul.{u1} R' (NonUnitalNonAssocSemiring.toDistrib.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (MulAction.toHasSmul.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) f g)
but is expected to have type
  forall {R' : Type.{u2}} {M : Type.{u3}} [_inst_3 : CommSemiring.{u2} R'] [_inst_4 : AddCommMonoid.{u3} M] [_inst_13 : Module.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4] [_inst_14 : Module.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u2, u3} R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.zero.{u2} R' (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.monoidWithZero.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u1}} [_inst_17 : Semiring.{u1} A] [_inst_18 : Algebra.{u2, u1} R' A _inst_3 _inst_17] {{f : AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18}} {{g : AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18}}, (Eq.{max (succ u3) (succ u1)} (LinearMap.{u2, u2, u3, u1} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) (LinearMap.comp.{u2, u2, u2, u3, max u2 u3, u1} R' R' R' M (TrivSqZeroExt.{u2, u3} R' M) A (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (RingHomCompTriple.ids.{u2, u2} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AlgHom.toLinearMap.{u2, max u2 u3, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18 f) (TrivSqZeroExt.inrHom.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)) (LinearMap.comp.{u2, u2, u2, u3, max u2 u3, u1} R' R' R' M (TrivSqZeroExt.{u2, u3} R' M) A (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (RingHomCompTriple.ids.{u2, u2} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AlgHom.toLinearMap.{u2, max u2 u3, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18 g) (TrivSqZeroExt.inrHom.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))) -> (Eq.{max (max (succ u2) (succ u3)) (succ u1)} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) f g)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.alg_hom_ext' TrivSqZeroExt.algHom_ext'ₓ'. -/
@[ext]
theorem algHom_ext' {A} [Semiring A] [Algebra R' A] ⦃f g : tsze R' M →ₐ[R'] A⦄
    (h : f.toLinearMap.comp (inrHom R' M) = g.toLinearMap.comp (inrHom R' M)) : f = g :=
  algHom_ext <| LinearMap.congr_fun h
#align triv_sq_zero_ext.alg_hom_ext' TrivSqZeroExt.algHom_ext'

variable {A : Type _} [Semiring A] [Algebra R' A]

/- warning: triv_sq_zero_ext.lift_aux -> TrivSqZeroExt.liftAux is a dubious translation:
lean 3 declaration is
  forall {R' : Type.{u1}} {M : Type.{u2}} [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u3}} [_inst_17 : Semiring.{u3} A] [_inst_18 : Algebra.{u1, u3} R' A _inst_3 _inst_17] (f : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)), (forall (x : M) (y : M), Eq.{succ u3} A (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (Distrib.toHasMul.{u3} A (NonUnitalNonAssocSemiring.toDistrib.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))))) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (_x : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => M -> A) (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f x) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (_x : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => M -> A) (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f y)) (OfNat.ofNat.{u3} A 0 (OfNat.mk.{u3} A 0 (Zero.zero.{u3} A (MulZeroClass.toHasZero.{u3} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17)))))))) -> (AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (TrivSqZeroExt.liftAux._proof_1.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18)
but is expected to have type
  forall {R' : Type.{u1}} {M : Type.{u2}} [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.zero.{u1} R' (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.monoidWithZero.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u3}} [_inst_17 : Semiring.{u3} A] [_inst_18 : Algebra.{u1, u3} R' A _inst_3 _inst_17] (f : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)), (forall (x : M) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) y) ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (NonUnitalNonAssocSemiring.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (Semiring.toNonAssocSemiring.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) _inst_17)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f y)) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (MonoidWithZero.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (Semiring.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) _inst_17))))) -> (AlgHom.{u1, max u2 u1, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.lift_aux TrivSqZeroExt.liftAuxₓ'. -/
/-- There is an alg_hom from the trivial square zero extension to any `R`-algebra with a submodule
whose products are all zero.

See `triv_sq_zero_ext.lift` for this as an equiv. -/
def liftAux (f : M →ₗ[R'] A) (hf : ∀ x y, f x * f y = 0) : tsze R' M →ₐ[R'] A :=
  AlgHom.ofLinearMap
    ((Algebra.linearMap _ _).comp (fstHom R' R' M).toLinearMap + f.comp (sndHom R' M))
    (show algebraMap R' _ 1 + f (0 : M) = 1 by rw [map_zero, map_one, add_zero])
    (TrivSqZeroExt.ind fun r₁ m₁ =>
      TrivSqZeroExt.ind fun r₂ m₂ => by
        dsimp
        simp only [add_zero, zero_add, add_mul, mul_add, smul_mul_smul, hf, smul_zero,
          op_smul_eq_smul]
        rw [← RingHom.map_mul, LinearMap.map_add, ← Algebra.commutes _ (f _), ← Algebra.smul_def, ←
          Algebra.smul_def, add_right_comm, add_assoc, LinearMap.map_smul, LinearMap.map_smul])
#align triv_sq_zero_ext.lift_aux TrivSqZeroExt.liftAux

/- warning: triv_sq_zero_ext.lift_aux_apply_inr -> TrivSqZeroExt.liftAux_apply_inr is a dubious translation:
lean 3 declaration is
  forall {R' : Type.{u1}} {M : Type.{u2}} [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u3}} [_inst_17 : Semiring.{u3} A] [_inst_18 : Algebra.{u1, u3} R' A _inst_3 _inst_17] (f : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (hf : forall (x : M) (y : M), Eq.{succ u3} A (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (Distrib.toHasMul.{u3} A (NonUnitalNonAssocSemiring.toDistrib.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))))) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (_x : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => M -> A) (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f x) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (_x : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => M -> A) (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f y)) (OfNat.ofNat.{u3} A 0 (OfNat.mk.{u3} A 0 (Zero.zero.{u3} A (MulZeroClass.toHasZero.{u3} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17)))))))) (m : M), Eq.{succ u3} A (coeFn.{max (succ (max u1 u2)) (succ u3), max (succ (max u1 u2)) (succ u3)} (AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (TrivSqZeroExt.liftAux._proof_1.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (fun (_x : AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (TrivSqZeroExt.liftAux._proof_1.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) => (TrivSqZeroExt.{u1, u2} R' M) -> A) ([anonymous].{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (TrivSqZeroExt.liftAux._proof_1.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (TrivSqZeroExt.liftAux.{u1, u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15 A _inst_17 _inst_18 f hf) (TrivSqZeroExt.inr.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} R' (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) m)) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (_x : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => M -> A) (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f m)
but is expected to have type
  forall {R' : Type.{u2}} {M : Type.{u3}} [_inst_3 : CommSemiring.{u2} R'] [_inst_4 : AddCommMonoid.{u3} M] [_inst_13 : Module.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4] [_inst_14 : Module.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u2, u3} R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.zero.{u2} R' (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.monoidWithZero.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u1}} [_inst_17 : Semiring.{u1} A] [_inst_18 : Algebra.{u2, u1} R' A _inst_3 _inst_17] (f : LinearMap.{u2, u2, u3, u1} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) (hf : forall (x : M) (y : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) y) ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) _inst_17)))) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (LinearMap.{u2, u2, u3, u1} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u3, u1} R' R' M A (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) f x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (LinearMap.{u2, u2, u3, u1} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u3, u1} R' R' M A (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) f y)) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) _inst_17))))) (m : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : TrivSqZeroExt.{u2, u3} R' M) => A) (TrivSqZeroExt.inr.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) m)) (FunLike.coe.{max (max (succ u2) (succ u3)) (succ u1), max (succ u2) (succ u3), succ u1} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (TrivSqZeroExt.{u2, u3} R' M) (fun (_x : TrivSqZeroExt.{u2, u3} R' M) => (fun (x._@.Mathlib.Algebra.Hom.GroupAction._hyg.2186 : TrivSqZeroExt.{u2, u3} R' M) => A) _x) (SMulHomClass.toFunLike.{max (max u2 u3) u1, u2, max u2 u3, u1} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) R' (TrivSqZeroExt.{u2, u3} R' M) A (SMulZeroClass.toSMul.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (AddMonoid.toZero.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))))) (DistribSMul.toSMulZeroClass.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (AddMonoid.toAddZeroClass.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))))) (DistribMulAction.toDistribSMul.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))))))) (Module.toDistribMulAction.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)))))) (SMulZeroClass.toSMul.{u2, u1} R' A (AddMonoid.toZero.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))))) (DistribSMul.toSMulZeroClass.{u2, u1} R' A (AddMonoid.toAddZeroClass.{u1} A (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))))) (DistribMulAction.toDistribSMul.{u2, u1} R' A (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17)))) (Module.toDistribMulAction.{u2, u1} R' A (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18))))) (DistribMulActionHomClass.toSMulHomClass.{max (max u2 u3) u1, u2, max u2 u3, u1} (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) R' (TrivSqZeroExt.{u2, u3} R' M) A (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddCommMonoid.toAddMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))))))) (AddCommMonoid.toAddMonoid.{u1} A (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17)))) (Module.toDistribMulAction.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15))) (Module.toDistribMulAction.{u2, u1} R' A (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) (SemilinearMapClass.distribMulActionHomClass.{u2, max u2 u3, u1, max (max u2 u3) u1} R' (TrivSqZeroExt.{u2, u3} R' M) A (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (CommSemiring.toSemiring.{u2} R' _inst_3) (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (AlgHomClass.linearMapClass.{u2, max u2 u3, u1, max (max u2 u3) u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18 (AlgHom.{u2, max u3 u2, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18) (AlgHom.algHomClass.{u2, max u2 u3, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18))))) (TrivSqZeroExt.liftAux.{u2, u3, u1} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15 A _inst_17 _inst_18 f hf) (TrivSqZeroExt.inr.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) m)) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (LinearMap.{u2, u2, u3, u1} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u3, u1} R' R' M A (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) f m)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.lift_aux_apply_inr TrivSqZeroExt.liftAux_apply_inrₓ'. -/
@[simp]
theorem liftAux_apply_inr (f : M →ₗ[R'] A) (hf : ∀ x y, f x * f y = 0) (m : M) :
    liftAux f hf (inr m) = f m :=
  show algebraMap R' A 0 + f m = f m by rw [RingHom.map_zero, zero_add]
#align triv_sq_zero_ext.lift_aux_apply_inr TrivSqZeroExt.liftAux_apply_inr

/- warning: triv_sq_zero_ext.lift_aux_comp_inr_hom -> TrivSqZeroExt.liftAux_comp_inrHom is a dubious translation:
lean 3 declaration is
  forall {R' : Type.{u1}} {M : Type.{u2}} [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u3}} [_inst_17 : Semiring.{u3} A] [_inst_18 : Algebra.{u1, u3} R' A _inst_3 _inst_17] (f : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (hf : forall (x : M) (y : M), Eq.{succ u3} A (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (Distrib.toHasMul.{u3} A (NonUnitalNonAssocSemiring.toDistrib.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))))) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (_x : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => M -> A) (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f x) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (_x : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => M -> A) (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f y)) (OfNat.ofNat.{u3} A 0 (OfNat.mk.{u3} A 0 (Zero.zero.{u3} A (MulZeroClass.toHasZero.{u3} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17)))))))), Eq.{max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (LinearMap.comp.{u1, u1, u1, u2, max u1 u2, u3} R' R' R' M (TrivSqZeroExt.{u1, u2} R' M) A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (Semiring.toNonAssocSemiring.{max u1 u2} (TrivSqZeroExt.{u1, u2} R' M) (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (TrivSqZeroExt.liftAux._proof_1.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15))))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, max u1 u2} R' (TrivSqZeroExt.{u1, u2} R' M) _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (TrivSqZeroExt.liftAux._proof_1.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (RingHomCompTriple.right_ids.{u1, u1} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AlgHom.toLinearMap.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (TrivSqZeroExt.liftAux._proof_1.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18 (TrivSqZeroExt.liftAux.{u1, u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15 A _inst_17 _inst_18 f hf)) (TrivSqZeroExt.inrHom.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)) f
but is expected to have type
  forall {R' : Type.{u2}} {M : Type.{u3}} [_inst_3 : CommSemiring.{u2} R'] [_inst_4 : AddCommMonoid.{u3} M] [_inst_13 : Module.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4] [_inst_14 : Module.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u2, u3} R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.zero.{u2} R' (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.monoidWithZero.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u1}} [_inst_17 : Semiring.{u1} A] [_inst_18 : Algebra.{u2, u1} R' A _inst_3 _inst_17] (f : LinearMap.{u2, u2, u3, u1} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) (hf : forall (x : M) (y : M), Eq.{succ u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (HMul.hMul.{u1, u1, u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) y) ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (instHMul.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (NonUnitalNonAssocSemiring.toMul.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (Semiring.toNonAssocSemiring.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) _inst_17)))) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (LinearMap.{u2, u2, u3, u1} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u3, u1} R' R' M A (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) f x) (FunLike.coe.{max (succ u3) (succ u1), succ u3, succ u1} (LinearMap.{u2, u2, u3, u1} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) _x) (LinearMap.instFunLikeLinearMap.{u2, u2, u3, u1} R' R' M A (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) f y)) (OfNat.ofNat.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) 0 (Zero.toOfNat0.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (MonoidWithZero.toZero.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (Semiring.toMonoidWithZero.{u1} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) _inst_17))))), Eq.{max (succ u3) (succ u1)} (LinearMap.{u2, u2, u3, u1} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18)) (LinearMap.comp.{u2, u2, u2, u3, max u2 u3, u1} R' R' R' M (TrivSqZeroExt.{u2, u3} R' M) A (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (Semiring.toNonAssocSemiring.{max u2 u3} (TrivSqZeroExt.{u2, u3} R' M) (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13))))))))) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u1} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u1} A (Semiring.toNonAssocSemiring.{u1} A _inst_17))) _inst_13 (Algebra.toModule.{u2, max u2 u3} R' (TrivSqZeroExt.{u2, u3} R' M) _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) (Algebra.toModule.{u2, u1} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (RingHomCompTriple.ids.{u2, u2} R' R' (CommSemiring.toSemiring.{u2} R' _inst_3) (CommSemiring.toSemiring.{u2} R' _inst_3) (RingHom.id.{u2} R' (Semiring.toNonAssocSemiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AlgHom.toLinearMap.{u2, max u2 u3, u1} R' (TrivSqZeroExt.{u2, u3} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u2, u2, u3} R' _inst_3 (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u2, u2, u3} R' R' M (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u2, u2} R' R' _inst_3 (CommSemiring.toSemiring.{u2} R' _inst_3) (Algebra.id.{u2} R' _inst_3)) (SMulZeroClass.toSMul.{u2, u3} R' M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} R' M (CommMonoidWithZero.toZero.{u2} R' (CommSemiring.toCommMonoidWithZero.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u2, u3} (MulOpposite.{u2} R') M (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u2, u3} (MulOpposite.{u2} R') M (MonoidWithZero.toZero.{u2} (MulOpposite.{u2} R') (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u2, u3} (MulOpposite.{u2} R') M (Semiring.toMonoidWithZero.{u2} (MulOpposite.{u2} R') (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} (MulOpposite.{u2} R') M (MulOpposite.semiring.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u2, u3} R' M (MonoidWithZero.toMonoid.{u2} R' (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3))) (MulActionWithZero.toMulAction.{u2, u3} R' M (Semiring.toMonoidWithZero.{u2} R' (CommSemiring.toSemiring.{u2} R' _inst_3)) (AddMonoid.toZero.{u3} M (AddCommMonoid.toAddMonoid.{u3} M _inst_4)) (Module.toMulActionWithZero.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u2, u3} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18 (TrivSqZeroExt.liftAux.{u2, u3, u1} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15 A _inst_17 _inst_18 f hf)) (TrivSqZeroExt.inrHom.{u2, u3} R' M (CommSemiring.toSemiring.{u2} R' _inst_3) _inst_4 _inst_13)) f
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.lift_aux_comp_inr_hom TrivSqZeroExt.liftAux_comp_inrHomₓ'. -/
@[simp]
theorem liftAux_comp_inrHom (f : M →ₗ[R'] A) (hf : ∀ x y, f x * f y = 0) :
    (liftAux f hf).toLinearMap.comp (inrHom R' M) = f :=
  LinearMap.ext <| liftAux_apply_inr f hf
#align triv_sq_zero_ext.lift_aux_comp_inr_hom TrivSqZeroExt.liftAux_comp_inrHom

#print TrivSqZeroExt.liftAux_inrHom /-
-- When applied to `inr` itself, `lift_aux` is the identity.
@[simp]
theorem liftAux_inrHom : liftAux (inrHom R' M) (inr_mul_inr R') = AlgHom.id R' (tsze R' M) :=
  algHom_ext' <| liftAux_comp_inrHom _ _
#align triv_sq_zero_ext.lift_aux_inr_hom TrivSqZeroExt.liftAux_inrHom
-/

/- warning: triv_sq_zero_ext.lift -> TrivSqZeroExt.lift is a dubious translation:
lean 3 declaration is
  forall {R' : Type.{u1}} {M : Type.{u2}} [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toHasSmul.{u1, u2} R' M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} R' M (MulZeroClass.toHasZero.{u1} R' (MulZeroOneClass.toMulZeroClass.{u1} R' (MonoidWithZero.toMulZeroOneClass.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toHasSmul.{u1, u2} (MulOpposite.{u1} R') M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (SMulWithZero.toSmulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulZeroClass.toHasZero.{u1} (MulOpposite.{u1} R') (MulZeroOneClass.toMulZeroClass.{u1} (MulOpposite.{u1} R') (MonoidWithZero.toMulZeroOneClass.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4))) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u3}} [_inst_17 : Semiring.{u3} A] [_inst_18 : Algebra.{u1, u3} R' A _inst_3 _inst_17], Equiv.{max 1 (succ u2) (succ u3), max (succ (max u1 u2)) (succ u3)} (Subtype.{max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (f : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => forall (x : M) (y : M), Eq.{succ u3} A (HMul.hMul.{u3, u3, u3} A A A (instHMul.{u3} A (Distrib.toHasMul.{u3} A (NonUnitalNonAssocSemiring.toDistrib.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))))) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (_x : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => M -> A) (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f x) (coeFn.{max (succ u2) (succ u3), max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (_x : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => M -> A) (LinearMap.hasCoeToFun.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f y)) (OfNat.ofNat.{u3} A 0 (OfNat.mk.{u3} A 0 (Zero.zero.{u3} A (MulZeroClass.toHasZero.{u3} A (NonUnitalNonAssocSemiring.toMulZeroClass.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))))))))) (AlgHom.{u1, max u1 u2, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (TrivSqZeroExt.lift._proof_1.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15)) _inst_17 (TrivSqZeroExt.algebra.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18)
but is expected to have type
  forall {R' : Type.{u1}} {M : Type.{u2}} [_inst_3 : CommSemiring.{u1} R'] [_inst_4 : AddCommMonoid.{u2} M] [_inst_13 : Module.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4] [_inst_14 : Module.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4] [_inst_15 : IsCentralScalar.{u1, u2} R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.zero.{u1} R' (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.monoidWithZero.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14))))] {A : Type.{u3}} [_inst_17 : Semiring.{u3} A] [_inst_18 : Algebra.{u1, u3} R' A _inst_3 _inst_17], Equiv.{max 1 (succ u2) (succ u3), max (succ u3) (succ (max u2 u1))} (Subtype.{max (succ u2) (succ u3)} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) (fun (f : LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) => forall (x : M) (y : M), Eq.{succ u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (HMul.hMul.{u3, u3, u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) y) ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (instHMul.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (NonUnitalNonAssocSemiring.toMul.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (Semiring.toNonAssocSemiring.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) _inst_17)))) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f x) (FunLike.coe.{max (succ u2) (succ u3), succ u2, succ u3} (LinearMap.{u1, u1, u2, u3} R' R' (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) M A _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18)) M (fun (_x : M) => (fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) _x) (LinearMap.instFunLikeLinearMap.{u1, u1, u2, u3} R' R' M A (CommSemiring.toSemiring.{u1} R' _inst_3) (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 (NonUnitalNonAssocSemiring.toAddCommMonoid.{u3} A (NonAssocSemiring.toNonUnitalNonAssocSemiring.{u3} A (Semiring.toNonAssocSemiring.{u3} A _inst_17))) _inst_13 (Algebra.toModule.{u1, u3} R' A _inst_3 _inst_17 _inst_18) (RingHom.id.{u1} R' (Semiring.toNonAssocSemiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) f y)) (OfNat.ofNat.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) 0 (Zero.toOfNat0.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (MonoidWithZero.toZero.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) (Semiring.toMonoidWithZero.{u3} ((fun (x._@.Mathlib.Algebra.Module.LinearMap._hyg.6190 : M) => A) x) _inst_17)))))) (AlgHom.{u1, max u2 u1, u3} R' (TrivSqZeroExt.{u1, u2} R' M) A _inst_3 (TrivSqZeroExt.semiring.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13 _inst_14 (IsScalarTower.to_smulCommClass.{u1, u1, u2} R' _inst_3 (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (MulOpposite.instAlgebraMulOppositeSemiring.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) M _inst_4 _inst_14 _inst_13 (IsScalarTower.op_right.{u1, u1, u2} R' R' M (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (Algebra.toSMul.{u1, u1} R' R' _inst_3 (CommSemiring.toSemiring.{u1} R' _inst_3) (Algebra.id.{u1} R' _inst_3)) (SMulZeroClass.toSMul.{u1, u2} R' M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} R' M (CommMonoidWithZero.toZero.{u1} R' (CommSemiring.toCommMonoidWithZero.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))) (SMulZeroClass.toSMul.{u1, u2} (MulOpposite.{u1} R') M (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (SMulWithZero.toSMulZeroClass.{u1, u2} (MulOpposite.{u1} R') M (MonoidWithZero.toZero.{u1} (MulOpposite.{u1} R') (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (MulActionWithZero.toSMulWithZero.{u1, u2} (MulOpposite.{u1} R') M (Semiring.toMonoidWithZero.{u1} (MulOpposite.{u1} R') (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} (MulOpposite.{u1} R') M (MulOpposite.semiring.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) _inst_4 _inst_14)))) _inst_15 (IsScalarTower.left.{u1, u2} R' M (MonoidWithZero.toMonoid.{u1} R' (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3))) (MulActionWithZero.toMulAction.{u1, u2} R' M (Semiring.toMonoidWithZero.{u1} R' (CommSemiring.toSemiring.{u1} R' _inst_3)) (AddMonoid.toZero.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_4)) (Module.toMulActionWithZero.{u1, u2} R' M (CommSemiring.toSemiring.{u1} R' _inst_3) _inst_4 _inst_13)))))) _inst_17 (TrivSqZeroExt.instAlgebraTrivSqZeroExtSemiringToSemiringTo_smulCommClassMulOppositeSemiringInstAlgebraMulOppositeSemiringIdOp_rightToSMulToZeroToAddMonoidToSMulZeroClassToZeroToCommMonoidWithZeroToSMulWithZeroToMonoidWithZeroToMulActionWithZeroToSMulToZeroLeftToMonoidToMulAction.{u1, u2} R' M _inst_3 _inst_4 _inst_13 _inst_14 _inst_15) _inst_18)
Case conversion may be inaccurate. Consider using '#align triv_sq_zero_ext.lift TrivSqZeroExt.liftₓ'. -/
/-- A universal property of the trivial square-zero extension, providing a unique
`triv_sq_zero_ext R M →ₐ[R] A` for every linear map `M →ₗ[R] A` whose range has no non-zero
products.

This isomorphism is named to match the very similar `complex.lift`. -/
@[simps]
def lift : { f : M →ₗ[R'] A // ∀ x y, f x * f y = 0 } ≃ (tsze R' M →ₐ[R'] A)
    where
  toFun f := liftAux f f.Prop
  invFun F :=
    ⟨F.toLinearMap.comp (inrHom R' M), fun x y =>
      (F.map_mul _ _).symm.trans <| (F.congr_arg <| inr_mul_inr _ _ _).trans F.map_zero⟩
  left_inv f := Subtype.ext <| liftAux_comp_inrHom _ _
  right_inv F := algHom_ext' <| liftAux_comp_inrHom _ _
#align triv_sq_zero_ext.lift TrivSqZeroExt.lift

attribute [nolint simp_nf] lift_symm_apply_coe

end Algebra

end TrivSqZeroExt