-
-
Notifications
You must be signed in to change notification settings - Fork 631
Linear isomorphisms for convex cones #40367
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
orlitzky
wants to merge
9
commits into
sagemath:develop
Choose a base branch
from
orlitzky:linear-cone-isomorphism
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This contains a result on the automorphism group of a particular polyhedral cone, soon to be cited in a new method for isomorphism testing. The name is a bit long, but "GT2014" has already been used... by me.
Documentation preview for this PR (built with commit dd77872; changes) is ready! 🎉 |
8290603
to
7a8e189
Compare
This is a respectable reference that mentions the decomposition of a convex cone into its lineal (subspace) and non-lineal (pointed) components. It will be cited in a forthcoming cone isomorphism method.
This paper contains a proof that automorphisms of pointed cones must send extreme rays to extreme rays. The proof is also valid for isomorphisms between two different cones and will be cited in a future method for cone isomorphisms.
3948558
to
bd7ab6b
Compare
2 tasks
With the ultimate goal of reimplementing isomorphism testing for convex cones, we add a new method to generate said isomorphisms. If any are generated... then the cones are isomorphic. This is based on the well-known decomposition of a closed convex cone in to a sum of three convex cones: 1. Its lineal part (the largest subspace contained in the cone) 2. Its non-lineal part (the orthogonal complement to the lineal part) 3. A trivial cone in a subspace orthogonal to the original cone (in the case where, say, the cone is 2d in a 3d space) Generating isomorphisms for (1) and (3) are easy, because all we need are vector space isomorphisms. A necessary condition for isomorphism between cones that are both strictly convex is that extreme rays are sent to extreme rays. And for a solid cone, there are enough extreme rays to make any such map invertible. The cone in (2) satisfies both of these conditions, so by decomposing two cones and matching up their components, we are able to generate "all" ismorphisms between them (up to some hand waving that has been documented in the ALGORITHM block.)
This is a new alternative to the is_isomorphic() method for convex cones. The existing method was written with toric geometry in mind, and is neither documented nor intended to capture the notion of equivalence under invertible rational transformations. The new method was implemented "from scratch," avoiding the fan machinery, and works for all convex cones, not just strictly convex ones. It should also be immune to the symmetry bug in Github issue 37957.
In the documentation of is_equivalent() and is_isomorphic(), there is a note that mentions "three notions of equivalence" for convex cones. Well, with the addition of is_linearly_isomorphic(), now there are four. We update the existing note in both places, and then copy/paste it into the docs for is_linearly_isomorphic() as well. We also add SEEALSO blocks for is_equivalent() and is_isomorphic() to match the one in is_linearly_isomorphic().
Now that is_linearly_isomorphic() is implemented, we add a SEEALSO reference to it in linear_isomorphisms().
I think the SEEALSO block looks better if it comes after the OUTPUT but before the ALGORITHM.
One of the max_angle() tests is running afoul of the new, stricter limits for non-long tests. I wrote it, so I should probably fix it.
bd7ab6b
to
dd77872
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Implement linear isomorphism generation and testing for convex cones. Convex cones can be created in Sage with the
Cone()
function. These cones already have anis_isomorphic()
method, but this tests a property that is relevant in toric geometry rather than the equivalence under an invertible linear map. The latter is more useful in optimization, in particular.