376 ring
r = currentStrategy.getStartingRing();
377 ideal I = currentStrategy.getStartingIdeal();
378 currentStrategy.reduce(I,r);
379 if (currentStrategy.isValuationTrivial())
387 for (
int i=0;
i<
k;
i++)
401 if (zc.dimension()>=currentStrategy.getExpectedDimension())
417 while (zc.dimension()<currentStrategy.getExpectedDimension())
421 gfan::ZVector startingPoint = startingData.first;
430 inI =
initial(inI,s,startingPoint);
443 for (
int i=0;
i<
k;
i++)
449 for (
int i=0;
i<
k;
i++)
475 for (
int i=0;
i<
k;
i++)
486 if (zc.dimension()>=currentStrategy.getExpectedDimension())
505 gfan::ZVector startingPoint = startingData.first;
511 inJ =
initial(inJ,s,startingPoint);
512 ideal inI =
initial(I,r,startingPoint);
517 if (zc.dimension()==currentStrategy.getExpectedDimension())
520 ideal J =
lift(I,r,inJ,s);
530 ring rShortcut =
rCopy0(r);
532 rShortcut->cf =
nCopyCoeff((currentStrategy.getShortcutRing())->
cf);
536 ideal inJShortcut =
idInit(k);
538 for (
int i=0;
i<
k;
i++)
563 inJShortcut =
initial(inJShortcut,sShortcut,interiorPoint);
564 inI =
initial(inI,r,interiorPoint);
574 inJ->m[0] =
p_One(s);
575 identityMap =
n_SetMap(r->cf,s->cf);
576 p_SetCoeff(inJ->m[0],identityMap(currentStrategy.getUniformizingParameter(),r->cf,s->cf),s);
578 for (
int i=0;
i<
k;
i++)
580 if(inJShortcut->m[
i]!=
NULL)
590 for (
int i=0;
i<
k;
i++)
596 for (
int i=0;
i<
k;
i++)
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 createTraversalStartingRing(const ring s, const gfan::ZMatrix &startingPoints, const tropicalStrategy ¤tStrategy)
ideal gfanlib_kStd_wrapper(ideal I, ring r, tHomog h=testHomog)
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
bool areIdealsEqual(ideal I, ring r, ideal J, ring s)
poly checkForMonomialViaSuddenSaturation(const ideal I, const ring r)
gfan::ZMatrix tropicalStartingPoints
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