Lean4
/-- Construct an equivalence of rings from unital homomorphisms in both directions, which are inverses.
-/
@[simps]
def ofHomInv {R S F G : Type*} [NonAssocSemiring R] [NonAssocSemiring S] [FunLike F R S] [FunLike G S R]
[RingHomClass F R S] [RingHomClass G S R] (hom : F) (inv : G)
(hom_inv_id : (inv : S →+* R).comp (hom : R →+* S) = RingHom.id R)
(inv_hom_id : (hom : R →+* S).comp (inv : S →+* R) = RingHom.id S) : R ≃+* S
where
toFun := hom
invFun := inv
left_inv := DFunLike.congr_fun hom_inv_id
right_inv := DFunLike.congr_fun inv_hom_id
map_mul' := map_mul hom
map_add' := map_add hom