Changeset d12655 in git


Ignore:
Timestamp:
Dec 22, 2000, 4:59:36 PM (23 years ago)
Author:
Gert-Martin Greuel <greuel@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
50793d818ad7738eed95134de900cd96334604ad
Parents:
efda70a1a3dcb73477bd26bf7c45b8e867e6a6d8
Message:
* GMG: Kosmetik


git-svn-id: file:///usr/local/Singular/svn/trunk@4986 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/zeroset.lib

    refda70a rd12655  
    1 ///////////////////////////////////////////////////////////////////////////////
    2 version="Id: zeroset.lib,v 1.0 2000/05/19 12:32:15 Singular Exp $";
     1// Last change 10.12.2000
     2///////////////////////////////////////////////////////////////////////////////
     3
     4version="$Id: zeroset.lib,v 1.5 2000-12-22 15:59:36 greuel Exp $";
    35category="Symbolic-numerical solving";
    46info="
    5 LIBRARY:  zeroset.lib      PROCEDURES FOR ROOTS AND FACTORIZATION
    6 
    7 AUTHOR:   Thomas Bayer,    email: bayert@in.tum.de
     7LIBRARY:  zeroset.lib      Procedures For Roots and Factorization
     8AUTHOR:   Thomas Bayer,    email: tbayer@mathematik.uni-kl.de
     9          http://wwwmayr.informatik.tu-muenchen.de/personen/bayert/
     10          Current Adress: Institut fuer Informatik, TU Muenchen
     11
     12OVERVIEW:
     13 Algorithms for finding the zero-set of a zero-dim. ideal in Q(a)[x_1,..x_n],
     14 Roots and Factorization of univariate polynomials over Q(a)[t]
     15 where a is an algebric number. Written in the frame of the
     16 diploma thesis (advisor: Prof. Gert-Martin Greuel) 'Computations of moduli
     17 spaces of semiquasihomogenous singularities and an implementation in Singular'
     18 This library is meant as a preliminary extension of the functionality
     19 of Singular for univariate factorization of polynomials over simple algebraic
     20 extensions in characteristic 0.
     21 Subprocedures with postfix 'Main' require that the ring contains a variable
     22 'a' and no parameters, and the ideal 'mpoly', where 'minpoly' from the
     23 basering is stored.
    824
    925PROCEDURES:
    10 
    1126 EGCD(f, g)    gcd over an algebraic extension field of Q
    1227 Factor(f)    factorization of f over an algebraic extension field
    13  InvertNumber(c)  inverts an element of an algebraic extension field
     28 InvertNumber(c)  inverts an element of an algenraic extension field
    1429 LinearZeroSet(I)  find the linear (partial) solution of I
    1530 Quotient(f, g)    quotient q  of f w.r.t. g (in f = q*g + remainder)
    1631 Remainder(f,g)    remainder of the division of f by g
    1732 Roots(f)    computes all roots of f in an extension field of Q
    18  SQFRNorm(f)    norm of f (f must be square-free)
     33 SQFRNorm(f)    norm of f (f must be squarefree)
    1934 ZeroSet(I)    zero-set of the 0-dim. ideal I
    2035
    21 SUB PROCEDURES:
    22 
     36AUXILIARY PROCEDURES:
    2337 EGCDMain(f, g)    gcd over an algebraic extension field of Q
    2438 FactorMain(f)    factorization of f over an algebraic extension field
    25  InvertNumberMain(c)  inverts an element of an algebraic extension field
     39 InvertNumberMain(c)  inverts an element of an algenraic extension field
    2640 QuotientMain(f, g)  quotient of f w.r.t. g
    2741 RemainderMain(f,g)  remainder of the division of f by g
    28  RootsMain(f)    computes all roots of f,might extend the groundfield
    29  SQFRNormMain(f)  norm of f (f must be square-free)
     42 RootsMain(f)    computes all roots of f, might extend the groundfield
     43 SQFRNormMain(f)  norm of f (f must be squarefree)
    3044 ContainedQ(data, f)  f in data ?
    3145 SameQ(a, b)    a == b (list a,b)
     
    3549 SimplifyPoly(f)  reduces coefficients of f w.r.t. mpoly
    3650 SimplifySolution(sol)  reduces the entries of sol w.r.t. the ideal mpoly
    37 
    38  NOTE: this library is meant as a preliminary extension of the functionality
    39  of Singular for univariate factorization of polynomials over simple algebraic
    40  extensions in characteristic 0.
    41  Subprocedures with postfix 'Main' require that the ring contains a variable
    42  'a' and no parameters, and the ideal 'mpoly', where 'minpoly' from the
    43  basering is stored.
    4451";
    4552
    46 // NOTE: This library has been written in the frame of the diploma thesis
    47 // 'Computing moduli spaces of semiquasihomogeneous singularites and an
    48 //  implementation in Singular', Arbeitsgruppe Algebraische Geometrie,
    49 // Fachbereich Mathematik, University Kaiserslautern,
    50 // Advisor: Prof. Gert-Martin Greuel
     53LIB "primitiv.lib";
     54LIB "primdec.lib";
    5155
    5256// note : return a ring : ring need not be exported !!!
    5357
    54 // Arithmetic in Q(a)[x] without built-in procedures
     58// Artihmetic in Q(a)[x] without built-in procedures
    5559// assume basering = Q[x,a] and minpoly is represented by mpoly(a).
    5660// the algorithms are taken from "Polynomial Algorithms in Computer Algebra",
     
    5963
    6064// To do :
    61 // square-free factorization
     65// squarefree factorization
    6266// multiplicities
    6367
    6468// Improvement :
    6569// a main problem is the growth of the coefficients. Try Roots(x7 - 1)
    66 // return ideal mpoly !
     70// retrurn ideal mpoly !
    6771// mpoly is not monic, comes from primitive_extra
    6872
    69 // IMPLEMENTATION (last change: 10.12.2000)
     73// IMPLEMENTATION
    7074//
    7175// In procedures with name 'proc-name'Main a polynomial ring over a simple
     
    7377// 'mpoly' (attribute "isSB"). The arithmetic in the extension field is
    7478// implemented in the procedures in the procedures 'MultPolys' (multiplication)
    75 // and 'InvertNumber' (inversion). After addition and subtraction one should
     79// and 'InvertNumber' (inversion). After addition and substraction one should
    7680// apply 'SimplifyPoly' to the result to reduce the result w.r.t. 'mpoly'.
    77 // This is done by reducing each coefficient separately, which is more
     81// This is done by reducing each coefficient seperately, which is more
    7882// efficient for polynomials with many terms.
    7983
    80 
    81 LIB "primitiv.lib";
    82 LIB "primdec.lib";
    8384
    8485///////////////////////////////////////////////////////////////////////////////
     
    8687proc Roots(poly f)
    8788"USAGE:   Roots(f); poly f
    88 PURPOSE: compute all roots of f in a finite extension of the groundfield
     89PUROPSE: compute all roots of f in a finite extension of the groundfield
    8990         without multiplicities.
    9091RETURN:  ring, a polynomial ring over an extension field of the ground field,
    9192         containing a list 'roots', poly 'newA', poly 'f':
    92    - 'roots' is the list of roots of the polynomial f (no multiplicities)
     93         - 'roots' is the list of roots of the polynomial f (no multiplicities)
    9394         - if the groundfield is Q(a') and the extension field is Q(a), then
    94      'newA' is the representation of a' in Q(a). If the basering
    95            contains a parameter 'a' and the minpoly remains unchanged then
    96            'newA' = 'a'. If the basering does not contain a parameter then
    97            'newA' = 'a' (default).
    98    - 'f' is the polynomial f in  Q(a) (a' being substituted by newA)
     95         'newA' is the representation of a' in Q(a). If the basering
     96         contains a parameter 'a' and the minpoly remains unchanged then
     97         'newA' = 'a'. If the basering does not contain a parameter then
     98         'newA' = 'a' (default).
     99         - 'f' is the polynomial f in  Q(a) (a' being substituted by newA)
    99100ASSUME:  ground field to be Q or a simple extension of Q given by a minpoly
    100101EXAMPLE: example  Roots; shows an example
     
    167168         without multiplicities.
    168169RETURN:  list, all entries are polynomials
    169   _[1] = roots of f, each entry is a polynomial
    170   _[2] = 'newA'  - if the groundfield is Q(a') and the extension field
    171                is Q(a), then 'newA' is the representation of a' in Q(a)
    172   _[3] = minpoly of the algebraic extension of the groundfield
    173 ASSUME:  basering = Q[x,a]
    174    ideal mpoly must be defined, it might be 0 !
     170         _[1] = roots of f, each entry is a polynomial
     171         _[2] = 'newA'  - if the groundfield is Q(a') and the extension field
     172                is Q(a), then 'newA' is the representation of a' in Q(a)
     173         _[3] = minpoly of the algebraic extension of the groundfield
     174ASSUME:  basering = Q[x,a] ideal mpoly must be defined, it might be 0 !
    175175NOTE:    might change the ideal mpoly !!
    176176EXAMPLE: example  Roots; shows an example
     
    305305proc ZeroSet(ideal I, list #)
    306306"USAGE:   ZeroSetMain(ideal I [, int opt]); ideal I, int opt
    307 PURPOSE: compute the zero-set of the zero-dim. ideal I, in a finite extension
     307PUROPSE: compute the zero-set of the zero-dim. ideal I, in a finite extension
    308308         of the groundfield.
    309309RETURN:  ring, a polynomial ring over an extension field of the ground field,
    310310         containing a list 'zeroset', a polynomial 'newA', and an ideal 'id'.
    311    - 'zeroset'  is list of the zeros of the ideal 'I', each zero is
     311         - 'zeroset'  is list of the zeros of the ideal 'I', each zero is
    312312           an ideal.
    313313         - if the groundfield is Q(a') and the extension field is Q(a), then
    314      'newA' is the representation of a' in Q(a).  If the basering
    315            contains a parameter 'a' and the minpoly remains unchanged then
    316            'newA' = 'a'. If the basering does not contain a parameter then
    317            'newA' = 'a' (default).
    318    - 'id' is the ideal 'I'  in Q(a)[x_1,...] (a' substituted by 'newA')
    319 ASSUME:  dim(I) = 0, and ground field to be Q or a simple extension of Q
    320          given by a minpoly.
     314         'newA' is the representation of a' in Q(a).  If the basering
     315         contains a parameter 'a' and the minpoly remains unchanged then
     316         'newA' = 'a'. If the basering does not contain a parameter then
     317         'newA' = 'a' (default).
     318         - 'id' is the ideal 'I'  in Q(a)[x_1,...] (a' substituted by 'newA')
     319ASSUME:  dim(I) = 0, and ground field to be Q or a simple extension of Q given
     320         by a minpoly.
    321321OPTIONS: opt = 0 no primary decomposition (default)
    322    opt > 0 primary decomposition
    323 NOTE:    If I contains an algebraic number (parameter) then 'I' must be
     322         opt > 0 primary decomposition
     323NOTE:    If I contains an algebraic number (parameter) then 'I' must be 
    324324         transformed w.r.t. 'newA' in the new ring.
    325325EXAMPLE: example ZeroSet; shows an example
     
    410410         polynomial in Q[a].
    411411RETURN:  poly 1/f
    412 ASSUME:  basering = Q[x_1,...,x_n,a], ideal 'mpoly' must be defined and != 0
     412ASSUME:  basering = Q[x_1,...,x_n,a], ideal 'mpoly' must be defined and != 0 !
    413413"
    414414{
     
    449449proc LeadTerm(poly f, int i)
    450450"USAGE:   LeadTerm(f); poly f, int i
    451 PURPOSE: compute the leading coef and term of f w.r.t var(i), where the last
     451PUROPSE: compute the leading coef and term of f w.r.t var(i), where the last
    452452         ring variable is treated as a parameter.
    453453RETURN:  list of polynomials
     
    470470proc Quotient(poly f, poly g)
    471471"USAGE:   Quotient(f, g); poly f, g;
    472 PURPOSE: compute the quotient q and remainder r s.t. f = g*q + r, deg(r) < g
     472PUROPSE: compute the quotient q and remainder r s.t. f = g*q + r, deg(r) < g
    473473RETURN:  list of polynomials
    474474         _[1] = quotient  q
     
    504504proc QuotientMain(poly f, poly g)
    505505"USAGE:   QuotientMain(f, g); poly f, g
    506 PURPOSE: compute the quotient q and remainder r s.t. f = g*q + r, deg(r) < g
     506PUROPSE: compute the quotient q and remainder r s.t. f = g*q + r, deg(r) < g
    507507RETURN:  list of polynomials
    508508         _[1] = quotient  q
     
    528528proc Remainder(poly f, poly g)
    529529"USAGE:   Remainder(f, g); poly f, g
    530 PURPOSE: compute the remainder of the division of f by g, i.e. a polynomial r
     530PUROPSE: compute the remainder of the division of f by g, i.e. a polynomial r
    531531         s.t. f = g*q + r, deg(r) < g.
    532532RETURN:  poly
     
    558558proc RemainderMain(poly f, poly g)
    559559"USAGE:   RemainderMain(f, g); poly f, g
    560 PURPOSE: compute the remainder r s.t. f = g*q + r, deg(r) < g
     560PUROPSE: compute the remainder r s.t. f = g*q + r, deg(r) < g
    561561RETURN:  poly
    562562ASSUME:  basering = Q[x,a] and ideal 'mpoly' is defined (it might be 0),
     
    580580proc EGCD(poly f, poly g)
    581581"USAGE:   EGCDMain(f, g); poly f, g
    582 PURPOSE: compute the polynomial gcd of f and g over Q(a)[x]
    583 RETURN:  poly h st. h is a greatest common divisor of f and g (not nec. monic)
     582PUROPSE: compute the polynomial gcd of f and g over Q(a)[x]
     583RETURN:  poly h s.t. h is a greatest common divisor of f and g (not nec. monic)
    584584ASSUME:  basering = Q(a)[t]
    585585EXAMPLE: example  EGCD; shows an example
     
    610610proc EGCDMain(poly f, poly g)
    611611"USAGE:   EGCDMain(f, g); poly f, g
    612 PURPOSE: compute the polynomial gcd of f and g over Q(a)[x]
     612PUROPSE: compute the polynomial gcd of f and g over Q(a)[x]
    613613RETURN:  poly
    614614ASSUME:  basering = Q[x,a] and ideal 'mpoly' is defined (it might be 0),
     
    636636proc MEGCD(poly f, poly g, int varIndex)
    637637"USAGE:   MEGCD(f, g, i); poly f, g; int i
    638 PURPOSE: compute  the polynomial gcd of f and g in the i'th variable
     638PUROPSE: compute  the polynomial gcd of f and g in the i'th variable
    639639RETURN:  poly
    640 ASSUME:  f, g are polynomials in var(i),last variable is the algebraic number
     640ASSUME:  f, g are polynomials in var(i), last variable is the algebraic number
    641641EXAMPLE: example  MEGCD; shows an example
    642642"
     
    671671proc SQFRNorm(poly f)
    672672"USAGE:   SQFRNorm(f); poly f
    673 PURPOSE: compute the norm of the squarefree polynomial f in Q(a)[x].
     673PUROPSE: compute the norm of the squarefree polynomial f in Q(a)[x].
    674674RETURN:  list
    675675         _[1] = squarefree norm of g (poly)
     
    703703proc SQFRNormMain(poly f)
    704704"USAGE:   SQFRNorm(f); poly f
    705 PURPOSE: compute the norm of the squarefree polynomial f in Q(a)[x].
     705PUROPSE: compute the norm of the squarefree polynomial f in Q(a)[x].
    706706RETURN:  list
    707707         _[1] = squarefree norm of g (poly)
    708708         _[2] = g (= f(x - s*a)) (poly)
    709709         _[3] = s (int)
    710 ASSUME:  f must be squarefree, basering = Q[x,a] and ideal 'mpoly' is equal to 'minpoly',
    711          this represents the ring Q(a)[x] together with 'minpoly'.
     710ASSUME:  f must be squarefree, basering = Q[x,a] and ideal 'mpoly' is equal to
     711         'minpoly',this represents the ring Q(a)[x] together with 'minpoly'.
    712712NOTE:   the norm is an element of Q[x]
    713713EXAMPLE: example  SqfrNorm; shows an example
     
    753753proc Factor(poly f)
    754754"USAGE:   Factor(f); poly f
    755 PURPOSE: compute the factorization of the squarefree poly f over Q(a)[t],
    756          where minpoly  = p(a).
     755PUROPSE: compute the factorization of the squarefree poly f over Q(a)[t], minpoly  = p(a).
    757756RETURN:  list
    758757         _[1] = factors (monic), first entry is the leading coefficient
    759758         _[2] = multiplicities (not yet)
    760 ASSUME:  basering must be the univariate polynomial ring over a field which
     759ASSUME:  basering must be the univariate polynomial ring over a field which 
    761760         is Q or a simple extension of Q given by a minpoly.
    762761NOTE:    if basering = Q[t] then this is the built-in 'factorize'.
     
    790789proc FactorMain(poly f)
    791790"USAGE:   FactorMain(f); poly f
    792 PURPOSE: compute the factorization of the squarefree poly f over Q(a)[t],
    793          where minpoly  = p(a).
     791PUROPSE: compute the factorization of the squarefree poly f over Q(a)[t],
     792         minpoly  = p(a).
    794793RETURN:  list
    795794         _[1] = factors, first is a constant
    796795         _[2] = multiplicities (not yet)
    797796ASSUME:  basering = Q[x,a], represents Q(a)[x] and minpoly.
    798    ideal mpoly must be defined, it might be 0 !
     797         ideal mpoly must be defined, it might be 0 !
    799798EXAMPLE: example  Factor; shows an example
    800799"
     
    846845proc ZeroSetMain(ideal I, int primDecQ)
    847846"USAGE:   ZeroSetMain(ideal I, int opt); ideal I, int opt
    848 PURPOSE: compute the zero-set of the zero-dim. ideal I, in a simple extension
     847PUROPSE: compute the zero-set of the zero-dim. ideal I, in a simple extension
    849848         of the groundfield.
    850849RETURN:  list
    851    - 'f' is the polynomial f in  Q(a) (a' being substituted by newA)
     850         - 'f' is the polynomial f in  Q(a) (a' being substituted by newA)
    852851         _[1] = zero-set (list), is the list of the zero-set of the ideal I,
    853852                each entry is an ideal.
     
    857856                remains unchanged then 'newA' = 'a'. If the basering does not
    858857                contain a parameter then 'newA' = 'a' (default).
    859          _[3] = 'mpoly' (ideal), the minimal polynomial of the simple
    860                 extension of the ground field.
    861 ASSUME: basering = K[x_1,x_2,...,x_n] where K = Q or a simple extension of Q
    862         given by a minpoly.
    863   dim(I) = 0.
     858         _[3] = 'mpoly' (ideal), the minimal polynomial of the simple extension
     859                of the ground field.
     860ASSUME:  basering = K[x_1,x_2,...,x_n] where K = Q or a simple extension of Q
     861         given by a minpoly; dim(I) = 0.
    864862NOTE:    opt = 0  no primary decomposition
    865   opt > 0  use a primary decomposition
     863         opt > 0  use a primary decomposition
    866864EXAMPLE: example ZeroSet; shows an example
    867865"
     
    936934proc ZeroSetMainWork(ideal id, intvec wt, int sVars)
    937935"USAGE:   ZeroSetMainWork(I, wt, sVars);
    938 PURPOSE: compute the zero-set of the zero-dim. ideal I, in a finite extension
     936PUROPSE: compute the zero-set of the zero-dim. ideal I, in a finite extension
    939937         of the groundfield (without multiplicities).
    940938RETURN:  list, all entries are polynomials
    941939         _[1] = zeros, each entry is an ideal
    942          _[2] = newA; if the groundfield is Q(a') this is the rep. of a' wrt a
     940         _[2] = newA; if the groundfield is Q(a') this is the rep. of a' w.r.t. a
    943941         _[3] = minpoly of the algebraic extension of the groundfield (ideal)
    944942         _[4] = name of algebraic number (default = 'a')
     
    11001098proc NonLinearZeroSetMain(ideal I, intvec wt)
    11011099"USAGE:   ZeroSetMainWork(I, wt, sVars);
    1102 PURPOSE: solves the (nonlinear) univariate polynomials in I
     1100PUROPSE: solves the (nonlinear) univariate polynomials in I
    11031101         of the groundfield (without multiplicities).
    11041102RETURN:  list, all entries are polynomials
     
    11881186static proc ExtendSolutions(list solutions, list newSolutions)
    11891187"USAGE:   ExtendSolutions(sols, newSols); list sols, newSols;
    1190 PURPOSE: extend the entries of 'sols' by the entries of 'newSols',
     1188PUROPSE: extend the entries of 'sols' by the entries of 'newSols',
    11911189         each entry of 'newSols' is a number.
    11921190RETURN:  list
     
    12261224RETURN:  list
    12271225PURPOSE: create a list of solutions of size n, each entry of 'sol2' must
    1228          have size n. 'sol1' is one partial solution (from LinearZeroSetMain)
    1229          'sol2' is a list of partial solutions (from NonLinearZeroSetMain)
     1226         have size n. 'sol1' is one partial solution (from 'LinearZeroSetMain')
     1227         'sol2' is a list of partial solutions (from 'NonLinearZeroSetMain')
    12301228ASSUME:  'sol2' is not empty
    1231 NOTE:   used by 'ZeroSetMainWork'
     1229NOTE:    used by 'ZeroSetMainWork'
    12321230{
    12331231  int i, j, k, m;
     
    12471245static proc SubsMapIdeal(list sol, list index, int opt)
    12481246"USAGE:   SubsMapIdeal(sol,index,opt); list sol, index; int opt;
    1249 PURPOSE: built an ideal I as follows.
     1247PUROPSE: built an ideal I as follows.
    12501248         if i is contained in 'index' then set I[i] = sol[i]
    12511249         if i is not contained in 'index' then
     
    12771275proc SimplifyZeroset(data)
    12781276"USAGE:   SimplifyZeroset(data); list data
    1279 PURPOSE: reduce the entries of the elements of 'data' w.r.t. the ideal 'mpoly'
     1277PUROPSE: reduce the entries of the elements of 'data' w.r.t. the ideal 'mpoly'
    12801278         'data' is a list of ideals/lists.
    12811279RETURN:  list
     
    12981296proc Variables(poly f, int n)
    12991297"USAGE:   Variables(f,n); poly f; int n;
    1300 PURPOSE: list of variables among var(1),...,var(n) which occur in f.
     1298PUROPSE: list of variables among var(1),...,var(n) which occur in f.
    13011299RETURN:  list
    13021300ASSUME:  n <= nvars(basering)
     
    13171315proc ContainedQ(data, f, list #)
    13181316"USAGE:    ContainedQ(data, f [, opt]); list data; f is of any type, int opt
    1319 PURPOSE:  test if 'f' is an element of 'data'.
     1317PUROPSE:  test if 'f' is an element of 'data'.
    13201318RETURN:   int
    13211319          0 if 'f' not contained in 'data'
     
    13481346proc SameQ(a, b)
    13491347"USAGE:    SameQ(a, b); list/intvec a, b;
    1350 PURPOSE:  test a == b elementwise, i.e., a[i] = b[i].
     1348PUROPSE:  test a == b elementwise, i.e., a[i] = b[i].
    13511349RETURN:   int
    13521350          0 if a != b
     
    13761374static proc SimplifyPoly(poly f)
    13771375"USAGE:   SimplifyPoly(f); poly f
    1378 PURPOSE: reduces the coefficients of f w.r.t. the ideal 'moly' if they contain
     1376PUROPSE: reduces the coefficients of f w.r.t. the ideal 'moly' if they contain
    13791377         the algebraic number 'a'.
    13801378RETURN:  poly
     
    14011399static proc SimplifyData(data)
    14021400"USAGE:   SimplifyData(data); ideal/list data;
    1403 PURPOSE: reduces the entries of 'data' w.r.t. the ideal 'mpoly' if they
    1404          contain the algebraic number 'a'.
     1401PUROPSE: reduces the entries of 'data' w.r.t. the ideal 'mpoly' if they contain
     1402         the algebraic number 'a'
    14051403RETURN:  ideal/list
    14061404ASSUME:  basering = Q[x_1,...,x_n,a]
     
    14251423static proc TransferRing(R)
    14261424"USAGE:   TransferRing(R);
    1427 PURPOSE: creates a new ring containing the same variables as R, but without
     1425PUROPSE: creates a new ring containing the same variables as R, but without
    14281426         parameters. If R contains a parameter then this parameter is added
    1429          as the last variable and 'minpoly' is represented by the ideal
    1430          'mpoly'. If the basering does not contain a parameter then 'a' will
    1431          be added and 'mpoly' = 0.
     1427         as the last variable and 'minpoly' is represented by the ideal 'mpoly'
     1428         If the basering does not contain a parameter then 'a' is added and
     1429         'mpoly' = 0.
    14321430RETURN:  ring
    14331431ASSUME:  R = K[x_1,...,x_n] where K = Q or K = Q(a).
     
    14591457static proc NewBaseRing()
    14601458"USAGE:   NewBaseRing();
    1461 PURPOSE: creates a new ring, the last variable is added as a parameter.
     1459PUROPSE: creates a new ring, the last variable is added as a parameter.
    14621460         minpoly is set to mpoly[1].
    14631461RETURN:  ring
     
    15001498ring S1 = 0, (s(1..3)), lp;
    15011499ideal I = s(2)*s(3), s(1)^2*s(2)+s(1)^2*s(3)-1, s(1)^2*s(3)^2-s(3), s(2)^4-s(3)^4+s(1)^2, s(1)^4+s(2)^3-s(3)^3, s(3)^5-s(1)^2*s(3);
     1500ideal mpoly = std(0);
    15021501
    15031502// order = 10
    15041503ring S2 = 0, (s(1..5)), lp;
    15051504ideal I = s(2)+s(3)-s(5), s(4)^2-s(5), s(1)*s(5)+s(3)*s(4)-s(4)*s(5), s(1)*s(4)+s(3)-s(5), s(3)^2-2*s(3)*s(5), s(1)*s(3)-s(1)*s(5)+s(4)*s(5), s(1)^2+s(4)^2-2*s(5), -s(1)+s(5)^3, s(3)*s(5)^2+s(4)-s(5)^3, s(1)*s(5)^2-1;
     1505ideal mpoly = std(0);
    15061506
    15071507//order = 126
    15081508ring S3 =  0, (s(1..5)), lp;
    15091509ideal I = s(3)*s(4), s(2)*s(4), s(1)*s(3), s(1)*s(2), s(3)^3+s(4)^3-1, s(2)^3+s(4)^3-1, s(1)^3-s(4)^3, s(4)^4-s(4), s(1)*s(4)^3-s(1), s(5)^7-1;
     1510ideal mpoly = std(0);
    15101511
    15111512// order = 192
    15121513ring S4 = 0, (s(1..4)), lp;
    15131514ideal I = s(2)*s(3)^2*s(4)+s(1)*s(3)*s(4)^2, s(2)^2*s(3)*s(4)+s(1)*s(2)*s(4)^2, s(1)*s(3)^3+s(2)*s(4)^3, s(1)*s(2)*s(3)^2+s(1)^2*s(3)*s(4), s(1)^2*s(3)^2-s(2)^2*s(4)^2, s(1)*s(2)^2*s(3)+s(1)^2*s(2)*s(4), s(1)^3*s(3)+s(2)^3*s(4), s(2)^4-s(3)^4, s(1)*s(2)^3+s(3)*s(4)^3, s(1)^2*s(2)^2-s(3)^2*s(4)^2, s(1)^3*s(2)+s(3)^3*s(4), s(1)^4-s(4)^4, s(3)^5*s(4)-s(3)*s(4)^5, s(3)^8+14*s(3)^4*s(4)^4+s(4)^8-1, 15*s(2)*s(3)*s(4)^7-s(1)*s(4)^8+s(1), 15*s(3)^4*s(4)^5+s(4)^9-s(4), 16*s(3)*s(4)^9-s(3)*s(4), 16*s(2)*s(4)^9-s(2)*s(4), 16*s(1)*s(3)*s(4)^8-s(1)*s(3), 16*s(1)*s(2)*s(4)^8-s(1)*s(2), 16*s(1)*s(4)^10-15*s(2)*s(3)*s(4)-16*s(1)*s(4)^2, 16*s(1)^2*s(4)^9-15*s(1)*s(2)*s(3)-16*s(1)^2*s(4), 16*s(4)^13+15*s(3)^4*s(4)-16*s(4)^5;
     1515ideal mpoly = std(0);
    15141516
    15151517ring R = (0,a), (x,y,z), lp;
     
    15171519ideal I1 = x2 - 1/2, a*z - 1, y - 2;
    15181520ideal I2 = x3 - 1/2, a*z2 - 3, y - 2*a;
     1521
    15191522*/
    1520 
    1521 
    1522 
    1523 
    1524 
    1525 
    1526 
    1527 
Note: See TracChangeset for help on using the changeset viewer.