Bug#950467: Nice catch, Tobias! Up for another? (Was: Install, run & crash w/ ...)

Kingsley G. Morse Jr. kingsley at loaner.com
Mon Feb 3 00:04:21 GMT 2020


I'm happy to report your guess was correct.

Through no fault of yours

    $ apt-get install sagemath

on my computer failed to upgrade the
libgsl23 package to the latest version in
unstable.

Evidently not upgrading compliant dependencies to
their latest available versions is intentional.

But, I'm also happy to report, manually upgrading
it with

    $ apt-get install libgsl23

seems to have fixed

>  ImportError: /usr/lib/i386-linux-gnu/libgsl.so.23: undefined symbol: cblas_ctrmv

That's the good news.

The bad?

    $ sage 

crashed with a new error.

Toward the end of Sage_crash_report.txt I now see

    ImportError: /usr/lib/python3/dist-packages/sage/libs/gap/element.cpython-37m-i386-linux-gnu.so: undefined symbol: GAP_EnterStack_

If I understand correctly, it suggests sage
didn't find the symbol

    GAP_EnterStack_

which seems to be associated with the GAP computer
algebra system.

Upgrading the following gap packages to their
latest versions in unstable elicited the same
error:

    gap-core
    gap-smallgrp-extra
    gap-design
    gap-float
    gap-grape
    gap-guava
    gap-laguna
    gap-openmath
    gap-radiroot
    gap-scscp
    gap-sonata
    gap-toric

I also checked if the versions of packages owning
files listed in its stack trace were currently in
unstable.

Unless I overlooked something, they are.

If you happen to have the time, and are so
inclined, feel free to share more insight!

The latest Sage_crash_report.txt isi attached to
this email, and hopefully, bug report.

Thanks,
Kingsley

On 02/02/2020 09:56, Tobias Hansen wrote:
> Hi,
> 
> looks like an instance of #907119 which was fixed in gsl 2.5+dfsg-5, however you have gsl 2.5+dfsg-4 installed. Please update your packages to the versions in unstable.
> 
> Best,
> Tobias
> 
> On 2/2/20 9:13 AM, Kingsley G. Morse Jr. wrote:
> >         ImportError: /usr/lib/i386-linux-gnu/libgsl.so.23: undefined symbol: cblas_ctrmv
> 
> > ii  libgsl23                                          2.5+dfsg-4
> 

-- 
Time is the fire in which we all burn.

-------------- next part --------------
***************************************************************************

IPython post-mortem report

{'commit_hash': '<not found>',
 'commit_source': '(none found)',
 'default_encoding': 'UTF-8',
 'ipython_path': '/usr/lib/python3/dist-packages/IPython',
 'ipython_version': '7.11.1',
 'os_name': 'posix',
 'platform': 'Linux-4.4.0-1-686-pae-i686-with-debian-bullseye-sid',
 'sys_executable': '/usr/bin/python3',
 'sys_platform': 'linux',
 'sys_version': '3.7.5rc1 (default, Oct  2 2019, 04:19:31) \n'
                '[GCC 9.2.1 20190909]'}

***************************************************************************



***************************************************************************

Crash traceback:

---------------------------------------------------------------------------
---------------------------------------------------------------------------
ImportError                               Python 3.7.5rc1: /usr/bin/python3
                                                   Sun Feb  2 15:13:05 2020
A problem occurred executing Python code.  Here is the sequence of function
calls leading up to the error, with the most recent (innermost) call last.
/usr/share/sagemath/bin/sage-ipython in <module>
      1 #!/usr/bin/env sage-python
      2 # -*- coding: utf-8 -*-
      3 """
      4 Sage IPython startup script.
      5 """
      6 
      7 # Display startup banner. Do this before anything else to give the user
      8 # early feedback that Sage is starting.
      9 from sage.misc.banner import banner
     10 banner()
     11 
     12 from sage.repl.interpreter import SageTerminalApp
     13 
     14 app = SageTerminalApp.instance()
---> 15 app.initialize()
        global app.initialize = <bound method TerminalIPythonApp.initialize of <sage.repl.interpreter.SageTerminalApp object at 0xb708cc6c>>
     16 app.start()

<decorator-gen-113> in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None)

