<h4>1.1 <span class="Heading">Introduction to the <strong class="pkg">toric</strong> package</span></h4>
<p>This manual describes the <strong class="pkg">toric</strong> package for working with toric varieties in <strong class="pkg">GAP</strong>. Toric varieties can be dealt with more easily than general varieties since often times questions about a toric variety can be reformulated in terms of combinatorial geometry. Some coding theory commands related to toric varieties are contained in the error-correcting codes <strong class="pkg">GUAVA</strong> package (for example, the command <code class="code">ToricCode</code>). We refer to the <strong class="pkg">GUAVA</strong> manual <a href="chapBib_mj.html#biBGua05">[FJT+09]</a> and the expository paper <a href="chapBib_mj.html#biBJV02">[JV02]</a> for more details.</p>
<p>The <strong class="pkg">toric</strong> package also contains several commands unrelated to toric varieties (mostly for list manipulations). These will not be described in this documention but they are briefly documented in the <code class="code">lib/util.gd</code> file.</p>
<p><strong class="pkg">toric</strong> is implemented in the <strong class="pkg">GAP</strong> language, and runs on any system supporting <strong class="pkg">GAP</strong>4.3 and above. The <strong class="pkg">toric</strong> package is loaded with the command</p>
<p>Please send bug reports, suggestions and other comments about <strong class="pkg">toric</strong> to <span class="URL"><a href="mailto:support@gap-system.org">support@gap-system.org</a></span>.</p>
<h4>1.2 <span class="Heading">Introduction to constructing toric varieties</span></h4>
<p>Rather than sketch the theory of toric varieties, we refer to <a href="chapBib_mj.html#biBJV02">[JV02]</a> and <a href="chapBib_mj.html#biBF93">[Ful93]</a> for details. However, we briefly describe some terminology and notation.</p>
<p>Let <span class="SimpleMath">\(F\)</span> denote a field and <span class="SimpleMath">\(R=F [x_1,...,x_n]\)</span> be a ring in <span class="SimpleMath">\(n\)</span> variables. A <strong class="button">binomial equation</strong> in <span class="SimpleMath">\(R\)</span> is one of the form</p>
<p>where <span class="SimpleMath">\(k_i \geq 0,\ \ell_j \geq 0\)</span> are integers. A binomial variety is a subvariety of affine <span class="SimpleMath">\(n\)</span>-space <span class="SimpleMath">\(A_F^n\)</span> defined by a finite set of binomial equations (such a variety need not be normal). A typical ``toric variety'' is binomial, though they will be introduced via an <em>a priori</em> independent construction. The basic idea of the construction is to replace each such binomial equation as above by a relation in a semigroup contained in a lattice and replace <span class="SimpleMath">\(R\)</span> by the ``group algebra'' of this semigroup. By the way, a toric variety is always normal (see for example, <a href="chapBib_mj.html#biBF93">[Ful93]</a>, page 29).</p>
<p>Let <span class="SimpleMath">\(Q\)</span> denote the field of rational numbers and <span class="SimpleMath">\(Z\)</span> denote the set of integers. Let <span class="SimpleMath">\(n>1\)</span> denote an integer.</p>
<p>Let <span class="SimpleMath">\(V=Q^n\)</span> having basis <span class="SimpleMath">\(f_1=(1,0,...,0)\)</span>, ..., <span class="SimpleMath">\(f_n=(0,...,0,1)\)</span>. Let <span class="SimpleMath">\(L_0=Z^n\subset V\)</span> be the standard lattice in <span class="SimpleMath">\(V\)</span>. We identify <span class="SimpleMath">\(V\)</span> and <span class="SimpleMath">\(L_0\otimes_{Z} Q\)</span>. We use <span class="SimpleMath">\(\langle\ ,\ \rangle\)</span> to denote the (standard) inner product on <span class="SimpleMath">\(V\)</span>. Let</p>
<p>denote the <strong class="button">dual lattice</strong>, so (fixing the standard basis <span class="SimpleMath">\(e_1^*\)</span>,...,<span class="SimpleMath">\(e_n^*\)</span> dual to the <span class="SimpleMath">\(f_1\)</span>,...,<span class="SimpleMath">\(f_n\)</span>) <span class="SimpleMath">\(L_0^*\)</span> may be identified with <span class="SimpleMath">\(Z^n\)</span>.</p>
<p>A <strong class="button">cone</strong> in <span class="SimpleMath">\(V\)</span> is a set <span class="SimpleMath">\(\sigma\)</span> of the form</p>
<p>where <span class="SimpleMath">\(v_1,...,v_m \in V\)</span> is a given collection of vectors, called (semigroup) <strong class="button">generators</strong> of <span class="SimpleMath">\(\sigma\)</span>. A <strong class="button">rational cone</strong> is one where <span class="SimpleMath">\(v_1,...,v_m \in L_0\)</span>. A <strong class="button">strongly convex</strong> cone is one which contains no lines through the origin.</p>
<p><em> By abuse of terminology, from now on a <strong class="button">cone</strong> of <span class="SimpleMath">\(L_0\)</span> is a strongly convex rational cone. </em></p>
<p>A <strong class="button">face</strong> of a cone <span class="SimpleMath">\(\sigma\)</span> is either <span class="SimpleMath">\(\sigma\)</span> itself or a subset of the form <span class="SimpleMath">\(H\cap \sigma\)</span>, where <span class="SimpleMath">\(H\)</span> is a codimension one subspace of <span class="SimpleMath">\(V\)</span> which intersects the cone non-trivially and such that the cone is contained in exactly one of the two half-spaces determined by <span class="SimpleMath">\(H\)</span>. A <strong class="button">ray</strong> (or edge) of a cone is a one-dimensional face. Typically, cones are represented in <strong class="pkg">toric</strong> by the list of vectors defining their rays. The <strong class="button">dimension</strong> of a cone is the dimension of the vector space it spans. The <strong class="pkg">toric</strong> package can test if a given vector is in a given cone (see <code class="code">InsideCone</code>).</p>
<p>If <span class="SimpleMath">\(\sigma\)</span> is a cone then the <strong class="button">dual cone</strong> is defined by</p>
<p>Though <span class="SimpleMath">\(L_0^*\)</span> has $n$ generators <em>as a lattice</em>, typically <span class="SimpleMath">\(S_\sigma\)</span> will have more than <span class="SimpleMath">\(n\)</span> generators <em>as a semigroup</em>. The <strong class="pkg">toric</strong> package can compute a minimal list of semigroup generators of <span class="SimpleMath">\(S_\sigma\)</span> (see <code class="code">DualSemigroupGenerators</code>).</p>
<p>A fan is a collection of cones which ``fit together'' well. A <strong class="button">fan</strong> in <span class="SimpleMath">\(L_0\)</span> is a set <span class="SimpleMath">\(\Delta=\{\sigma \}\)</span> of rational strongly convex cones in <span class="SimpleMath">\(V= L_0 \otimes Q\)</span> such that</p>
<ul>
<li><p>if <span class="SimpleMath">\(\sigma \in \Delta\)</span> and <span class="SimpleMath">\(\tau \subset \sigma\)</span> is a face of <span class="SimpleMath">\(\sigma\)</span> then <span class="SimpleMath">\(\tau \in \Delta\)</span>,</p>
</li>
<li><p>if <span class="SimpleMath">\(\sigma_1, \sigma_2 \in \Delta\)</span> then the intersection <span class="SimpleMath">\(\sigma_1 \cap \sigma_2\)</span> is a face of both <span class="SimpleMath">\(\sigma_1\)</span> and <span class="SimpleMath">\(\sigma_2\)</span> (and hence belongs to <span class="SimpleMath">\(\Delta\)</span>).</p>
</li>
</ul>
<p>In particular, the face of a cone in a fan is a cone is the fan.</p>
<p>If <span class="SimpleMath">\(V\)</span> is the (set-theoretic) union of the cones in <span class="SimpleMath">\(\Delta\)</span> then we call the fan <strong class="button">complete</strong>. We shall assume that all fans are finite. A fan is determined by its list of maximal cones.</p>
<p><em>Notation</em>: A fan <span class="SimpleMath">\(\Delta\)</span> is represented in <strong class="pkg">toric</strong> as a set of maximal cones. For example, if <span class="SimpleMath">\(\Delta\)</span> is the fan with maximal cones <span class="SimpleMath">\(\sigma_1=Q_+\cdot f_1+Q_+\cdot (-f_1+f_2)\)</span>, <span class="SimpleMath">\(\sigma_2=Q_+\cdot (-f_1+f_2)+Q_+\cdot (-f_1-f_2)\)</span>, <span class="SimpleMath">\(\sigma_3=Q_+\cdot (-f_1-f_2)+Q_+\cdot f_1\)</span>, then <span class="SimpleMath">\(\Delta\)</span> is represented by <span class="SimpleMath">\([[[1,0],[-1,1]],[[-1,1],[-1,-1]],[[-1,-1],[1,0]]]\)</span>.</p>
<p>The <strong class="pkg">toric</strong> package can compute all cones in a fan of a given dimension (see <code class="code">ConesOfFan</code>). Moreover, <strong class="pkg">toric</strong> can compute the set of all normal vectors to the faces (i.e., hyperplanes) of a cone (see <code class="code">Faces</code>).</p>
<p>The <strong class="button">star</strong> of a cone <span class="SimpleMath">\(\sigma\)</span> in a fan <span class="SimpleMath">\(\Delta\)</span> is the set <span class="SimpleMath">\(\Delta_\sigma\)</span> of cones in <span class="SimpleMath">\(\Delta\)</span> containing <span class="SimpleMath">\(\sigma\)</span> as a face. The <strong class="pkg">toric</strong> package can compute stars (see <code class="code">ToricStar</code>).</p>
<p class="center">\[
R_\sigma = F [S_\sigma]
\]</p>
<p>denote the ``group algebra'' of this semigroup. It is a finitely generated commutative F-algebra. It is in fact integrally closed (<a href="chapBib_mj.html#biBF93">[Ful93]</a>, page 29). We may interprete <span class="SimpleMath">\(R_\sigma\)</span> as a subring of <span class="SimpleMath">\(R=F [x_1,...,x_n]\)</span> as follows: First, identify each <span class="SimpleMath">\(e_i^*\)</span> with the variable <span class="SimpleMath">\(x_i\)</span>. If <span class="SimpleMath">\(S_\sigma\)</span> is generated as a semigroup by vectors of the form <span class="SimpleMath">\(\ell_1 e_1^*+...+\ell_n e_n^*\)</span>, where <span class="SimpleMath">\(\ell_i\)</span> is an integer, then its image in <span class="SimpleMath">\(R\)</span> is generated by monomials of the form <span class="SimpleMath">\(x_1^{\ell_1}\dots x_n^{\ell_n}\)</span>. The <strong class="pkg">toric</strong> package can compute these generating monomials (see <code class="code">EmbeddingAffineToricVariety</code>). See Lemma 2.14 in <a href="chapBib_mj.html#biBJV02">[JV02]</a> for more details. This embedding can also be used to resolve singularities - see section 5 of <a href="chapBib_mj.html#biBJV02">[JV02]</a> for more details.</p>
<p>This defines an <strong class="button">affine toric variety</strong> (associated to <span class="SimpleMath">\(\sigma\)</span>). It is known that the coordinate ring <span class="SimpleMath">\(R_\sigma\)</span> of the affine toric variety <span class="SimpleMath">\(U_\sigma\)</span> has the form <span class="SimpleMath">\(R_\sigma = F[x_1,...,x_n]/J\)</span>, where <span class="SimpleMath">\(J\)</span> is an ideal. The <strong class="pkg">toric</strong> package can compute generators of this ideal by using the <code class="code">DualSemigroupGenerators</code> and the <code class="code">EmbeddingAffineToricVariety</code> commands.</p>
<p>Roughly speaking, the toric variety <span class="SimpleMath">\(X(\Delta)\)</span> associated to the fan <span class="SimpleMath">\(\Delta\)</span> is given by a collection of affine pieces $U_{\sigma_1},U_{\sigma_2},\dots,U_{\sigma_d}$ which ``glue'' together (where <span class="SimpleMath">\(\Delta = \{\sigma_i\}\)</span>). The affine pieces are given by the zero sets of polynomial equations in some affine spaces and the gluings are given by maps <span class="SimpleMath">\(\phi_{i,j} : U_{\sigma_i} \rightarrow U_{\sigma_j}\)</span> which are defined by ratios of polynomials on open subsets of the $U_{\sigma_i}$. The <strong class="pkg">toric</strong> package does <em>not</em> compute these gluings or work directly with these (non-affine) varieties <span class="SimpleMath">\(X(\Delta)\)</span>.</p>
<p>A cone <span class="SimpleMath">\(\sigma \subset V\)</span> is said to be <strong class="button">nonsingular</strong> if it is generated by part of a basis for the lattice <span class="SimpleMath">\(L_0\)</span>. A fan <span class="SimpleMath">\(\Delta\)</span> of cones is said to be <strong class="button">nonsingular</strong> if all its cones are nonsingular. It is known that <span class="SimpleMath">\(U_\sigma\)</span> is nonsingular if and only if <span class="SimpleMath">\(\sigma\)</span> is nonsingular (Proposition 2.1 in <a href="chapBib_mj.html#biBF93">[Ful93]</a>).</p>
<p><strong class="button">Example:</strong> In three dimensions, consider the cones <span class="SimpleMath">\(\sigma_{\epsilon_1,\epsilon_2,\epsilon_3,i,j}\)</span> generated by <spanclass="SimpleMath">\((\epsilon_1\cdot 1,\epsilon_2\cdot 1,\epsilon_3\cdot 1)\)</span> and the standard basis vectors <span class="SimpleMath">\(f_i,f_j\)</span>, where <span class="SimpleMath">\(\epsilon_i=\pm 1\)</span> and <span class="SimpleMath">\(1\leq i\not= j\leq 3\)</span>. There are 8 cones per octant, for a total of 64 cones. Let <span class="SimpleMath">\(\Delta\)</span> denote the fan in <span class="SimpleMath">\(V=Q^3\)</span> determined by these maximal cones. The toric variety <span class="SimpleMath">\(X(\Delta)\)</span> is nonsingular.</p>
<h5>1.2-4 <span class="Heading">Riemann-Roch spaces and related constructions</span></h5>
<p>Although the <strong class="pkg">toric</strong> package does not work directly with the toric varieties <span class="SimpleMath">\(X(\Delta)\)</span>, it can compute objects associated with it. For example, it can compute the Euler characteristic (see <code class="code">EulerCharacteristic</code>), Betti numbers (see <code class="code">BettiNumberToric</code>), and the number of GF(q)-rational points (see <code class="code">CardinalityOfToricVariety</code>) of <span class="SimpleMath">\(X(\Delta)\)</span>, <em> provided <span class="SimpleMath">\(\Delta\)</span> is nonsingular.</em></p>
<p>For an algebraic variety <span class="SimpleMath">\(X\)</span> the group of <strong class="button">Weil divisors</strong> on <span class="SimpleMath">\(X\)</span> is the abelian group <span class="SimpleMath">\(Div(X)\)</span> generated (additively) by the irreducible subvarieties of X of codimension <span class="SimpleMath">\(1\)</span>. For a toric variety <span class="SimpleMath">\(X(\Delta)\)</span> with dense open torus <span class="SimpleMath">\(T\)</span>, a Weil divisor D is <strong class="button">T-invariant</strong> if <span class="SimpleMath">\(D=T\cdot D\)</span>. The group of <span class="SimpleMath">\(T\)</span>-invariant Weil divisors is denoted <span class="SimpleMath">\(TDiv(X)\)</span>. This is finitely generated by an explicitly given finite set of divisors <span class="SimpleMath">\(\{D_1,...,D_r\}\)</span> which correspond naturally to certain cones in <span class="SimpleMath">\(\Delta\)</span> (see <a href="chapBib_mj.html#biBF93">[Ful93]</a> for details). In particular, we may represent such a divisor <span class="SimpleMath">\(D\)</span> in <span class="SimpleMath">\(TDiv(X)\)</span> by an <span class="SimpleMath">\(k\)</span>-tuple <span class="SimpleMath">\((d_1,...,d_k)\)</span> of integers.</p>
<p>Let <span class="SimpleMath">\(\Delta\)</span> denote a fan in <span class="SimpleMath">\(V=Q^n\)</span> with rays (or edges) <span class="SimpleMath">\(\tau_i\)</span>, <span class="SimpleMath">\(1\leq i\leq k\)</span>, and let <span class="SimpleMath">\(v_i\)</span> denote the first lattice point on <span class="SimpleMath">\(\tau_i\)</span>. Associated to the T-invariant Weil divisor <span class="SimpleMath">\(D=d_1D_1+...+d_kD_k\)</span>, is the <strong class="button">polytope</strong></p>
<p>The <strong class="pkg">toric</strong> package can compute <span class="SimpleMath">\(P_D\)</span> (see <code class="code">DivisorPolytope</code>), as well as the set of all lattice points contained in this polytope (see <code class="code">DivisorPolytopeLatticePoints</code>). Also associated to the <span class="SimpleMath">\(T\)</span>-invariant Weil divisor <span class="SimpleMath">\(D=d_1D_1+...+d_kD_k\)</span>, is the Riemann-Roch space, <span class="SimpleMath">\(L(D)\)</span>. This is a space of functions on <span class="SimpleMath">\(X(\Delta)\)</span> whose zeros and poles are ``controlled'' by <span class="SimpleMath">\(D\)</span> (for a more precise definition, see <a href="chapBib_mj.html#biBF93">[Ful93]</a>). The <strong class="pkg">toric</strong> package can compute a basis for <span class="SimpleMath">\(L(D)\)</span> (see <code class="code">RiemannRochBasis</code>), <em> provided <span class="SimpleMath">\(\Delta\)</span> is complete and nonsingular.</em></p>
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.