ite /= -[gring_mx _ _]/(gring_op _ _) !linear0 !linear_sum (bigD1 1%g) //=.
rewrite gring_opG ?gring_projE // eqxx big1 ?addr0 ?oner_eq0 // => x.
by case/andP=> Gx nt_x; rewrite_projE // eq_sym (negPf nt_x).
Qed.Fact principal_comp_key : unit. Proof. by []. Qed.

by rewrite !linearZ -scalemxAl /= !gring_opG ?