]> gitweb.michael.orlitzky.com - sage.d.git/log
sage.d.git
2 weeks agomjo/clan/jordan_spin_clan.py: fix n=0 case
Michael Orlitzky [Wed, 4 Mar 2026 14:40:03 +0000 (09:40 -0500)]
mjo/clan/jordan_spin_clan.py: fix n=0 case

2 weeks agomjo/clan: fix propagation of scalar fields
Michael Orlitzky [Wed, 4 Mar 2026 14:09:10 +0000 (09:09 -0500)]
mjo/clan: fix propagation of scalar fields

Non-default fields were getting lost in __init__. Now there are tests.

2 weeks agomjo/clan/trivial_clan.py: new TrivialClan class
Michael Orlitzky [Wed, 4 Mar 2026 13:03:40 +0000 (08:03 -0500)]
mjo/clan/trivial_clan.py: new TrivialClan class

Does exactly what you would expect: nothing.

2 weeks agomjo/clan/normal_decomposition.py: special case for rank zero
Michael Orlitzky [Wed, 4 Mar 2026 13:03:21 +0000 (08:03 -0500)]
mjo/clan/normal_decomposition.py: special case for rank zero

2 weeks agomjo/clan/all.py: put JordanSpinClan in the public namespace
Michael Orlitzky [Wed, 4 Mar 2026 12:47:45 +0000 (07:47 -0500)]
mjo/clan/all.py: put JordanSpinClan in the public namespace

2 weeks agomjo/clan/jordan_spin_clan.py: support n=1 (the real numbers)
Michael Orlitzky [Wed, 4 Mar 2026 12:47:14 +0000 (07:47 -0500)]
mjo/clan/jordan_spin_clan.py: support n=1 (the real numbers)

2 weeks agomjo/clan/jordan_spin_clan.py: add a comment about the inner product
Michael Orlitzky [Wed, 4 Mar 2026 03:26:47 +0000 (22:26 -0500)]
mjo/clan/jordan_spin_clan.py: add a comment about the inner product

2 weeks agomjo/clan/jordan_spin_clan.py: fix the clan product
Michael Orlitzky [Wed, 4 Mar 2026 03:10:16 +0000 (22:10 -0500)]
mjo/clan/jordan_spin_clan.py: fix the clan product

I forgot a "2", and now that it's there we can verify the homogeneous
polynomials D(0) and D(1).

2 weeks agomjo/clan/jordan_spin_clan.py: first steps towards an implementation
Michael Orlitzky [Wed, 4 Mar 2026 02:00:57 +0000 (21:00 -0500)]
mjo/clan/jordan_spin_clan.py: first steps towards an implementation

2 weeks agomjo/clan/vinberg_clan.py: eliminate top-level QQ import
Michael Orlitzky [Wed, 4 Mar 2026 01:26:08 +0000 (20:26 -0500)]
mjo/clan/vinberg_clan.py: eliminate top-level QQ import

2 weeks agomjo/cone/decomposition.py: use check=False at end of nonlineal_part()
Michael Orlitzky [Tue, 3 Mar 2026 01:50:17 +0000 (20:50 -0500)]
mjo/cone/decomposition.py: use check=False at end of nonlineal_part()

I've sketched an argument that the generating sets must be minimal.

2 weeks agomjo/cone/decomposition.py: remove a junk example
Michael Orlitzky [Tue, 3 Mar 2026 01:49:13 +0000 (20:49 -0500)]
mjo/cone/decomposition.py: remove a junk example

Passing a non-minimal set of generators with check=False and
normalize=False invalidates anything else that might happen.

2 weeks agomjo/cone/decomposition.py: update a comment / open question
Michael Orlitzky [Mon, 2 Mar 2026 16:26:10 +0000 (11:26 -0500)]
mjo/cone/decomposition.py: update a comment / open question

2 weeks agomjo/cone/decomposition.py: finish nonlineal_part() updates
Michael Orlitzky [Mon, 2 Mar 2026 16:22:09 +0000 (11:22 -0500)]
mjo/cone/decomposition.py: finish nonlineal_part() updates

This was remarkably close to working for something untested; only a
few minor tweaks and typos remained.

2 weeks agomjo/cone/decomposition.py: allow nonorthogonal nonlinea parts (WIP)
Michael Orlitzky [Mon, 2 Mar 2026 15:03:30 +0000 (10:03 -0500)]
mjo/cone/decomposition.py: allow nonorthogonal nonlinea parts (WIP)

