]> gitweb.michael.orlitzky.com - sage.d.git/log
sage.d.git
4 years agoeja: finally enable tests for the trace inner product.
Michael Orlitzky [Tue, 23 Jul 2019 04:51:18 +0000 (00:51 -0400)]
eja: finally enable tests for the trace inner product.

4 years agoeja: use charpoly coefficients to implement det() for elements.
Michael Orlitzky [Tue, 23 Jul 2019 04:48:07 +0000 (00:48 -0400)]
eja: use charpoly coefficients to implement det() for elements.

4 years agoeja: implement element trace in terms of charpoly coefficients.
Michael Orlitzky [Tue, 23 Jul 2019 04:38:48 +0000 (00:38 -0400)]
eja: implement element trace in terms of charpoly coefficients.

4 years agoeja: refactor the charpoly implementation... it's magically faster?
Michael Orlitzky [Tue, 23 Jul 2019 04:22:06 +0000 (00:22 -0400)]
eja: refactor the charpoly implementation... it's magically faster?

4 years agoeja: use the @cached_method decorator for characteristic_polynomial().
Michael Orlitzky [Tue, 23 Jul 2019 03:31:44 +0000 (23:31 -0400)]
eja: use the @cached_method decorator for characteristic_polynomial().

4 years agoeja: use the standard basis in characteristic_polynomial().
Michael Orlitzky [Tue, 23 Jul 2019 03:17:04 +0000 (23:17 -0400)]
eja: use the standard basis in characteristic_polynomial().

I couldn't see a reason why we needed to do a change-of-basis in the
characteristic_polynomial() function (a la Faraut and Koranyi), so I
tried it with the standard basis. And, everything seems to work? Cool.

4 years agoeja: switch to the "real" element characteristic_polynomial() implementation.
Michael Orlitzky [Mon, 22 Jul 2019 20:50:50 +0000 (16:50 -0400)]
eja: switch to the "real" element characteristic_polynomial() implementation.

4 years agoeja: get the characteristic_polynomial() for EJAs working.
Michael Orlitzky [Mon, 22 Jul 2019 20:50:28 +0000 (16:50 -0400)]
eja: get the characteristic_polynomial() for EJAs working.

4 years agoeja: add apply_univariate_polynomial() for elements and use it in a test.
Michael Orlitzky [Mon, 22 Jul 2019 20:38:37 +0000 (16:38 -0400)]
eja: add apply_univariate_polynomial() for elements and use it in a test.

4 years agoeja: use different bounds for "n" in the random_eja() function.
Michael Orlitzky [Mon, 22 Jul 2019 20:26:51 +0000 (16:26 -0400)]
eja: use different bounds for "n" in the random_eja() function.

4 years agoeja: use 't' for the minimal polynomial variable name.
Michael Orlitzky [Mon, 22 Jul 2019 19:46:50 +0000 (15:46 -0400)]
eja: use 't' for the minimal polynomial variable name.

4 years agoeja: begin to stub out a characteristic_polynomial() for EJAs.
Michael Orlitzky [Mon, 22 Jul 2019 05:55:51 +0000 (01:55 -0400)]
eja: begin to stub out a characteristic_polynomial() for EJAs.

4 years agoeja: store the EJA multiplication table as a temporary hack.
Michael Orlitzky [Mon, 22 Jul 2019 05:55:27 +0000 (01:55 -0400)]
eja: store the EJA multiplication table as a temporary hack.

4 years agoeja: do an extra ambient_vector_space() in one method in case its a module.
Michael Orlitzky [Mon, 22 Jul 2019 05:54:41 +0000 (01:54 -0400)]
eja: do an extra ambient_vector_space() in one method in case its a module.

4 years agoeja: simplify (and cite) the minimal_polynomial() implementation.
Michael Orlitzky [Sun, 21 Jul 2019 16:00:08 +0000 (12:00 -0400)]
eja: simplify (and cite) the minimal_polynomial() implementation.

4 years agoeja: simplify is_invertible() for elements.
Michael Orlitzky [Sun, 21 Jul 2019 15:35:14 +0000 (11:35 -0400)]
eja: simplify is_invertible() for elements.

