# Solutions in a product of projective spaces

Solving systems over a product of projective spaces

When your system has a multiprojective structure, you can declare variables groups for accelerating the computations.

Here is a simple example for the following system defined over $\mathbb{CP}^1\times \mathbb{CP}^1$:

$$f(u,y,u,v) = \begin{bmatrix} xy - 6uv\\ x^2 - u^2 \end{bmatrix}.$$

The Julia code for the variable groups ${x,y}$ and ${u,v}$ is as follows.

julia> using HomotopyContinuation
julia> @polyvar x y u v
julia> f = [x*y - 6u*v, x^2 - u^2]
julia> S = solve(f, variable_groups=[(x,u), (y,v)])
Result with 2 solutions
==================================
• 2 non-singular solutions (0 real)
• 0 singular solutions (0 real)
• 2 paths tracked
• random seed: 127575


With out the declaration of groups we would have

julia> S = solve(f)
Result with 2 solutions
==================================
• 2 non-singular solutions (2 real)
• 0 singular solutions (0 real)
• 4 paths tracked
• random seed: 202895


The number of solutions found is the same, but the number of paths tracked is different. This is because

julia> bezout_number(f, variable_groups=[[x], [y]])
2
julia> bezout_number(f)
4


It is also possible to declare variable groups for affine systems.