1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
use ;
/// # Safety
///
/// this trait is safe only when for all a, b, c: a + (b + c) = (a + b) + c
/// # Safety
///
/// this trait is safe only when for all a, b, a + b = b + a
/// A group on addition arithmetic
///
/// This arithmetic should satisfy the following propertise
///
/// 1. the set should be closed under addition
/// 2. the addition should be associativity
/// 3. the identity should exist
/// 4. there exists inverse of group element
/// A group is called a alelian group (or communicative group) if forall a, b in G, a + b = b + a