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.
*************************************************************************** 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 <wst...@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):