1Package $obsolescent 2 3export ArrDerMod; 4export MultiArrDerMod; 5export AllReducedGroebnerBases; 6///export adjoint; 7///export AffHilbert; 8///export AffPoincare; 9export Bin; 10///export Comp; 11export Fact; 12export FactorAlgExt; 13export Factorial; 14///export FloatApprox10; 15///export Functions; 16///export Hilbert; 17export HomogElimMat; 18///export ID; 19///export ILogBase; 20export iroot; 21export jacobian; 22///export List; 23///export log; 24///export Log; 25///export LogToTerm; 26///export MantissaAndExponent; 27export minimalize; 28export Minimalize; 29export minimalized; 30export Minimalized; 31///export Mod2Rat; 32///export MinGensGeneral; 33export NewRingFp; 34///export Poincare; 35export PreImage; 36export PrimaryDecomposition0; 37///export rank; 38///export Rank; 39export ReadExpr; 40///export RingSet; 41export SubalgebraRepr; 42export sylvester; 43export TmpNBM; 44export TensorMat; 45export UniversalGroebnerBasis; 46///export WeightsMatrix; 47 48----- OBSOLETE ------ 49export isqrt; 50export CompleteToOrd; 51 52---------------------------------------------------------------------- 53 54-- CallCount := Record[]; -- to reduce number of warnings 55 56-- // ADDED: April 2014 57-- // SUGGESTED EXPIRATION DATE: April 2015 58-- Define List(M) 59-- If type(M) <> MAT Then 60-- error("\"List\" not implemented for type "+sprint(type(M))); 61-- EndIf; 62-- -- if not("List" IsIn Fields($.CallCount)) then 63-- -- $.CallCount.List := 0; 64-- PrintLn "--> WARNING: List(MATRIX) works but is obsolescent (from CoCoA-5.1.0)."; 65-- PrintLn "--> WARNING: Please use \"GetRows(MATRIX)\" to get rid of this message."; 66-- -- endif; 67-- -- incr(ref $.CallCount.List); 68-- Return GetRows(M); 69-- EndDefine; -- List 70 71 72-- // ADDED April 2014 73-- // Suggested EXPIRATION DATE: April 2015 74-- Define Mod2Rat(res, mod, DenomBound) 75-- PrintLn "--> WARNING: Mod2Rat is obsolescent (from CoCoA-5.1.0)."; 76-- PrintLn "--> WARNING: Please use RatReconstructWithBounds instead."; 77-- NumerBound := div(mod,2*DenomBound); 78-- ans := RatReconstructWithBounds(0,NumerBound, DenomBound, [res], [mod]); 79-- If ans.failed Then Return 0; EndIf; 80-- Return ans.ReconstructedRat; 81-- EndDefine; -- Mod2Rat 82 83 84-- // renamed to adj 85-- // ADDED March 2015 86-- // Suggested expiration date: March 2016 87-- define adjoint(M) 88-- PrintLn "--> WARNING: adjoint is obsolescent (from CoCoA-5.1.3); use adj instead"; 89-- return adj(M); 90-- enddefine; -- adjoint 91 92 93-- // Was in approx.cpkg5 94-- // ADDED April 2014 95-- // Suggested EXPIRATION date: April 2015 96-- // Update entry for "FloatApprox" when you delete this fn!! 97-- Define FloatApprox10(N, RelativeError) 98-- PrintLn "--> WARNING: FloatApprox10 is obsolescent (from CoCoA-5.1.0); use FloatApprox (binary) instead"; 99-- If type(N) <> INT And type(N) <> RAT Then error("FloatApprox10: first argument must be rational"); EndIf; 100-- If type(RelativeError) <> INT And type(RelativeError) <> RAT Then 101-- error("FloatApprox10: second argument must be rational"); 102-- EndIf; 103-- If RelativeError <= 0 Or RelativeError > 0.1 Then RelativeError := 0.1; EndIf; 104-- If N = 0 Then Return 0; EndIf; 105-- Ndigits := 1; 106-- Power := 1/5; 107-- While Power > RelativeError Do 108-- Power := Power/10; 109-- incr(ref Ndigits); 110-- EndWhile; 111-- Tmp := MantissaAndExponent(N, Ndigits); 112-- Return Tmp.Mantissa*10^(Tmp.Exponent - Ndigits + 1); 113-- EndDefine; -- FloatApprox10 114 115 116-- // Was in float.cpkg5 117-- // ADDED April 2014 118-- // Suggested EXPIRATION date: April 2015 119-- Define MantissaAndExponent(X, SigFig) 120-- PrintLn "--> WARNING: MantissaAndExponent is obsolescent (from CoCoA-5.1.0)."; 121-- PrintLn "--> WARNING: Please use MantissaAndExponent10 instead."; 122-- Return MantissaAndExponent10(X, SigFig); 123-- EndDefine; -- MantissaAndExponent 124 125 126-- // Was built-in 127-- // ADDED May 2014 128-- // Suggested EXPIRATION date: May 2015 129-- Define Functions(str) 130-- PrintLn "--> WARNING: \"Functions\" is obsolete; instead please use the \"describe\" command."; 131-- EndDefine; -- Functions 132 133 134-- // Was in coclib.cpkg5 135-- // ADDED May 2014 136-- // Suggested EXPIRATION date: May 2016 137-- Define Comp(...) 138-- TopLevel ERR; 139-- PrintLn "--> WARNING: \"Comp\" is obsolete (from CoCoA-5.1.0); instead please"; 140-- PrintLn "--> WARNING: use [..] for indexing, or the field selector operator."; 141-- If len(ARGV) = 0 Then error(ERR.BAD_PARAMS_NUM); EndIf; 142-- X := ARGV[1]; 143-- L := tail(ARGV); 144-- Foreach I In L Do 145-- If (type(X) IsIn [LIST, MODULEELEM, STRING] And type(I)=INT) Or 146-- (type(X)=RECORD And type(I)=STRING) Then 147-- X := X[I]; 148-- Else 149-- If not(type(X) IsIn [LIST, MODULEELEM, STRING, RECORD]) Then 150-- error("Comp: first argument must be in [LIST, MODULEELEM, STRING, RECORD]"); 151-- Else 152-- error("Comp: arguments must be (LIST/MODULEELEM/STRING,INT) or (RECORD,STRING)"); 153-- EndIf; 154-- EndIf; 155-- EndForeach; 156-- Return X; 157-- EndDefine; 158 159 160-- // Was in BackwardCompatible.cpkg5 161-- // ADDED July 2014 162-- // Suggested EXPIRATION date: July 2016 163-- Define Poincare(X) 164-- PrintLn "--> WARNING: \"Poincare\" is obsolescent (from CoCoA-5.1.1)"; 165-- PrintLn "--> WARNING: use \"HilbertSeries\" instead."; 166-- Return HilbertSeries(X); 167-- EndDefine; 168 169-- // Was in BackwardCompatible.cpkg5 170-- // ADDED July 2014 171-- // Suggested EXPIRATION date: July 2016 172-- Define Hilbert(X) 173-- PrintLn "--> WARNING: \"Hilbert\" is obsolescent (from CoCoA-5.1.1)"; 174-- PrintLn "--> WARNING: use \"HilbertFn\" instead."; 175-- Return HilbertFn(X); 176-- EndDefine; 177 178-- // Was in BackwardCompatible.cpkg5 179-- // ADDED July 2014 180-- // Suggested EXPIRATION date: July 2016 181-- Define AffPoincare(M) 182-- PrintLn "--> WARNING: \"AffPoincare\" is obsolescent (from CoCoA-5.1.1)"; 183-- PrintLn "--> WARNING: use \"AffHilbertSeries\" instead."; 184-- Return AffHilbertSeries(M); 185-- EndDefine; 186 187-- // Was in BackwardCompatible.cpkg5 188-- // ADDED July 2014 189-- // Suggested EXPIRATION date: July 2016 190-- Define AffHilbert(...) 191-- PrintLn "--> WARNING: \"AffHilbert\" is obsolescent (from CoCoA-5.1.1)"; 192-- PrintLn "--> WARNING: use \"AffHilbertFn\" instead."; 193-- Return AffHilbertFn(...); 194-- EndDefine; 195 196-- // builtin function: insert 197-- // ADDED July 2014 198-- // Suggested EXPIRATION date: July 2016 199 200 201-- // Was builtin 202-- // ADDED July 2014 203-- // Suggested EXPIRATION date: July 2016 204-- Define WeightsMatrix(R) 205-- PrintLn "--> WARNING: \"WeightsMatrix\" is obsolescent (from CoCoA-5.1.1)"; 206-- PrintLn "--> WARNING: use \"GradingMat\" instead."; 207-- Return GradingMat(R); 208-- EndDefine; 209 210 211-- // ADDED May 2015 212-- // Suggested EXPIRATION date: May 2017 213-- Define rank(M) 214-- PrintLn "--> WARNING: \"rank\" is obsolescent (from CoCoA-5.1.2)"; 215-- PrintLn "--> WARNING: use \"rk\" instead."; 216-- Return rk(M); 217-- EndDefine; 218 219-- // ADDED May 2015 220-- // Suggested EXPIRATION date: May 2017 221-- Define Rank(M) 222-- PrintLn "--> WARNING: \"Rank\" is obsolescent (from CoCoA-5.1.2)"; 223-- PrintLn "--> WARNING: use \"rk\" instead."; 224-- Return rk(M); 225-- EndDefine; 226 227-- // ADDED June 2015 228-- // Suggested EXPIRATION date: June 2017 229-- Define RingSet(M) 230-- PrintLn "--> WARNING: \"RingSet\" is obsolescent (from CoCoA-5.1.2)"; 231-- PrintLn "--> WARNING: use \"RingsOf\" instead."; 232-- Return RingsOf(M); 233-- EndDefine; 234 235-- // ADDED May 2015 236-- // Suggested EXPIRATION date: May 2017 237-- Define MinGensGeneral(M) 238-- PrintLn "--> WARNING: \"MinGensGeneral\" is obsolescent (from CoCoA-5.1.2)"; 239-- PrintLn "--> WARNING: use \"MinSubsetOfGens\" instead."; 240-- Return MinSubsetOfGens(M); 241-- EndDefine; 242 243-- // Was in BackwardCompatible.cpkg5 244-- // ADDED July 2015 245-- // Suggested EXPIRATION date: July 2017 246-- Define PrimaryPoincare(I, Q) 247-- PrintLn "--> WARNING: \"PrimaryPoincare\" is obsolescent (from CoCoA-5.1.2)"; 248-- PrintLn "--> WARNING: use \"PrimaryHilbertSeries\" instead."; 249-- Return PrimaryHilbertSeries(I, Q); 250-- EndDefine; 251 252-- // Was in BackwardCompatible.cpkg5 253-- // ADDED July 2015 254-- // Suggested EXPIRATION date: July 2017 255-- Define ID(R) 256-- PrintLn "--> WARNING: \"ID\" is obsolescent (from CoCoA-5.1.2)"; 257-- PrintLn "--> WARNING: use \"RingID\" instead."; 258-- Return RingID(R); 259-- EndDefine; 260 261-- // -------- CoCoA-5.1.3 ---------------------------------------------- 262-- // log/Log added Sept 2015. 263-- // Suggested expiration date: Jan 2018 264-- define log(t) 265-- PrintLn "--> WARNING: \"log\" is obsolescent (from CoCoA-5.1.3)"; 266-- PrintLn "--> WARNING: use \"exponents\" instead."; 267-- return exponents(t); 268-- enddefine; -- log 269 270-- define Log(t) 271-- PrintLn "--> WARNING: \"Log\" is obsolescent (from CoCoA-5.1.3)"; 272-- PrintLn "--> WARNING: use \"exponents\" instead."; 273-- return exponents(t); 274-- enddefine; -- Log 275 276 277-- // LogToTerm added Sept 2015. 278-- // Suggested expiration date: Jan 2018 279-- define LogToTerm(P, expv) 280-- PrintLn "--> WARNING: \"LogToTerm\" is obsolescent (from CoCoA-5.1.3)"; 281-- PrintLn "--> WARNING: use \"MakeTerm\" instead."; 282-- return MakeTerm(P, expv); 283-- enddefine; -- LogToTerm 284 285 286-- // ILogBase added Nov 2015 287-- // Suggested expiration date: Jan 2018 288-- define ILogBase(N,base) 289-- PrintLn "--> WARNING: \"ILogBase\" is obsolescent (from CoCoA-5.1.3)"; 290-- PrintLn "--> WARNING: use \"FloorLogBase\" or \"FloorLog2\" or \"FloorLog10\" instead."; 291-- return FloorLogBase(N,base); 292-- enddefine; -- ILogBase 293 294 295// iroot added Apr 2019 296// Suggested expiration date: Jan 2022 297define iroot(N,R) 298 PrintLn "--> WARNING: \"iroot\" is obsolescent from CoCoA-5.3.0 2020"; 299 PrintLn "--> WARNING: use \"FloorRoot\" instead."; 300 if N < 0 then error("iroot: negative args no longer accepted"); endif 301 return FloorRoot(N,R); 302enddefine; -- iroot 303// Next line from BackwardCompatible 304Define Iroot(N,R) Return iroot(N,R); EndDefine; 305 306 307-- // isqrt added Nov 2015 308-- // Suggested expiration date: Jan 2018 309-- define isqrt(N) 310-- PrintLn "--> WARNING: \"isqrt\" is obsolescent (from CoCoA-5.1.3)"; 311-- PrintLn "--> WARNING: use \"FloorSqrt\" instead."; 312-- return FloorSqrt(N); 313-- enddefine; -- isqrt 314 315Define isqrt(...) 316 error("\"isqrt\" is OBSOLETE: use \"FloorSqrt\" instead"); 317EndDefine; 318 319-- // CompleteToOrd added Jan 2016 320-- // Suggested expiration date: Jan 2018 321-- define CompleteToOrd(M) 322-- PrintLn "--> WARNING: \"CompleteToOrd\" is obsolescent (from CoCoA-5.1.3)"; 323-- PrintLn "--> WARNING: use \"MakeTermOrd\" instead."; 324-- return MakeTermOrd(M); 325-- enddefine; -- CompleteToOrd 326 327Define CompleteToOrd(...) 328 error("\"CompleteToOrd\" is OBSOLETE: use \"MakeTermOrd\" instead"); 329EndDefine; 330 331 332// from CoCoA-5.2.0 ------------------------------------------------------- 333 334// added Jul 2016 335// Suggested expiration date: May 2019 336define AllReducedGroebnerBases(I) 337 PrintLn "--> WARNING: \"AllReducedGroebnerBases\" is obsolescent from CoCoA-5.2.0 2017"; 338 PrintLn "--> WARNING: use \"GroebnerFanIdeals\" instead."; 339 return GroebnerFanIdeals(I); 340enddefine; -- AllReducedGroebnerBases 341 342// added Jul 2016 343// Suggested expiration date: May 2019 344define UniversalGroebnerBasis(I) 345 println "--> WARNING: \"UniversalGroebnerBasis\" is obsolescent from CoCoA-5.2.0 2017"; 346 println "--> WARNING: use \"UniversalGBasis\" instead."; 347 return UniversalGBasis(I); 348enddefine; -- UniversalGroebnerBasis 349 350// added Jul 2016 351// Suggested expiration date: May 2019 352define HomogElimMat(M, ElimInds) 353 println "--> WARNING: \"HomogElimMat\" is obsolescent from CoCoA-5.2.0 2017"; 354 println "--> WARNING: use \"ElimHomogMat(ElimInds, M)\" instead."; 355 return ElimHomogMat(ElimInds, M); 356enddefine; -- HomogElimMat 357 358 359// added march 2017 360// Suggested expiration date: May 2019 361define TmpNBM(P, pts, toler) 362 println "--> WARNING: \"TmpNBM\" is obsolescent from CoCoA-5.2.0 2017"; 363 println "--> WARNING: use \"ApproxPointsNBM(P, pts, toler)\" instead."; 364 return ApproxPointsNBM(P, pts, toler); 365enddefine; -- TmpNBM 366 367// added april 2017 368// Suggested expiration date: May 2019 369define Bin(A,B) 370 println "--> WARNING: \"Bin\" is obsolescent from CoCoA-5.2.0 2017"; 371 println "--> WARNING: use \"binomial(A,B)\" instead."; 372 return binomial(A,B); 373enddefine; -- Bin 374 375// added april 2017 376// Suggested expiration date: May 2019 377define Der(A,B) 378 println "--> WARNING: \"Der\" is obsolescent from CoCoA-5.2.0 2017"; 379 println "--> WARNING: use \"deriv(A,B)\" instead."; 380 return deriv(A,B); 381enddefine; -- Der 382 383// added april 2017 384// Suggested expiration date: May 2019 385define ReadExpr(R,str) 386 println "--> WARNING: \"ReadExpr\" is obsolescent from CoCoA-5.2.0 2017"; 387 println "--> WARNING: use \"RingElem(R,str)\" instead."; 388 return RingElem(R,str); 389enddefine; -- Der 390 391// added May 2017 392// suggested expiration date; AS SOON AS POSSIBLE!!! 393-- Rand() returns a random integer --> removed 394-- Rand(X,Y) returns a random integer between X and Y --> in BackwardCompatible 395 396 397define PreImage(phi,y) 398 println "--> WARNING: \"PreImage\" is obsolete"; 399 println "--> WARNING: use \"preimage0\" instead"; 400 return $HomomorphismFns.preimage_OLD(phi,y); 401EndDefine; -- PreImage 402 403 404// Added Nov 2017 405// suggested expiration date: Nov 2019 406Define Fact(N) 407 println "--> WARNING: \"Fact\" is obsolescent"; 408 println "--> WARNING: use \"factorial\" instead"; 409 Return factorial(N); 410EndDefine; 411 412// Added Nov 2017 413// suggested expiration date: Nov 2019 414Define Factorial(N) 415 println "--> WARNING: \"Factorial\" is obsolescent"; 416 println "--> WARNING: use \"factorial\" instead"; 417 Return factorial(N); 418EndDefine; 419 420-- CoCoA-5.2.2 ------------------------------------------------------------- 421 422// added Sept 2017 423// Suggested expiration date: Sept 2019 424define minimalized(I) 425 println "--> WARNING: \"minimalized\" obsolescent from CoCoA-5.2.2 2018"; 426 if type(I) = IDEAL then 427 println "--> WARNING: use \"IdealOfMinGens(I)\" instead."; 428 return IdealOfMinGens(I); 429 else // MODULE 430 println "--> WARNING: use \"SubmoduleOfMinGens(I)\" instead."; 431 return SubmoduleOfMinGens(I); 432 endif; 433enddefine; -- minimalized 434 435 436// added Sept 2017 437// Suggested expiration date: Sept 2019 438define minimalize(ref I) 439 println "--> WARNING: \"minimalize\" obsolescent from CoCoA-5.2.2 2018"; 440 if type(I) = IDEAL then 441 println "--> WARNING: use \"I := IdealOfMinGens(I)\" instead."; 442 I := IdealOfMinGens(I); 443 else // MODULE 444 println "--> WARNING: use \"M := SubmoduleOfMinGens(M)\" instead."; 445 M := SubmoduleOfMinGens(I); 446 endif; 447enddefine; -- minimalize 448 449Define Minimalize(ref I) minimalize(ref I); EndDefine; 450Define Minimalized(I) Return minimalized(ref I); EndDefine; 451 452 453// added Sept 2017 454// Suggested expiration date: Sept 2019 455define SubalgebraRepr(...) 456 println "--> WARNING: \"SubalgebraRepr\" obsolescent from CoCoA-5.2.2 2018"; 457 println "--> WARNING: use \"preimage0 / ker\" of \"SubalgebraHom(R, L)\" instead."; 458 if not(len(ARGV) isin [2,3]) then error("2 or 3 arguments"); endif; 459 if len(ARGV) = 3 then 460 P := ARGV[1]; 461 f := ARGV[2]; 462 L := ARGV[3]; 463 phi := SubalgebraHom(ARGV[1], ARGV[3]); 464 endif; 465 if len(ARGV) = 2 then 466 f := ARGV[1]; 467 L := ARGV[2]; 468 P := NewPolyRing(CoeffRing(RingOf(L[1])), SymbolRange("x",1,len(L))); 469 phi := SubalgebraHom(P, L); 470 endif; 471 PI := preimage0(phi, f); 472 return record[ 473 IsInImage := IsZero(f) or not(IsZero(PI)), 474 OnePreImage := PI, 475 ker := ker(phi) 476 ]; 477enddefine; -- SubalgebraRepr 478 479-- CoCoA-5.2.4 ------------------------------------------------------------- 480// Added Apr 2018 481// suggested expiration date: Apr 2020 482Define FactorAlgExt(f) 483 println "--> WARNING: \"FactorAlgExt\" obsolescent from CoCoA-5.2.4 2018"; 484 println "--> WARNING: use \"factor\" instead"; 485 Return factor(f); 486EndDefine; 487 488// Added Apr 2018 489// suggested expiration date: Apr 2020 490Define PrimaryDecomposition0(I) 491 println "--> WARNING: \"PrimaryDecomposition0\" obsolescent from CoCoA-5.2.4 2018"; 492 println "--> WARNING: use \"PrimaryDecomposition\" instead"; 493 Return PrimaryDecomposition(I); 494EndDefine; 495 496-- CoCoA-5.2.6 -- not public -------------------------------------------- 497 498// Added Aug 2018 ---> no public version until 2020? 499// suggested expiration date: Aug 2020 500define NewRingFp(N) 501 println "--> WARNING: \"NewRingFp\" obsolescent from CoCoA-5.3.0 2020"; 502 println "--> WARNING: use \"NewZZmod\" instead"; 503 if type(N) <> INT or N < 2 or not(IsProbPrime(N)) then error("NewRingFp: BAD ARG, but use NewZZmod instead!"); endif; 504 return NewZZmod(N); 505enddefine; 506 507define sylvester(f,g,x) 508 println "--> WARNING: \"sylvester\" obsolescent from CoCoA-5.3.0 2020"; 509 println "--> WARNING: use \"SylvesterMat\" instead"; 510 if type(f) <> RINGELEM or type(g) <> RINGELEM or type(x) <> RINGELEM then error("sylvester: args must be RINGELEM"); endif; 511 return SylvesterMat(f,g,x); 512enddefine; -- sylvester 513 514define jacobian(...) 515 println "--> WARNING: \"jacobian\" obsolescent from CoCoA-5.3.0 2020"; 516 println "--> WARNING: use \"JacobianMat\" instead"; 517 return JacobianMat(...); 518enddefine; -- jacobian 519 520-- CoCoA-5.3.0 ------------------------------------------------------------- 521 522// Added Jan 2020 523// suggested expiration date: Jan 2022 524define ArrDerMod(Q) 525 println "--> WARNING: \"ArrDerMod\" obsolescent from CoCoA-5.3.0 2020"; 526 println "--> WARNING: use \"ArrDerModule\" instead"; 527 return ArrDerModule(Q); 528enddefine; 529 530// Added Jan 2020 531// suggested expiration date: Jan 2022 532define MultiArrDerMod(MultiA) 533 println "--> WARNING: \"MultiArrDerMod\" obsolescent from CoCoA-5.3.0 2020"; 534 println "--> WARNING: use \"MultiArrDerModule\" instead"; 535 return MultiArrDerModule(MultiA); 536enddefine; 537 538// Added June 2020 539// suggested expiration date: June 2022 540define TensorMat(M,N) 541 println "--> WARNING: \"TensorMat\" obsolescent from CoCoA-5.3.4 2020"; 542 println "--> WARNING: use \"KroneckerProd\" instead"; 543 return KroneckerProd(M,N); 544enddefine; 545 546endpackage; ------------------------------------------------------------- 547