Difference between revisions of "HowTo:Contribute an ApCoCoA2 Package"
Andraschko (talk  contribs) (added category) 
Andraschko (talk  contribs) m (Andraschko moved page HowTo:Contribute an ApCoCoA Package to HowTo:Contribute an ApCoCoA2 Package: consistency) 
(No difference)

Revision as of 11:00, 29 October 2020
This page describes how to contribute a package to ApCoCoA. There are three main steps for contributing an ApCoCoA Package:
 Implementing the package functions, see HowTo:Implement an ApCoCoA2 Package,
 Send your package to one of our Team members,
 Describe your package in this Wiki, see HowTo:Document an ApCoCoA2 Package.
Example for an ApCoCoA package
The file sagbi.cpkg5
in the directory apcocoa/
in the package directory starts with the following lines:
  This file is part of the ApCoCoA package pool.   Copyright (c) ApCoCoA Project (Prof. Dr. Martin Kreuzer, Uni Passau)   Authors: 2020 Bernhard Andraschko   Visit http://apcocoa.org/ for more information regarding ApCoCoA.  Visit http://www.apcocoa.org/wiki/ApCoCoA:KnownIssues for bugs, problems  and known issues.   The ApCoCoA package pool is free software; you can redistribute it and/or  modify it under the terms of the GNU General Public License (version 3 or  later) as published by the Free Software Foundation. A copy of the full  licence may be found in the file COPYING in this directory.   The ApCoCoA package pool is distributed in the hope that it will be useful,  but WITHOUT ANY WARRANTY; without even the implied warranty of  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  GNU General Public License for more details.   You should have received a copy of the GNU General Public License  along with the ApCoCoA package pool; if not, write to the Free Software  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 021111307 USA Package $apcocoa/sagbi export skip; Define About() PrintLn " Topic : Subalgebras"; PrintLn " Keywords: Subalgebra, SAGBI bases"; PrintLn " Authors : B. Andraschko"; PrintLn " Version : CoCoA 5.3.2"; PrintLn " Date : 7 September 2020"; EndDefine;  About Define Man() PrintLn "Recommended Alias:"; PrintLn " Alias SB := $apcocoa/sagbi;"; PrintLn; PrintLn; PrintLn "Description:"; PrintLn " Contains basic functions for subalgebras of polynomial rings, e.g."; PrintLn " Hilbert series, SAGBI bases of testing for subalgebra membership."; PrintLn " In our context, a subalgebra is a tagged record containing all"; PrintLn " informations about the subalgebra as e.g. a unique ID, the base ring,"; PrintLn " generators, etc."; PrintLn " To get these informations, one can use the getter methods described"; PrintLn " below. For Details about the record fields see the description of the"; PrintLn " function Subalgebra(...)."; PrintLn; PrintLn; PrintLn "Function Description:"; PrintLn " Note: we write short \"SUBALGEBRA\" for \"TAGGED(\"$sagbi.Subalgebra\")\""; PrintLn " For a short function list type in"; PrintLn " SB.FnList();"; PrintLn; PrintLn " Main functions:"; PrintLn; PrintLn " Subalgebra(R: RING, fs: LIST) : SUBALGEBRA"; PrintLn " Input: a polynomial ring R and a list fs of polynomials in R"; PrintLn " Output: a tagged record S containing the following fields:"; PrintLn " ID: A unique ID"; PrintLn " CoeffRing: the coefficient ring K of R"; PrintLn " Ring: the super ring of S, i.e. R"; PrintLn " gens: a list of generators of the subalgebra, i.e. S = K[fs]"; PrintLn " SAGBI: a storage field for a (truncated) SAGBI basis of S"; PrintLn "  initially []"; PrintLn " trunc: the truncation degree of the currently computed truncated"; PrintLn " SAGBI basis  initially 0. If SAGBI is a complete SAGBI basis,"; PrintLn " then trunc is set to 1."; PrintLn " HS: Hilbert Series of S  initially 0."; PrintLn " Note: Assumes R is standardgraded ring"; PrintLn; PrintLn " SAGBI(G: LIST): LIST"; PrintLn " Input: a list of polynomials G"; PrintLn " Output: a SAGBI basis of K[G]"; ... EndDefine;  Man SubalgebraID := 0; Define Subalgebra(R,fs) ... EndDefine; ... EndPackage;
In this Wiki, we have the pages Package sagbi, Category:Package sagbi and function pages like Package sagbi/SB.SAGBI:
{{Version2[[ApCoCoA1:SB.Sagbi]] and [[ApCoCoA1:SB.ReducedSagbi]]}} <command> <title>SB.SAGBI</title> <short_description>Computes a finite SAGBIbasis of a subalgebra if existing.</short_description> <syntax>SB.SAGBI(G:LIST of POLY):LIST of POLY</syntax> <description> This function computes a finite SAGBIbasis of a subalgebra <tt>S</tt> generated by the polynomials of the list <tt>G</tt>, if a finite SAGBIbasis of <tt>S</tt> is existing. Then a list of polynomials is returned which form a SAGBIbasis of <tt>S</tt>. Otherwise the computation runs until it is interrupted. <itemize> <item>@param <em>G</em> A list of polynomials which generates a subalgebra.</item> <item>@return A list of polynomials which form a finite SAGBIbasis of the subalgebra generated by <tt>G</tt>.</item> </itemize> <example> Use QQ[x,y,z], DegRevLex; S := SB.SAGBI([x^2 z^2, x*y +z^2, y^2 2*z^2]); indent(S);  [  y^2 2*z^2,  x*y +z^2,  x^2 z^2,  x^2*z^2 +x*y*z^2 +(1/2)*y^2*z^2 +(1/2)*z^4  ]</example> </description> <seealso> <see>Package sagbi/SB.TruncSAGBI</see> <see>Package sagbi/SB.SAGBITimeout</see> <see>Package sagbi/SB.IsSAGBIOf</see> <see>Package sagbi/SB.GetSAGBI</see> <see>Package sagbi/SB.GetTruncSAGBI</see> </seealso> <types> <type>sagbi</type> <type>poly</type> </types> <key>SAGBI</key> <key>SB.SAGBI</key> <key>apcocoa/sagbi.SAGBI</key> <wikicategory>Package sagbi</wikicategory> </command>
which produces
This article is about a function from ApCoCoA2. If you are looking for the ApCoCoA1 version of it, see ApCoCoA1:SB.Sagbi and ApCoCoA1:SB.ReducedSagbi. 
SB.SAGBI
Computes a finite SAGBIbasis of a subalgebra if existing.
Syntax
SB.SAGBI(G:LIST of POLY):LIST of POLY
Description
This function computes a finite SAGBIbasis of a subalgebra S generated by the polynomials of the list G, if a finite SAGBIbasis of S is existing. Then a list of polynomials is returned which form a SAGBIbasis of S. Otherwise the computation runs until it is interrupted.
@param G A list of polynomials which generates a subalgebra.
@return A list of polynomials which form a finite SAGBIbasis of the subalgebra generated by G.
Example
Use QQ[x,y,z], DegRevLex; S := SB.SAGBI([x^2 z^2, x*y +z^2, y^2 2*z^2]); indent(S);  [  y^2 2*z^2,  x*y +z^2,  x^2 z^2,  x^2*z^2 +x*y*z^2 +(1/2)*y^2*z^2 +(1/2)*z^4  ]