Enhanced C#
Language of your choice: library documentation

This defines a Group with the operation +, the neutral element Zero, and an operation  that is defined in terms of the inverse. A Negate operation is not provided so that this interface makes more sense for use with unsigned types. More...
This defines a Group with the operation +, the neutral element Zero, and an operation  that is defined in terms of the inverse. A Negate operation is not provided so that this interface makes more sense for use with unsigned types.
Axioms that have to be satisified by the operations: Commutativity of addition: Add(a,b)=Add(b,a) for all a,b in T Associativity of addition: Add(Add(a,b),c)=Add(a,Add(b,c)) Inverse of addition: Add(a,Negate(a))==Zero Subtraction: Subtract(a,b)==Add(a,Negate(b)) Neutral element: Add(Zero,a)==a for all a in T
Public Member Functions  
T  Add (T a, T b) 
T  Add (T a, T b, T c) 
T  Sub (T a, T b) 
Additional Inherited Members  
Properties inherited from Loyc.Math.IZeroProvider< T >  
T  Zero [get] 
Returns the "zero" or additive identity of this type. More...  