1 #ifndef CoCoA_SparsePolyOps_MinPoly_H 2 #define CoCoA_SparsePolyOps_MinPoly_H 3 4 // Copyright (c) 2016-2018 John Abbott and Anna M. Bigatti 5 6 // This file is part of the source of CoCoALib, the CoCoA Library. 7 8 // CoCoALib is free software: you can redistribute it and/or modify 9 // it under the terms of the GNU General Public License as published by 10 // the Free Software Foundation, either version 3 of the License, or 11 // (at your option) any later version. 12 13 // CoCoALib is distributed in the hope that it will be useful, 14 // but WITHOUT ANY WARRANTY; without even the implied warranty of 15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 // GNU General Public License for more details. 17 18 // You should have received a copy of the GNU General Public License 19 // along with CoCoALib. If not, see <http://www.gnu.org/licenses/>. 20 21 22 // Header file for functions MinPoly etc. 23 #include "CoCoA/ring.H" 24 #include "CoCoA/VerificationLevel.H" 25 26 #include <iosfwd> 27 // using std::ostream; 28 #include <vector> 29 // using std::vector; 30 31 namespace CoCoA 32 { 33 34 class ConstMatrixView; // fwd decl -- defined in matrix.H 35 // class ConstRefRingElem; // fwd decl -- defined in ring.H 36 class RingElem; // fwd decl -- defined in ring.H 37 class RingElemAlias; // fwd decl -- defined in ring.H 38 class matrix; // fwd decl -- defined in matrix.H 39 class ideal; // fwd decl -- defined in ideal.H 40 class PPMonoidElem; // fwd decl -- defined in PPMonoid.H 41 class PolyRing; // fwd decl -- defined in PolyRing.H 42 class VerificationLevel;// fwd decl -- defined in VerificationLevel.H 43 44 matrix FrobeniusMat(const ideal& I); 45 matrix FrobeniusMat(const ideal& I, const std::vector<PPMonoidElem>& QB2); 46 47 RingElem MinPoly(ConstMatrixView M, ConstRefRingElem x); 48 RingElem MinPoly(ConstRefRingElem f, ConstRefRingElem x); 49 50 RingElem MinPoly(ConstRefRingElem f, ConstRefRingElem x); 51 RingElem MinPolyMat(ConstRefRingElem f, ConstRefRingElem x); 52 RingElem MinPolyDef(ConstRefRingElem f, ConstRefRingElem x); 53 RingElem MinPolyElim(ConstRefRingElem f, ConstRefRingElem x); 54 55 // to be deleted later on? 56 RingElem MinPolyQuot(ConstRefRingElem f, const ideal& I, ConstRefRingElem x, VerificationLevel NumChecks=guaranteed()); 57 // RingElem MinPolyQuot(ConstRefRingElem f, const ideal& I, ConstRefRingElem x); 58 RingElem MinPolyQuotMat(ConstRefRingElem f, const ideal& I, ConstRefRingElem x); 59 RingElem MinPolyQuotDef(ConstRefRingElem f, const ideal& I, ConstRefRingElem x); 60 RingElem MinPolyQuotDefLin(ConstRefRingElem f, const ideal& I, ConstRefRingElem x); 61 RingElem MinPolyQuotElim(ConstRefRingElem f, const ideal& I, ConstRefRingElem x); 62 63 std::vector<RingElem> ShapeLemma(const ideal& I); 64 65 /////////// ??????? 66 RingElem LiftPolyFromFpxToQQx(const PolyRing& QQx, ConstRefRingElem f); 67 68 69 } // end of namespace CoCoA 70 71 72 73 // RCS header/log in the next few lines 74 // $Header: /Volumes/Home_1/cocoa/cvs-repository/CoCoALib-0.99/include/CoCoA/SparsePolyOps-MinPoly.H,v 1.2 2019/12/21 16:46:49 abbott Exp $ 75 // $Log: SparsePolyOps-MinPoly.H,v $ 76 // Revision 1.2 2019/12/21 16:46:49 abbott 77 // Summary: Changed MinPolyQuot to single fn with optional param 78 // 79 // Revision 1.1 2018/04/06 15:09:39 bigatti 80 // -- renamed MinPoly.H 81 // 82 // Revision 1.13 2018/03/15 14:20:42 bigatti 83 // -- removed empty space 84 // 85 // Revision 1.12 2018/03/13 18:03:52 bigatti 86 // -- MinPolyModular: now using VerificationLevel class 87 // 88 // Revision 1.11 2018/03/13 17:43:38 bigatti 89 // -- now MinPolyQuot takes a verification level 90 // instead of being called MinPolyQuotHeuristic 91 // 92 // Revision 1.10 2018/02/22 16:51:09 bigatti 93 // -- added MinPolyQuotHeuristic 94 // 95 // Revision 1.9 2018/01/17 10:52:18 abbott 96 // Summary: Corrected includes and fwd decls 97 // 98 // Revision 1.8 2017/06/26 13:17:24 bigatti 99 // -- exported utility function LiftPolyFromFpxToQQx 100 // 101 // Revision 1.7 2016/10/27 13:07:24 bigatti 102 // -- added MinPolyQuotDefLin 103 // -- cleaned up code, unified notation 104 // 105 // Revision 1.6 2016/10/24 12:10:35 bigatti 106 // -- added ShapeLemma (first draft) 107 // 108 // Revision 1.5 2016/06/27 14:50:28 bigatti 109 // -- now FrobeniusMat may take two args 110 // 111 // Revision 1.4 2016/06/20 15:24:42 bigatti 112 // -- renamed MinPolyXX --> MinPolyQuotXX 113 // -- added MinPolyDef(f, x) 114 // -- added default to MinPolyDef in both cases 115 // 116 // Revision 1.3 2016/06/10 15:55:00 bigatti 117 // -- only one arg for FrobeniusMat 118 // 119 // Revision 1.2 2016/04/14 11:34:58 bigatti 120 // -- added FrobeniusMat 121 // 122 // Revision 1.1 2016/03/18 11:54:00 bigatti 123 // -- first import 124 // 125 126 #endif 127