Singular Manual: locus

| #### D.2.4.10 locus Procedure from library `grobcov.lib` (see grobcov_lib). Usage: locus(ideal F[,options]) Special routine for determining the locus of points of a geometrical construction. Input: The input ideal must be the set equations defining the locus. Calling sequence: locus(F[,options]); The input ring must be a parametrical ideal in Q[x1,..,xn][u1,..,um], (x=tracer variables, u=mover variables). The number of tracer variables is n=dim(space). The mover variables can be restricted by the user to the last k variaboes by adding the option "moverdim",k (Inverts the concept of parameters and variables of the ring). Options: An option is a pair of arguments: string, integer. To modify the default options, pairs of arguments -option name, value- of valid options must be added to the call.The algorithm allows the following options as pair of arguments: "moverdim", k to restrict the mover-variables of the anti-image to the last k variables. By defaulat k is equal to the number of u-variables, The restriction to a smaller value can produce an error in the character "Normal" or "Special" of a locus component. "grobcov", list of the previous computed grobcov(F). It is to be used when we modify externally the grobcov, for example to obtain the real grobcov. "anti-image",0 if the anti-image is not to be shown for "Normal" components. "comments", c: by default it is 0, but it can be set to 1. Return: The output is a list of the components: ((p1,(p11,..p1s_1),tax_1),..,(pk,(pk1,..pks_k),tax_k) Elements 1 and 2 of a component represent the P-canonical form of the component. The third element tax is: for normal point components, tax=(d,taxonomy,anti-image) being d=dimension of the anti-image on the mover varaibles, taxonomy="Normal" or "Special" and anti-image=ideal of the anti-image over the mover variables. for non-normal point components, tax =(d,taxonomy) being d=dimension of the component and taxonomy="Accumulation" or "Degenerate". The components are given in canonical P-representation. The normal locus has two kind of components: Normal and Special. Normal component: - each point in the component has 0-dimensional anti-image. - the anti-image in the mover coordinates is equal to the dimension of the component Special component: - each point in the component has 0-dimensional anti-image. - the anti-image in the mover coordinates is smaller than the dimension of the component The non-normal locus has two kind of components: Accumulation and Degenerate. Accumulation component: - each point in the component has anti-image of dimension greater than 0. - the component has dimension less than n-1. Degenerate components: - each point in the component has anti-image of dimension greater than 0. - the component has dimension n-1. When a normal point component has degree greater than 9, then the taxonomy is not determined, and (n,'normal', 0) is returned as third element of the component. (n is the dimension of the space). Given a parametric ideal F representing the system F determining the locus of points (x) which verify certain properties, the call to locus(F) determines the different classes of locus components, following the taxonomy defined in the book: A. Montes. "The Groebner Cover" A previous paper gives particular definitions for loci in 2d. M. Abanades, F. Botana, A. Montes, T. Recio, "An Algebraic Taxonomy for Locus Computation in Dynamic Geometry", Computer-Aided Design 56 (2014) 22-33. Note: The input must be the locus system. Example:
    LIB "grobcov.lib";
    if(defined(R)){kill R;}
    ring R=(0,x,y),(x1,y1),dp;
    short=0;
    // Concoid
    ideal S96=x1 ^2+y1 ^2-4,(x-2)*x1 -x*y1 +2*x,(x-x1 )^2+(y-y1 )^2-1;
    locus(S96);
    ==> [1]:
    ==>    [1]:
    ==>       _[1]=(x^4+2*x^3+x^2*y^2-3*x^2-2*x*y^2-8*x*y-6*x+2*y^2+8*y+6)
    ==>    [2]:
    ==>       [1]:
    ==>          _[1]=(y^2+2*y+2)
    ==>          _[2]=(x-y-2)
    ==>    [3]:
    ==>       [1]:
    ==>          1
    ==>       [2]:
    ==>          Normal
    ==>       [3]:
    ==>          _[1]=x1^2+y1^2-4
    ==> [2]:
    ==>    [1]:
    ==>       _[1]=(x^2+y^2-4*y+3)
    ==>    [2]:
    ==>       [1]:
    ==>          _[1]=1
    ==>    [3]:
    ==>       [1]:
    ==>          0
    ==>       [2]:
    ==>          Special
    ==>       [3]:
    ==>          _[1]=x1^2+y1^2-4
    ==>          _[2]=4875*y1^6-548*x1*y1^4+3836*y1^5+26216*x1*y1^3+7208*y1^4-193\
       44*x1*y1^2-12320*y1^3+79328*x1*y1-132624*y1^2-20096*x1+73152*y1-67328
    ==>          _[3]=4875*x1*y1^5+10514*x1*y1^4+7652*y1^5+20812*x1*y1^3-10144*y1\
       ^4+54392*x1*y1^2+13760*y1^3-86304*x1*y1+26432*y1^2+70528*x1-214336*y1+130\
       304
    // EXAMPLE
    // Consider two parallel planes z1=-1 and z1=1, and two orthogonal parabolas on them.
    // Determine the locus generated by the lines that rely the two parabolas
    // through the points having parallel tangent vectors.
    if(defined(R)){kill R;}
    ring R=(0,x,y,z),(lam,x2,y2,z2,x1,y1,z1), lp;
    short=0;
    ideal L=z1+1,
    x1^2-y1,
    z2-1,
    y2^2-x2,
    4*x1*y2-1,
    x-x1-lam*(x2-x1),
    y-y1-lam*(y2-y1),
    z-z1-lam*(z2-z1);
    locus(L);  // uses "moverdim",7
    ==> [1]:
    ==>    [1]:
    ==>       _[1]=(2048*x^3*z+2048*x^3-4096*x^2*y^2+1152*x*y*z^2-1152*x*y-2048*y\
       ^3*z+2048*y^3+27*z^4-54*z^2+27)
    ==>    [2]:
    ==>       [1]:
    ==>          _[1]=(z+1)
    ==>          _[2]=(y)
    ==>       [2]:
    ==>          _[1]=(z-1)
    ==>          _[2]=(x)
    ==>    [3]:
    ==>       [1]:
    ==>          2
    ==>       [2]:
    ==>          Normal
    ==>       [3]:
    ==>          _[1]=z1+1
    ==>          _[2]=x1^2-y1
    ==>          _[3]=z2-1
    ==>          _[4]=4*y2*y1-x1
    ==>          _[5]=4*y2*x1-1
    ==>          _[6]=x2-y2^2
    // Now observe the effect on the antiimage of option moverdim:
    // It does not take into account that lam is free.
    locus(L,"moverdim",3);
    ==> [1]:
    ==>    [1]:
    ==>       _[1]=(2048*x^3*z+2048*x^3-4096*x^2*y^2+1152*x*y*z^2-1152*x*y-2048*y\
       ^3*z+2048*y^3+27*z^4-54*z^2+27)
    ==>    [2]:
    ==>       [1]:
    ==>          _[1]=(z+1)
    ==>          _[2]=(y)
    ==>       [2]:
    ==>          _[1]=(z-1)
    ==>          _[2]=(x)
    ==>    [3]:
    ==>       [1]:
    ==>          1
    ==>       [2]:
    ==>          Special
    ==>       [3]:
    ==>          _[1]=z1+1
    ==>          _[2]=x1^2-y1
    // Observe that with the option "mpverdim",3 the taxonomy becomes Special because considering only x1,y1,z1 as mover variables does not take into account that lam is free in the global anti-image.

User manual for Singular version 4-1-2p4, 2020, generated by texi2html.