#9326: Add cohomology of toric varieties
----------------------------------+-----------------------------------------
Reporter: vbraun | Owner: AlexGhitza
Type: enhancement | Status: needs_work
Priority: major | Milestone: sage-4.5.1
Component: algebraic geometry | Keywords:
Author: Volker Braun | Upstream: N/A
Reviewer: Andrey Novoseltsev | Merged:
Work_issues: |
----------------------------------+-----------------------------------------
Changes (by novoselt):
* status: needs_review => needs_work
Comment:
1. General documentation comment: I would appreciate precise definitions
and/or links (Wikipedia?) to detailed description of Chern/Todd classes
etc. I think that others would appreciate it too.
1. `primitive_collections` - I don't like the statement that it returns
generators of Stanley-Reisner ideal. I'd prefer to have the combinatorial
description (which is already present there) and a note that they
*correspond* to generators of this ideal.
1. `Stanley_Reisner_ideal` and `linear_equivalence_ideal` - do they
really belong to the fan class? The fact that it is necessary to pass a
ring to them suggests that maybe not. (Also, it is not clear what is the
point to cache the result for a potentially new ring next time.) How about
moving them to toric variety class, removing the ring argument, and making
them return an ideal in `QQ[coordinate names of the variety]`? Note that
such a ring is unique in Sage, so if you "construct" it twice in two
different functions, it actually will be the same one. So your code
{{{
R = PolynomialRing(QQ, variety.variable_names())
self._polynomial_ring = R
I = variety._fan.linear_equivalence_ideal(R) +
variety._fan.Stanley_Reisner_ideal(R)
super(CohomologyRing, self).__init__(R, I, names=variety.variable_names())
}}}
will be replaced with
{{{
R = PolynomialRing(QQ, variety.variable_names())
self._polynomial_ring = R
I = variety.linear_equivalence_ideal() + variety.Stanley_Reisner_ideal()
super(CohomologyRing, self).__init__(R, I, names=variety.variable_names())
}}}
It may be good actually to give some name to this ring `R` and make it
accessible from the toric variety as well. (Does it have some standard
name? It suppose it should, since it is the ambient ring of the Stanley-
Reisner ideal.)
1. Regarding names of divisors and divisor classes. I personally think
that it is just fine to have them the same, but maybe they should be
different from coordinate names. The reason is that I would like to inject
both coordinates and divisors into the global name space and work with
them. I think that I would prefer coordinates `x, y, z2, z3, z4` to be
translated into `D_x, D_y, D2, D3, D4`. This may be a bit hard to
implement, since it requires tracking which variables were given explicit
names and which were created automatically, maybe `D_x, D_y, D_z2, D_z3,
D_z4` or just `D0, D1, D2, D3, D4` would be better. In any way there
should be a way for the user to provide custom names. I think there should
be one more optional argument to the toric variety constructor and if it
was not given, then the first call to `cohomology_ring` can specify these
names. (I don't mind having a separate follow-up ticket for this and can
provide a patch on top of this one.)
1. `cohomology_ring` - can we remove "... as a quotient of a polynomial
ring." from the first line of documentation? It is no longer quite true
since there are special classes for cohomology now.
1. `CohomologyRing` constructor - input is not described in the
documentation and from the code it is clear that not any toric variety
will work. The second exception is a bit misleading since it says that
`CC` is required as the base field, but actually it checks only
characteristics (we already had some discussion about it). How about the
following: the constructor should check if the base field is exactly
complex (by which I mean any complex field in Sage independent of
precision, maybe function fields over complex one are also OK?) if not, it
should raise an exception. However there should be a function like
`X.treat_base_field_as_CC()` and if it was called, then all cohomology
computations proceed without checks of the base field. That way we
preserve mathematical correctness yet allow users to use any
representation they want at their own risk. (To avoid potential
complications with cached and created objects, this function should not be
reversible, i.e. it is not OK to turn off `CC`-check and later turn it
back on for the same variety.)
1. `truncate_to_degree` - the name does not match what the function
actually does. I would expect it to drop all terms higher than the given
degree, but it also "truncates" lower terms. Can we change it to something
like `part_of_degree`?
1. `exp` - would be nice to mention in the documentation that there
should be no constant part and explain why. Its output description is also
not quite clear, I think it would be better to write that it returns a
cohomology class.
1. `cohomology_basis` - in the first output case you meant `H^d`, not
`H^\bullet`.
1. `cohomology_class` - can we add some message to `NotImplementedError`?
Note also that #9470 should allow implementing `cone.cohomology_class()`
as you wanted.
1. `volume_form` - I think documentation should explain the normalization
of this form. What assumptions on the variety does this function make?
Simplicial? Complete? Generated by maximal-dimensional cones? It would be
nice to check for those that are not checked by cohomology ring
construction.
1. `integrate` - would be nice if the documentation explained that
integration is done with respect to `volume_form`, i.e. that normalization
is the same.
1. `Todd_class` - can we add a message to `NotImplementedError`?
1. `Euler` - in the spirit of `Chern_class` etc., I think it would be
more consistent to call it `Euler_number` and add a standard notation
alias `X.chi()`. Out of curiosity - why is there a special case for
complete varieties? Should it be faster?
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/9326#comment:12>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sage-trac?hl=en.