/usr/lib/python3/dist-packages/traitlets/config/application.py in catch_config_error(method=<function TerminalIPythonApp.initialize>, app=<sage.repl.interpreter.SageTerminalApp object>, *args=(None,), **kwargs={})
     72     TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR = False
     73 else:
     74     raise ValueError("Unsupported value for environment variable: 'TRAITLETS_APPLICATION_RAISE_CONFIG_FILE_ERROR' is set to '%s' which is none of  {'0', '1', 'false', 'true', ''}."% _envvar )
     75 
     76 
     77 @decorator
     78 def catch_config_error(method, app, *args, **kwargs):
     79     """Method decorator for catching invalid config (Trait/ArgumentErrors) during init.
     80 
     81     On a TraitError (generally caused by bad config), this will print the trait's
     82     message, and exit the app.
     83 
     84     For use on init methods, to prevent invoking excepthook on invalid input.
     85     """
     86     try:
---> 87         return method(app, *args, **kwargs)
        method = <function TerminalIPythonApp.initialize at 0xb5e85df4>
        app = <sage.repl.interpreter.SageTerminalApp object at 0xb708cc6c>
        args = (None,)
        kwargs = {}
     88     except (TraitError, ArgumentError) as e:
     89         app.print_help()
     90         app.log.fatal("Bad config encountered during initialization:")
     91         app.log.fatal(str(e))
     92         app.log.debug("Config at the time: %s", app.config)
     93         app.exit(1)
     94 
     95 
     96 class ApplicationError(Exception):
     97     pass
     98 
     99 
    100 class LevelFormatter(logging.Formatter):
    101     """Formatter with additional `highlevel` record
    102 

/usr/lib/python3/dist-packages/IPython/terminal/ipapp.py in initialize(self=<sage.repl.interpreter.SageTerminalApp object>, argv=None)
    302 
    303         return super(TerminalIPythonApp, self).parse_command_line(argv)
    304     
    305     @catch_config_error
    306     def initialize(self, argv=None):
    307         """Do actions after construct, but before starting the app."""
    308         super(TerminalIPythonApp, self).initialize(argv)
    309         if self.subapp is not None:
    310             # don't bother initializing further, starting subapp
    311             return
    312         # print self.extra_args
    313         if self.extra_args and not self.something_to_run:
    314             self.file_to_run = self.extra_args[0]
    315         self.init_path()
    316         # create the shell
--> 317         self.init_shell()
        self.init_shell = <bound method SageTerminalApp.init_shell of <sage.repl.interpreter.SageTerminalApp object at 0xb708cc6c>>
    318         # and draw the banner
    319         self.init_banner()
    320         # Now a variety of things that happen after the banner is printed.
    321         self.init_gui_pylab()
    322         self.init_extensions()
    323         self.init_code()
    324 
    325     def init_shell(self):
    326         """initialize the InteractiveShell instance"""
    327         # Create an InteractiveShell instance.
    328         # shell.display_banner should always be False for the terminal
    329         # based app, because we call shell.show_banner() by hand below
    330         # so the banner shows *before* all extension loading stuff.
    331         self.shell = self.interactive_shell_class.instance(parent=self,
    332                         profile_dir=self.profile_dir,

/usr/lib/python3/dist-packages/sage/repl/interpreter.py in init_shell(self=<sage.repl.interpreter.SageTerminalApp object>)
    727         self.shell.has_sage_extensions = SAGE_EXTENSION in self.extensions
    728 
    729         # Load the %lprun extension if available
    730         try:
    731             import line_profiler
    732         except ImportError:
    733             pass
    734         else:
    735             self.extensions.append('line_profiler')
    736 
    737         if self.shell.has_sage_extensions:
    738             self.extensions.remove(SAGE_EXTENSION)
    739 
    740             # load sage extension here to get a crash if
    741             # something is wrong with the sage library
--> 742             self.shell.extension_manager.load_extension(SAGE_EXTENSION)
        self.shell.extension_manager.load_extension = <bound method ExtensionManager.load_extension of <IPython.core.extensions.ExtensionManager object at 0xb4256c0c>>
        global SAGE_EXTENSION = 'sage'
    743 
    744 

/usr/lib/python3/dist-packages/IPython/core/extensions.py in load_extension(self=<IPython.core.extensions.ExtensionManager object>, module_str='sage')
     72         if module_str in self.loaded:
     73             return "already loaded"
     74 
     75         from IPython.utils.syspathcontext import prepended_to_syspath
     76 
     77         with self.shell.builtin_trap:
     78             if module_str not in sys.modules:
     79                 with prepended_to_syspath(self.ipython_extension_dir):
     80                     mod = import_module(module_str)
     81                     if mod.__file__.startswith(self.ipython_extension_dir):
     82                         print(("Loading extensions from {dir} is deprecated. "
     83                                "We recommend managing extensions like any "
     84                                "other Python packages, in site-packages.").format(
     85                               dir=compress_user(self.ipython_extension_dir)))
     86             mod = sys.modules[module_str]
---> 87             if self._call_load_ipython_extension(mod):
        self._call_load_ipython_extension = <bound method ExtensionManager._call_load_ipython_extension of <IPython.core.extensions.ExtensionManager object at 0xb4256c0c>>
        mod = <module 'sage' from '/usr/lib/python3/dist-packages/sage/__init__.py'>
     88                 self.loaded.add(module_str)
     89             else:
     90                 return "no load function"
     91 
     92     def unload_extension(self, module_str):
     93         """Unload an IPython extension by its module name.
     94 
     95         This function looks up the extension's name in ``sys.modules`` and
     96         simply calls ``mod.unload_ipython_extension(self)``.
     97         
     98         Returns the string "no unload function" if the extension doesn't define
     99         a function to unload itself, "not loaded" if the extension isn't loaded,
    100         otherwise None.
    101         """
    102         if module_str not in self.loaded:

/usr/lib/python3/dist-packages/IPython/core/extensions.py in _call_load_ipython_extension(self=<IPython.core.extensions.ExtensionManager object>, mod=<module 'sage' from '/usr/lib/python3/dist-packages/sage/__init__.py'>)
    119         """
    120         from IPython.utils.syspathcontext import prepended_to_syspath
    121 
    122         if (module_str in self.loaded) and (module_str in sys.modules):
    123             self.unload_extension(module_str)
    124             mod = sys.modules[module_str]
    125             with prepended_to_syspath(self.ipython_extension_dir):
    126                 reload(mod)
    127             if self._call_load_ipython_extension(mod):
    128                 self.loaded.add(module_str)
    129         else:
    130             self.load_extension(module_str)
    131 
    132     def _call_load_ipython_extension(self, mod):
    133         if hasattr(mod, 'load_ipython_extension'):
