Hi!

Since this post summarises replies to various posts in this thread and to
an off-list message, I am making this a reply to the top of the thread.

Objective: As a *small* part of some group cohomology computations, I need
to compute the first Hilbert series of certain homogeneous ideals in
graded-commutative rings, with respect to given degree weights of the
ring generators.

Problem: The data are in Singular, thus, Singular is the natural
candidate to do the job. Unfortunately, some of my rings have too many
variables, which means that Singular's "hilb(...,1)" command suffers
from an int overflow.

Potential ways out: I am listing potential approaches to achieve the
objective. In all cases I tell what is good or bad in that approach, in
some cases I need more support or answers.

1. Create an implementation in Sage, that does the ideal computations in
Singular-via-pexpect and does the bigint computations in Sage.
   Good: It works even in big examples.
   Bad:  In the cases in which Singular works, Singular is a lot faster.
2. Create an implementation in Singular that doesn't use intvec (which
has a 32 bit limitation) but a different data structure, or get the
Singular developers to do so.
   Bad:  I didn't try to implement it myself; Singular devs didn't
   answer yet.
3. Use frobby.
   Good: It works in small examples.
   Bad:  On some big example, it is slower than 1. and fails due to
         memory problems. And one would need a conversion from multigraded
         to univariate Hilbert series.
   ==> Frobby is no serious option.
4. Use LattE/normaliz.
   Bad: I have no idea how.
5. Use Macaulay2
   Bad: (a) The experimental spkg is broken, it won't install.
        (b) The installation instructions for Ubuntu on the project
            pages are rather verbose and require adding obscure
            repositories.
        (c) Installation from sources (release-1.12 from github):
            i. Although I installed all dependencies listed in the
               INSTALL file, "make" fails because additionally givaro
               is required. And 'export MAKE="make -j3"' makes Macaulay2
               believe that gnu make is not installed.
            ii. I tried installation in a Sage shell, as givaro is
               in Sage. However, "make" fails as follows:
/home/king/Projekte/Macaulay2/M2/M2/usr-host/include/fflas-ffpack/fflas/fflas_ftrsm_src.inl:279:27:
 error: ‘openblas_set_num_threads’ was not declared in this scope
   openblas_set_num_threads(__FFLASFFPACK_OPENBLAS_NUM_THREADS);
                           ^
cc1plus: warning: unrecognized command line option ‘-Wno-mismatched-tags’
../../include/config.Makefile:226: recipe for target 'interface.o' failed
make[2]: *** [interface.o] Error 1
make[2]: Leaving directory '/home/king/Projekte/Macaulay2/M2/M2/Macaulay2/d'
Makefile:20: recipe for target 'all-in-d' failed
make[1]: *** [all-in-d] Error 2
   ==> Currently Macaulay2 is no option.
6. Use CoCoA(Lib).
   Good: "sage -i cocoalib" works. CoCoA is known for a focus on Hilbert
         driven computations, thus, is supposed to be good for the job.
   Bad: (a) Apparently the optional package only provides the CoCoA
            library (plus headers, of course), but no Cython bindings.
        (b) The cocoa documentation is not installed in the proper
            place, but in SAGE_LOCAL/include/CoCoA/doc. And this is the
            full documentation of the hilbert() function (I am not joking):
            """
            hey!!! write something more!

            I'm just using the C code I wrote for CoCoA-4. It will be
            entirely rewritten in C++

            The only usable function is

               RingElem HilbertNumeratorMod(PolyRing HSRing, ideal I);

            but it works ONLY if I is a monomial ideal. HSRing is the
            ring where the Hilbert Series Numerator should live. 
            """
   ==> CoCoALib seriously lacks documentation and has no Sage bindings, and
   thus currently it is no option.

QUESTIONS:
- Are people trying to create cython bindings for CoCoALib?
- How do I use LattE or normaliz? Say:
   sage: R.<x,y,z,w>=QQ[]
   sage: I = R*[x^3,x^2*y,x*z]
  And now how can I compute the first Hilbert series, with given degrees
  for x,y,z?
- How to make Macaulay2?

Best regards,
Simon

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at https://groups.google.com/group/sage-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to