This is a work-in-progress that probably doesn't function and
definitely won't pass tests. I'm pushing the changes only because I
broke Sage on the machine I'm working on and need to sync.

3 weeks agoREADME.rst: don't all-caps BASH
Michael Orlitzky [Wed, 25 Feb 2026 13:34:57 +0000 (08:34 -0500)]
README.rst: don't all-caps BASH

3 weeks agoREADME.rst: add "export" to PYTHONPATH example
Michael Orlitzky [Wed, 25 Feb 2026 02:19:07 +0000 (21:19 -0500)]
README.rst: add "export" to PYTHONPATH example

3 weeks agoREADME: convert to reStructuredText, and rewrite
Michael Orlitzky [Wed, 25 Feb 2026 02:00:38 +0000 (21:00 -0500)]
README: convert to reStructuredText, and rewrite

This will look nice on Codeberg, and in any case it's nice to have
some meaningful information in here.

3 weeks agomakefile: remove PYTHONPATH hack from check target
Michael Orlitzky [Wed, 25 Feb 2026 01:57:34 +0000 (20:57 -0500)]
makefile: remove PYTHONPATH hack from check target

Having eliminated the sitedir trickery from init.sage, one must now
have PYTHONPATH properly configured before anything will work.

3 weeks agoinit.sage: remove hard-coded repository paths
Michael Orlitzky [Wed, 25 Feb 2026 01:53:03 +0000 (20:53 -0500)]
init.sage: remove hard-coded repository paths

You'll just have to specify where the repository lives, as with all
other rogue python libraries.

3 weeks agomjo/clan: eliminate UnitalClan
Michael Orlitzky [Sun, 22 Feb 2026 17:44:48 +0000 (12:44 -0500)]
mjo/clan: eliminate UnitalClan

We can add Unital() in NormalDecomposition anyway, because following
Vinberg we assume that they have one. But even if they didn't, the
unit element would be a property of each individual clan.

3 weeks agomjo/clan: more class hierarchy refactoring
Michael Orlitzky [Sun, 22 Feb 2026 17:32:43 +0000 (12:32 -0500)]
mjo/clan: more class hierarchy refactoring

Renamed MatrixAlgebra to TAlgebraClan, since in theory the up-hat and
down-hat work for any T-algebra. Separated that out along with the
NormalDecomposition class.

3 weeks agomjo/clan: factor out mjo.clan.normal_decomposition_element
Michael Orlitzky [Sun, 22 Feb 2026 16:59:11 +0000 (11:59 -0500)]
mjo/clan: factor out mjo.clan.normal_decomposition_element

3 weeks agomjo/clan/clan.py: fix the scalar field for NormalDecomposition
Michael Orlitzky [Sun, 22 Feb 2026 16:53:08 +0000 (11:53 -0500)]
mjo/clan/clan.py: fix the scalar field for NormalDecomposition

3 weeks agomjo/clan: factor out mjo.clan.vinberg_clan
Michael Orlitzky [Sun, 22 Feb 2026 16:42:50 +0000 (11:42 -0500)]
mjo/clan: factor out mjo.clan.vinberg_clan

3 weeks agomjo/clan: rename SnClan and HnClan for consistency with EJA names
Michael Orlitzky [Sun, 22 Feb 2026 16:34:24 +0000 (11:34 -0500)]
mjo/clan: rename SnClan and HnClan for consistency with EJA names

4 weeks agomjo/clan/clan_operator.py: undo _is_clan() hack
Michael Orlitzky [Sat, 21 Feb 2026 15:25:52 +0000 (10:25 -0500)]
mjo/clan/clan_operator.py: undo _is_clan() hack

And just like that, it starts working for no reason.

4 weeks agomjo/clan/clan_operator.py: de-alias FreeModules -> ModulesWithBasis
Michael Orlitzky [Sat, 21 Feb 2026 15:01:09 +0000 (10:01 -0500)]
mjo/clan/clan_operator.py: de-alias FreeModules -> ModulesWithBasis

4 weeks agomjo/clan/clan.py: add SETUP:: blocks
Michael Orlitzky [Sat, 21 Feb 2026 14:57:29 +0000 (09:57 -0500)]
mjo/clan/clan.py: add SETUP:: blocks

These are now(?) necessary with the new all.py exports.

