#9713: Add toric Chow group
----------------------------------+-----------------------------------------
Reporter: vbraun | Owner: AlexGhitza
Type: enhancement | Status: needs_work
Priority: major | Milestone: sage-4.6.1
Component: algebraic geometry | Keywords:
Author: Volker Braun | Upstream: N/A
Reviewer: Andrey Novoseltsev | Merged:
Work_issues: |
----------------------------------+-----------------------------------------
Comment(by vbraun):
A1. The discussed above fact that this patch implement the full Chow group
should be reflected in module level documentation.
OK
A2. Documentation from `ChowCycle.__init__` should be moved to the class
docstring, otherwise it is invisible.
I've added a note to the `ChowCycle` class documentation that you are
not supposed to manually construct them. The `__init__` docstring is
hidden on purpose.
A3. Behaviour of check=False is strange for it: usually such an option
omits validity checks assuming that user will take care of it. Here it
seems to allow a different form of input. Is it inherited from the base
class? If so, maybe it should be fixed there...
Yes, it is inherited from `FGP_Element`. I tried to fix it there, but
then I ended up trying to rewrite it for the new coercion model. And that
attempt was quite unsuccessful, all of sage.modules is interrelated and
you can't just change one class...
A4. Line 170 misses the second `":"` in the end.
OK
A5. The first words of some docstrings have extra `s`'es, like "Returns"
and "Intersects".
OK
A6. It would be nice if the documentation and example for `count_points`
were expanded/clarified a little bit more. The phrase `"integral over the
dual cohomology class"` does not make it clear what is the integrand and
to what the cohomology class is dual. Is it the Chow cycle in both cases?
The example starts with a divisor and then integrates the square of this
divisor and counts points on the intersection of the Chow cycle of this
divisor with the original divisor. How about starting with some Chow cycle
with non-zero point count and then showing how to get a corresponding
cohomology class and integrate it?
There is no easy way to get the Poincare dual (In fact, it exists only
if the variety is smooth). I've clarified the example a bit.
A7. For `intersect_with_divisor` it would be nice to give a reference to
the used algorithm (Fulton p.97?). I think also that
`intersection_with_divisor` would be a better name, since the function
returns the intersection rather than updates the original cycle. (I do
realize now that the same consideration should have been applied to some
methods that I have added...) By the way, this function has no
input/output description. And perhaps `i = _gamma.pop()` does the same
thing as `i = iter(I_gamma).next()` in a little cleaner fashion. (It does
alter the set, but it is not used anyway.) What exactly is tested by the
long test with many zeros in this function? This function says that
divisor must be Cartier, but it is not checked, is it intended? Am I
right that it actually makes sense to use it with Q-Cartier divisors if
the Chow group is also rational?
I renamed it to `intersection_with_divisor()` and expanded on the
documentation which should now answer your questions...
In principle you are right with the Q-Cartier divisors, but in
practice this will not work because multiplication QQ * QQ-Chow cycle is
broken. The problem is that the parent does not adhere to the new coercion
model. I could hack around it, but then this should really be fixed
elsewhere.
A8. `Chow_cycle` method of toric divisors does not have a doctest and
input/output description.
OK
A9. Line 394 misses closing quotes after True.
OK
B1. It is probably worth mentioning what is the point of A(Cone(cone))
after A(cone). I actually didn't even know that Cone(cone) works!
Fortunately, it works as expected ;-)
OK
B2. In `_rational_equivalence_relations` I find it very difficult to
understand the LaTeX expression, which does not get typeset in the
documentation (since it is a private method), especially since it does not
explain what is `"! over ="`, what is `n_{\rho, \sigma}`, and how d, k, n,
and p are related (I guess pairs of them are equal). I think that this
description should be moved to some visible place (module documentation
or relation_gens?) and there should be a reference to where it was taken
from.
I moved it to `relation_gens` and added more explanations.
B3. What is the purpose of the super call in `__eq__` for Chow groups? Do
we want anything but a Chow group equal to a Chow group?
Now it only returns `self is other`.
B4. I think that `_cone_to_V` would be more efficient if it was
implemented via a dictionary. I don't know how significant such a speed up
will be in real computations, but I think it is worthwhile to do this
change.
Its only constructing a unit vector. Surely the run time for
intersection computations is dominated by the matrix normal form
computations and not the construction of unit vectors?
B5. There is a note in degree method about smooth varieties: "Using the
cohomology ring instead of the Chow group will be much faster." I think
that this is a very important point and it should be also mentioned in the
module level documentation and in the Chow group method of toric
varieties. (Perhaps with explanations of why this is the case.) Examples
of this method are very nice! I'd remove the sentence "The resulting fan
is not the fan over a convex cube."
OK
B6. I think it would be more natural if gens without parameters returned
the union of all gens of specified degree. Is it possible to implement?
(I.e. is it possible to force the quotient module to use these generators?
I definitely don't suggest "just" returning union of degree generators.)
I tried it but couldn't get it to work. The base `FGP_Module` has no
provision to explicitly set the generators, and bad things happen if they
are different from the internal normal form of the basis matrix.
B7. For `relation_gens` wouldn't it be more natural to return elements of
the covering module, i.e. lifts of the current output?
You can do that with `A.relations().gens()`. I added a note to
`relation_gens`.
B8. Line 979: you meant `== QQ`.
Yes, fixed.
B9. Would it make sense to derive `ChowGroup_degree_class` from some kind
of a group rather than `SageObject`?
Ideally they would be some other parents with coercions into the full
(mixed-degree) Chow group. But then thats a lot of work for very little
benefit. Not to mention that the base `FGP_Module` does not adhere to the
new coercion model, so it'll be hackisch...
--
Ticket URL: <http://trac.sagemath.org/sage_trac/ticket/9713#comment:25>
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.