{P : Sort u} →
  {toSemiring : Lean.Meta.Grind.Arith.CommRing.Semiring} →
    {ringId : ℕ} →
      {commSemiringInst : Lean.Expr} →
        {addRightCancelInst? : Option (Option Lean.Expr)} →
          {toQFn? : Option Lean.Expr} →
            {toSemiring' : Lean.Meta.Grind.Arith.CommRing.Semiring} →
              {ringId' : ℕ} →
                {commSemiringInst' : Lean.Expr} →
                  {addRightCancelInst?' : Option (Option Lean.Expr)} →
                    {toQFn?' : Option Lean.Expr} →
                      { toSemiring := toSemiring, ringId := ringId, commSemiringInst := commSemiringInst,
                            addRightCancelInst? := addRightCancelInst?, toQFn? := toQFn? } =
                          { toSemiring := toSemiring', ringId := ringId', commSemiringInst := commSemiringInst',
                            addRightCancelInst? := addRightCancelInst?', toQFn? := toQFn?' } →
                        (toSemiring = toSemiring' →
                            ringId = ringId' →
                              commSemiringInst = commSemiringInst' →
                                addRightCancelInst? = addRightCancelInst?' → toQFn? = toQFn?' → P) →
                          P