# Hilbert Series of Polarised Varieties

- [Introduction](introduction.md)

  - [Key Warning and Disclaimer](introduction.md#key-warning-and-disclaimer)

  - [Overview of the Chapter](introduction.md#overview-of-the-chapter)

- [Hilbert Series and Graded Rings](series.md)

  - [Hilbert Series and Hilbert Polynomials](series.md#hilbert-series-and-hilbert-polynomials)

    - [`HilbertFunction(p,V): RngUPolElt, SeqEnum → UserProgram`](series.md#function-hilbertfunction-rngupolelt-seqenum)

    - [`HilbertFunction(Q,V): SeqEnum, SeqEnum → UserProgram`](series.md#function-hilbertfunction-seqenum-seqenum)

    - [`HilbertSeries(p,V): RngUPolElt, SeqEnum → FldFunRatUElt`](series.md#function-hilbertseries-rngupolelt-seqenum)

    - [`HilbertSeries(Q,V): SeqEnum, SeqEnum → FldFunRatUElt`](series.md#function-hilbertseries-seqenum-seqenum)

  - [Interpreting the Hilbert Numerator](series.md#interpreting-the-hilbert-numerator)

    - [`HilbertSeriesMultipliedByMinimalDenominator(p,V): RngUPolElt, SeqEnum → RngUPolElt, SeqEnum`](series.md#function-hilbertseriesmultipliedbyminimaldenominator-rngupolelt-seqenum)

    - [`HilbertSeriesMultipliedByMinimalDenominator(Q,V): SeqEnum, SeqEnum → RngUPolElt, SeqEnum`](series.md#function-hilbertseriesmultipliedbyminimaldenominator-seqenum-seqenum)

    - [`HilbertNumerator(g, D): FldFunRatUElt, SeqEnum → FldFunRatUElt`](series.md#function-hilbertnumerator-fldfunratuelt-seqenum)

    - [`Example: Gr Genus4curve`](series.md#example-ex-bc959f)

    - [`FindFirstGenerators(g): FldFunRatUElt → SeqEnum`](series.md#function-findfirstgenerators-fldfunratuelt)

    - [`Example: Gr Grfirstgens`](series.md#example-ex-12902f)

    - [`ApparentCodimension(f): RngUPolElt → RngIntElt`](series.md#function-apparentcodimension-rngupolelt)

    - [`ApparentEquationDegrees(f): RngUPolElt → RngIntElt`](series.md#function-apparentequationdegrees-rngupolelt)

    - [`ApparentSyzygyDegrees(f): RngUPolElt → RngIntElt`](series.md#function-apparentsyzygydegrees-rngupolelt)

- [Baskets of Singularities](baskets.md)

  - [Point Singularities](baskets.md#point-singularities)

    - [`Example: Gr Grpoints`](baskets.md#example-ex-6bdfc9)

    - [Creation of Point Singularities](baskets.md#creation-of-point-singularities)

      - [`Point(r,n,Q): RngIntElt, RngIntElt, SeqEnum → GRPtS`](baskets.md#function-point-rngintelt-rngintelt-seqenum)

      - [`Point(r,Q): RngIntElt, RngIntElt, SeqEnum → GRPtS`](baskets.md#function-point-rngintelt-rngintelt-seqenum-2)

    - [Accessing the Key Data and Testing Equality](baskets.md#accessing-the-key-data-and-testing-equality)

      - [`Dimension(p): GRPtS → RngIntElt`](baskets.md#function-dimension-grpts)

      - [`Index(p): GRPtS → RngIntElt`](baskets.md#function-index-grpts)

      - [`Polarisation(p): GRPtS → SeqEnum`](baskets.md#function-polarisation-grpts)

      - [`Eigenspace(p): GRPtS → RngIntElt`](baskets.md#function-eigenspace-grpts)

      - [`p eq q: GRPtS, GRPtS → BoolElt`](baskets.md#operation-op-eq-grpts-grpts)

    - [Identifying Special Types of Point Singularity](baskets.md#identifying-special-types-of-point-singularity)

      - [`IsIsolated(p): GRPtS → BoolElt`](baskets.md#function-isisolated-grpts)

      - [`IsGorensteinSurface(p): GRPtS → BoolElt`](baskets.md#function-isgorensteinsurface-grpts)

      - [`IsTerminalThreefold(p): GRPtS → BoolElt`](baskets.md#function-isterminalthreefold-grpts)

      - [`TerminalIndex(p): GRPtS → RngIntElt`](baskets.md#function-terminalindex-grpts)

      - [`TerminalPolarisation(p): GRPtS → SeqEnum`](baskets.md#function-terminalpolarisation-grpts)

      - [`IsCanonical(p): GRPtS → BoolElt`](baskets.md#function-iscanonical-grpts)

  - [Curve Singularities](baskets.md#curve-singularities)

    - [`Example: Gr Curvesing`](baskets.md#example-ex-117c52)

    - [Creation of Curve Singularities](baskets.md#creation-of-curve-singularities)

      - [`Curve(d,p,m): FldRatElt, GRPtS, FldRatElt → GRCrvS`](baskets.md#function-curve-fldratelt-grpts-fldratelt)

      - [`Curve(d,p,N): FldRatElt, GRPtS, RngIntElt → GRCrvS`](baskets.md#function-curve-fldratelt-grpts-rngintelt)

      - [`Curve(d,p,N,t): FldRatElt, GRPtS, RngIntElt, RngIntElt → GRCrvS`](baskets.md#function-curve-fldratelt-grpts-rngintelt-rngintelt)

    - [Accessing the Key Data and Testing Equality](baskets.md#id4)

      - [`Degree(C): GRCrvS → RngIntElt`](baskets.md#function-degree-grcrvs)

      - [`TransverseType(C): GRCrvS → GRPtS`](baskets.md#function-transversetype-grcrvs)

      - [`TransverseIndex(C): GRCrvS → RngIntElt`](baskets.md#function-transverseindex-grcrvs)

      - [`NormalNumber(C): GRCrvS → RngIntElt`](baskets.md#function-normalnumber-grcrvs)

      - [`Index(C): GRCrvS → RngIntElt`](baskets.md#function-index-grcrvs)

      - [`MagicNumber(C): GRCrvS → RngIntElt`](baskets.md#function-magicnumber-grcrvs)

      - [`Dimension(C): GRCrvS → RngIntElt`](baskets.md#function-dimension-grcrvs)

      - [`IsCanonical(C): GRCrvS → BoolElt`](baskets.md#function-iscanonical-grcrvs)

      - [`C eq D: GRCrvS, GRCrvS → BoolElt`](baskets.md#operation-op-eq-grcrvs-grcrvs)

  - [Baskets of Singularities](baskets.md#id5)

    - [Creation and Modification of Baskets](baskets.md#creation-and-modification-of-baskets)

      - [`Basket(Q): SeqEnum → GRBskt`](baskets.md#function-basket-seqenum)

      - [`Basket(Q1,Q2): SeqEnum, SeqEnum → GRBskt`](baskets.md#function-basket-seqenum-seqenum)

      - [`EmptyBasket(): . → GRBskt`](baskets.md#function-emptybasket)

      - [`MakeBasket(Q): SeqEnum → GRBskt`](baskets.md#function-makebasket-seqenum)

      - [`Points(B): GRBskt → SeqEnum`](baskets.md#function-points-grbskt)

      - [`Curves(B): GRBskt → SeqEnum`](baskets.md#function-curves-grbskt)

    - [Tests for Baskets](baskets.md#tests-for-baskets)

      - [`IsIsolated(B): GRBskt → BoolElt`](baskets.md#function-isisolated-grbskt)

      - [`IsGorensteinSurface(B): GRBskt → BoolElt`](baskets.md#function-isgorensteinsurface-grbskt)

      - [`IsTerminalThreefold(B): GRBskt → BoolElt`](baskets.md#function-isterminalthreefold-grbskt)

      - [`IsCanonical(B): GRBskt → BoolElt`](baskets.md#function-iscanonical-grbskt)

  - [Curves and Dissident Points](baskets.md#curves-and-dissident-points)

    - [`CanonicalDissidentPoints(C): GRCrvS → SeqEnum`](baskets.md#function-canonicaldissidentpoints-grcrvs)

    - [`SimpleCanonicalDissidentPoints(C): GRCrvS → SeqEnum`](baskets.md#function-simplecanonicaldissidentpoints-grcrvs)

    - [`PossibleCanonicalDissidentPoints(C): GRCrvS → SeqEnum`](baskets.md#function-possiblecanonicaldissidentpoints-grcrvs)

    - [`PossibleSimpleCanonicalDissidentPoints(C): GRCrvS → SeqEnum`](baskets.md#function-possiblesimplecanonicaldissidentpoints-grcrvs)

- [Generic Polarised Varieties](pol-var.md)

  - [`PolarisedVariety(d,W,n): RngIntElt, SeqEnum, RngUPolElt → GRSch`](pol-var.md#function-polarisedvariety-rngintelt-seqenum-rngupolelt)

  - [Accessing the Data](pol-var.md#accessing-the-data)

    - [`Weights(X): GRSch → SeqEnum`](pol-var.md#function-weights-grsch)

    - [`Degree(X): GRSch → FldRatElt`](pol-var.md#function-degree-grsch)

    - [`Basket(X): GRSch → Bskt`](pol-var.md#function-basket-grsch)

    - [`RawBasket(X): GRSch → SeqEnum`](pol-var.md#function-rawbasket-grsch)

    - [`Dimension(X): GRSch → RngIntElt`](pol-var.md#function-dimension-grsch)

    - [`Codimension(X): GRSch → RngIntElt`](pol-var.md#function-codimension-grsch)

    - [`HilbertNumerator(X): GRSch → RngUPolElt`](pol-var.md#function-hilbertnumerator-grsch)

    - [`Numerator(X): GRSch → RngUPolElt`](pol-var.md#function-numerator-grsch)

    - [`NoetherWeights(X): GRSch → SeqEnum`](pol-var.md#function-noetherweights-grsch)

    - [`NoetherNumerator(X): GRSch → RngUPolElt`](pol-var.md#function-noethernumerator-grsch)

    - [`NoetherNormalisation(X): GRSch → Tup`](pol-var.md#function-noethernormalisation-grsch)

    - [`HilbertSeries(X): GRSch → FldFunRatUElt`](pol-var.md#function-hilbertseries-grsch)

    - [`InitialCoefficients(X): GRSch → SeqEnum`](pol-var.md#function-initialcoefficients-grsch)

    - [`ApparentCodimension(X): GRSch → RngIntElt`](pol-var.md#function-apparentcodimension-grsch)

    - [`ApparentEquationDegrees(X): GRSch → RngIntElt`](pol-var.md#function-apparentequationdegrees-grsch)

    - [`ApparentSyzygyDegrees(X): GRSch → RngIntElt`](pol-var.md#function-apparentsyzygydegrees-grsch)

    - [`BettiNumbers(X): GRSch → RngIntElt`](pol-var.md#function-bettinumbers-grsch)

  - [Generic Creation, Checking, Changing](pol-var.md#generic-creation-checking-changing)

    - [`X eq Y: GRSch, GRSch → BoolElt`](pol-var.md#operation-op-eq-grsch-grsch)

    - [`CheckCodimension(X): GRSch → BoolElt`](pol-var.md#function-checkcodimension-grsch)

    - [`FirstWeights(X): GRSch → SeqEnum`](pol-var.md#function-firstweights-grsch)

    - [`IncludeWeight(~X,w): GRSch, RngIntElt`](pol-var.md#function-includeweight-grsch-rngintelt-ref)

    - [`RemoveWeight(~X,w): GRSch, RngIntElt`](pol-var.md#function-removeweight-grsch-rngintelt-ref)

    - [`MinimiseWeights(~X): GRSch`](pol-var.md#function-minimiseweights-grsch-ref)

- [Subcanonical Curves](subcan.md)

  - [Creation of Subcanonical Curves](subcan.md#creation-of-subcanonical-curves)

    - [`SubcanonicalCurve(g,d,Q): RngIntElt, RngIntElt, SeqEnum → GRCrvK`](subcan.md#function-subcanonicalcurve-rngintelt-rngintelt-seqenum)

    - [`IsSubcanonicalCurve(g,d,Q): RngIntElt, RngIntElt, SeqEnum → BoolElt, GRCrvK`](subcan.md#function-issubcanonicalcurve-rngintelt-rngintelt-seqenum)

    - [`HilbertPolynomialOfCurve(g,m): RngIntElt, RngIntElt → RngUPolElt`](subcan.md#function-hilbertpolynomialofcurve-rngintelt-rngintelt)

    - [`IsEffective(C): GRCrvK → BoolElt`](subcan.md#function-iseffective-grcrvk)

  - [Catalogue of Subcanonical Curves](subcan.md#catalogue-of-subcanonical-curves)

    - [`EffectiveSubcanonicalCurves(g): RngIntElt → SeqEnum`](subcan.md#function-effectivesubcanonicalcurves-rngintelt)

    - [`EffectiveSubcanonicalCurves(g,d): RngIntElt, RngIntElt → SeqEnum`](subcan.md#function-effectivesubcanonicalcurves-rngintelt-rngintelt)

    - [`IneffectiveSubcanonicalCurves(g): RngIntElt → SeqEnum`](subcan.md#function-ineffectivesubcanonicalcurves-rngintelt)

    - [`IneffectiveSubcanonicalCurves(g,d): RngIntElt, RngIntElt → SeqEnum`](subcan.md#function-ineffectivesubcanonicalcurves-rngintelt-rngintelt)

- [K3 Surfaces](k3.md)

  - [Creating and Comparing K3 Surfaces](k3.md#creating-and-comparing-k3-surfaces)

    - [`K3Surface(g,B): RngIntElt, GRBskt → GRK3`](k3.md#function-k3surface-rngintelt-grbskt)

    - [`K3Surface(g,B): RngIntElt, SeqEnum → GRK3`](k3.md#function-k3surface-rngintelt-seqenum)

    - [`K3Copy(X): GRK3 → GRK3`](k3.md#function-k3copy-grk3)

  - [Accessing the Key Data](k3.md#accessing-the-key-data)

    - [`Genus(X): GRK3 → RngIntElt`](k3.md#function-genus-grk3)

    - [`TwoGenus(X): GRK3 → RngIntElt`](k3.md#function-twogenus-grk3)

    - [`SingularRank(X): GRK3 → RngIntElt`](k3.md#function-singularrank-grk3)

    - [`AFRNumber(X): GRK3 → RngIntElt`](k3.md#function-afrnumber-grk3)

  - [Modifying K3 Surfaces](k3.md#modifying-k3-surfaces)

    - [`IncludeWeight(X,w): GRK3, RngIntElt → GRK3`](k3.md#function-includeweight-grk3-rngintelt)

    - [`RemoveWeight(X,w): GRK3, RngIntElt → GRK3`](k3.md#function-removeweight-grk3-rngintelt)

- [Weil Polynomials](weilpoly.md)

  - [`SetVerbose("WeilPolynomials", v): MonStgElt, RngIntElt`](weilpoly.md#function-setverbose-monstgelt-rngintelt)

  - [`HasAllRootsOnUnitCircle(f): RngUPolElt → BoolElt`](weilpoly.md#function-hasallrootsonunitcircle-rngupolelt)

  - [`FrobeniusTracesToWeilPolynomials(tr, q, i, deg): SeqEnum, RngIntElt, RngIntElt, RngIntElt → SeqEnum`](weilpoly.md#function-frobeniustracestoweilpolynomials-seqenum-rngintelt-rngintelt-rngintelt)

  - [`WeilPolynomialToRankBound(f, q): RngUPolElt, RngIntElt → RngIntElt`](weilpoly.md#function-weilpolynomialtorankbound-rngupolelt-rngintelt)

  - [`ArtinTateFormula(f, q, h20): RngUPolElt, RngIntElt, RngIntElt → RngIntElt, RngIntElt`](weilpoly.md#function-artintateformula-rngupolelt-rngintelt-rngintelt)

  - [`WeilPolynomialOverFieldExtension(f, deg): RngUPolElt, RngIntElt → RngUPolElt`](weilpoly.md#function-weilpolynomialoverfieldextension-rngupolelt-rngintelt)

  - [`CheckWeilPolynomial(f, q, h20): RngUPolElt, RngIntElt, RngIntElt → BoolElt`](weilpoly.md#function-checkweilpolynomial-rngupolelt-rngintelt-rngintelt)

  - [`Example: weilpoly`](weilpoly.md#example-ex-01b9a6)

  - [`Example: weilpoly2`](weilpoly.md#example-ex-43f336)

- [Point Counting on Degree Two K3 Surfaces](deg_2_K3_surf.md)

  - [`SetVerbose("Degree2K3", v): MonStgElt, RngIntElt`](deg_2_K3_surf.md#function-setverbose-monstgelt-rngintelt-2)

  - [`WeilPolynomialOfDegree2K3Surface(f6): RngMPolElt → RngUPolElt, RngUPolElt`](deg_2_K3_surf.md#function-weilpolynomialofdegree2k3surface-rngmpolelt)

  - [`NonOrdinaryPrimes(f6,lim): RngMPolElt, RngIntElt → SeqEnum`](deg_2_K3_surf.md#function-nonordinaryprimes-rngmpolelt-rngintelt)

  - [`NumbersOfPointsOnDegree2K3Surface(f6,p,d): RngMPolElt, RngIntElt, RngIntElt → SeqEnum`](deg_2_K3_surf.md#function-numbersofpointsondegree2k3surface-rngmpolelt-rngintelt-rngintelt)

  - [`Example: Degree2K3`](deg_2_K3_surf.md#example-ex-9195d9)

- [The K3 Database](k3db.md)

  - [Searching the K3 Database](k3db.md#searching-the-k3-database)

    - [`Example: K3db Ex1`](k3db.md#example-ex-d3e9e7)

    - [`K3Database() → DB`](k3db.md#function-k3database)

    - [`Number(D,X): DB, GRK3 → RngIntElt, GRK3`](k3db.md#function-number-db-grk3)

    - [`Index(D,X): DB, GRK3 → RngIntElt, GRK3`](k3db.md#function-index-db-grk3)

    - [`Example: Gr K3surface`](k3db.md#example-ex-9475c3)

  - [Working with the K3 Database](k3db.md#working-with-the-k3-database)

    - [`K3Surface(D,i): DB, RngIntElt → GRK3`](k3db.md#function-k3surface-db-rngintelt)

    - [`K3Surface(D,Q,i): DB, SeqEnum, RngIntElt → GRK3`](k3db.md#function-k3surface-db-seqenum-rngintelt)

    - [`K3Surface(D,g,i): DB, RngIntElt, RngIntElt → GRK3`](k3db.md#function-k3surface-db-rngintelt-rngintelt)

    - [`K3Surface(D,g1,g2,i): DB, RngIntElt, RngIntElt, RngIntElt → GRK3`](k3db.md#function-k3surface-db-rngintelt-rngintelt-rngintelt)

    - [`K3Surface(D,W): DB, SeqEnum → GRK3`](k3db.md#function-k3surface-db-seqenum)

    - [`K3Surface(D,g,B): DB, RngIntElt, GRBskt → GRK3`](k3db.md#function-k3surface-db-rngintelt-grbskt)

    - [`K3Surface(D,g,B): DB, RngIntElt, SeqEnum → GRK3`](k3db.md#function-k3surface-db-rngintelt-seqenum)

- [Fano 3-folds](fano.md)

  - [`Example: Gr Fano`](fano.md#example-ex-109f4a)

  - [Creation: $f=1,2$ or $\ge 3$](fano.md#creation-f-1-2-or-ge-3)

    - [`Fano(f,B,g): RngIntElt, GRBskt, RngIntElt → GRFano`](fano.md#function-fano-rngintelt-grbskt-rngintelt)

    - [`Fano(f,B): RngIntElt, GRBskt → GRFano`](fano.md#function-fano-rngintelt-grbskt)

    - [`FanoIndex(X): GRFano → RngIntElt`](fano.md#function-fanoindex-grfano)

    - [`FanoGenus(X): GRFano → RngIntElt`](fano.md#function-fanogenus-grfano)

    - [`FanoBaseGenus(X): GRFano → RngIntElt`](fano.md#function-fanobasegenus-grfano)

    - [`BogomolovNumber(X): GRFano → FldRatElt`](fano.md#function-bogomolovnumber-grfano)

    - [`IsBogomolovUnstable(X): GRFano → BoolElt`](fano.md#function-isbogomolovunstable-grfano)

  - [A Preliminary Fano Database](fano.md#a-preliminary-fano-database)

    - [`FanoDatabase() → DB`](fano.md#function-fanodatabase)

    - [`Fano(D,i): DB, RngIntElt → GRFano`](fano.md#function-fano-db-rngintelt)

    - [`Fano(D,f,i): DB, RngIntElt, RngIntElt → GRFano`](fano.md#function-fano-db-rngintelt-rngintelt)

    - [`Fano(D,f,Q,i): DB, SeqEnum, RngIntElt → GRFano`](fano.md#function-fano-db-seqenum-rngintelt)

- [Calabi–Yau 3-folds](cy.md)

  - [`CalabiYau(p1,p2,B): RngIntElt, RngIntElt, GRBskt → GRCY`](cy.md#function-calabiyau-rngintelt-rngintelt-grbskt)

  - [`FindN(X): GRCY → RngIntElt, RngIntElt`](cy.md#function-findn-grcy)

  - [`FindN(p1,p2,B): RngIntElt, RngIntElt, GRBskt → RngIntElt, RngIntElt`](cy.md#function-findn-rngintelt-rngintelt-grbskt)

- [Building Databases](gr-makedb.md)

  - [The K3 Database](gr-makedb.md#the-k3-database)

    - [Creating Many K3 Surfaces](gr-makedb.md#creating-many-k3-surfaces)

      - [`CreateK3Data(g): RngIntElt → SeqEnum`](gr-makedb.md#function-createk3data-rngintelt)

      - [`CreateK3Data(g,r): RngIntElt, RngIntElt → SeqEnum`](gr-makedb.md#function-createk3data-rngintelt-rngintelt)

      - [`CreateK3Data(g,B): RngIntElt, SeqEnum → SeqEnum`](gr-makedb.md#function-createk3data-rngintelt-seqenum)

    - [K3 Surfaces as Records](gr-makedb.md#k3-surfaces-as-records)

      - [`K3SurfaceToRecord(X): GRK3 → Rec`](gr-makedb.md#function-k3surfacetorecord-grk3)

      - [`K3Surface(x): Rec → GRK3`](gr-makedb.md#function-k3surface-rec)

    - [Writing K3 Surfaces to a File](gr-makedb.md#writing-k3-surfaces-to-a-file)

      - [`WriteK3Data(Q,F): SeqEnum, MonStgElt`](gr-makedb.md#function-writek3data-seqenum-monstgelt)

    - [Writing the Data and Index Files](gr-makedb.md#writing-the-data-and-index-files)

    - [Reading the Raw Data](gr-makedb.md#reading-the-raw-data)

      - [`K3SurfaceRaw(D,i): DB, RngIntElt → Tup`](gr-makedb.md#function-k3surfaceraw-db-rngintelt)

      - [`K3SurfaceRaw(D,Q,i): DB, SeqEnum, RngIntElt → Tup`](gr-makedb.md#function-k3surfaceraw-db-seqenum-rngintelt)

      - [`K3Surface(x): Tup → GRK3`](gr-makedb.md#function-k3surface-tup)

  - [Making New Databases](gr-makedb.md#making-new-databases)
