Opened 10 years ago

Last modified 10 years ago

#13588 closed enhancement

libGAP! -- create a Cython library interface to gap — at Version 23

Reported by: vbraun Owned by: joyner
Priority: major Milestone: sage-5.7
Component: group theory Keywords:
Cc: mmarco, tfeulner, iandrus, SimonKing Merged in:
Authors: Volker Braun Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: #13211 Stopgaps:

Status badges

Description (last modified by vbraun)

Currently, libGAP doesn't give useful errors if something goes wrong during initialization.

Also, the GAP SIGINT handler got installed, this is fixed in the new spkg. Now Ctrl-C works as expected.

The trac_6391_* patches have already been reviewed at #6391, I'm just attaching them to this ticket for convenience.

Change History (27)

comment:1 Changed 10 years ago by vbraun

  • Authors set to Volker Braun
  • Cc mmarco added
  • Dependencies set to #6391, #13211
  • Status changed from new to needs_review

Miguel, you said that you had some mysterious error. Can you try this patch? It depends on the recently-updated patches on #6391, #13211.

comment:2 Changed 10 years ago by mmarco

I have been checking the different updates of libgap, and the error seemed to go away several versions ago. Anyways, i will keep testing it.

comment:3 Changed 10 years ago by mmarco

I don't know if it is an issue related with this patch or if it comes from libgap itself, but i have experienced some problems when i use tab completion in a session in the command line (i haven't checked it in the notebook).

An example:

sage: F=libgap.eval('FreeGroup(2)')
sage: (a,b)=F.GeneratorsOfGroup()
sage: H=F/libgap([a^2,b^2,a*b*a*b])
sage: H
<fp group on the generators [ f1, f2 ]>
sage: H.IsomorphismSimplifiedFpGroup()
[ f1, f2 ] -> [ f1, f2 ]
sage: H=F/libgap([a^2,b^2,a*b])    
sage: c=H.Gene
H.GeneralLinearGroup      H.GeneralisedEigenspaces  H.GeneralizedEigenvalues  H.GeneratorsOfIdeal
H.GeneralOrthogonalGroup  H.GeneralisedEigenvalues  H.GeneratorsOfField       
H.GeneralUnitaryGroup     H.GeneralizedEigenspaces  H.GeneratorsOfGroup       
sage: c=H.GeneratorsOfGroup()[0]
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/mmarco/sage-5.4/<ipython console> in <module>()

/home/mmarco/sage-5.4/local/lib/python2.7/site-packages/sage/libs/gap/element.so in sage.libs.gap.element.GapElement.__getattr__ (sage/libs/gap/element.c:3555)()

AttributeError: Name "GeneratorsOfGroup" is not defined in GAP.
sage: c=H.GeneratorsOfGroup()   
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/mmarco/sage-5.4/<ipython console> in <module>()

/home/mmarco/sage-5.4/local/lib/python2.7/site-packages/sage/libs/gap/element.so in sage.libs.gap.element.GapElement.__getattr__ (sage/libs/gap/element.c:3555)()

AttributeError: Name "GeneratorsOfGroup" is not defined in GAP.
sage: H
Exception RuntimeError: 'Entered a critical block twice' in 'sage.libs.gap.util.error_handler' ignored
<fp group on the generators [ f1, f2 ]>
sage: H.GeneratorsOfGroup()
[ f1, f2 ]
sage: c=H.GeneratorsOfGroup()[0]
sage: c
f1
sage: c=H.Generat
H.GeneratorsOfField  H.GeneratorsOfGroup  H.GeneratorsOfIdeal  
sage: c=H.GeneratorsOfGroup()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/mmarco/sage-5.4/<ipython console> in <module>()

/home/mmarco/sage-5.4/local/lib/python2.7/site-packages/sage/libs/gap/element.so in sage.libs.gap.element.GapElement.__getattr__ (sage/libs/gap/element.c:3555)()

AttributeError: Name "GeneratorsOfGroup" is not defined in GAP.
sage: c=H.GeneratorsOfGroup()
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)

/home/mmarco/sage-5.4/<ipython console> in <module>()

/home/mmarco/sage-5.4/local/lib/python2.7/site-packages/sage/libs/gap/element.so in sage.libs.gap.element.GapElement.__getattr__ (sage/libs/gap/element.c:3555)()

AttributeError: Name "GeneratorsOfGroup" is not defined in GAP.
sage: H
Exception RuntimeError: 'Entered a critical block twice' in 'sage.libs.gap.util.error_handler' ignored
<fp group on the generators [ f1, f2 ]>
sage: c=H.GeneratorsOfGroup()

comment:4 Changed 10 years ago by mmarco

This same behaviour appears when i don't use this patch, so reported in the libgap ticket.

comment:5 Changed 10 years ago by vbraun

  • Description modified (diff)

comment:6 Changed 10 years ago by vbraun

Updated patch fixes the issue with the command line completion

comment:7 Changed 10 years ago by vbraun

  • Cc tfeulner added

Updated spkg fixes long input lines (>32k characters):

sage: S = SymmetricGroup(10000)
sage: s = S.random_element()
sage: len(str(s._gap_()))
61673
sage: libgap(s)
(1,5243,8582,5012,6862,7477,1681,7423,8405,3101,...,5257,9362,2495,8500)( [...] )

comment:8 Changed 10 years ago by vbraun

  • Description modified (diff)

comment:9 Changed 10 years ago by vbraun

I've added the same workaround for the gap command line option issue as just discussed in #13211

comment:10 Changed 10 years ago by vbraun

I've added __nonzero__ for wrapped GAP booleans for easier use.

Changed 10 years ago by vbraun

Updated patch

comment:11 Changed 10 years ago by vbraun

The new patch allows to change the comparison method for libgap objects since not all GAP objects can be compared. This is important if you want use them as cache keys.

Also, the comparison was not properly wrapped in sig_on/sig_off

comment:12 Changed 10 years ago by vbraun

I forgot to package aclocal.m4, updated spkg adds that file.

comment:13 Changed 10 years ago by vbraun

  • Description modified (diff)

comment:14 Changed 10 years ago by vbraun

  • Description modified (diff)

comment:15 Changed 10 years ago by vbraun

Updated to libGap-4.5.7

comment:16 Changed 10 years ago by vbraun

  • Dependencies changed from #6391, #13211 to #13211
  • Description modified (diff)

Changed 10 years ago by vbraun

patch from #6391

Changed 10 years ago by vbraun

patch from #6391

comment:17 Changed 10 years ago by vbraun

  • Description modified (diff)

comment:18 Changed 10 years ago by vbraun

  • Description modified (diff)

comment:19 Changed 10 years ago by jdemeyer

  • Milestone changed from sage-5.6 to sage-5.7
  • Summary changed from Improve libGAP startup error handling to libGAP! -- create a Cython library interface to gap

comment:20 Changed 10 years ago by iandrus

  • Cc iandrus added

comment:21 Changed 10 years ago by mmarco

I still see the segfault when trying to execute "Exec" trough libgap. This seems to make it impossible to load gap packages that make use of external programs.

comment:22 Changed 10 years ago by vbraun

Thanks for reminding me, I completely forgot about the Exec thing.

In the meantime, can we get this reviewed and included into Sage before the next GAP version comes out?

comment:23 Changed 10 years ago by vbraun

  • Description modified (diff)

I've replaced the spkg with a new version that fixes the GAP Exec command.

Changed 10 years ago by vbraun

Updated patch

Note: See TracTickets for help on using tickets.