--> 134             mod.load_ipython_extension(self.shell)
        mod.load_ipython_extension = <function load_ipython_extension at 0xb6fae14c>
        self.shell = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0xb5e996ac>
    135             return True
    136 
    137     def _call_unload_ipython_extension(self, mod):
    138         if hasattr(mod, 'unload_ipython_extension'):
    139             mod.unload_ipython_extension(self.shell)
    140             return True
    141 
    142     @undoc
    143     def install_extension(self, url, filename=None):
    144         """
    145         Deprecated.
    146         """
    147         # Ensure the extension directory exists
    148         raise DeprecationWarning(
    149             '`install_extension` and the `install_ext` magic have been deprecated since IPython 4.0'

/usr/lib/python3/dist-packages/sage/__init__.py in load_ipython_extension(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,))
      1 __all__ = ['all']
      2 
      3 # Set sage.__version__ to the current version number. This is analogous
      4 # to many other Python packages.
      5 from sage.version import version as __version__
      6 
      7 # Make sure that the correct zlib library is loaded. This is needed
      8 # to prevent the system zlib to be loaded instead of the Sage one.
      9 # See https://trac.sagemath.org/ticket/23122
     10 import zlib
     11 
     12 # IPython calls this when starting up
     13 def load_ipython_extension(*args):
     14     import sage.repl.ipython_extension
