[ea017f] | 1 | /*****************************************************************************\ |
---|
| 2 | * Computer Algebra System SINGULAR |
---|
| 3 | \*****************************************************************************/ |
---|
| 4 | /** @file cfCharSets.h |
---|
| 5 | * |
---|
| 6 | * This file provides functions to compute characteristic sets |
---|
[bbf054] | 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 | * |
---|
[ea017f] | 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 | |
---|
[c514f7] | 24 | #include "cfCharSetsUtil.h" |
---|
[ea017f] | 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 |
---|
[b17fa5] | 39 | modCharSet (const CFList& PS, StoreFactors& StoredFactors, |
---|
| 40 | bool removeContents= true); |
---|
[ea017f] | 41 | |
---|
[cf6604] | 42 | CFList |
---|
| 43 | modCharSet (const CFList& PS, bool removeContents); |
---|
| 44 | |
---|
[da9cd4] | 45 | CFList |
---|
| 46 | charSetViaCharSetN (const CFList& PS); |
---|
| 47 | |
---|
| 48 | CFList |
---|
| 49 | charSetN (const CFList &PS); |
---|
| 50 | |
---|
[e3cdb4] | 51 | /// modified characteristic set, i.e. a characteristic set with certain |
---|
| 52 | /// factors removed |
---|
[ea017f] | 53 | CFList |
---|
[b17fa5] | 54 | charSetViaModCharSet (const CFList& PS, StoreFactors& StoredFactors, |
---|
| 55 | bool removeContents= true); |
---|
[ea017f] | 56 | |
---|
| 57 | /// modified characteristic set, i.e. a characteristic set with certain |
---|
| 58 | /// factors removed |
---|
| 59 | CFList |
---|
[e3cdb4] | 60 | charSetViaModCharSet (const CFList& PS, bool removeContents= true); |
---|
[ea017f] | 61 | |
---|
| 62 | /// characteristic series |
---|
| 63 | ListCFList |
---|
| 64 | charSeries (const CFList& L); |
---|
[ac1a987] | 65 | |
---|
| 66 | /// irreducible characteristic series |
---|
| 67 | ListCFList |
---|
| 68 | irrCharSeries (const CFList & PS); |
---|
| 69 | |
---|
[af2e90] | 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. |
---|
[fea494] | 74 | // |
---|
[af2e90] | 75 | // this gives you a heuristically optimal ordering for the ring variables |
---|
| 76 | // if you use the irreducible characteristic series. |
---|
[23268c] | 77 | Varlist neworder (const CFList & PolyList); |
---|
| 78 | |
---|
[af2e90] | 79 | // the same as neworder(...) only returning a list of CanonicalForm 's |
---|
| 80 | // (i.e. the variables as CanonicalForms) |
---|
[23268c] | 81 | CFList newordercf (const CFList & PolyList); |
---|
| 82 | |
---|
[af2e90] | 83 | // the same as neworder(...) only returning a list of int 's (i.e. the levels) |
---|
[23268c] | 84 | IntList neworderint (const CFList & PolyList); |
---|
[af2e90] | 85 | |
---|
| 86 | // for library internal use only: |
---|
| 87 | // next function reorders the variables in PS: |
---|
| 88 | // a code segment to use: |
---|
| 89 | // ... |
---|
[fb1675] | 90 | // #include "tmpl_inst.h" // for typedef's |
---|
[af2e90] | 91 | // CFList PS= <setup-your-list-of-CanonicalForms>; |
---|
| 92 | // Varlist betterorder= neworder(PS); |
---|
[fea494] | 93 | // PS= reorder(betterorder,PS); // reorder variables in PS from oldorder |
---|
[af2e90] | 94 | // to betterorder |
---|
| 95 | // ListCFList Q= IrrCharSeries( PS ); |
---|
| 96 | // Q= reorder(betterorder,Q); // revert ordering to oldorder |
---|
[fea494] | 97 | // |
---|
[23268c] | 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); |
---|
[ea017f] | 101 | /*ENDPUBLIC*/ |
---|
| 102 | |
---|
| 103 | #endif |
---|