# constructEmbedding -- constructs an embedding of a polynomial system

## Synopsis

• Usage:
constructEmbedding(f,k)
• Inputs:
• f, a list, of polynomials
• k, an integer, the expected (top) dimension of the solution set of f
• Optional inputs:
• Verbose => ..., default value false, option to specify whether additional output is wanted
• Outputs:
• a list, entries are polynomials containing the original system with k random linear polynomials and k slack variables
• Consequences:
• Writes the system to temporary files
• Extends the ring with slack variables
• Uses surplus variables when the initial system is overconstrained
• Invokes the command phc -c (with option 1).
• Stores output of phc in temporary file
• Parses and outputs the solutions.

## Description

To compute generic points of a k-dimensional solution set of a polynomial system, we add k random linear equations to the system.

 i1 : R = CC[x,y,z]; i2 : f = { x^2 - y, x^3 - z }; i3 : fe1 = constructEmbedding(f,1); i4 : toString fe1 o4 = {x^2-y+(.380139-.924929*ii)*zz1, x^3-z+(-.45571+.890128*ii)*zz1, zz1, (-.205377-.978683*ii)*x+(.943327-.331864*ii)*y+(.673112+.739541*ii)*z +(-.911067-.412259*ii)*zz1-.883724+.468009*ii}

Note that the ring of the original system is extended with k slack variables. Solutions of the embedded system with zero values for the slack variables are candidate generic points.

If the input system is overdetermined (there are more equations than unknowns), then as many surplus variables are introduced as the difference between the number of equations and the number of variables. Surplus variables start with ss.

 i5 : R = CC[x,y,z]; i6 : f = { x^2-y, x^3-z, x*y-z, x*z-y^2 }; i7 : fe1 = constructEmbedding(f,1); i8 : toString fe1 o8 = {x^2-y+(-.97755+.210704*ii)*ss1+(.380139-.924929*ii)*zz1, x^3-z+(-.688326-.725402*ii)*ss1+(-.45571+.890128*ii)*zz1, x*y-z+(-.997759-.0669093*ii)*ss1+(-.930099+.36731*ii)*zz1, -y^2+x*z+(-.767756-.640743*ii)*ss1+(-.883724+.468009*ii)*zz1, (.943327-.331864*ii)*x+(.673112+.739541*ii)*y+(-.911067-.412259*ii)*z +(.547606+.836736*ii)*ss1+(-.663772-.747935*ii)*zz1-.205377-.978683*ii}

In the example above, the system f has four equations in three unknowns, constructEmbedding adds one surplus variable and one slack variable. Only solutions with zero values for the surplus variable are relevant.

## Ways to use constructEmbedding :

• "constructEmbedding(List,ZZ)"

## For the programmer

The object constructEmbedding is .