Difference between revisions of "HowTo:Contribute an ApCoCoA-2 Package"
Andraschko (talk | contribs) m (Andraschko moved page Creating an ApCoCoA Package to HowTo:Contribute an ApCoCoA Package) |
Andraschko (talk | contribs) (Structure; most of the content outsourced to HowTo:Implement an ApCoCoA-2 Package and HowTo:Document an ApCoCoA-2 Package) |
||
Line 1: | Line 1: | ||
− | There are three main steps for contributing an ApCoCoA Package: | + | This page describes how to contribute a package to ApCoCoA. There are three main steps for contributing an ApCoCoA Package: |
− | # Implementing the package functions | + | # Implementing the package functions, see [[HowTo:Implement an ApCoCoA-2 Package]], |
− | + | # Send your package to one of our [[Team|Team members]], | |
− | # Send | + | # Describe your package in this Wiki, see [[HowTo:Document an ApCoCoA-2 Package]]. |
− | # | ||
− | + | == Example for an ApCoCoA package == | |
− | |||
− | = | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
The file <code>sagbi.cpkg5</code> in the directory <code>apcocoa/</code> in the package directory starts with the following lines: | The file <code>sagbi.cpkg5</code> in the directory <code>apcocoa/</code> in the package directory starts with the following lines: | ||
<div class="mw-collapsible mw-collapsed"> | <div class="mw-collapsible mw-collapsed"> | ||
− | <div style="font-weight:bold;line-height:1.6; padding:1em; border:1px solid #c8ccd1; background-color: #f8f9fa;">Source code of | + | <div style="font-weight:bold;line-height:1.6; padding:1em; border:1px solid #c8ccd1; background-color: #f8f9fa;">Source code of sagbi.cpkg5 (the relevant part)</div> |
<div class="mw-collapsible-content"> | <div class="mw-collapsible-content"> | ||
<nowiki>-- | <nowiki>-- |
Revision as of 10:53, 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 ApCoCoA-2 Package,
- Send your package to one of our Team members,
- Describe your package in this Wiki, see HowTo:Document an ApCoCoA-2 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 02111-1307 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 standard-graded 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:
{{Version|2|[[ApCoCoA-1:SB.Sagbi]] and [[ApCoCoA-1:SB.ReducedSagbi]]}} <command> <title>SB.SAGBI</title> <short_description>Computes a finite SAGBI-basis of a subalgebra if existing.</short_description> <syntax>SB.SAGBI(G:LIST of POLY):LIST of POLY</syntax> <description> This function computes a finite SAGBI-basis of a subalgebra <tt>S</tt> generated by the polynomials of the list <tt>G</tt>, if a finite SAGBI-basis of <tt>S</tt> is existing. Then a list of polynomials is returned which form a SAGBI-basis 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 SAGBI-basis 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> <wiki-category>Package sagbi</wiki-category> </command>
which produces
This article is about a function from ApCoCoA-2. If you are looking for the ApCoCoA-1 version of it, see ApCoCoA-1:SB.Sagbi and ApCoCoA-1:SB.ReducedSagbi. |
SB.SAGBI
Computes a finite SAGBI-basis of a subalgebra if existing.
Syntax
SB.SAGBI(G:LIST of POLY):LIST of POLY
Description
This function computes a finite SAGBI-basis of a subalgebra S generated by the polynomials of the list G, if a finite SAGBI-basis of S is existing. Then a list of polynomials is returned which form a SAGBI-basis 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 SAGBI-basis 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 -- ]