@@ -420,6 +420,86 @@ def Ish(self, n, K=QQ, names=None):
420
420
A .characteristic_polynomial .set_cache (charpoly )
421
421
return A
422
422
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
+
423
503
def linial (self , n , K = QQ , names = None ):
424
504
r"""
425
505
Return the linial hyperplane arrangement.
0 commit comments