4 weeks agomjo/all.py,mjo/clan/all.py: export user-facing clan bits
Michael Orlitzky [Sat, 21 Feb 2026 14:31:13 +0000 (09:31 -0500)]
mjo/all.py,mjo/clan/all.py: export user-facing clan bits

4 weeks agomjo/clan/clan_operator.py: god-awful hack for category check
Michael Orlitzky [Sat, 21 Feb 2026 14:30:04 +0000 (09:30 -0500)]
mjo/clan/clan_operator.py: god-awful hack for category check

4 weeks agomjo/clan/clan.py: whitespace
Michael Orlitzky [Sat, 21 Feb 2026 14:18:36 +0000 (09:18 -0500)]
mjo/clan/clan.py: whitespace

4 weeks agomjo/clan/clan_operator.py: swap isinstance() for category check
Michael Orlitzky [Sat, 21 Feb 2026 14:14:59 +0000 (09:14 -0500)]
mjo/clan/clan_operator.py: swap isinstance() for category check

Amazingly, this also fails, still ONLY while doctesting.

4 weeks agomjo/clan/clan.py: add a category for Clans
Michael Orlitzky [Sat, 21 Feb 2026 14:11:42 +0000 (09:11 -0500)]
mjo/clan/clan.py: add a category for Clans

4 weeks agomjo/clan/clan.py: Vinberg cone automorphisms (WIP)
Michael Orlitzky [Fri, 20 Feb 2026 20:33:55 +0000 (15:33 -0500)]
mjo/clan/clan.py: Vinberg cone automorphisms (WIP)

This proof-of-concept is mostly working, but the tests are crashing
for some reason.

4 weeks agomjo/clan/clan_operator.py: fix copy/pasted docstring
Michael Orlitzky [Fri, 20 Feb 2026 20:00:23 +0000 (15:00 -0500)]
mjo/clan/clan_operator.py: fix copy/pasted docstring

4 weeks agomjo/clan/clan_operator.py: prefer "C" for clan variables
Michael Orlitzky [Fri, 20 Feb 2026 20:00:04 +0000 (15:00 -0500)]
mjo/clan/clan_operator.py: prefer "C" for clan variables

4 weeks agomjo/clan/clan_operator.py: implement composition and related methods
Michael Orlitzky [Fri, 20 Feb 2026 19:08:26 +0000 (14:08 -0500)]
mjo/clan/clan_operator.py: implement composition and related methods

4 weeks agomjo/clan: refactor the type hierarchy
Michael Orlitzky [Tue, 17 Feb 2026 02:51:59 +0000 (21:51 -0500)]
mjo/clan: refactor the type hierarchy

Put the clan stuff in a top-level Clan class, and make UnitalClan a
wrapper around that. This complicates everything a bit, but makes me
feel better.

4 weeks agomjo/clan/clan_element.py: add the Vinberg inner product
Michael Orlitzky [Tue, 17 Feb 2026 02:37:11 +0000 (21:37 -0500)]
mjo/clan/clan_element.py: add the Vinberg inner product

4 weeks agomjo/clan/clan_operator.py: public matrix() method
Michael Orlitzky [Tue, 17 Feb 2026 02:03:12 +0000 (21:03 -0500)]
mjo/clan/clan_operator.py: public matrix() method

This will be useful for the Vinberg inner product.

4 weeks agomjo/clan/unital_clan.py: add hand computations for the Vinberg clan
Michael Orlitzky [Mon, 16 Feb 2026 23:36:24 +0000 (18:36 -0500)]
mjo/clan/unital_clan.py: add hand computations for the Vinberg clan

4 weeks agomjo/clan: start implementing clan operators
Michael Orlitzky [Mon, 16 Feb 2026 14:17:50 +0000 (09:17 -0500)]
mjo/clan: start implementing clan operators

This is a moral prerequisite for the Vinberg inner product.

4 weeks agomjo/clan/clan_element.py: composite det example for the Vinberg clan
Michael Orlitzky [Sun, 15 Feb 2026 16:50:39 +0000 (11:50 -0500)]
mjo/clan/clan_element.py: composite det example for the Vinberg clan

4 weeks agomjo/clan/unital_clan.py: fix VinbergClan element classes
Michael Orlitzky [Sun, 15 Feb 2026 16:42:40 +0000 (11:42 -0500)]
mjo/clan/unital_clan.py: fix VinbergClan element classes

When building elements from lists/matrices, be sure to construct
them in the clan and not just in the underlying vector space.

