Opened 7 years ago

Closed 7 years ago

#17938 closed enhancement (fixed)

implement common refinement of fans

Reported by: chapoton Owned by:
Priority: minor Milestone: sage-6.6
Component: geometry Keywords: fan, toric, refinement
Cc: vbraun, novoselt, jkeitel Merged in:
Authors: Frédéric Chapoton Reviewers: Andrey Novoseltsev
Report Upstream: N/A Work issues:
Branch: da9d676 (Commits, GitHub, GitLab) Commit: da9d6765d00393f8b76e496fdaae7f47307f943f
Dependencies: Stopgaps:

Status badges

Description

Given two fans in the same lattice, compute the common refinement.

Change History (9)

comment:1 Changed 7 years ago by chapoton

  • Branch set to u/chapoton/17938
  • Cc vbraun novoselt jkeitel added
  • Commit set to 0ca9d108e87269365c8659755356d7ae1ca73b2f
  • Priority changed from major to minor
  • Status changed from new to needs_review

New commits:

0ca9d10trac #17938 common refinement of fans

comment:2 Changed 7 years ago by git

  • Commit changed from 0ca9d108e87269365c8659755356d7ae1ca73b2f to 2062a13a12294275dfd231d09f17258a52ca87ca

Branch pushed to git repo; I updated commit sha1. New commits:

2062a13Merge branch 'u/chapoton/17938' into 6.6.b5

comment:3 Changed 7 years ago by novoselt

  • Branch changed from u/chapoton/17938 to u/novoselt/17938

comment:4 Changed 7 years ago by novoselt

  • Commit changed from 2062a13a12294275dfd231d09f17258a52ca87ca to 9acc6329f0453e71c760111a98af36b5b2e8c83d
  • Reviewers set to Andrey Novoseltsev

There is nothing difficult with incomplete fans, just need to verify that supports are the same! If you are fine with changes, set to positive review.


New commits:

9acc632There is no problem subdividing incomplete fans.

comment:5 Changed 7 years ago by chapoton

Sorry, but I do not understand what you do with the reverse morphism. It seems like you just do nothing in this if not(self.is_complete()) statement. Does the simple fact of calling FanMorphism magically modify subdivision ?

comment:6 Changed 7 years ago by novoselt

It better not modify anything in the global namespace!!!

sage: F1 = toric_varieties.P2().fan()
sage: F2 = Fan([F1.generating_cone(0)])
sage: F2.common_refinement(F1)
...
   1661         if not self.is_complete():
   1662             # Construct the opposite morphism to ensure support equality
-> 1663             FanMorphism(id, other, self, subdivide=True)
...
ValueError: morphism defined by
[1 0]
[0 1]
does not map
Rational polyhedral fan in 2-d lattice N
into the support of
Rational polyhedral fan in 2-d lattice N!

Without constructing the second morphism, it is not obvious that the support of F1 is not strictly bigger than the support of F2. Yet if the second one can be constructed, its domain fan will be exactly the same subdivision, so no need to use it somehow.

Checking equality of supports of non-complete fans is tricky, since the support does not have to be convex, so there is no simple object that can model it. (And that's why we don't have fan.support() method - the best model for the support of a general fan is the fan itself as a polyhedral complex.) Another more transparent option is to check if the first constructed morphism is surjective, but looking at the code I suspect it is more time-consuming.

comment:7 Changed 7 years ago by chapoton

  • Branch changed from u/novoselt/17938 to u/chapoton/17938
  • Commit changed from 9acc6329f0453e71c760111a98af36b5b2e8c83d to da9d6765d00393f8b76e496fdaae7f47307f943f

Ok, looks good to me. I have just added one more example. If you agree, you can set a positive review.


New commits:

da9d676trac #17938 one more example

comment:8 Changed 7 years ago by novoselt

  • Status changed from needs_review to positive_review

comment:9 Changed 7 years ago by vbraun

  • Branch changed from u/chapoton/17938 to da9d6765d00393f8b76e496fdaae7f47307f943f
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.