1234567891011121314151617181920212223242526272829303132333435openBasemoduleCommutative_group=struct(** An implementation of this interface should have the following properties:
+ associativity: [(a + b) + c = a + (b + c)]
+ identity: [zero + a = a + zero = a]
+ inverses: given any [a] there exists a (unique) elt [b] such that [a + b = b + a =
zero]
+ commutativity: [a + b = b + a]
*)moduletypeWithout_sexp=sigtypetvalzero:tval(+):t->t->tval(-):t->t->tendmoduletypeS=sigtypet[@@derivingsexp]includeWithout_sexpwithtypet:=tendendmoduleVector_space=structmoduletypeS=sigtypetincludeCommutative_group.Swithtypet:=tvalscale:t->float->tendend