public static type Add <type>(this SSemigroup <type, Additive <Unit> > semi, type l, type r) => semi.Op(l, r);
public static type Inf <type, mark>(this SSemigroup <type, Infimum <mark> > that, type l, type r) => that.Op(l, r);
public static type Sup <type, mark>(this SSemigroup <type, Supremum <mark> > that, type l, type r) => that.Op(l, r);
public static type Mul <type, mark>(this SSemigroup <type, Multiplicative <mark> > neu, type l, type r) => neu.Op(l, r);