From: Michael Orlitzky Date: Sun, 28 Jul 2019 15:21:00 +0000 (-0400) Subject: eja: use FreeModules() category for operators instead of VectorSpaces(). X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=01ff2cfb39635ad84d8281d58f2d620a18569ff3;p=sage.d.git eja: use FreeModules() category for operators instead of VectorSpaces(). This allows our characteristic polynomial algorithm to use real operators and not matrices. --- diff --git a/mjo/eja/euclidean_jordan_algebra.py b/mjo/eja/euclidean_jordan_algebra.py index 9072a12..ba2c63c 100644 --- a/mjo/eja/euclidean_jordan_algebra.py +++ b/mjo/eja/euclidean_jordan_algebra.py @@ -28,8 +28,11 @@ class FiniteDimensionalEuclideanJordanAlgebraOperator(Map): # We need to supply something here to avoid getting the # default Homset of the parent FiniteDimensionalAlgebra class, - # which messes up e.g. equality testing. - parent = Hom(domain_eja, codomain_eja, VectorSpaces(F)) + # which messes up e.g. equality testing. We use FreeModules(F) + # instead of VectorSpaces(F) because our characteristic polynomial + # algorithm will need to F to be a polynomial ring at some point. + # When F is a field, FreeModules(F) returns VectorSpaces(F) anyway. + parent = Hom(domain_eja, codomain_eja, FreeModules(F)) # The Map initializer will set our parent to a homset, which # is explicitly NOT what we want, because these ain't algebra