proposition: Lemma to_ring_injective `{Integers Z} `{Ring R} (f: R → Z) (g: Z → R) `{!SemiRing_Morphism f} `{!SemiRing_Morphism g} : Injective g.
proof: Proof. repeat (split; try apply _). intros x y E. rewrite <-(to_ring_self (f ∘ g) x), <-(to_ring_self (f ∘ g) y). unfold compose. now rewrite E. Qed.
imports: Coq.setoid_ring.Ring MathClasses.interfaces.naturals MathClasses.interfaces.abstract_algebra MathClasses.implementations.natpair_integers MathClasses.interfaces.integers