Gencom
A gencom is a list of generators for a temperament followed by commas for the temperament, in a specific order. The generators are transversal generators, meaning rational intervals belonging to the JI group the temperament tempers, which it tempers to generators for the temperment. The gencom is denoted [generator list; comma list], with a semicolon between the generators and the commas. For instance, [16/15 25/24; 81/80] is a gencom for 5-limit meantone. On the other hand, the exact same intervals with a different placement of the semicolon is a gencom for 5-limit JI: [16/15 25/24 81/80;], and another, [16/15; 25/24 81/80] gives 5-limit 7et.
The reason for putting the generators together with the commas is that notating the gencom as a list of monzos allows it to be treated as a subgroup basis matrix: the group of intervals generated by the gencom is the same no matter how we place the semicolon, and so is the matrix. When this group is a full p-limit group, as in the example above, the matrix is a unimodular matrix. Inverting and transposing it gives a matrix whose rows are vals; if r is the rank of the temperament, then the first r rows are the mapping matrix corresponding to the generator transversal. More interesting is the case where the gencom generates a JI subgroup of some p-limit. In all cases the transpose of the pseudoinverse of the matrix of monzos gives a matrix of vals whose first r rows we call the gencom mapping, and which in its entirety we call the extended gencom mapping. The extended gencom mapping is only a unimodular matrix, and the inversion ordinary matrix inversion, in the case of the full p-limit. However in all cases the transpose pseudoinverse of the gencom matrix is the extended gencom mapping, and the transpose pseudoinverse of the extended mapping is the gencom matrix.
The rows of the extended gencom mapping are in general fractional vals, meaning the coefficients are allowed to be rational numbers. When applied to elements of the subgroup generated by the gencom, these fractional vals always return an integer value, which gives the number of times the corresponding generator or comma appears in the expression of the interval in terms of the gencom; the gencom mapping applied to a subgroup basis matrix is a matrix of generator steps in terms of subgroup vals (svals), which is exactly the sval mapping. However, the converse is not the case: if the gencom mapping returns integer values, it does not mean the interval must belong to the gencom subgroup.
Invariance
Converting a gencom to a normal interval list gives a canonical form for the subgroup, which is an invariant of the temperament. Doing the same to just the commas produces another invariant, and together these determine the temperament: it is the unique temperament on the given group tempering out the given commas. The normal list defined by the generators alone is not an invariant of the temperament, since the generators give only a transversal for the tempered intervals of the temperament, not the full set of intervals being tempered. Hence, for instance, [2 40/27; 81/80] and [2 3/2; 81/80] both define 5-limit meantone, but the normal list for [2 40/27] is 2.27/5 and for [2 3/2] is 2.3. However, the extended gencom mapping can be used to determine if an interval q is in the group of the temperament. Suppose [c1 c2 … cn] is a gencom and [v1 v2 … vn] is the corresponding extended mapping. Then each of v1 (q), v2 (q) … vn (q) must be an integer, and moreover we must have q = c1^v1 (q) · c2^v2 (q) · … · cn^vn (q). This provides sufficient conditions as well as necessary ones.
Example
Consider baldy, the temperament tempering out 225/224, 325/324, and 640/637 in the 2.9.5.7.13 subgroup. This is every other step of garibaldi/cassandra in the 13-limit, without prime 11. With normalized generators ~2 and ~9, the gencom is [2 9; 225/224 325/324 640/637]. Converting it to a matrix of monzos, we get [[1 0 0 0 0 0⟩, [0 2 0 0 0 0⟩; [-5 2 2 -1 0 0⟩, [-2 -4 2 0 0 1⟩, [7 0 1 -2 0 -1⟩]. Taking the pseudoinverse and canonicalizing it, the extended gencom mapping is found to be [⟨1 0 15 25 0 28], ⟨0 1/2 -4 -7 0 10]; ⟨0 0 2 3 0 4], ⟨0 0 -1 -2 0 3], ⟨0 0 -1 -2 0 2]]. Since this is a rank-2 temperament, the gencom mapping is the first two row thereof, [⟨1 0 15 25 0 28], ⟨0 1/2 -4 -7 0 10]].
With this mapping we can insert the monzo of an arbitrary interval to see its number of generator steps. For instance we can insert the monzo of 9, [0 2⟩, to the mapping and see it is represented by +1 generator step. Further, we can see prime 3, not in the subgroup, must be "1/2" generator step. Through the same process we find prime 5 is -4 steps and prime 7 is -7 steps, which correspond to -8 and -14 steps of garibaldi. Prime 11 is not in the temperament so it is signified by "0" steps. Finally, prime 13 is +10 steps, corresponding to +20 steps of garibaldi/cassandra. Collecting the numbers of generator steps of all the monzos in the subgroup basis we can convert the gencom mapping to the sval mapping: [⟨1 0 15 25 -28], ⟨0 1 -4 -7 10]].
For a more complicated case let us consider edson, the temperament tempering out 196/195, 352/351, and 364/363 in the 2.3.7/5.11/5.13/5 subgroup. Using normalized generators ~2 and ~3, its gencom mapping is [⟨1 0 -49/4 -9/4 19/4 39/4], ⟨0 1 29/4 5/4 -11/4 -23/4]]. Like before, we can see 7/5 is mapped to -6 generator steps by inserting its monzo [0 0 -1 1⟩ to the mapping. However, if we insert the monzo of 625, [0 0 4⟩, it will also return a seemingly meaningful result of +29 steps, which should not be so interpreted because the interval is not in the subgroup to begin with.