1 #ifndef SHIFTOP_H
2 #define SHIFTOP_H
3 
4 #include "misc/auxiliary.h"
5 #ifdef HAVE_SHIFTBBA
6 #include "monomials/ring.h"
7 
8 poly shift_pp_Mult_mm(poly p, const poly m, const ring r);
9 poly shift_p_Mult_mm(poly p, const poly m, const ring r);
10 poly shift_pp_mm_Mult(poly p, const poly m, const ring r);
11 poly shift_p_mm_Mult(poly p, const poly m, const ring r);
12 poly shift_p_Minus_mm_Mult_qq(poly p, poly m, poly q, int& Shorter, const poly spNoether, const ring r);
13 poly shift_pp_Mult_mm_Noether_STUB(poly p, const poly m, const poly spNoether, int &ll, const ring ri);
14 poly shift_pp_Mult_Coeff_mm_DivSelectMult_STUB(poly p,const poly m, const poly a, const poly b, int &shorter,const ring r);
15 poly shift_pp_Mult_Coeff_mm_DivSelect_STUB(poly p, const poly m, int &shorter, const ring r);
16 
17 void p_mLPunshift(poly m, const ring ri);
18 void p_LPunshift(poly p, const ring ri);
19 void p_mLPshift(poly p, int sh, const ring r);
20 void p_LPshift(poly p, int sh, const ring r);
21 #define pLPunshift(p, sh) p_LPunshift(p, currRing)
22 #define pmLPunshift(p, sh) p_mLPunshift(p, currRing)
23 #define pLPshift(p, sh) p_LPshift(p, sh, currRing)
24 #define pmLPshift(p, sh) p_mLPshift(p, sh, currRing)
25 
26 int p_LastVblock(poly p, const ring r);
27 int p_mLastVblock(poly p, const ring r);
28 int p_mLastVblock(poly p, int *expV, const ring r);
29 int p_FirstVblock(poly p, const ring r);
30 int p_mFirstVblock(poly p, const ring r);
31 int p_mFirstVblock(poly p, int *expV, const ring r);
32 #define pLastVblock(p) p_LastVblock(p,currRing)
33 #define pmLastVblock(p) p_mLastVblock(p,currRing)
34 #define pFirstVblock(p) p_FirstVblock(p,currRing)
35 #define pmFirstVblock(p) p_mFirstVblock(p,currRing)
36 
37 void p_LPExpVappend(int *m1ExpV, int *m2ExpV, int m1Length, int m2Length, const ring ri);
38 void p_LPExpVprepend(int *m1ExpV, int *m2ExpV, int m1Length, int m2Length, const ring ri);
39 
40 void WriteLPExpV(int *expV, ring ri);
41 char* LPExpVString(int *expV, ring ri);
42 
43 void k_SplitFrame(poly &m1, poly &m2, int at, const ring r);
44 #define kSplitFrame(m1, m2, at) k_SplitFrame(m1, m2, at, currRing)
45 
46 int id_IsInV(ideal I, const ring r);
47 int p_IsInV(poly p, const ring r);
48 int p_mIsInV(poly p, const ring r);
49 #define idIsInV(I) id_IsInV(I, currRing)
50 #define pIsInV(p) p_IsInV(p, currRing)
51 #define pmIsInV(p) p_mIsInV(p, currRing)
52 
53 BOOLEAN p_LPDivisibleBy(poly a, poly b, const ring r);
54 BOOLEAN p_LPLmDivisibleBy(poly a, poly b, const ring r);
55 BOOLEAN _p_LPLmDivisibleByNoComp(poly a, poly b, const ring r);
56 BOOLEAN p_LPDivisibleBy(ideal I, poly p, ring r);
57 #define pLPDivisibleBy(a, b) p_LPLmDivisibleBy(a, b, currRing)
58 #define pLPLmDivisibleBy(a, b) p_LPLmDivisibleBy(a, b, currRing)
59 
60 BOOLEAN _p_mLPNCGenValid(poly p, const ring r);
61 BOOLEAN _p_mLPNCGenValid(int *mExpV, const ring r);
62 
63 poly p_LPVarAt(poly p, int pos, const ring r);
64 
65 #define pGetNCGen(p) p_GetNCGen(p, currRing)
66 int p_GetNCGen(poly p, const ring r);
67 
68 #define pLPSubst(p, n, e) p_LPSubst(p, n, e, r)
69 #define pmLPSubst(m, n, e) p_LPSubst(m, n, e, r)
70 poly p_LPSubst(poly p, int n, poly e, const ring r);
71 poly p_mLPSubst(poly m, int n, poly e, const ring r);
72 
73 /// create the letterplace ring corresponding to r up to degree d
74 ring freeAlgebra(ring r, int d, int LPncGenCount = 0);
75 #endif
76 #endif
77