Skip to content

Conversation

@orlitzky
Copy link
Contributor

@orlitzky orlitzky commented Dec 19, 2025

Every pointed convex cone can be factored in to a direct sum of irreducible (i.e. cannot be factored further) parts. When the cones are polyhedral (as they are in sage), this factorization can be computed. This PR adds two methods to cone objects:

  • irreducible_factors(), to return the factorization
  • is_reducible(), for when you only care about the number of irreducible components

There are many places in optimization, game theory, and even graph theory where some cone being irreducible is important. This was indirectly suggested by @dimpase in #40367 where factoring can decrease the time it takes to compute linear isomorphisms.

@orlitzky orlitzky marked this pull request as draft December 19, 2025 23:24
@github-actions
Copy link

github-actions bot commented Dec 20, 2025

Documentation preview for this PR (built with commit 38133b3; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

@orlitzky orlitzky force-pushed the irreducible-factors branch from d4309e8 to b844f90 Compare December 20, 2025 11:33
@orlitzky orlitzky requested a review from dimpase December 20, 2025 11:37
@orlitzky orlitzky marked this pull request as ready for review December 20, 2025 11:37
Hauser and Güler's paper "Self-Scaled Barrier Functions on Symmetric
Cones and Their Classification" is one of the many places where it is
proved that pointed convex cones can be decomposed into irreducible
factors. This one is nice because the proof is simple (linear algebra
in R^n), and it provides uniqueness when the cone is solid.
The paper "Computing symmetry groups of polyhedra" by Bremner et
al. sketches an algorithm for computing the irreducible factors
of a polyhedral convex cone.
This was effectively suggested in PR 40367 to compute linear
isomorphisms of cones. To find isomorphisms, we would like to
decompose the cones into irreducible factors, and then look for
isomorphisms between factors of the appropriate size. Since the
isomorphism algorithm is combinatorial, it is better to work with lots
of small cones than it is to work with one big cone.

In any case, this is of independent interest and is not too hard to
implement. Thanks to Dmitrii Pasechnik for the suggestion (and the
algorithm).
Add a new method for people who don't care about the details of the
factorization and who only need to know whether or not their cone is
reducible.
Permutation invariant proper polyhedral cones and their Lyapunov rank,
by Jeong and Gowda. There's a result in here that provides an example
for the new is_reducible() method of polyhedral convex cones.
Combine two results from the literature to make a reducibility example
out of cones.rearrangement().
@orlitzky orlitzky force-pushed the irreducible-factors branch from b844f90 to 38133b3 Compare December 20, 2025 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant