/** * Kronecker substitution: reduces a multivariate integer polynomial to a * univariate one so it can be factored by the Layer 1 univariate engine * (`zassenhaus.ts`), then inverts the map to recover multivariate * candidates. * * The substitution maps `x_k ↦ x^{bases[k]}`, where `bases[0] = 1` and * `bases[k] = ∏_{i