---> 15     sage.repl.ipython_extension.load_ipython_extension(*args)
        sage.repl.ipython_extension.load_ipython_extension = <function load_ipython_extension at 0xb4278d64>
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0xb5e996ac>,)
     16 
     17 
     18 # Monkey-patch inspect.isfunction() to support Cython functions.
     19 def isfunction(obj):
     20     """
     21     Check whether something is a function.
     22 
     23     We assume that anything which has a genuine ``__code__``
     24     attribute (not using ``__getattr__`` overrides) is a function.
     25     This is meant to support Cython functions.
     26 
     27     EXAMPLES::
     28 
     29         sage: from inspect import isfunction
     30         sage: def f(): pass
     31         sage: isfunction(f)

/usr/lib/python3/dist-packages/sage/repl/ipython_extension.py in wrapper(*args=(<sage.repl.interpreter.SageTerminalInteractiveShell object>,), **kwargs={})
    547         ....:     if work:
    548         ....:         return 'foo worked'
    549         ....:     raise RuntimeError("foo didn't work")
    550         sage: foo(False)
    551         Traceback (most recent call last):
    552         ...
    553         RuntimeError: foo didn't work
    554         sage: foo(True)
    555         'foo worked'
    556         sage: foo(False)
    557         sage: foo(True)
    558     """
    559     @wraps(func)
    560     def wrapper(*args, **kwargs):
    561         if not wrapper.has_run:
--> 562             result = func(*args, **kwargs)
        result = undefined
        global func = undefined
        args = (<sage.repl.interpreter.SageTerminalInteractiveShell object at 0xb5e996ac>,)
        kwargs = {}
    563             wrapper.has_run = True
    564             return result
    565     wrapper.has_run = False
    566     return wrapper
    567 
    568 
    569 @run_once
    570 def load_ipython_extension(ip):
    571     """
    572     Load the extension in IPython.
    573     """
    574     # this modifies ip
    575     SageCustomizations(shell=ip)

