1 /*****************************************************************************\ 2 * Computer Algebra System SINGULAR 3 \*****************************************************************************/ 4 /** @file cfCharSets.h 5 * 6 * This file provides functions to compute characteristic sets 7 * 8 * @note some of the code is code from libfac or derived from code from libfac. 9 * Libfac is written by M. Messollen. See also COPYING for license information 10 * and README for general information on characteristic sets. 11 * 12 * ABSTRACT: Descriptions can be found in Wang "On the Parallelization of 13 * characteristic-set based algorithms" or Greuel/Pfister "A Singular 14 * Introduction to Commutative Algebra". 15 * 16 * @author Martin Lee 17 * 18 **/ 19 /*****************************************************************************/ 20 21 #ifndef CF_CHARSETS 22 #define CF_CHARSETS 23 24 #include "cfCharSetsUtil.h" 25 26 /*BEGINPUBLIC*/ 27 28 /// basic set in the sense of Wang a.k.a. minimal ascending set in the sense of 29 /// Greuel/Pfister 30 CFList 31 basicSet (const CFList& PS); 32 33 /// characteristic set 34 CFList 35 charSet (const CFList& PS); 36 37 /// modified medial set 38 CFList 39 modCharSet (const CFList& PS, StoreFactors& StoredFactors, 40 bool removeContents= true); 41 42 CFList 43 modCharSet (const CFList& PS, bool removeContents); 44 45 CFList 46 charSetViaCharSetN (const CFList& PS); 47 48 CFList 49 charSetN (const CFList &PS); 50 51 /// modified characteristic set, i.e. a characteristic set with certain 52 /// factors removed 53 CFList 54 charSetViaModCharSet (const CFList& PS, StoreFactors& StoredFactors, 55 bool removeContents= true); 56 57 /// modified characteristic set, i.e. a characteristic set with certain 58 /// factors removed 59 CFList 60 charSetViaModCharSet (const CFList& PS, bool removeContents= true); 61 62 /// characteristic series 63 ListCFList 64 charSeries (const CFList& L); 65 66 /// irreducible characteristic series 67 ListCFList FACTORY_PUBLIC 68 irrCharSeries (const CFList & PS); 69 70 // the next three give you a heuristically optimal reorderd list of the 71 // variables. For internal and external (e.g. Singular/Macaulay2) library use. 72 // This is really experimental! 73 // See the comments in reorder.cc. 74 // 75 // this gives you a heuristically optimal ordering for the ring variables 76 // if you use the irreducible characteristic series. 77 Varlist neworder (const CFList & PolyList); 78 79 // the same as neworder(...) only returning a list of CanonicalForm 's 80 // (i.e. the variables as CanonicalForms) 81 CFList newordercf (const CFList & PolyList); 82 83 // the same as neworder(...) only returning a list of int 's (i.e. the levels) 84 IntList FACTORY_PUBLIC neworderint (const CFList & PolyList); 85 86 // for library internal use only: 87 // next function reorders the variables in PS: 88 // a code segment to use: 89 // ... 90 // #include "tmpl_inst.h" // for typedef's 91 // CFList PS= <setup-your-list-of-CanonicalForms>; 92 // Varlist betterorder= neworder(PS); 93 // PS= reorder(betterorder,PS); // reorder variables in PS from oldorder 94 // to betterorder 95 // ListCFList Q= IrrCharSeries( PS ); 96 // Q= reorder(betterorder,Q); // revert ordering to oldorder 97 // 98 CFList reorder (const Varlist & betterorder, const CFList & PS); 99 CFFList reorder (const Varlist & betterorder, const CFFList & PS); 100 ListCFList reorder (const Varlist & betterorder, const ListCFList & Q); 101 /*ENDPUBLIC*/ 102 103 #endif 104