====== application fulton ======
This application deals with normal toric varieties as discussed in the famous book William Fulton: Introduction to toric varieties.
imports from:
* application [[.:common|common]]
* application [[.:fan|fan]]
* application [[.:graph|graph]]
* application [[.:ideal|ideal]]
* application [[.:polytope|polytope]]
uses:
* application [[.:group|group]]
* application [[.:topaz|topaz]]
===== Objects =====
** ''[[.:fulton:CyclicQuotient |CyclicQuotient]]'':\\ An affine normal toric variety given by a two-dimensional cone in two-dimensional space.
** ''[[.:fulton:NormalToricVariety |NormalToricVariety]]'':\\ A normal toric variety given by a fan.
** ''[[.:fulton:RationalDivisorClassGroup |RationalDivisorClassGroup]]'':\\ The class group Cl(X) of Weil divisors on the toric variety defined by the fan is a finitely generated abelian group of rank [[.:fan:PolyhedralFan#N_RAYS |N_RAYS]]-[[.:fan:PolyhedralFan#DIM |DIM]]. It usually contains torsion. The rational divisor class group is the tensor product of Cl(X) with Q over Z. This group is torsion free and corresponds to the Picard group if the variety is non-singular.
** ''[[.:fulton:TDivisor |TDivisor]]'':\\ A //T//-invariant divisor on a normal toric variety.
** ''[[.:fulton:VersalComponent |VersalComponent]]'':\\ A component of the versal deformation of a ''[[.:fulton:CyclicQuotient |CyclicQuotient]]'' singularity.
===== Functions =====
==== Combinatorics ====
Combinatorial functions.
----
{{anchor:polytope_of_divisor_class:}}
? **''polytope_of_divisor_class''**
:: return the polytope defined by an element of the nef or effective cone first argument is the fan, second the Vector defining the divisor class
----
==== Commutative Algebra ====
These methods help with translating combinatorics to commutative algebra.
----
{{anchor:lower_lattice_points:}}
? **''lower_lattice_points''**
:: Find all lattice points of a polytope P that are not reachable from some other lattice point via the tail cone.
----
==== Continued fractions ====
Two simple methods for switching between rational numbers and continued fractions.
----
{{anchor:cf2rational:}}
? **''cf2rational([[.:common#Vector |Vector]]<[[.:common#Integer |Integer]]> v)''**
:: Compute the rational number corresponding to a continued fraction.
? Parameters:
:: ''[[.:common#Vector |Vector]]<[[.:common#Integer |Integer]]>'' ''v''
? Returns:
:''[[.:common#Rational |Rational]]''
----
{{anchor:rational2cf:}}
? **''rational2cf([[.:common#Rational |Rational]] r)''**
:: Compute the continued fraction corresponding to a rational number //r//.
? Parameters:
:: ''[[.:common#Rational |Rational]]'' ''r''
? Returns:
:''[[.:common#Vector |Vector]]<[[.:common#Integer |Integer]]>''
----
==== Producing a normal toric variety ====
With these clients you can create a normal toric variety from various input data.
----
{{anchor:hirzebruch_surface:}}
? **''hirzebruch_surface([[.:common#Integer |Integer]] r)''**
:: Takes one parameter //r// and returns the polyhedral fan corresponding the the Hirzebruch surface //Hr//.
? Parameters:
:: ''[[.:common#Integer |Integer]]'' ''r'': Parameter
? Returns:
:''[[.:fulton:NormalToricVariety |NormalToricVariety]]''
----
{{anchor:polarized_toric_variety:}}
? **''polarized_toric_variety([[.:polytope:Polytope |Polytope]]<[[.:common#Rational |Rational]]> P, [[.:common#String |String]] name)''**
:: Creates a toric variety from the normal fan of a polytope and adds the defining divisor of the polytope
? Parameters:
:: ''[[.:polytope:Polytope |Polytope]]<[[.:common#Rational |Rational]]>'' ''P'': : the input polytope
:: ''[[.:common#String |String]]'' ''name'': : a name for the divisor
? Returns:
:''[[.:fulton:NormalToricVariety |NormalToricVariety]]''
----
{{anchor:projective_space:}}
? **''projective_space([[.:common#Int |Int]] d)''**
:: Takes one parameter //d// and returns the fan corresponding to the //d//-dimensional projective space.
? Parameters:
:: ''[[.:common#Int |Int]]'' ''d'': Dimension
? Returns:
:''[[.:fulton:NormalToricVariety |NormalToricVariety]]''
----
{{anchor:weighted_projective_space:}}
? **''weighted_projective_space([[.:common#Vector |Vector]]<[[.:common#Int |Int]]> a)''**
:: Takes a vector //a// and returns the fan corresponding to the weighted projective space associated to //a//.
? Parameters:
:: ''[[.:common#Vector |Vector]]<[[.:common#Int |Int]]>'' ''a'': the weights
? Returns:
:''[[.:fulton:NormalToricVariety |NormalToricVariety]]''
----
==== no category ====
{{anchor:markov_basis:}}
? **''markov_basis([[.:common#Set |Set]]<[[.:common#Vector |Vector]]<[[.:common#Integer |Integer]]%%>>%% S)''**
:: Implementation of Project and Lift algorithm by Hemmecke and Malkin. Given a spanning set of a lattice returns a markov basis.
? Parameters:
:: ''[[.:common#Set |Set]]<[[.:common#Vector |Vector]]<[[.:common#Integer |Integer]]%%>>%%'' ''S''
? Returns:
:''[[.:common#Set |Set]]<[[.:common#Vector |Vector]]<[[.:common#Integer |Integer]]%%>>%%''
? Example:
:: > $s = new Set>([1, -2, 1], [1, 1, -1]);
> print markov_basis($s);
{<-2 1 0> <-1 -1 1> <0 -3 2>}
? **''markov_basis([[.:common#Matrix |Matrix]]<[[.:common#Integer |Integer]]> M)''**
:: Implementation of Project and Lift algorithm by Hemmecke and Malkin. Given a Matrix whose rows form a spanning set of a lattice return markov basis as rows of an Integer Matrix, or if use_kernel = true, returns a markov basis of integer kernel of given Matrix as rows of an Integer Matrix.
? Parameters:
:: ''[[.:common#Matrix |Matrix]]<[[.:common#Integer |Integer]]>'' ''M''
? Options:
:
:: ''[[.:common#Bool |Bool]]'' ''use_kernel'': = false
? Returns:
:''[[.:common#Matrix |Matrix]]<[[.:common#Integer |Integer]]>''
? Example:
:: > $M = new Matrix([[1, 1, 2, -2], [-1, 3, -2, 1]]);
> print markov_basis($M, {"use_kernel" => true});
0 2 7 8
1 1 3 4
:: > $M = new Matrix([[1, 1, 2, -2], [-1, 3, -2, 1]]);
> print markov_basis($M);
0 -4 0 1
1 -7 2 0
1 1 2 -2
? **''markov_basis([[.:polytope:Polytope |Polytope]]<[[.:common#Rational |Rational]]> P)''**
:: Implementation of Project and Lift algorithm by Hemmecke and Malkin. Given a polytope return the markov basis of the lattice spanned by it's lattice points as rows of an Integer Matrix,
? Parameters:
:: ''[[.:polytope:Polytope |Polytope]]<[[.:common#Rational |Rational]]>'' ''P''
? Returns:
:''[[.:common#Matrix |Matrix]]<[[.:common#Integer |Integer]]>''
? Example:
:: > $P = new Polytope(VERTICES=>[[1, 1, 0], [1, 0, 1], [1, 1, 1], [1, 0, 0]]);
> print markov_basis($P);
1 -1 -1 1
----