Above we used the undefined product *. It is defined by A*B = Tor_1(A,B), the torsion product of A and B. It is zero when either A or B is free, and we have A*B = B*A.
Just for completeness the definitions. A resolution of A is an exact sequence ...-> C_i -> ... -> C_0 -> A -> 0. It is called free when all C_i are free.
Free resolutions exist, and any two free resolutions are chain homotopic. Now Tor_i(A,B) = H_i(C tensor B) is independent of the choice of free resolution C.
(And dually, Ext^i(A,B) = H^i(Hom(A,B)).)
Over a principal ideal domain one finds Tor_i(A,B) = Ext^i(A,B) = 0 for i > 1. Also, Tor_0(A,B) = A tensor B, so the only torsion module of interest here is A*B.