4 years agoeja: turn the eja_rn() constructor into a class too.
Michael Orlitzky [Sun, 21 Jul 2019 03:03:20 +0000 (23:03 -0400)]
eja: turn the eja_rn() constructor into a class too.

This fixes the inner product issue I created in the previous commit.
We can always get rid of this class when real Cartesian products are
supported.

4 years agoeja: drop the inner_product argument to the EJA constructor.
Michael Orlitzky [Sun, 21 Jul 2019 02:53:41 +0000 (22:53 -0400)]
eja: drop the inner_product argument to the EJA constructor.

Beware, this will make the test suite fail if we ever get R^n as our
EJA and try to take a (default trace) inner product involving an
irregular element.

4 years agoeja: turn the other simple EJA constructors into classes.
Michael Orlitzky [Sun, 21 Jul 2019 02:48:12 +0000 (22:48 -0400)]
eja: turn the other simple EJA constructors into classes.

4 years agoeja: rename JordanSpinAlgebra to JordanSpinEJA.
Michael Orlitzky [Sun, 21 Jul 2019 02:25:32 +0000 (22:25 -0400)]
eja: rename JordanSpinAlgebra to JordanSpinEJA.

4 years agoeja: turn the spin algebra constructor into a subclass.
Michael Orlitzky [Sun, 21 Jul 2019 01:53:20 +0000 (21:53 -0400)]
eja: turn the spin algebra constructor into a subclass.

4 years agoeja: test that complex/quaternion embeddings are homomorphisms.
Michael Orlitzky [Sat, 20 Jul 2019 19:25:52 +0000 (15:25 -0400)]
eja: test that complex/quaternion embeddings are homomorphisms.

4 years agoeja: get the quaternions working.
Michael Orlitzky [Sat, 20 Jul 2019 15:18:22 +0000 (11:18 -0400)]
eja: get the quaternions working.

4 years agoeja: add two more tests to ensure the Jordan product is correct.
Michael Orlitzky [Sat, 20 Jul 2019 14:41:58 +0000 (10:41 -0400)]
eja: add two more tests to ensure the Jordan product is correct.

4 years agoeja: add quaternion -> real matrix embedding.
Michael Orlitzky [Fri, 19 Jul 2019 23:11:59 +0000 (19:11 -0400)]
eja: add quaternion -> real matrix embedding.

4 years agoeja: fix complex-unembedding with respect to 5537f4534.
Michael Orlitzky [Fri, 19 Jul 2019 21:35:12 +0000 (17:35 -0400)]
eja: fix complex-unembedding with respect to 5537f4534.

4 years agoeja: make the complex embedding agree with the docs.
Michael Orlitzky [Fri, 19 Jul 2019 21:20:49 +0000 (17:20 -0400)]
eja: make the complex embedding agree with the docs.

4 years agoeja: text the inner product axiom of an EJA.
Michael Orlitzky [Fri, 19 Jul 2019 20:15:55 +0000 (16:15 -0400)]
eja: text the inner product axiom of an EJA.

4 years agoeja: support conversion of naturally-represented elements into an EJA.
Michael Orlitzky [Fri, 19 Jul 2019 18:09:46 +0000 (14:09 -0400)]
eja: support conversion of naturally-represented elements into an EJA.

This lets us convert e.g. a symmetric 3x3 matrix to an EJA element
without having to mess with the basis/coordinates ourselves.

4 years agoeja: factor out mat2vec() and vec2mat() helper functions.
Michael Orlitzky [Fri, 19 Jul 2019 18:09:26 +0000 (14:09 -0400)]
eja: factor out mat2vec() and vec2mat() helper functions.

4 years agoeja: add matrix inner products, and factor out the two used in R^n.
Michael Orlitzky [Fri, 19 Jul 2019 17:00:05 +0000 (13:00 -0400)]
eja: add matrix inner products, and factor out the two used in R^n.

4 years agoeja: replace nonexistent ArgumentError class.
Michael Orlitzky [Fri, 19 Jul 2019 16:40:42 +0000 (12:40 -0400)]
eja: replace nonexistent ArgumentError class.

