Macaulay2 / M2

The primary source code repository for Macaulay2, a system for computing in commutative algebra, algebraic geometry and related fields.
https://macaulay2.com
347 stars 231 forks source link

Set a length limit for Headline #1501

Closed mahrud closed 4 years ago

mahrud commented 4 years ago

Yes, good idea, but why does it say "package null"? -- that's not informative.

If I could figure out why those calls to document are being processed, then I would figure out why currentPackage is null, but I can't figure out either.

On a related note, should "Headline" have a length limit? Pages like this look funny: https://faculty.math.illinois.edu/Macaulay2/doc/Macaulay2-1.16/share/doc/Macaulay2/IntegralClosure/html/_idealizer_lp..._cm_sp__Index_sp_eq_gt_sp..._rp.html

Originally posted by @mahrud in https://github.com/Macaulay2/M2/issues/1181#issuecomment-670385672

Response by Dan:

Oh, my goodness, yes, let's set a length limit. The headline is intended to be a brief subheading used in menus and lists of links.

mahrud commented 4 years ago

I'm making this an issue to discuss what should be the right limit, and what to do with the nodes that currently violate that limit.

mahrud commented 4 years ago

So I wrote a bash one-liner to pick apart all the headlines and sort them by size:

for i in `find */html/*.html`; do echo -e "`grep "<h1>" $i | sed -E 's/.*-- (.*)<\/h1>/\1/g' | wc -c`:\t$i"; done | sort -n

Probably could have been done with M2 as well but whatever.

The longest headline in Macaulay2Doc are the following:

100:    Macaulay2Doc/html/___Matrix_sp_pc_sp__Groebner__Basis.html
114:    Macaulay2Doc/html/_resolution_lp__Matrix_rp.html

Belonging to Matrix % GroebnerBasis and resolution(Matrix).

If we set the limit at 100, here are the ones that would need to be cut:

