337 ring
r = currentStrategy.getStartingRing();
338 ideal I = currentStrategy.getStartingIdeal();
339 currentStrategy.reduce(I,r);
340 if (currentStrategy.isValuationTrivial())
348 for (
int i=0;
i<
k;
i++)
361 gfan::ZVector startingPoint;
groebnerCone ambientMaximalCone;
362 if (zc.dimension()>=currentStrategy.getExpectedDimension())
378 while (zc.dimension()<currentStrategy.getExpectedDimension())
382 startingPoint = startingData.first;
390 inI =
initial(inI,s,startingPoint);
401 ideal J =
lift(I,r,inI,s);
417 for (
int i=0;
i<
k;
i++)
428 if (zc.dimension()>=currentStrategy.getExpectedDimension())
447 gfan::ZVector startingPoint = startingData.first;
452 inJ =
initial(inJ,s,startingPoint);
453 ideal inI =
initial(I,r,startingPoint);
458 if (zc.dimension()==currentStrategy.getExpectedDimension())
461 ideal J =
lift(I,r,inJ,s);
471 ring rShortcut =
rCopy0(r);
473 rShortcut->cf =
nCopyCoeff((currentStrategy.getShortcutRing())->
cf);
477 ideal inJShortcut =
idInit(k);
479 for (
int i=0;
i<
k;
i++)
504 inJShortcut =
initial(inJShortcut,sShortcut,interiorPoint);
505 inI =
initial(inI,r,interiorPoint);
515 inJ->m[0] =
p_One(s);
516 identityMap =
n_SetMap(r->cf,s->cf);
517 p_SetCoeff(inJ->m[0],identityMap(currentStrategy.getUniformizingParameter(),r->cf,s->cf),s);
519 for (
int i=0;
i<
k;
i++)
521 if(inJShortcut->m[
i]!=
NULL)
527 ideal J = currentStrategy.computeLift(inJ,s,inI,I,r);
const CanonicalForm int s
gfan::ZCone getPolyhedralCone() const
gfan::ZCone groebnerCone(const ideal I, const ring r, const gfan::ZVector &w)
ring getPolynomialRing() const
void id_Delete(ideal *h, ring r)
deletes an ideal/module/matrix
groebnerCone tropicalStartingCone(const tropicalStrategy ¤tStrategy)
static gfan::ZCone linealitySpaceOfGroebnerFan(const ideal I, const ring r)
static number p_SetCoeff(poly p, number n, ring r)
ideal lift(const ideal J, const ring r, const ideal inI, const ring s)
poly initial(const poly p, const ring r, const gfan::ZVector w)
Returns the initial form of p with respect to w.
poly p_PermPoly(poly p, const int *perm, const ring oldRing, const ring dst, nMapFunc nMap, const int *par_perm, int OldPar, BOOLEAN use_mult)
BOOLEAN rComplete(ring r, int force)
this needs to be called whenever a new ring is created: new fields in ring are created (like VarOffse...
ring rCopy0(const ring r, BOOLEAN copy_qideal, BOOLEAN copy_ordering)
number(* nMapFunc)(number a, const coeffs src, const coeffs dst)
maps "a", which lives in src, into dst
poly checkForMonomialViaSuddenSaturation(const ideal I, const ring r)
static FORCE_INLINE nMapFunc n_SetMap(const coeffs src, const coeffs dst)
set the mapping function pointers for translating numbers from src to dst
void idSkipZeroes(ideal ide)
gives an ideal/module the minimal possible size
static FORCE_INLINE coeffs nCopyCoeff(const coeffs r)
"copy" coeffs, i.e. increment ref
static void p_Delete(poly *p, const ring r)
ideal idInit(int idsize, int rank)
initialise an ideal / module
void rDelete(ring r)
unconditionally deletes fields in r
gfan::ZVector getInteriorPoint() const
std::pair< gfan::ZVector, groebnerCone > tropicalStartingDataViaGroebnerFan(const ideal I, const ring r, const tropicalStrategy ¤tStrategy)
Computes a starting point outside the lineatliy space by traversing the Groebner fan, checking each cone whether it contains a ray in the tropical variety.
void nKillChar(coeffs r)
undo all initialisations
ideal getPolynomialIdeal() const