4 weeks agomjo/clan/unital_clan.py: add convenience constructors for Vinberg clans
Michael Orlitzky [Sun, 15 Feb 2026 16:33:43 +0000 (11:33 -0500)]
mjo/clan/unital_clan.py: add convenience constructors for Vinberg clans

Add the following methods to build an element of the Vinberg clan:

  * from_matrices
  * from_list
  * from_lists

4 weeks agomjo/clan/unital_clan.py: factor out (un)lift for the Vinberg clan
Michael Orlitzky [Sun, 15 Feb 2026 15:29:40 +0000 (10:29 -0500)]
mjo/clan/unital_clan.py: factor out (un)lift for the Vinberg clan

4 weeks agomjo/clan/unital_clan.py: VinbergClan inits and passes tests
Michael Orlitzky [Sun, 15 Feb 2026 02:42:04 +0000 (21:42 -0500)]
mjo/clan/unital_clan.py: VinbergClan inits and passes tests

5 weeks agomjo/clan/unital_clan.py: begin sorting out the Vinberg clan init
Michael Orlitzky [Sat, 14 Feb 2026 20:17:54 +0000 (15:17 -0500)]
mjo/clan/unital_clan.py: begin sorting out the Vinberg clan init

5 weeks agomjo/cone/decomposition.py: delete reducibility stuff
Michael Orlitzky [Sat, 14 Feb 2026 18:31:07 +0000 (13:31 -0500)]
mjo/cone/decomposition.py: delete reducibility stuff

This will go upstream soon, and is only slowing the tests down.

5 weeks agomjo/clan/unital_clan.py: start working on the Vinberg clan
Michael Orlitzky [Sat, 14 Feb 2026 18:27:44 +0000 (13:27 -0500)]
mjo/clan/unital_clan.py: start working on the Vinberg clan

Just sketch the constructor. Nothing works, but I don't want to forget
about it.

5 weeks agomjo/cone/decomposition.py: add more nonlineal_part() tests
Michael Orlitzky [Mon, 9 Feb 2026 01:03:25 +0000 (20:03 -0500)]
mjo/cone/decomposition.py: add more nonlineal_part() tests

5 weeks agomjo/cone/decomposition.py: pointed/linspace -> nonlineal_part
Michael Orlitzky [Mon, 9 Feb 2026 00:42:41 +0000 (19:42 -0500)]
mjo/cone/decomposition.py: pointed/linspace -> nonlineal_part

Rework the pointed_linspace_decomposition() as nonlineal_part(),
returning only the pointed component. The lineality space is easy to
obtain, even as a cone, though generally that will be overkill.

We drop _orthogonalize() for now, since it appears that Sage/PPL
will implicitly orthogonalize the cone's lines().

6 weeks agomjo/cone/decomposition.py: add orthogonalization example over ZZ
Michael Orlitzky [Thu, 5 Feb 2026 23:44:23 +0000 (18:44 -0500)]
mjo/cone/decomposition.py: add orthogonalization example over ZZ

6 weeks agomjo/cone/decomposition.py: remove that NOTE
Michael Orlitzky [Tue, 3 Feb 2026 00:20:18 +0000 (19:20 -0500)]
mjo/cone/decomposition.py: remove that NOTE

I found an example where PPL does not remove the lineal components of
the remaining generators. It is now included as a doctest.

6 weeks agomjo/cone/decomposition.py: add a NOTE
Michael Orlitzky [Mon, 2 Feb 2026 21:20:18 +0000 (16:20 -0500)]
mjo/cone/decomposition.py: add a NOTE

I'm becoming more and more convinced that PPL will do the
lineality-space decomposition on its own.

6 weeks agomjo/cone/decomposition.py: new pointed-linspace decomposition
Michael Orlitzky [Sun, 1 Feb 2026 18:55:15 +0000 (13:55 -0500)]
mjo/cone/decomposition.py: new pointed-linspace decomposition

Begin a new experiment with the pointed-linspace decomposition. We
know how to do this with orthogonal projections, but in Sage we must
work over the rationals (and arithmetic is much faster there anyway).
I sketched a quick proof of concept showing that this can be done, and
it's very likely that PPL does exactly the same thing when it
minimizes the generators in Cone().

But just in case, here's an implementation that definitely does what I
think it does.

