See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/280308061 What is new in CoCoA? (slides) Conference Paper · July 2015 CITATIONS READS 0 138 1 author: John Abbott Università degli Studi di Genova 92 PUBLICATIONS 530 CITATIONS SEE PROFILE Some of the authors of this publication are also working on these related projects: CoCoA and CoCoALib: software presentations, tutorials, demos View project SC-square: Symbolic Computation and Satisfiability Checking View project All content following this page was uploaded by John Abbott on 23 July 2015. The user has requested enhancement of the downloaded file.
What is new in CoCoA? http://cocoa.dima.unige.it/ J. Abbott & A.M. Bigatti Università di Genova, Italy J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 1 / 11
Overview The CoCoA project dates back to 1987 under the lead of L. Robbiano. The aim was to create a mathematician-friendly software laboratory for studying Computational Commutative Algebra (multivariate polynomials). Main functions/operations Gröbner bases of ideals/modules with many term orderings Hilbert series, resolutions, Betti numbers special handling for ideals of points, monomial ideals, . . . ideal operations ( e.g. elim, colon, primary decomp.) polynomial factorization basic exact linear algebra ( LinSolve , LinKer , eigenvectors , det ) approx points, border bases, approx polynomial relations J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 2 / 11
Software Starting in 2000: brand new design and implementation in C++. Software: 3 interfaces an open source C++ software library , CoCoALib a new interpreter for the interactive system , CoCoA-5 a prototype OpenMath-based server , CoCoAServer CoCoA software relies on GMP library. J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 3 / 11
Software CoCoA is designed to be easy to use . . . free and open source C++ code (GPL3 licence) source code is clean and portable (C++03) well-documented, incl. many examples function interfaces are natural for mathematicians design respects underlying mathematical structures execution speed is good with helpful error reporting . . . and easy to use correctly! J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 4 / 11
CoCoA-5 Language The Interactive CoCoA System Natural mathematical syntax for lists [ N in 1..50 | IsPrime(N) and IsPrime(N+2) ]; No declaration of variables ( dynamically typed ) use QQ[x,y,z]; A := (x-y)^3 * (z-2); // type(A) is RINGELEM factor(A); A := mat([[x,y,z], [1,2,3], [0,x-1,1/2]]); // type(A) is MAT det(A); A := ideal(x^3 + x*y^2 - 2*z, ........ ); // type(A) is IDEAL GBasis(A); Summary: simple imperative language; easy syntax; on-line manual. J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 5 / 11
CoCoA-5 Language New features in CoCoA-5 CoCoA-5 is mostly compatible with CoCoA-4, yet provides greater expressibility and a more solid mathematical basis. create different types of ring: use R ::= QQ[a]; k := NewQuotientRing(R, ideal(a^2-2)); // k is QQ[a]/(a^2-2) P ::= k[x,y,z]; // P is QQ(sqrt(2))[x,y,z] create ring homomorphisms phi := CanonicalHom(R,k); // phi: QQ[a] --> QQ[a]/(a^2-2) theta := CanonicalHom(k,P)(phi); // composition R --> k --> P f := a^2 + 2*a - 1; // poly in R = QQ[a] 1/phi(f); // gives ((2/7)*a -1/7) in k 1/theta(f); // gives ((2/7)*a -1/7) in P J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 6 / 11
Extensions and Contributions The openness and clean design of CoCoALib and CoCoA-5 are intended to encourage external contributions. Extending CoCoA-5 There are several ways of extending CoCoA-5: Add a new function written in CoCoA-5 language; Collect functions into a new CoCoA-5 package; Write the new functions in C++ inside CoCoALib, and then make them “visible” to CoCoA-5. J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 7 / 11
Extensions and Contributions Direct contributions to CoCoALib Mathematical support and feedback (L. Robbiano) Gröbner bases structure and ideal/module operations (M. Caboara, 2005) Approximate points (M. L. Torrente and C. Fassino, 2008) Mayer-Vietoris trees (E. Sáenz de Cabezón, 2009) Janet and Pommaret Bases (M. Albert and W. Seiler, 2015) External libraries integrated with CoCoALib B. Roune: Frobby (monomial ideals) experimental interface with GSL (GNU Scientific Library) C. Söger: Normaliz (affine monoids or rational cones) A. N. Jensen: GFan (Gröbner fans and tropical varieties) — soon J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 8 / 11
Converting CoCoA-5 code to C++ Heron’s formula for the area of a triangle: J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 9 / 11
Converting CoCoA-5 code to C++ CoCoA-5 code: use QQ[x[1],x[2],y, a,b,c,area]; defns := ideal(a^2 - (x[2]^2+y^2), // define length a b^2 - (x[1]^2+y^2), // define length b c - (x[2]-x[1]), // define length c area - (1/2)*c*y); // define area J := elim([x[1],x[2],y], defns); F := gens(J)[1]; println factor(F+16*area^2).factors; CoCoALib/C++ code: ring P = NewPolyRing(RingQQ(),SymbolList("x[1],x[2],y,a,b,c,area")); ideal defns(ReadExpr(P,"a^2 - (x[2]^2+y^2)"), ReadExpr(P,"b^2 - (x[1]^2+y^2)"), ReadExpr(P,"c - (x[2]-x[1])"), ReadExpr(P,"area - (1/2)*c*y")); ideal J = elim(SymbolList("x[1],x[2],y"), defns); RingElem F = gens(J)[0]; RingElem area = RingElem(P, symbol("area")); cout << factor(F+16*area*area).myFactors() << endl; J. Abbott & A.M. Bigatti What is new in CoCoA? Bath, ISSAC 2015 10 / 11
Web site Web site: http://cocoa.dima.unige.it/ Downloads: CoCoALib v. 0.99536 (July 2015) CoCoA v. 5.1.2 (?July 2015?) Also... redmine (bug/feature tracker), & other useful bits and bobs. Have fun with CoCoA! Thanks! J. Abbott & A.M. Bigatti View publication stats View publication stats What is new in CoCoA? Bath, ISSAC 2015 11 / 11
Recommend
More recommend