4 years agoeja: finally give Euclidean Jordan algebras an inner product.
Michael Orlitzky [Thu, 18 Jul 2019 23:44:45 +0000 (19:44 -0400)]
eja: finally give Euclidean Jordan algebras an inner product.

4 years agoeja: fix alphabetical ordering of element methods.
Michael Orlitzky [Thu, 18 Jul 2019 23:04:12 +0000 (19:04 -0400)]
eja: fix alphabetical ordering of element methods.

4 years agoeja: add natural_representation() for elements.
Michael Orlitzky [Thu, 18 Jul 2019 22:57:44 +0000 (18:57 -0400)]
eja: add natural_representation() for elements.

4 years agoeja: maintain a "natural basis" for EJAs.
Michael Orlitzky [Thu, 18 Jul 2019 22:54:43 +0000 (18:54 -0400)]
eja: maintain a "natural basis" for EJAs.

This will eventually let us see the "usual" representation of an EJA
element. In other words, we don't want to see (1,0,1) to indicate the
identity element of the 2-by-2 symmetric matrices.

4 years agoeja: rename matrix() to operator_matrix().
Michael Orlitzky [Thu, 18 Jul 2019 21:41:14 +0000 (17:41 -0400)]
eja: rename matrix() to operator_matrix().

This leaves the dangerous parent class matrix() method there, but
whatever. The tests pass.

4 years agoeja: define operator_matrix() to eventually replace matrix().
Michael Orlitzky [Thu, 18 Jul 2019 21:15:56 +0000 (17:15 -0400)]
eja: define operator_matrix() to eventually replace matrix().

4 years agoeja: add operator_commutes_with() for elements.
Michael Orlitzky [Tue, 16 Jul 2019 20:51:12 +0000 (16:51 -0400)]
eja: add operator_commutes_with() for elements.

4 years agoeja: add a test for power-operator-commutativity.
Michael Orlitzky [Tue, 16 Jul 2019 00:18:41 +0000 (20:18 -0400)]
eja: add a test for power-operator-commutativity.

4 years agoeja: remove pointless abs() calls.
Michael Orlitzky [Mon, 15 Jul 2019 23:54:01 +0000 (19:54 -0400)]
eja: remove pointless abs() calls.

4 years agoeja: add polarization-identity and power-associativity tests.
Michael Orlitzky [Sun, 14 Jul 2019 17:28:47 +0000 (13:28 -0400)]
eja: add polarization-identity and power-associativity tests.

4 years agoeja: add an inverse() example.
Michael Orlitzky [Sat, 6 Jul 2019 22:14:07 +0000 (18:14 -0400)]
eja: add an inverse() example.

4 years agoeja: add element inverse() and is_invertible().
Michael Orlitzky [Sat, 6 Jul 2019 21:53:24 +0000 (17:53 -0400)]
eja: add element inverse() and is_invertible().

4 years agoeja: add more quadratic representation tests.
Michael Orlitzky [Sat, 6 Jul 2019 17:41:42 +0000 (13:41 -0400)]
eja: add more quadratic representation tests.

4 years agoeja: fix the dimension of the complex Hermitian simple EJA.
Michael Orlitzky [Sat, 6 Jul 2019 13:29:51 +0000 (09:29 -0400)]
eja: fix the dimension of the complex Hermitian simple EJA.

4 years agoeja: add a test for the degree of Sn.
Michael Orlitzky [Sat, 6 Jul 2019 12:49:21 +0000 (08:49 -0400)]
eja: add a test for the degree of Sn.

4 years agoeja: replace eja_ln() and eja_sn() with their new names.
Michael Orlitzky [Sat, 6 Jul 2019 03:10:00 +0000 (23:10 -0400)]
eja: replace eja_ln() and eja_sn() with their new names.

4 years agoeja: add ComplexHermitianSimpleEJA to random_eja().
Michael Orlitzky [Sat, 6 Jul 2019 03:04:32 +0000 (23:04 -0400)]
eja: add ComplexHermitianSimpleEJA to random_eja().

4 years agoeja: begin implementing the complex hermitian simple EJA.
Michael Orlitzky [Sat, 6 Jul 2019 02:58:04 +0000 (22:58 -0400)]
eja: begin implementing the complex hermitian simple EJA.

