Opened 12 months ago

Last modified 7 weeks ago

#30749 new defect

Characteristic polynomial of central Hyperplane arrangement returns wrong result?

Reported by: jipilab Owned by:
Priority: major Milestone: sage-9.5
Component: geometry Keywords: hyperplane arrangements, regions
Cc: gh-kliem, gh-LaisRast, nailuj Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges

Description (last modified by jipilab)

A central hyperplane arrangement must have an even number of regions by central symmetry... yet the one below gets 31 regions(!).

R.<y> = QQ[]
v1 = AA.polynomial_root(AA.common_polynomial(y^2 - 3), RIF(RR(1.7320508075688772), RR(1.7320508075688774)))
v2 = QQbar.polynomial_root(AA.common_polynomial(y^4 - y^2 + 1), CIF(RIF(RR(0.8660254037844386), RR(0.86602540378443871)), RIF(-RR(0.50000000000000011), -RR(0.49999999999999994))))
my_vectors = (vector(AA, [-v1, -1, 1]), vector(AA, [0, 2, 1]), vector(AA,[v1, -1, 1]), vector(AA, [1, 0, 0]), vector(AA, [1/2, AA(-1/2*v2^3 + v2),0]), vector(AA, [-1/2, AA(-1/2*v2^3 + v2), 0]))


sage: H = HyperplaneArrangements(AA,names='xyz')
sage: x,y,z = H.gens()
sage: A = H(backend="normaliz")
sage: for v in my_vectors:
....:     a,b,c = v
....:     A = A.add_hyperplane(a*x + b*y + c*z)
sage: A
Arrangement of 6 hyperplanes of dimension 3 and rank 3
sage: A.n_regions()
31
sage: A.is_central()
True

Here is another failure in characteristic polynomial:

sage: tau = AA((1+sqrt(5))/2)                                                                                                                                                                                      
sage: ncn = [[2*tau+1,2*tau,tau],[2*tau+2,2*tau+1,tau+1],[1,1,1],[tau+1,tau+1,tau],[2*tau,2*tau,tau],[tau+1,tau+1,1],[1,1,0],[0,1,0],[1,0,0],[tau+1,tau,tau]]                                                      
sage: H = HyperplaneArrangements(AA,names='xyz')                                                                                                                                                                   
sage: x,y,z = H.gens()                                                                                                                                                                                             
sage: A = H()                                                                                                                                                                                                      
sage: for v in ncn: 
....:     a,b,c = v 
....:     A = A.add_hyperplane(a*x + b*y + c*z) 
....:                                                                                                                                                                                                              
sage: A.n_regions()
Traceback (most recent call last):
...
ValueError: arrangement cannot simultaneously have h and -h as hyperplane

Change History (8)

comment:1 Changed 12 months ago by chapoton

  • Description modified (diff)

comment:2 follow-up: Changed 12 months ago by chapoton

The char poly gives the same answer

sage: p = A.characteristic_polynomial() : p
x^3 - 6*x^2 + 13*x - 11
sage: p(-1)                                                                     
-31

comment:3 in reply to: ↑ 2 Changed 12 months ago by jipilab

Replying to chapoton:

The char poly gives the same answer

sage: p = A.characteristic_polynomial() : p
x^3 - 6*x^2 + 13*x - 11
sage: p(-1)                                                                     
-31

Yes, this is how the number of regions is computed up to sign. The hyperplane arrangement seems to be sane: computing .regions() computes the expected (number of) regions.

I asked the number of regions to double-check and then got this scary answer...

Version 1, edited 12 months ago by jipilab (previous) (next) (diff)

comment:4 Changed 12 months ago by jipilab

  • Summary changed from Characteristic polynomial of central Hyperplane arrangement results wrong result? to Characteristic polynomial of central Hyperplane arrangement returns wrong result?

comment:5 Changed 12 months ago by nailuj

I encountered this problem in some example a long while ago, before I was contributing to Sage myself. A simple workaround is to have n_regions output len(self.regions()), which was good enough for me. Of course, this is much slower if one doesn’t want to compute the regions anyway. I don’t understand the characteristic polynomial well enough to figure out the error in there.

comment:6 Changed 10 months ago by jipilab

  • Description modified (diff)

comment:7 Changed 8 months ago by mkoeppe

  • Milestone changed from sage-9.3 to sage-9.4

Setting new milestone based on a cursory review of ticket status, priority, and last modification date.

comment:8 Changed 7 weeks ago by mkoeppe

  • Milestone changed from sage-9.4 to sage-9.5
Note: See TracTickets for help on using tickets.