====== 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 ----