1407{
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1428 {
1429 PrintS(
"Hilbert Series:\n 0\n");
1430 return;
1431 }
1434 {
1437 }
1438 else
1439 {
1441 {
1443 {
1444 WerrorS(
"wrong input: it is not an infinitely gen. case");
1445 return;
1446 }
1449 }
1450 else
1452 }
1453 std::vector<ideal >
idorb;
1454 std::vector< poly >
polist;
1455
1458
1460
1461 std::vector< std::vector<int> >
posMat;
1463 std::vector<int> C;
1464
1466 unsigned long lpcnt = 0;
1467
1470
1472 {
1476 {
1478 {
1479 C.push_back(1);
1480 }
1481 else
1482 C.push_back(0);
1483 }
1484 else
1485 {
1486 C.push_back(1);
1487 }
1488
1491
1492 for(is = 1; is <=
lV; is++)
1493 {
1495
1496
1497
1498
1499
1500
1505
1506
1507
1508
1509
1511
1514
1516 {
1518
1521 }
1522 else
1523 {
1527 }
1528 }
1531 }
1535 Print(
"\nlength of the Orbit = %d",
lO);
1537
1539 {
1540 Print(
"words description of the Orbit: \n");
1541 for(is = 0; is <
lO; is++)
1542 {
1545 }
1547 PrintS(
"\nmaximal degree, #(sum_j R(w,w_j))");
1549 for(is = 0; is <
lO; is++)
1550 {
1552 {
1554 }
1555 else
1556 {
1558 }
1559 }
1560 }
1561
1562 for(is =
idorb.size()-1; is >= 0; is--)
1563 {
1565 }
1566 for(is =
polist.size()-1; is >= 0; is--)
1567 {
1569 }
1570
1573
1579 {
1581 {
1583 {
1586 }
1587 }
1588 }
1589
1595 {
1599 }
1600 else
1601 {
1603 for(is = 0; is <
lV; is++)
1604 {
1605 tt[is] = (
char*)
omAlloc(7*
sizeof(
char));
1607 }
1609 }
1610
1613 char**
xx = (
char**)
omAlloc(
sizeof(
char*));
1617
1618
1619
1622 poly rc;
1623
1625 {
1627 {
1629 {
1631 {
1634 }
1635 }
1636 }
1637 }
1638 else
1639 {
1641 {
1643 {
1648 }
1649 }
1650 }
1651
1653 {
1655 {
1657 }
1658 }
1659
1663
1665
1667 {
1668 PrintS(
"\nlinear system:\n");
1670 {
1672 {
1675 {
1680 }
1682 }
1683 PrintS(
"where H(1) represents the series corresp. to input ideal\n");
1684 PrintS(
"and i^th summand in the rhs of an eqn. is according\n");
1685 PrintS(
"to the right colon map corresp. to the i^th variable\n");
1686 }
1687 else
1688 {
1690 {
1693 {
1698 }
1700 }
1701 PrintS(
"where H(1) represents the series corresp. to input ideal\n");
1702 }
1703 }
1706 C.resize(0);
1712
1713
1714
1715
1718
1719
1720
1721
1722
1731
1733 Print(
"Hilbert series:");
1737 {
1739 }
1740 else
1741 {
1742 for(is =
lV-1; is >= 0; is--)
1743
1745 }
1751}
static FORCE_INLINE number n_Mult(number a, number b, const coeffs r)
return the product of 'a' and 'b', i.e., a*b
static FORCE_INLINE number n_Param(const int iParameter, const coeffs r)
return the (iParameter^th) parameter as a NEW number NOTE: parameter numbering: 1....
@ n_transExt
used for all transcendental extensions, i.e., the top-most extension in an extension tower is transce...
coeffs nInitChar(n_coeffType t, void *parameter)
one-time initialisations for new coeffs in case of an error return NULL
const CanonicalForm int s
void WerrorS(const char *s)
static int positionInOrbitTruncationCase(ideal I, poly w, std::vector< ideal > idorb, std::vector< poly > polist, int, int trunDegHs)
static ideal colonIdeal(ideal S, poly w, int lV, ideal Jwi, int trunDegHs)
static int positionInOrbit_FG_Case(ideal I, poly, std::vector< ideal > idorb, std::vector< poly >, int, int)
static int positionInOrbit_IG_Case(ideal I, poly w, std::vector< ideal > idorb, std::vector< poly > polist, int trInd, int)
static ideal minimalMonomialGenSet(ideal I)
#define idDelete(H)
delete an ideal
BOOLEAN idIs0(ideal h)
returns true if h is the zero ideal
bool unitMatrix(const int n, matrix &unitMat, const ring R)
Creates a new matrix which is the (nxn) unit matrix, and returns true in case of success.
void luDecomp(const matrix aMat, matrix &pMat, matrix &lMat, matrix &uMat, const ring R)
LU-decomposition of a given (m x n)-matrix.
bool luSolveViaLUDecomp(const matrix pMat, const matrix lMat, const matrix uMat, const matrix bVec, matrix &xVec, matrix &H)
Solves the linear system A * x = b, where A is an (m x n)-matrix which is given by its LU-decompositi...
void mp_Delete(matrix *a, const ring r)
matrix mp_Sub(matrix a, matrix b, const ring R)
matrix mpNew(int r, int c)
create a r x c zero-matrix
#define MATELEM(mat, i, j)
1-based access to matrix
static number & pGetCoeff(poly p)
return an alias to the leading coefficient of p assumes that p != NULL NOTE: not copy
The main handler for Singular numbers which are suitable for Singular polynomials.
poly p_ISet(long i, const ring r)
returns the poly representing the integer i
static poly p_Add_q(poly p, poly q, const ring r)
static unsigned long p_SetExp(poly p, const unsigned long e, const unsigned long iBitmask, const int VarOffset)
set a single variable exponent @Note: VarOffset encodes the position in p->exp
static void p_Setm(poly p, const ring r)
static number p_SetCoeff(poly p, number n, ring r)
static long p_Totaldegree(poly p, const ring r)
void rChangeCurrRing(ring r)
#define pCopy(p)
return a copy of the poly
void StringSetS(const char *st)
void PrintS(const char *s)
ring rDefault(const coeffs cf, int N, char **n, int ord_size, rRingOrder_t *ord, int *block0, int *block1, int **wvhdl, unsigned long bitmask)
ideal idInit(int idsize, int rank)
initialise an ideal / module
struct for passing initialization parameters to naInitChar