4 years agoeja: pass a dimension to a matrix() constructor for an extra sanity check.
Michael Orlitzky [Sat, 6 Jul 2019 02:27:29 +0000 (22:27 -0400)]
eja: pass a dimension to a matrix() constructor for an extra sanity check.

4 years agoeja: fix screwup introduced in 5d147bd962.
Michael Orlitzky [Sat, 6 Jul 2019 02:26:58 +0000 (22:26 -0400)]
eja: fix screwup introduced in 5d147bd962.

4 years agoeja: add a function to embed complex matrices in (bigger) real ones.
Michael Orlitzky [Fri, 5 Jul 2019 23:49:58 +0000 (19:49 -0400)]
eja: add a function to embed complex matrices in (bigger) real ones.

4 years agoeja: add placeholder constructors for all simple EJAs.
Michael Orlitzky [Fri, 5 Jul 2019 23:28:08 +0000 (19:28 -0400)]
eja: add placeholder constructors for all simple EJAs.

4 years agoeja: factor out the ugly bits of constructing simple matrix EJAs.
Michael Orlitzky [Fri, 5 Jul 2019 23:27:08 +0000 (19:27 -0400)]
eja: factor out the ugly bits of constructing simple matrix EJAs.

4 years agoeja: add a TODO with some tests that fail for now.
Michael Orlitzky [Fri, 5 Jul 2019 23:19:49 +0000 (19:19 -0400)]
eja: add a TODO with some tests that fail for now.

4 years agoeja: add non-working trace_inner_product() for EJA elements.
Michael Orlitzky [Fri, 5 Jul 2019 21:35:23 +0000 (17:35 -0400)]
eja: add non-working trace_inner_product() for EJA elements.

4 years agoeja: add quadratic_representation() for elements.
Michael Orlitzky [Fri, 5 Jul 2019 21:27:39 +0000 (17:27 -0400)]
eja: add quadratic_representation() for elements.

4 years agoeja: use random_eja() where applicable in tests.
Michael Orlitzky [Fri, 5 Jul 2019 15:36:18 +0000 (11:36 -0400)]
eja: use random_eja() where applicable in tests.

4 years agoeja: don't test for element matrix() symmetry (I don't think it holds).
Michael Orlitzky [Fri, 5 Jul 2019 15:21:24 +0000 (11:21 -0400)]
eja: don't test for element matrix() symmetry (I don't think it holds).

4 years agoeja: fix the basis order for Sn.
Michael Orlitzky [Fri, 5 Jul 2019 00:22:46 +0000 (20:22 -0400)]
eja: fix the basis order for Sn.

4 years agoeja: add missing set_random_seed() call.
Michael Orlitzky [Thu, 4 Jul 2019 23:39:16 +0000 (19:39 -0400)]
eja: add missing set_random_seed() call.

4 years agoeja: add the random_eja() function.
Michael Orlitzky [Thu, 4 Jul 2019 23:37:52 +0000 (19:37 -0400)]
eja: add the random_eja() function.

4 years agoeja: add a comment about row/column vectors to eja_sn().
Michael Orlitzky [Wed, 3 Jul 2019 23:47:23 +0000 (19:47 -0400)]
eja: add a comment about row/column vectors to eja_sn().

4 years agoeja: add the simple algebra S^n.
Michael Orlitzky [Wed, 3 Jul 2019 23:36:13 +0000 (19:36 -0400)]
eja: add the simple algebra S^n.

4 years agoeja: add det() and trace() for regular elements.
Michael Orlitzky [Sat, 29 Jun 2019 17:26:13 +0000 (13:26 -0400)]
eja: add det() and trace() for regular elements.

4 years agoeja: de-implement characteristic_polynomial for irregular elements.
Michael Orlitzky [Sat, 29 Jun 2019 14:18:32 +0000 (10:18 -0400)]
eja: de-implement characteristic_polynomial for irregular elements.

4 years agoeja: put element methods in alphabetical order.
Michael Orlitzky [Sat, 29 Jun 2019 14:08:56 +0000 (10:08 -0400)]
eja: put element methods in alphabetical order.

4 years agoeja: add is_regular() method on elements.
Michael Orlitzky [Sat, 29 Jun 2019 14:07:19 +0000 (10:07 -0400)]
eja: add is_regular() method on elements.