100:    Bertini/html/___B_sq__Slice.html
100:    ConformalBlocks/html/_standard_spbasis.html
100:    EliminationMatrices/html/_elimination__Matrix_lp__Z__Z_cm__List_cm__Matrix_rp.html
100:    ExteriorIdeals/html/_strongly__Stable__Ideal.html
100:    FourTiTwo/html/_toric__Groebner.html
100:    LexIdeals/html/___L__P__P.html
100:    Macaulay2Doc/html/___Matrix_sp_pc_sp__Groebner__Basis.html
100:    NonminimalComplexes/html/index.html
100:    PieriMaps/html/_pieri.html
100:    RelativeCanonicalResolution/html/_curve__On__Scroll.html
100:    SchurFunctors/html/_straighten.html
100:    TriangularSets/html/___Triangular__Decomp__Algorithm.html
101:    Bruns/html/_bruns.html
101:    GKMManifolds/html/_t__Orbit__Closure.html
101:    KustinMiller/html/___Cyclic_sp__Polytopes.html
101:    MixedMultiplicity/html/_hom__Ideal__Polytope.html
101:    RationalMaps/html/_jacobian__Dual__Matrix.html
101:    SpectralSequences/html/_filtered__Complex_lp__List_rp.html
101:    TestIdeals/html/_ascend__Ideal.html
102:    EliminationMatrices/html/_ci__Res__Deg.html
102:    InvolutiveBases/html/_pommaret__Mult__Var.html
102:    NumericalSchubertCalculus/html/_random__Schubert__Problem__Instance.html
102:    OldPolyhedra/html/_sublattice__Basis.html
102:    Polyhedra/html/_sublattice__Basis.html
102:    RandomCurvesOverVerySmallFiniteFields/html/___Printing.html
102:    SlackIdeals/html/_slack__From__Gale__Circuits_lp..._cm_sp__Tolerance_sp_eq_gt_sp..._rp.html
102:    StronglyStableIdeals/html/_strongly__Stable__Ideals.html
103:    CharacteristicClasses/html/___Chow__Ring.html
103:    DeterminantalRepresentations/html/_bivariate__Diag__Entries.html
103:    Divisor/html/___M__Tries.html
103:    InvariantRing/html/_secondary__Invariants_lp..._cm_sp__Print__Degree__Polynomial_sp_eq_gt_sp..._rp.html
103:    K3Carpets/html/_schreyer__Name.html
103:    Normaliz/html/___The_splattice_sppoints_cm_sp__Ehrhart_spseries_spand_spthe_spsupport_sphyperplanes_spof_span_spintegral_sppolytope..html
103:    RandomMonomialIdeals/html/___C__M__Stats.html
103:    SchurFunctors/html/_character.html
104:    Divisor/html/_ramification__Divisor.html
104:    FrobeniusThresholds/html/___Search.html
104:    PhylogeneticTrees/html/_phylo__Toric__F__P.html
104:    RandomSpaceCurves/html/_known__Unirational__Component__Of__Space__Curves.html
105:    ReactionNetworks/html/_negative__Undirected__Laplacian.html
105:    RelativeCanonicalResolution/html/_get__Cox__Degrees.html
105:    SpecialFanoFourfolds/html/index.html
106:    Dmodules/html/_param__Bpoly_lp__Ring__Element_cm__String_rp.html
107:    DiffAlg/html/_random_lp__Diff__Alg__Element_cm__Ring_rp.html
107:    NCAlgebra/html/_right__Kernel.html
107:    SymbolicPowers/html/___C__I__Primes.html
108:    PhylogeneticTrees/html/_phylo__Toric__Random.html
108:    QuillenSuslin/html/_change__Var.html
108:    TateOnProducts/html/_tate__Extension.html
109:    RandomComplexes/html/_random__Chain__Complex.html
109:    RationalMaps/html/___Minors__Count.html
109:    VersalDeformations/html/_check__Tangent__Space.html
110:    Dmodules/html/_css__Expts__Mult.html
110:    K3Carpets/html/_carpet__Betti__Table.html
110:    QuillenSuslin/html/_complete__Matrix.html
110:    RelativeCanonicalResolution/html/_get__Scroll__Degrees.html
110:    SLnEquivariantMatrices/html/index.html
111:    CohomCalg/html/index.html
111:    LatticePolytopes/html/_is__Jet__Spanned.html
111:    WeylGroups/html/_is__Reduced_lp__Basic__List_cm__Weyl__Group__Element_rp.html
112:    SymbolicPowers/html/___Alternative_spalgorithm_spto_spcompute_spthe_spsymbolic_sppowers_spof_spa_spprime_spideal_spin_sppositive_spcharacteristic.html
113:    DGAlgebras/html/_kill__Cycles.html
113:    Seminormalization/html/_find__Element__Mapping__To__Target.html
114:    BoijSoederberg/html/_is__Mass__Eliminate.html
114:    Macaulay2Doc/html/_resolution_lp__Matrix_rp.html
114:    SlackIdeals/html/___Saturate.html
115:    GraphicalModels/html/_margin__Map.html
116:    LieTypes/html/_fusion__Coefficient_lp..._cm_sp__Max__Word__Length_sp_eq_gt_sp..._rp.html
116:    LieTypes/html/_fusion__Product_lp..._cm_sp__Max__Word__Length_sp_eq_gt_sp..._rp.html
116:    LieTypes/html/___Max__Word__Length.html
116:    RationalMaps/html/_source__Inversion__Factor.html
119:    AlgebraicSplines/html/_postulation__Number.html
119:    GraphicalModels/html/_hidden__Map.html
119:    NumericalCertification/html/_krawczyk__Method__Options.html
119:    RationalMaps/html/_map__Onto__Image.html
121:    Graphs/html/_reverse__Breadth__First__Search.html
122:    Bertini/html/___Bertini_spinput_spfile_spdeclarations_co_sprandom_spnumbers.html
122:    RelativeCanonicalResolution/html/_iterated__Cone.html
123:    Graphs/html/_floyd__Warshall.html
124:    CharacteristicClasses/html/_is__Multi__Homogeneous.html
124:    FourTiTwo/html/_to__Binomial.html
124:    SlackIdeals/html/_graph__From__Slack__Matrix.html
124:    TestIdeals/html/_ascend__Module.html
124:    TestIdeals/html/_frobenius__Trace__On__Canonical__Module.html
125:    RandomCurvesOverVerySmallFiniteFields/html/___Details.html
126:    SegreClasses/html/_contained__In__Singular__Locus.html
128:    AlgebraicSplines/html/_cellular__Complex.html
129:    Divisor/html/___Is__Graded.html
129:    ReactionNetworks/html/_stoichiometric__Cone__Ker.html
132:    SegreClasses/html/_segre.html
133:    Graphs/html/_depth__First__Search.html
134:    FourTiTwo/html/_toric__Graver__Degrees.html
134:    SegreClasses/html/_intersection__Product.html
134:    TateOnProducts/html/___Bundle__Type.html
136:    CharacteristicClasses/html/index.html
139:    SegreClasses/html/_projective__Degrees.html
141:    CharacteristicClasses/html/___Check__Toric__Variety__Valid.html
141:    Graphs/html/_breadth__First__Search.html
143:    EliminationMatrices/html/_maps__Complex.html
143:    EliminationMatrices/html/_regularity__Var.html
143:    RationalMaps/html/_inverse__Of__Map.html
143:    SegreClasses/html/_projective__Degree.html
150:    EliminationMatrices/html/_det__Complex.html
150:    SectionRing/html/_m__Regular.html
151:    SectionRing/html/_is__M__Regular.html
151:    SectionRing/html/_section__Ring.html
153:    BIBasis/html/_bi__Basis.html
156:    SegreClasses/html/_segre__Dim__X.html
164:    ToricInvariants/html/index.html
170:    AlgebraicSplines/html/_stanley__Reisner.html
171:    SlackIdeals/html/_slack__From__Plucker.html
175:    AlgebraicSplines/html/_stanley__Reisner__Presentation.html
176:    AlgebraicSplines/html/_ring__Structure.html
192:    EliminationMatrices/html/_list__Det__Complex.html
195:    SlackIdeals/html/_slack__From__Gale__Plucker.html
204:    CharacteristicClasses/html/___Toric__Chow__Ring.html
214:    SegreClasses/html/_is__Component__Contained.html
229:    EliminationMatrices/html/_deg__Hom__Pol__Map.html
240:    SegreClasses/html/index.html
248:    EliminationMatrices/html/_minors__Complex.html
264:    SlackIdeals/html/_get__Facet__Bases.html
264:    SlackIdeals/html/_symbolic__Slack__Of__Plucker.html
281:    SlackIdeals/html/_grassmann__Section__Ideal.html
342:    IntegralClosure/html/_idealizer_lp..._cm_sp__Index_sp_eq_gt_sp..._rp.html

Note that this is just measuring the length of the headline, but the formatted key also appears in the header and may be very long, for instance for [quotient, MinimalGenerators]. If we count both of those together the list would be much longer.

Two questions:

DanGrayson commented 4 years ago

I looked at one of them:

This method computes the projective degrees of a scheme X inside a scheme Y, where X,Y are subschemes of some product of projective spaces

That could be trimmed to

projective degrees of a nested pair of subschemes in a product of projective spaces

So perhaps 100 is not a bad limit.

If we go to all the trouble of fixing them, we don't want to have to do it again, so it should be an error message, not a warning message.

mahrud commented 4 years ago

If we go to all the trouble of fixing them, we don't want to have to do it again, so it should be an error message, not a warning message.

My point was that there's too many above 100 to fix by hand, so we could make it a warning and hope that they will slowly be fixed, or pick a smaller subset, say above 150, fix those, then return an error.

DanGrayson commented 4 years ago

Well, if we're not going to fix them, then set a limit (150?) where we only have to fix 10-15 and make it an error. Maybe also warn if it's over 100.

mahrud commented 4 years ago

I set an error at 200 and warning at 100.