Proof. by move=> y; rewrite /= -subr_char2 addrK. Qed.

Lemma addKr_char2 x : involutive (+%R x).
Proof. by move=> y; rewrite -{1}[x]oppr_char2 addKr. Qed.

End Char2.

Canonical converse_eqType := [eqType of R^c].Canonical converse_choiceType := [choiceType of R^c].1 mul' mulrA' mulr1 mul1r mulrDl' mulrDr' oner_neq0.

(* Specifications: *)
Section ClosedPredicates.
Definition smulr_closed := -1 \in S /\ mulr_2closed.
Definition subring_closed := [/\ 1 \in S, subr_2closed S
Lemma smulr_closedM : smulr_closed -> mulr_closed.
Lemma smulr_closedN : smulr_closed -> oppr_closed S.
Lemma semiring_closedM : semiring_closed -> mulr_closed. Proof