4 years agoeja: fix element matrices.
Michael Orlitzky [Wed, 26 Jun 2019 15:17:40 +0000 (11:17 -0400)]
eja: fix element matrices.

The superclass matrix() method of elements sometimes computes the
right-matrix acting on row vectors. Nobody wants that shit. This
commit overrides it (to simply return the transpose of the superclass
matrix), and thus fixes the subalgebra_idempotent() method. Some tests
were added for the latter method, too.

4 years agoeja: fix element powers.
Michael Orlitzky [Wed, 26 Jun 2019 14:56:03 +0000 (10:56 -0400)]
eja: fix element powers.

We were using row-vector multiplication for powers (taken from the
superclass), but our vectors are column vectors. Oops. This broke
things when we assumed column vectors were being used, like when
we constructed a multiplication table. This commit fixes the powers
and adds/updates some tests.

4 years agoeja: add doctest for a bug in subalgebra_generated_by().
Michael Orlitzky [Wed, 26 Jun 2019 01:04:18 +0000 (21:04 -0400)]
eja: add doctest for a bug in subalgebra_generated_by().

4 years agoeja: add currently-busted subalgebra_idempotent() method.
Michael Orlitzky [Tue, 25 Jun 2019 23:17:31 +0000 (19:17 -0400)]
eja: add currently-busted subalgebra_idempotent() method.

4 years agoeja: use different generator names in subalgebras.
Michael Orlitzky [Tue, 25 Jun 2019 23:14:51 +0000 (19:14 -0400)]
eja: use different generator names in subalgebras.

4 years agoeja: add is_nilpotent() for elements.
Michael Orlitzky [Tue, 25 Jun 2019 21:14:11 +0000 (17:14 -0400)]
eja: add is_nilpotent() for elements.

4 years agoeja: recurse more directly in minimal_polynomial().
Michael Orlitzky [Tue, 25 Jun 2019 21:13:41 +0000 (17:13 -0400)]
eja: recurse more directly in minimal_polynomial().

4 years agoeja: use the associativity of one-generator subalgebras.
Michael Orlitzky [Tue, 25 Jun 2019 03:11:10 +0000 (23:11 -0400)]
eja: use the associativity of one-generator subalgebras.

4 years agoeja: fix the rank of the spin factor algebra.
Michael Orlitzky [Tue, 25 Jun 2019 03:10:37 +0000 (23:10 -0400)]
eja: fix the rank of the spin factor algebra.

4 years agoeja: remove symmetry test that don't work.
Michael Orlitzky [Tue, 25 Jun 2019 03:08:24 +0000 (23:08 -0400)]
eja: remove symmetry test that don't work.

I don't know why, but the multiplication table of a commutative
algebra doesn't have to be symmetric. I'll think about this later.
In the meantime, don't crash about it.

Postscript (a month later): left-multiplication and right-multiplication
are the same in the EJA, but not necessarily for the matrices that represent
them. It was wrong to conflate the two concepts in the first place.

4 years agoeja: rewrite the classcall/init process.
Michael Orlitzky [Tue, 25 Jun 2019 02:52:09 +0000 (22:52 -0400)]
eja: rewrite the classcall/init process.

I'm not sure what I just did, but by copying the __classcall_private__
method from FiniteDimensionalAlgebra, I was able to make it take an
extra (optional) "rank" parameter while creating EJAs. This lets us
hard-code the rank for known EJAs, and put off figuring how we might
compute it otherwise.

4 years agoeja: implement a working minimal_polynomial().
Michael Orlitzky [Mon, 24 Jun 2019 18:05:59 +0000 (14:05 -0400)]
eja: implement a working minimal_polynomial().

4 years agoeja: add subalgebra_generated_by() method.
Michael Orlitzky [Mon, 24 Jun 2019 18:05:41 +0000 (14:05 -0400)]
eja: add subalgebra_generated_by() method.

4 years agoeja: add another test for degree().
Michael Orlitzky [Mon, 24 Jun 2019 18:05:01 +0000 (14:05 -0400)]
eja: add another test for degree().

