248{
251 int flag, flagcnt=0, syzcnt=0;
252 int syzcomp = 0;
255 ideal s_I;
257 ideal trickyQuotient;
259 {
261 }
262 else
263 trickyQuotient = I;
265 poly *var = (poly *)
omAlloc0((
N+1)*
sizeof(poly));
266
272 ideal h2, s_h2, s_h3;
274
275 for (
i=1;
i<=
N;
i++ )
276 {
281 }
282
283 for (
i=1;
i<=
N;
i++ )
284 {
286 flag = 0;
287 for (
j=0;
j< idI;
j++ )
288 {
291 if (q!=0)
292 {
294
295 flag++;
297 }
298 else
300 }
301
302 if (flag >0)
303 {
304
305
306
307
309
312 syzcomp = 1;
314 if (orig_ring != syz_ring)
315 {
318
319
321 }
322 else
323 {
324 s_h2 = h2;
325 s_I = I;
326
327 }
329
330 Print(
".proceeding with the variable %d\n",
i);
339 PrintS(
"...computing Syz");
342
343 if (orig_ring != syz_ring)
344 {
347 {
348 if (s_h3->m[
j] !=
NULL)
349 {
352 else
354 }
355 }
357 s_h3->rank -= syzcomp;
359
362 }
365 syzcnt++;
367 }
368 else
369 {
370 flagcnt++;
371 }
372 }
374 {
375 PrintS(
"the input is a two--sided ideal");
376 return(I);
377 }
378 if (syzcnt >0)
379 {
380 Print(
"..computing Intersect of %d modules\n",syzcnt);
381 if (syzcnt == 1)
382 SI = S[0];
383 else
385
389 {
392 {
395 {
398 }
399 }
401 }
406 }
407 else
408 {
410 return(I);
411 }
412}
const CanonicalForm CFMap CFMap & N
ideal idMultSect(resolvente arg, int length, GbVariant alg)
#define idDelete(H)
delete an ideal
#define idSimpleAdd(A, B)
ideal kStd2(ideal F, ideal Q, tHomog h, intvec **w, bigintmat *hilb, int syzComp, int newIdeal, intvec *vw, s_poly_proc_t sp)
generic interface to GB/SB computations, large hilbert vectors
poly kNF(ideal F, ideal Q, poly p, int syzComp, int lazyReduce)
#define MATELEM(mat, i, j)
1-based access to matrix
static ideal idPrepareStd(ideal T, ideal s, int k)
#define SI_RESTORE_OPT1(A)
void p_Shift(poly *p, int i, const ring r)
shifts components of the vector p by i
static poly pp_Mult_mm(poly p, poly m, const ring r)
static long p_MinComp(poly p, ring lmRing, ring tailRing)
void rChangeCurrRing(ring r)
VAR ring currRing
Widely used global variable which specifies the current polynomial ring for Singular interpreter and ...
#define pCopy(p)
return a copy of the poly
ideal idrMoveR_NoSort(ideal &id, ring src_r, ring dest_r)
ideal idrCopyR_NoSort(ideal id, ring src_r, ring dest_r)
void PrintS(const char *s)
ring rAssure_SyzComp(const ring r, BOOLEAN complete)
void rDelete(ring r)
unconditionally deletes fields in r
void rSetSyzComp(int k, const ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
matrix id_Module2Matrix(ideal mod, const ring R)
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
static int idElem(const ideal F)
number of non-zero polys in F