01: package JSci.maths.groups;
02:
03: /**
04: * This interface defines an abelian group.
05: * @version 1.0
06: * @author Mark Hale
07: */
08: public interface AbelianGroup {
09: /**
10: * Returns the identity element.
11: */
12: Member zero();
13:
14: /**
15: * Returns true if the member is the identity element of this group.
16: * @param g a group member
17: */
18: boolean isZero(Member g);
19:
20: /**
21: * Returns true if one member is the negative of the other.
22: * @param a a group member
23: * @param b a group member
24: */
25: boolean isNegative(Member a, Member b);
26:
27: /**
28: * This interface defines a member of an abelian group.
29: */
30: interface Member extends JSci.maths.Member {
31: /**
32: * The group composition law.
33: * @param g a group member
34: */
35: Member add(Member g);
36:
37: /**
38: * Returns the inverse member.
39: */
40: Member negate();
41:
42: /**
43: * The group composition law with inverse.
44: * @param g a group member
45: */
46: Member subtract(Member g);
47: }
48: }
|