/usr/lib/python3/dist-packages/sage/repl/ipython_extension.py in load_ipython_extension(ip=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
    560     def wrapper(*args, **kwargs):
    561         if not wrapper.has_run:
    562             result = func(*args, **kwargs)
    563             wrapper.has_run = True
    564             return result
    565     wrapper.has_run = False
    566     return wrapper
    567 
    568 
    569 @run_once
    570 def load_ipython_extension(ip):
    571     """
    572     Load the extension in IPython.
    573     """
    574     # this modifies ip
--> 575     SageCustomizations(shell=ip)
        global SageCustomizations = <class 'sage.repl.ipython_extension.SageCustomizations'>
        global shell = undefined
        ip = <sage.repl.interpreter.SageTerminalInteractiveShell object at 0xb5e996ac>

/usr/lib/python3/dist-packages/sage/repl/ipython_extension.py in __init__(self=<sage.repl.ipython_extension.SageCustomizations object>, shell=<sage.repl.interpreter.SageTerminalInteractiveShell object>)
    420     def __init__(self, shell=None):
    421         """
    422         Initialize the Sage plugin.
    423         """
    424         self.shell = shell
    425 
    426         self.auto_magics = SageMagics(shell)
    427         self.shell.register_magics(self.auto_magics)
    428 
    429         import sage.misc.edit_module as edit_module
    430         self.shell.set_hook('editor', edit_module.edit_devel)
    431 
    432         self.init_inspector()
    433         self.init_line_transforms()
    434 
--> 435         import sage.all # until sage's import hell is fixed
        sage.all = undefined
    436 
    437         self.shell.verbose_quit = True
    438         self.set_quit_hook()
    439 
    440         self.register_interface_magics()
    441 
    442         if SAGE_IMPORTALL == 'yes':
    443             self.init_environment()
    444 
    445     def register_interface_magics(self):
    446         """
    447         Register magics for each of the Sage interfaces
    448         """
    449         from sage.repl.interface_magic import InterfaceMagic
    450         InterfaceMagic.register_all(self.shell)

/usr/lib/python3/dist-packages/sage/all.py in <module>
     97 from sage.misc.sh import sh
     98 
     99 from sage.libs.all       import *
    100 from sage.data_structures.all import *
    101 from sage.doctest.all    import *
    102 
    103 from sage.structure.all  import *
    104 from sage.rings.all      import *
    105 from sage.arith.all      import *
    106 from sage.matrix.all     import *
    107 
    108 from sage.symbolic.all   import *
    109 from sage.modules.all    import *
    110 from sage.monoids.all    import *
    111 from sage.algebras.all   import *
--> 112 from sage.modular.all    import *
        global sage.modular.all = undefined
    113 from sage.sat.all        import *
    114 from sage.schemes.all    import *
    115 from sage.graphs.all     import *
    116 from sage.groups.all     import *
    117 from sage.arith.power    import generic_power as power
    118 from sage.databases.all  import *
    119 from sage.categories.all import *
    120 from sage.sets.all       import *
    121 from sage.probability.all import *
    122 from sage.interfaces.all import *
    123 
    124 from sage.functions.all  import *
    125 from sage.calculus.all   import *
    126 
    127 lazy_import('sage.tests', 'all', as_='tests', deprecation=27337)

/usr/lib/python3/dist-packages/sage/modular/all.py in <module>
      1 """
      2 Test for deprecations of imports into global namespace::
      3 
      4     sage: buzzard_tpslopes
      5     doctest:warning...:
      6     DeprecationWarning:
      7     Importing buzzard_tpslopes from here is deprecated. If you need to use it, please import it directly from sage.modular.buzzard
      8     See https://trac.sagemath.org/27066 for details.
      9     <function buzzard_tpslopes at ...>
     10 """
     11 from __future__ import absolute_import
     12 from sage.misc.lazy_import import lazy_import
     13 
---> 14 from .quatalg.all import *
        global quatalg.all = undefined
     15 
     16 from .modsym.all import *
     17 
     18 from .modform.all import *
     19 
     20 from .ssmod.all import *
     21 
     22 from .abvar.all import *
     23 
     24 from .dirichlet import (DirichletGroup,
     25                         kronecker_character, kronecker_character_upside_down,
     26                         trivial_character)
     27 
     28 from .arithgroup.all import (Gamma0, Gamma1, GammaH, Gamma, SL2Z,
     29                              ArithmeticSubgroup_Permutation,
     30                              CongruenceSubgroup, FareySymbol)
     31 

/usr/lib/python3/dist-packages/sage/modular/quatalg/__init__.py in <module>
      1 from __future__ import absolute_import
      2 # Modular forms using quaternion algebras -- initialization file
      3 
----> 4 from . import all
        global all = undefined

/usr/lib/python3/dist-packages/sage/modular/quatalg/all.py in <module>
      1 from __future__ import absolute_import
      2 
----> 3 from .brandt import BrandtModule
        global brandt = undefined
        global BrandtModule = undefined

/usr/lib/python3/dist-packages/sage/modular/quatalg/brandt.py in <module>
    191 # it under the terms of the GNU General Public License as published by
    192 # the Free Software Foundation, either version 2 of the License, or
    193 # (at your option) any later version.
    194 #                  https://www.gnu.org/licenses/
    195 # ****************************************************************************
    196 from __future__ import print_function
    197 
    198 # imports
    199 from sage.misc.all import prod, verbose
    200 from sage.rings.all import Integer, ZZ, QQ, PolynomialRing, GF, CommutativeRing
    201 
    202 from sage.algebras.quatalg.quaternion_algebra import QuaternionAlgebra, basis_for_quaternion_lattice
    203 from sage.algebras.quatalg.quaternion_algebra_cython import rational_matrix_from_rational_quaternions
    204 
    205 from sage.arith.all import gcd, factor, prime_divisors, kronecker, next_prime
--> 206 from sage.modular.hecke.all import (AmbientHeckeModule, HeckeSubmodule,
        global sage.modular.hecke.all = undefined
        global AmbientHeckeModule = undefined
        global HeckeSubmodule = undefined
        global HeckeModuleElement = undefined
    207                                     HeckeModuleElement)
    208 from sage.modular.dirichlet import TrivialCharacter
    209 from sage.matrix.all import MatrixSpace, matrix
    210 from sage.structure.richcmp import richcmp, richcmp_method
    211 from sage.misc.cachefunc import cached_method
    212 
    213 
    214 cache = {}
    215 
    216 
    217 def BrandtModule(N, M=1, weight=2, base_ring=QQ, use_cache=True):
    218     """
    219     Return the Brandt module of given weight associated to the prime
    220     power `p^r` and integer `M`, where `p` and `M` are coprime.
    221 

/usr/lib/python3/dist-packages/sage/modular/hecke/all.py in <module>
      5 
      6 from .hecke_operator import HeckeOperator, is_HeckeOperator
      7 
      8 from .degenmap import DegeneracyMap
      9 
     10 from .algebra import HeckeAlgebra, is_HeckeAlgebra
     11 
     12 from .morphism import (HeckeModuleMorphism, HeckeModuleMorphism_matrix,
     13                        is_HeckeModuleMorphism,
     14                        is_HeckeModuleMorphism_matrix)
     15 
     16 from .element import HeckeModuleElement, is_HeckeModuleElement
     17 
     18 from .submodule import HeckeSubmodule, is_HeckeSubmodule
     19 
---> 20 from .ambient_module import AmbientHeckeModule, is_AmbientHeckeModule
        global ambient_module = undefined
        global AmbientHeckeModule = undefined
        global is_AmbientHeckeModule = undefined

/usr/lib/python3/dist-packages/sage/modular/hecke/ambient_module.py in <module>
     23 from . import degenmap
     24 from . import module
     25 from . import submodule
     26 
     27 import sage.modules.all
     28 
     29 import sage.rings.all
     30 
     31 import sage.misc.misc as misc
     32 
     33 import sage.arith.all as arith
     34 
     35 import sage.matrix.matrix_space as matrix_space
     36 from   sage.matrix.constructor import matrix
     37 
---> 38 from sage.modular.arithgroup.all import Gamma0 # for Sturm bound
        global sage.modular.arithgroup.all = undefined
        global Gamma0 = undefined
     39 
     40 def is_AmbientHeckeModule(x):
     41     r"""
     42     Return True if x is of type AmbientHeckeModule.
     43 
     44     EXAMPLES::
     45 
     46         sage: from sage.modular.hecke.ambient_module import is_AmbientHeckeModule
     47         sage: is_AmbientHeckeModule(ModularSymbols(6))
     48         True
     49         sage: is_AmbientHeckeModule(ModularSymbols(6).cuspidal_subspace())
     50         False
     51         sage: is_AmbientHeckeModule(ModularForms(11))
     52         True
     53         sage: is_AmbientHeckeModule(BrandtModule(2, 3))

/usr/lib/python3/dist-packages/sage/modular/arithgroup/__init__.py in <module>
      1 from __future__ import absolute_import
      2 # do nothing
      3 
----> 4 from . import all
        global all = undefined

/usr/lib/python3/dist-packages/sage/modular/arithgroup/all.py in <module>
      1 from __future__ import absolute_import
      2 # Note: the is_xxx functions are imported to here, but not from here up to sage.modular.all, so
      3 # they are invisible to the user but easy to import all in one go by other code that needs them.
      4 
      5 from .arithgroup_generic import is_ArithmeticSubgroup
----> 6 from .congroup_generic import is_CongruenceSubgroup, CongruenceSubgroup_constructor as CongruenceSubgroup
        global congroup_generic = undefined
        global is_CongruenceSubgroup = undefined
        global CongruenceSubgroup_constructor = undefined
        global CongruenceSubgroup = undefined
      7 from .congroup_gammaH import GammaH_constructor as GammaH, is_GammaH
      8 from .congroup_gamma1 import Gamma1_constructor as Gamma1, is_Gamma1
      9 from .congroup_gamma0 import Gamma0_constructor as Gamma0, is_Gamma0
     10 from .congroup_gamma import Gamma_constructor as Gamma, is_Gamma
     11 from .congroup_sl2z import SL2Z, is_SL2Z
     12 
     13 from .arithgroup_perm import ArithmeticSubgroup_Permutation
     14 
     15 from .congroup import (degeneracy_coset_representatives_gamma0,
     16                             degeneracy_coset_representatives_gamma1)
     17 
     18 from .farey_symbol import Farey as FareySymbol
     19 

/usr/lib/python3/dist-packages/sage/modular/arithgroup/congroup_generic.py in <module>
     13 #
     14 #       Copyright (C) 2004, 2006 William Stein <wstein at gmail.com>
     15 #
     16 #  Distributed under the terms of the GNU General Public License (GPL)
     17 #
     18 #  The full text of the GPL is available at:
     19 #
     20 #                  https://www.gnu.org/licenses/
     21 #
     22 ################################################################################
     23 from __future__ import absolute_import
     24 
     25 from sage.rings.all import QQ, ZZ, Zmod
     26 from sage.arith.all import gcd
     27 from sage.sets.set import Set
---> 28 from sage.groups.matrix_gps.all import MatrixGroup
        global sage.groups.matrix_gps.all = undefined
        global MatrixGroup = undefined
     29 from sage.matrix.matrix_space import MatrixSpace
     30 from sage.misc.misc_c import prod
     31 from .arithgroup_generic import ArithmeticSubgroup
     32 
     33 
     34 def CongruenceSubgroup_constructor(*args):
     35     r"""
     36     Attempt to create a congruence subgroup from the given data.
     37 
     38     The allowed inputs are as follows:
     39 
     40     - A :class:`~sage.groups.matrix_gps.matrix_group.MatrixGroup` object. This
     41       must be a group of matrices over `\ZZ / N\ZZ` for some `N`, with
     42       determinant 1, in which case the function will return the group of
     43       matrices in `SL(2, \ZZ)` whose reduction mod `N` is in the given group.

/usr/lib/python3/dist-packages/sage/groups/matrix_gps/all.py in <module>
      1 from sage.misc.lazy_import import lazy_import
      2 
      3 lazy_import('sage.groups.matrix_gps.linear', 'GL')
      4 lazy_import('sage.groups.matrix_gps.linear', 'SL')
      5 lazy_import('sage.groups.matrix_gps.symplectic', 'Sp')
      6 lazy_import('sage.groups.matrix_gps.unitary', 'SU')
      7 lazy_import('sage.groups.matrix_gps.unitary', 'GU')
      8 lazy_import('sage.groups.matrix_gps.orthogonal', 'GO')
      9 lazy_import('sage.groups.matrix_gps.orthogonal', 'SO')
     10 lazy_import('sage.groups.matrix_gps.finitely_generated', 'MatrixGroup')
     11 lazy_import('sage.groups.matrix_gps.finitely_generated', 'QuaternionMatrixGroupGF3')
     12 
---> 13 import sage.groups.matrix_gps.pickling_overrides
        global sage.groups.matrix_gps.pickling_overrides = undefined

/usr/lib/python3/dist-packages/sage/groups/matrix_gps/pickling_overrides.py in <module>
      1 """
      2 Overrides to unpickle old matrix groups
      3 """
      4 
      5 from sage.structure.sage_object import register_unpickle_override
      6 
----> 7 from sage.groups.matrix_gps.finitely_generated import FinitelyGeneratedMatrixGroup_gap
        global sage.groups.matrix_gps.finitely_generated = undefined
        global FinitelyGeneratedMatrixGroup_gap = undefined
      8 from sage.groups.matrix_gps.group_element import MatrixGroupElement_gap
      9 from sage.groups.matrix_gps.linear import GL, LinearMatrixGroup_generic
     10 
     11 
     12 
     13 class LegacyMatrixGroup(FinitelyGeneratedMatrixGroup_gap):
     14 
     15     def __setstate__(self, state):
     16         """
     17         Restore from old pickle.
     18 
     19         EXAMPLES::
     20 
     21             sage: from sage.groups.matrix_gps.pickling_overrides import LegacyMatrixGroup
     22             sage: state = dict()
     23             sage: state['_MatrixGroup_gap__n'] = 2
     24             sage: state['_MatrixGroup_gap__R'] = GF(3)
     25             sage: state['_gensG'] = [ matrix(GF(3), [[1,2],[0,1]]) ]
     26             sage: M = LegacyMatrixGroup.__new__(LegacyMatrixGroup)
     27             sage: M.__setstate__(state)
     28             sage: M
     29             Matrix group over Finite Field of size 3 with 1 generators (
     30             [1 2]
     31             [0 1]

/usr/lib/python3/dist-packages/sage/groups/matrix_gps/finitely_generated.py in <module>
     67 from sage.rings.all import QQbar
     68 from sage.interfaces.gap import gap
     69 from sage.structure.element import is_Matrix
     70 from sage.matrix.matrix_space import MatrixSpace, is_MatrixSpace
     71 from sage.matrix.all import matrix
     72 from sage.structure.sequence import Sequence
     73 from sage.misc.cachefunc import cached_method
     74 from sage.modules.free_module_element import vector
     75 from sage.rings.polynomial.polynomial_ring_constructor import PolynomialRing
     76 from sage.rings.power_series_ring import PowerSeriesRing
     77 from sage.rings.fraction_field import FractionField
     78 from sage.misc.functional import cyclotomic_polynomial
     79 from sage.rings.number_field.number_field import CyclotomicField
     80 from sage.combinat.integer_vector import IntegerVectors
     81 
---> 82 from sage.groups.matrix_gps.matrix_group import (
        global sage.groups.matrix_gps.matrix_group = undefined
        global MatrixGroup_generic = undefined
        global MatrixGroup_gap = undefined
     83     MatrixGroup_generic, MatrixGroup_gap )
     84 from sage.groups.matrix_gps.group_element import is_MatrixGroupElement
     85 
     86 
     87 def normalize_square_matrices(matrices):
     88     """
     89     Find a common space for all matrices.
     90 
     91     OUTPUT:
     92 
     93     A list of matrices, all elements of the same matrix space.
     94 
     95     EXAMPLES::
     96 
     97         sage: from sage.groups.matrix_gps.finitely_generated import normalize_square_matrices

/usr/lib/python3/dist-packages/sage/groups/matrix_gps/matrix_group.py in <module>
     48 # (at your option) any later version.
     49 #                  https://www.gnu.org/licenses/
     50 # ****************************************************************************
     51 
     52 from __future__ import absolute_import
     53 
     54 from sage.categories.groups import Groups
     55 from sage.categories.rings import Rings
     56 from sage.rings.integer import is_Integer
     57 from sage.matrix.matrix_space import MatrixSpace
     58 from sage.misc.latex import latex
     59 from sage.structure.richcmp import (richcmp_not_equal, rich_to_bool,
     60                                     richcmp_method, richcmp)
     61 from sage.misc.cachefunc import cached_method
     62 from sage.groups.group import Group
---> 63 from sage.groups.libgap_wrapper import ParentLibGAP
        global sage.groups.libgap_wrapper = undefined
        global ParentLibGAP = undefined
     64 from sage.groups.libgap_mixin import GroupMixinLibGAP
     65 
     66 from sage.groups.matrix_gps.group_element import (
     67     MatrixGroupElement_generic, MatrixGroupElement_gap)
     68 
     69 #################################################################
     70 
     71 def is_MatrixGroup(x):
     72     """
     73     Test whether ``x`` is a matrix group.
     74 
     75     EXAMPLES::
     76 
     77         sage: from sage.groups.matrix_gps.matrix_group import is_MatrixGroup
     78         sage: is_MatrixGroup(MatrixSpace(QQ,3))

/usr/lib/python3/dist-packages/sage/libs/gap/element.pxd in init sage.groups.libgap_wrapper (build/cythonized/sage/groups/libgap_wrapper.c:10128)()
     21 cdef GapElement make_any_gap_element(parent, Obj obj)
     22 cdef GapElement make_GapElement(parent, Obj obj)
     23 cdef GapElement_List make_GapElement_List(parent, Obj obj)
     24 cdef GapElement_Record make_GapElement_Record(parent, Obj obj)
     25 cdef GapElement_Integer make_GapElement_Integer(parent, Obj obj)
     26 cdef GapElement_Rational make_GapElement_Rational(parent, Obj obj)
     27 cdef GapElement_String make_GapElement_String(parent, Obj obj)
     28 cdef GapElement_Boolean make_GapElement_Boolean(parent, Obj obj)
     29 cdef GapElement_Function make_GapElement_Function(parent, Obj obj)
     30 
     31 cdef char *capture_stdout(Obj, Obj)
     32 cdef char *gap_element_str(Obj)
     33 cdef char *gap_element_repr(Obj)
     34 
     35 
---> 36 cdef class GapElement(RingElement):
        global cdef = undefined
        global GapElement = undefined
        global RingElement = undefined
     37 
     38     # the pointer to the GAP object (memory managed by GASMAN)
     39     cdef Obj value
     40 
     41     # comparison
     42     cdef bint _compare_by_id
     43     cdef bint _compare_equal(self, Element other) except -2
     44     cdef bint _compare_less(self, Element other) except -2
     45     cpdef _set_compare_by_id(self)
     46     cpdef _assert_compare_by_id(self)
     47 
     48     cdef _initialize(self, parent, Obj obj)
     49     cpdef _type_number(self)
     50     cpdef is_bool(self)
     51     cpdef _add_(self, other)

ImportError: /usr/lib/python3/dist-packages/sage/libs/gap/element.cpython-37m-i386-linux-gnu.so: undefined symbol: GAP_EnterStack_

***************************************************************************

History of session input:
*** Last line of input (may not be in above history):


More information about the debian-science-maintainers mailing list