Skip to content

Commit d70eb50

Browse files
committed
Implementing the type B Ish arrangement.
1 parent 2f426a1 commit d70eb50

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed

src/doc/en/reference/references/index.rst

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6113,6 +6113,10 @@ REFERENCES:
61136113
.. [TOPCOM] \J. Rambau, TOPCOM
61146114
<http://www.rambau.wm.uni-bayreuth.de/TOPCOM/>.
61156115
6116+
.. [TT2023] Tan Nhat Tran and Shuhei Tsujie.
6117+
*A type B analog of Ish arrangement*.
6118+
Preprint, :arxiv:`2304.12022`. (2023)
6119+
61166120
.. [TTWL2009] Trebst, Troyer, Wang and Ludwig, A short introduction to
61176121
Fibonacci anyon models, :arxiv:`0902.3275`.
61186122

src/sage/geometry/hyperplane_arrangement/library.py

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,86 @@ def Ish(self, n, K=QQ, names=None):
420420
A.characteristic_polynomial.set_cache(charpoly)
421421
return A
422422

423+
def IshB(self, n, K=QQ, names=None):
424+
r"""
425+
Return the type B Ish arrangement.
426+
427+
INPUT:
428+
429+
- ``n`` -- integer
430+
- ``K`` -- field (default:``QQ``)
431+
- ``names`` -- tuple of strings or ``None`` (default); the
432+
variable names for the ambient space
433+
434+
OUTPUT:
435+
436+
The type `B` Ish arrangement, which is the set of `2n^2` hyperplanes
437+
438+
.. MATH::
439+
440+
\{ x_i \pm x_j = 0 : 1 \leq i < j \leq n \}
441+
\cup
442+
\{ x_i = a : 1 \leq i\leq n, \quad i - n \leq a \leq n - i + 1 \}.
443+
444+
445+
EXAMPLES::
446+
447+
sage: a = hyperplane_arrangements.IshB(2)
448+
sage: a
449+
Arrangement of 8 hyperplanes of dimension 2 and rank 2
450+
sage: a.hyperplanes()
451+
(Hyperplane 0*t0 + t1 - 1,
452+
Hyperplane 0*t0 + t1 + 0,
453+
Hyperplane t0 - t1 + 0,
454+
Hyperplane t0 + 0*t1 - 2,
455+
Hyperplane t0 + 0*t1 - 1,
456+
Hyperplane t0 + 0*t1 + 0,
457+
Hyperplane t0 + 0*t1 + 1,
458+
Hyperplane t0 + t1 + 0)
459+
sage: a.cone().is_free()
460+
True
461+
462+
.. PLOT::
463+
:width: 300 px
464+
465+
a = hyperplane_arrangements.IshB(2)
466+
sphinx_plot(a.plot())
467+
468+
::
469+
470+
sage: a = hyperplane_arrangements.IshB(3); a
471+
Arrangement of 18 hyperplanes of dimension 3 and rank 3
472+
sage: a.characteristic_polynomial()
473+
x^3 - 18*x^2 + 108*x - 216
474+
sage: b = hyperplane_arrangements.Shi(['B', 3])
475+
sage: b.characteristic_polynomial()
476+
x^3 - 18*x^2 + 108*x - 216
477+
478+
TESTS::
479+
480+
sage: a.characteristic_polynomial.clear_cache()
481+
sage: a.characteristic_polynomial()
482+
x^3 - 18*x^2 + 108*x - 216
483+
484+
REFERENCES:
485+
486+
- [TT2023]_
487+
"""
488+
H = make_parent(K, n, names)
489+
x = H.gens()
490+
hyperplanes = []
491+
for i in range(n):
492+
for j in range(i+1, n):
493+
hyperplanes.append(x[i] - x[j])
494+
hyperplanes.append(x[i] + x[j])
495+
for a in range(i+1-n, n-i+1):
496+
hyperplanes.append(x[i] - a)
497+
A = H(*hyperplanes)
498+
x = polygen(QQ, 'x')
499+
charpoly = (x - 2*n) ** n
500+
A.characteristic_polynomial.set_cache(charpoly)
501+
return A
502+
423503
def linial(self, n, K=QQ, names=None):
424504
r"""
425505
Return the linial hyperplane arrangement.

0 commit comments

Comments
 (0)