<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.html#biBGua05">[FJT+09]</a> and the expository paper <a href="chapBib.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.html#biBJV02">[JV02]</a> and <a href="chapBib.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 ≥ 0, ℓ_j ≥ 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.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="Math">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⊂ 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⊗_Z Q</span>. We use <span class="SimpleMath">⟨ , ⟩</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">σ</span> of the form</p>
<p>where <span class="SimpleMath">v_1,...,v_m ∈ V</span> is a given collection of vectors, called (semigroup) <strong class="button">generators</strong> of <span class="SimpleMath">σ</span>. A <strong class="button">rational cone</strong> is one where <span class="SimpleMath">v_1,...,v_m ∈ 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">σ</span> is either <span class="SimpleMath">σ</span> itself or a subset of the form <span class="SimpleMath">H∩ σ</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 <strongclass="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">σ</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_σ</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_σ</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">∆={σ }</span> of rational strongly convex cones in <span class="SimpleMath">V= L_0 ⊗ Q</span> such that</p>
<ul>
<li><p>if <span class="SimpleMath">σ ∈ ∆</span> and <span class="SimpleMath">τ ⊂ σ</span> is a face of <span class="SimpleMath">σ</span> then <span class="SimpleMath">τ ∈ ∆</span>,</p>
</li>
<li><p>if <span class="SimpleMath">σ_1, σ_2 ∈ ∆</span> then the intersection <span class="SimpleMath">σ_1 ∩ σ_2</span> is a face of both <span class="SimpleMath">σ_1</span> and <span class="SimpleMath">σ_2</span> (and hence belongs to <span class="SimpleMath">∆</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">∆</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">∆</span> is represented in <strong class="pkg">toric</strong> as a set of maximal cones. For example, if <span class="SimpleMath">∆</span> is the fan with maximal cones <span class="SimpleMath">σ_1=Q_+⋅ f_1+Q_+⋅ (-f_1+f_2)</span>, <span class="SimpleMath">σ_2=Q_+⋅ (-f_1+f_2)+Q_+⋅ (-f_1-f_2)</span>, <span class="SimpleMath">σ_3=Q_+⋅ (-f_1-f_2)+Q_+⋅ f_1</span>, then <span class="SimpleMath">∆</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">σ</span> in a fan <span class="SimpleMath">∆</span> is the set <span class="SimpleMath">∆_σ</span> of cones in <span class="SimpleMath">∆</span> containing <span class="SimpleMath">σ</span> as a face. The <strong class="pkg">toric</strong> package can compute stars (see <code class="code">ToricStar</code>).</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.html#biBF93">[Ful93]</a>, page 29). We may interprete <span class="SimpleMath">R_σ</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_σ</span> is generated as a semigroup by vectors of the form <span class="SimpleMath">ℓ_1 e_1^*+...+ℓ_n e_n^*</span>, where <span class="SimpleMath">ℓ_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^ℓ_1dots x_n^ℓ_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.html#biBJV02">[JV02]</a> for more details. This embedding can also be used to resolve singularities - see section 5 of <a href="chapBib.html#biBJV02">[JV02]</a> for more details.</p>
<p>This defines an <strong class="button">affine toric variety</strong> (associated to <span class="SimpleMath">σ</span>). It is known that the coordinate ring <span class="SimpleMath">R_σ</span> of the affine toric variety <span class="SimpleMath">U_σ</span> has the form <span class="SimpleMath">R_σ = 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(∆)</span> associated to the fan <span class="SimpleMath">∆</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">∆ = {σ_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">ϕ_i,j : U_σ_i → U_σ_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(∆)</span>.</p>
<p>A cone <span class="SimpleMath">σ ⊂ 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">∆</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_σ</span> is nonsingular if and only if <span class="SimpleMath">σ</span> is nonsingular (Proposition 2.1 in <a href="chapBib.html#biBF93">[Ful93]</a>).</p>
<p><strong class="button">Example:</strong> In three dimensions, consider the cones <span class="SimpleMath">σ_ϵ_1,ϵ_2,ϵ_3,i,j</span> generated by <span class="SimpleMath">(ϵ_1⋅ 1,ϵ_2⋅ 1,ϵ_3⋅ 1)</span> and the standard basis vectors <span class="SimpleMath">f_i,f_j</span>, where <span class="SimpleMath">ϵ_i=± 1</span> and <span class="SimpleMath">1≤ inot= j≤ 3</span>. There are 8 cones per octant, for a total of 64 cones. Let <span class="SimpleMath">∆</span> denote the fan in <span class="SimpleMath">V=Q^3</span> determined by these maximal cones. The toric variety <span class="SimpleMath">X(∆)</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(∆)</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(∆)</span>, <em> provided <span class="SimpleMath">∆</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(∆)</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⋅ 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">∆</span> (see <a href="chapBib.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">∆</span> denote a fan in <span class="SimpleMath">V=Q^n</span> with rays (or edges) <span class="SimpleMath">τ_i</span>, <span class="SimpleMath">1≤ i≤ k</span>, and let <span class="SimpleMath">v_i</span> denote the first lattice point on <span class="SimpleMath">τ_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(∆)</span> whose zeros and poles are ``controlled'' by <span class="SimpleMath">D</span> (for a more precise definition, see <a href="chapBib.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">∆</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.