∀ {R : Type u_4} {S : Type u_5} [inst : Mul R] [inst_1 : Mul S] [inst_2 : Add R] [inst_3 : Add S] (f : R → S)
  (g : S → R) (h₁ : Function.LeftInverse g f) (h₂ : Function.RightInverse g f)
  (h₃ :
    ∀ (x y : R),
      { toFun := f, invFun := g, left_inv := h₁, right_inv := h₂ }.toFun (x * y) =
        { toFun := f, invFun := g, left_inv := h₁, right_inv := h₂ }.toFun x *
          { toFun := f, invFun := g, left_inv := h₁, right_inv := h₂ }.toFun y)
  (h₄ :
    ∀ (x y : R),
      { toFun := f, invFun := g, left_inv := h₁, right_inv := h₂ }.toFun (x + y) =
        { toFun := f, invFun := g, left_inv := h₁, right_inv := h₂ }.toFun x +
          { toFun := f, invFun := g, left_inv := h₁, right_inv := h₂ }.toFun y),
  { toFun := f, invFun := g, left_inv := h₁, right_inv := h₂, map_mul' := h₃, map_add' := h₄ }.symm =
    let __src := RingEquiv.symm_mk.aux f g h₁ h₂ h₃ h₄;
    { toFun := g, invFun := f, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯ }