public static type Add <type, mark>(this SRing <type, mark> ring, type l, type r) => ((SSemigroup <type, Additive <mark> >)ring).Add(l, r);
public static type One <type, mark>(this SRing <type, mark> ring) => ((SNeutral <type, Multiplicative <mark> >)ring).One();
public static type Zero <type, mark>(this SRing <type, mark> ring) => ((SNeutral <type, Additive <mark> >)ring).Zero();
public static type MinusOne <type, mark>(this SRing <type, mark> that) => that.Neg(that.One());
public static type Dec <type, mark>(this SRing <type, mark> ring, type t) => ring.Sub(t, ring.One());
public static type Inc <type, mark>(this SRing <type, mark> ring, type t) => ring.Add(t, ring.One());