X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=mjo%2Feja%2Feja_subalgebra.py;h=ca8efa1fd410b8f5f3f6d177b62779b1a24ccaf5;hb=07d8d3f5ce02c2d2693244d541561f264b5037c7;hp=68f1ce4cf8b5f07087e4474069ad4ebe5c6a4998;hpb=757cc5c671346394eff0a6de15c879598e508c61;p=sage.d.git diff --git a/mjo/eja/eja_subalgebra.py b/mjo/eja/eja_subalgebra.py index 68f1ce4..ca8efa1 100644 --- a/mjo/eja/eja_subalgebra.py +++ b/mjo/eja/eja_subalgebra.py @@ -15,7 +15,6 @@ class FiniteDimensionalEJASubalgebraElement(FiniteDimensionalEJAElement): The matrix representation of an element in the subalgebra is the same as its matrix representation in the superalgebra:: - sage: set_random_seed() sage: x = random_eja(field=QQ,orthonormalize=False).random_element() sage: A = x.subalgebra_generated_by(orthonormalize=False) sage: y = A.random_element() @@ -28,11 +27,10 @@ class FiniteDimensionalEJASubalgebraElement(FiniteDimensionalEJAElement): works like it does in the superalgebra, even if we orthonormalize our basis:: - sage: set_random_seed() - sage: x = random_eja(field=AA).random_element() - sage: A = x.subalgebra_generated_by(orthonormalize=True) - sage: y = A.random_element() - sage: y.operator()(A.one()) == y + sage: x = random_eja(field=AA).random_element() # long time + sage: A = x.subalgebra_generated_by(orthonormalize=True) # long time + sage: y = A.random_element() # long time + sage: y.operator()(A.one()) == y # long time True """ @@ -71,7 +69,6 @@ class FiniteDimensionalEJASubalgebraElement(FiniteDimensionalEJAElement): We can convert back and forth faithfully:: - sage: set_random_seed() sage: J = random_eja(field=QQ, orthonormalize=False) sage: x = J.random_element() sage: A = x.subalgebra_generated_by(orthonormalize=False) @@ -210,7 +207,17 @@ class FiniteDimensionalEJASubalgebra(FiniteDimensionalEJA): """ if elt in self.superalgebra(): - return super()._element_constructor_(elt.to_matrix()) + # If the subalgebra is trivial, its _matrix_span will be empty + # but we still want to be able convert the superalgebra's zero() + # element into the subalgebra's zero() element. There's no great + # workaround for this because sage checks that your basis is + # linearly-independent everywhere, so we can't just give it a + # basis consisting of the zero element. + m = elt.to_matrix() + if self.is_trivial() and m.is_zero(): + return self.zero() + else: + return super()._element_constructor_(m) else: return super()._element_constructor_(elt) @@ -227,6 +234,10 @@ class FiniteDimensionalEJASubalgebra(FiniteDimensionalEJA): r""" Return the embedding from this subalgebra into the superalgebra. + SETUP:: + + sage: from mjo.eja.eja_algebra import HadamardEJA + EXAMPLES:: sage: J = HadamardEJA(4)