6 weeks agomjo/cone/decomposition.py: fix the vertices in irreducible_factors()
Michael Orlitzky [Sun, 1 Feb 2026 18:10:19 +0000 (13:10 -0500)]
mjo/cone/decomposition.py: fix the vertices in irreducible_factors()

This bug is fixed in the upstream SageMath branch (with additional
tests), but let's fix it here too until it hits "develop".

7 weeks agomjo/clan: factor out up_hat, down_hat, etc. for matrix clans
Michael Orlitzky [Mon, 26 Jan 2026 02:35:59 +0000 (21:35 -0500)]
mjo/clan: factor out up_hat, down_hat, etc. for matrix clans

8 weeks agomjo/clan: move matrix-clan methods to an intermediate class
Michael Orlitzky [Sat, 24 Jan 2026 16:16:27 +0000 (11:16 -0500)]
mjo/clan: move matrix-clan methods to an intermediate class

8 weeks agomjo/matrix_algebra.py: alllow from_list() to take one long list
Michael Orlitzky [Sat, 24 Jan 2026 16:10:43 +0000 (11:10 -0500)]
mjo/matrix_algebra.py: alllow from_list() to take one long list

This makes its behavior more consistent with that of MatrixSpace.

8 weeks agomjo/matrix_algebra.py: whitespace
Michael Orlitzky [Sat, 24 Jan 2026 16:10:34 +0000 (11:10 -0500)]
mjo/matrix_algebra.py: whitespace

8 weeks agomjo/clan: move one() into the NormalDecomposition class
Michael Orlitzky [Sat, 24 Jan 2026 15:09:11 +0000 (10:09 -0500)]
mjo/clan: move one() into the NormalDecomposition class

We know this in terms of the idempotents, whatever they are.

8 weeks agomjo/clan: initial implementation of the Hermitian complex matrix clan
Michael Orlitzky [Sat, 24 Jan 2026 02:39:13 +0000 (21:39 -0500)]
mjo/clan: initial implementation of the Hermitian complex matrix clan

8 weeks agomjo/clan: new diag() method for elements, everything now index-agnostic
Michael Orlitzky [Sat, 24 Jan 2026 02:15:57 +0000 (21:15 -0500)]
mjo/clan: new diag() method for elements, everything now index-agnostic

With idempotent() and diag() helpers, the element code now does not
need to know what the indexing scheme is.

8 weeks agomjo/clan: add idempotent() method for normal decompositions
Michael Orlitzky [Sat, 24 Jan 2026 02:14:38 +0000 (21:14 -0500)]
mjo/clan: add idempotent() method for normal decompositions

Just a helper to get the idempotent (diagonal) elements without
having to care what the basis indices are.

8 weeks agomjo/hurwitz.py: add matrix transpose() method
Michael Orlitzky [Sat, 24 Jan 2026 01:14:42 +0000 (20:14 -0500)]
mjo/hurwitz.py: add matrix transpose() method

Sometimes you just need to transpose a complex matrix, you know?

8 weeks agomjo/matrix_algebra.py: support the original __getitem__ syntax
Michael Orlitzky [Sat, 24 Jan 2026 01:11:39 +0000 (20:11 -0500)]
mjo/matrix_algebra.py: support the original __getitem__ syntax

To support submodules, we need __getitem__() to support its original
behavior of returning coordinates when given all three indices.

8 weeks agomjo/clan: complete the migration to three coordinates
Michael Orlitzky [Fri, 23 Jan 2026 16:50:23 +0000 (11:50 -0500)]
mjo/clan: complete the migration to three coordinates

Three coordinates are needed to identify a basis element in general:
(i,j) to identify the component, and then "k" for the basis within
the (i,j)th component.

This should allow us to define HnClan, which has 2d off-diagonal
components.

8 weeks agomjo/clan: WIP conversion to three coordinates
Michael Orlitzky [Fri, 23 Jan 2026 14:02:25 +0000 (09:02 -0500)]
mjo/clan: WIP conversion to three coordinates

8 weeks agomjo/clan/unital_clan.py: remove unused local variable
Michael Orlitzky [Fri, 23 Jan 2026 13:03:54 +0000 (08:03 -0500)]
mjo/clan/unital_clan.py: remove unused local variable

2 months agomjo/clan: add x.D(k) and x.chi(k) methods
Michael Orlitzky [Sat, 17 Jan 2026 01:58:44 +0000 (20:58 -0500)]
mjo/clan: add x.D(k) and x.chi(k) methods

