  This paper is devoted to finding solutions of polynomial equations in roots
of unity. It was conjectured by S. Lang and proved by M. Laurent that all such
solutions can be described in terms of a finite number of parametric families
called maximal torsion cosets. We obtain new explicit upper bounds for the
number of maximal torsion cosets on an algebraic subvariety of the complex
algebraic $n$-torus ${\mathbb G}_{\rm m}^n$. In contrast to earlier works that
give the bounds of polynomial growth in the maximum total degree of defining
polynomials, the proofs of our results are constructive. This allows us to
obtain a new algorithm for determining maximal torsion cosets on an algebraic
subvariety of ${\mathbb G}_{\rm m}^n$.