4 years agoeja: test that left-mult matrices are symmetric.
Michael Orlitzky [Mon, 24 Jun 2019 16:06:12 +0000 (12:06 -0400)]
eja: test that left-mult matrices are symmetric.

4 years agoeja: add span_of_powers() method.
Michael Orlitzky [Mon, 24 Jun 2019 16:05:47 +0000 (12:05 -0400)]
eja: add span_of_powers() method.

4 years agoeja: remove an erroneous comment.
Michael Orlitzky [Mon, 24 Jun 2019 16:05:04 +0000 (12:05 -0400)]
eja: remove an erroneous comment.

4 years agoeja: begin implementing an element class.
Michael Orlitzky [Mon, 24 Jun 2019 02:05:30 +0000 (22:05 -0400)]
eja: begin implementing an element class.

4 years agoeja: implement my own algebra subclass.
Michael Orlitzky [Fri, 21 Jun 2019 23:12:22 +0000 (19:12 -0400)]
eja: implement my own algebra subclass.

4 years agoeja: fix field arguments, add comment.
Michael Orlitzky [Fri, 21 Jun 2019 16:45:37 +0000 (12:45 -0400)]
eja: fix field arguments, add comment.

4 years agoeja: add eja_minimal_polynomial() function.
Michael Orlitzky [Fri, 21 Jun 2019 16:45:07 +0000 (12:45 -0400)]
eja: add eja_minimal_polynomial() function.

4 years agoeja: add eja_ln() for the rank-two algebra.
Michael Orlitzky [Wed, 19 Jun 2019 14:18:56 +0000 (10:18 -0400)]
eja: add eja_ln() for the rank-two algebra.

4 years agoeja: add examples for eja_rn.
Michael Orlitzky [Wed, 19 Jun 2019 14:18:33 +0000 (10:18 -0400)]
eja: add examples for eja_rn.

4 years agoeja: begin draft implementation of euclidean jordan algebras.
Michael Orlitzky [Fri, 14 Jun 2019 14:20:05 +0000 (10:20 -0400)]
eja: begin draft implementation of euclidean jordan algebras.

5 years agomjo/polynomial.py: remove a redundant line from a test.
Michael Orlitzky [Wed, 20 Mar 2019 03:10:11 +0000 (23:10 -0400)]
mjo/polynomial.py: remove a redundant line from a test.

5 years agomjo/polynomial.py: add another multidiv test based on an exercise.
Michael Orlitzky [Thu, 21 Feb 2019 01:32:23 +0000 (20:32 -0500)]
mjo/polynomial.py: add another multidiv test based on an exercise.

5 years agoRevert "mjo/polynomial.py: improve multidiv performance a bit."
Michael Orlitzky [Mon, 18 Feb 2019 18:56:28 +0000 (13:56 -0500)]
Revert "mjo/polynomial.py: improve multidiv performance a bit."

This reverts commit 4e4efc9eff5c77a2ca19002b1dfa45598e974c54. Example
4 in the text doesn't work with this implementation, but it does with
my original one. Let's stick with slow and correct, for now.

5 years agomjo/polynomial.py: add a (failing!) test for Example 4 in the text.
Michael Orlitzky [Mon, 18 Feb 2019 18:56:03 +0000 (13:56 -0500)]
mjo/polynomial.py: add a (failing!) test for Example 4 in the text.

5 years agomjo/polynomial.py: add two more examples from exercises in the text.
Michael Orlitzky [Wed, 20 Feb 2019 05:38:26 +0000 (00:38 -0500)]
mjo/polynomial.py: add two more examples from exercises in the text.

5 years agomjo/polynomial.py: improve multidiv performance a bit.
Michael Orlitzky [Mon, 18 Feb 2019 16:05:53 +0000 (11:05 -0500)]
mjo/polynomial.py: improve multidiv performance a bit.

We don't need to re-check earlier "denominators" after division has
occurred, even though we *do* need to re-check the current one. This
makes the algorithm closer in practice to the one given in the text.

5 years agomjo/polynomial.py: improve tests for new multidiv function.
Michael Orlitzky [Mon, 18 Feb 2019 16:01:14 +0000 (11:01 -0500)]
mjo/polynomial.py: improve tests for new multidiv function.