These are the homogeneous polynomials and diagonals-squared of the
triangular factorization of x, as in the Ishi / Gindikin papers.

2 months agomjo/clan: factor out NormalDecomposition to its own class
Michael Orlitzky [Fri, 16 Jan 2026 13:18:39 +0000 (08:18 -0500)]
mjo/clan: factor out NormalDecomposition to its own class

Some methods require knowledge of the normal decomposition
coordinates.

2 months agomjo/clan: get inner products working; implement one() for SnClan
Michael Orlitzky [Thu, 15 Jan 2026 03:07:38 +0000 (22:07 -0500)]
mjo/clan: get inner products working; implement one() for SnClan

2 months agomjo/clan: begin implementing the clan on S^n
Michael Orlitzky [Thu, 15 Jan 2026 01:40:18 +0000 (20:40 -0500)]
mjo/clan: begin implementing the clan on S^n

2 months agoclan: eliminate the user basis stuff from the new clan module
Michael Orlitzky [Sat, 3 Jan 2026 00:51:12 +0000 (19:51 -0500)]
clan: eliminate the user basis stuff from the new clan module

I think we'll be able to get away with just using the "real" basis
elements as keys to the CFM. This makes it easy to reconstruct the
"user" coordinates from CFM elements.

2 months agomjo: move eja.eja_utils to mjo.misc
Michael Orlitzky [Fri, 2 Jan 2026 17:29:30 +0000 (12:29 -0500)]
mjo: move eja.eja_utils to mjo.misc

These functions are useful outside of Euclidean Jordan algebras.
It's looking in particular like the _all2list() gimmick may be
a useful general construct for algebras with a user basis.

2 months agomjo/clan/unital_clan.py: begin clan implementation
Michael Orlitzky [Fri, 2 Jan 2026 16:39:30 +0000 (11:39 -0500)]
mjo/clan/unital_clan.py: begin clan implementation

3 months agomjo/cone/decomposition.py: rearrangement examples for is_reducible()
Michael Orlitzky [Sun, 30 Nov 2025 21:59:49 +0000 (16:59 -0500)]
mjo/cone/decomposition.py: rearrangement examples for is_reducible()

4 months agomjo/cone/decomposition.py: handle trivial cones correctly
Michael Orlitzky [Fri, 14 Nov 2025 01:21:10 +0000 (20:21 -0500)]
mjo/cone/decomposition.py: handle trivial cones correctly

4 months agomjo/cone/decomposition.py: add new is_reducible() function
Michael Orlitzky [Wed, 12 Nov 2025 00:51:51 +0000 (19:51 -0500)]
mjo/cone/decomposition.py: add new is_reducible() function

4 months agomjo/cone/decomposition.py: add missing colon
Michael Orlitzky [Wed, 12 Nov 2025 00:51:42 +0000 (19:51 -0500)]
mjo/cone/decomposition.py: add missing colon

4 months agomjo/cone/decomposition.py: add tests, fix the edges of the edges
Michael Orlitzky [Tue, 11 Nov 2025 23:46:20 +0000 (18:46 -0500)]
mjo/cone/decomposition.py: add tests, fix the edges of the edges

A miscellaneous selection:

  * The vertex numbering was off because pivots() renumbers them.
  * Updated the docs to fix some incorrect claims.
  * Added lots of new tests.
  * Special case for irreducible cones to return K itself.
  * Use subspace_with_basis() instead of span() to preserve
    our user basis.

Tests now pass, and the documentation is converging upon the truth.

4 months agomjo/cone/decomposition.py: support non-solid cones
Michael Orlitzky [Tue, 11 Nov 2025 15:53:38 +0000 (10:53 -0500)]
mjo/cone/decomposition.py: support non-solid cones

4 months agomjo/cone/all.py: add mjo/cone/decomposition.py
Michael Orlitzky [Tue, 11 Nov 2025 13:53:35 +0000 (08:53 -0500)]
mjo/cone/all.py: add mjo/cone/decomposition.py

4 months agomjo/cone/decomposition.py: rename "decomposition" to "factors"
Michael Orlitzky [Tue, 11 Nov 2025 13:53:04 +0000 (08:53 -0500)]
mjo/cone/decomposition.py: rename "decomposition" to "factors"

4 months agomjo/cone: rename irreducible_decomposition.py -> decomposition.py
Michael Orlitzky [Tue, 11 Nov 2025 13:52:24 +0000 (08:52 -0500)]
mjo/cone: rename irreducible_decomposition.py -> decomposition.py

4 months agomjo/cone/irreducible_decomposition.py: get it working, roughly
Michael Orlitzky [Tue, 11 Nov 2025 00:23:43 +0000 (19:23 -0500)]
mjo/cone/irreducible_decomposition.py: get it working, roughly

4 months agomjo/cone: begin working on the irreducible decomposition
Michael Orlitzky [Mon, 10 Nov 2025 19:36:54 +0000 (14:36 -0500)]
mjo/cone: begin working on the irreducible decomposition

5 months agomjo.eja.eja_operator: fix exponentiation
Michael Orlitzky [Wed, 1 Oct 2025 15:58:08 +0000 (11:58 -0400)]
mjo.eja.eja_operator: fix exponentiation

Using exponentiation was allowing us to skip the domain/codomain check
for operator composition when their dimensions agreed. To fix that, we
reimplement powers directly in terms of multiplication.

This also sheds light on a buggy test that needed to be fixed:
isomorphisms can't necessarily be composed.

5 months agomjo/cone/isomorphism.py: delete
Michael Orlitzky [Wed, 24 Sep 2025 20:08:53 +0000 (16:08 -0400)]
mjo/cone/isomorphism.py: delete

A better version of this is pending upstream at,

  https://github.com/sagemath/sage/pull/40367

5 months agomjo/eja/eja_operator.py: use upstream stuff for random unitary matrices
Michael Orlitzky [Wed, 24 Sep 2025 20:07:30 +0000 (16:07 -0400)]
mjo/eja/eja_operator.py: use upstream stuff for random unitary matrices

5 months agomjo/random.py: delete, random_unitary_matrix() is upstream
Michael Orlitzky [Wed, 24 Sep 2025 20:06:59 +0000 (16:06 -0400)]
mjo/random.py: delete, random_unitary_matrix() is upstream

8 months agomjo/cone: more linear ismorphism tests
Michael Orlitzky [Tue, 1 Jul 2025 23:15:23 +0000 (19:15 -0400)]
mjo/cone: more linear ismorphism tests

8 months agomjo/cone/isomorphism.py: fix RST citation format
Michael Orlitzky [Tue, 1 Jul 2025 13:54:53 +0000 (09:54 -0400)]
mjo/cone/isomorphism.py: fix RST citation format

8 months agomjo/cone/isomorphism.py: cite Gowda/Trott for the l1-cone
Michael Orlitzky [Tue, 1 Jul 2025 13:52:33 +0000 (09:52 -0400)]
mjo/cone/isomorphism.py: cite Gowda/Trott for the l1-cone

8 months agomjo/cone: improve isomorphism testing & docs, tests pass now
Michael Orlitzky [Tue, 1 Jul 2025 13:33:19 +0000 (09:33 -0400)]
mjo/cone: improve isomorphism testing & docs, tests pass now

8 months agomjo/cone/isomorphism.py: update docs/names, add is-isomorphic method
Michael Orlitzky [Tue, 1 Jul 2025 04:03:45 +0000 (00:03 -0400)]
mjo/cone/isomorphism.py: update docs/names, add is-isomorphic method

Rename the isomorphism generator to linear_isomorphisms(), since
"linear isomorphism" is as good of a distinguishing name as I can
think of. Then add the is_linearly_isomorphic() function to check
that at least one isomorphism exists.

8 months agomjo/cone/isomorphism.py: new module for (rational) cone isomorphism
Michael Orlitzky [Tue, 1 Jul 2025 00:32:57 +0000 (20:32 -0400)]
mjo/cone/isomorphism.py: new module for (rational) cone isomorphism

The is_isomorphic() method for convex cones in Sage kind of does what
I want, but the fact that it does is considered a bug by the author
since it does not capture the notion of isomorphism useful for toric
varieties. Some day that method will be fixed and it will be much less
useful for testing isomorphism in the usual linear-algebraic sense,
which is what I usually want to check.

This commit adds a new module with the beginnings of an isomorphism
test over the rationals. It should work for all convex cones (not just
pointed cones) though it isn't very smart or fast and probably has a
lot of bugs in it at the moment.

15 months agomjo/eja/eja_operator.py: randomize the permuted factors test
Michael Orlitzky [Fri, 29 Nov 2024 01:17:25 +0000 (20:17 -0500)]
mjo/eja/eja_operator.py: randomize the permuted factors test