@@ -2298,8 +2298,8 @@ def is_orthocomplemented(self, unique=False):
2298
2298
sage: D6.is_orthocomplemented(unique=True) # needs sage.groups
2299
2299
False
2300
2300
2301
- sage: hexagon = LatticePoset({0:[1, 2], 1:[3], 2:[4], 3:[5], 4:[5]})
2302
- sage: hexagon.is_orthocomplemented(unique=True)
2301
+ sage: hexagon = LatticePoset({0: [1, 2], 1: [3], 2: [4], 3:[5], 4: [5]})
2302
+ sage: hexagon.is_orthocomplemented(unique=True) # needs sage.groups
2303
2303
True
2304
2304
2305
2305
.. SEEALSO::
@@ -4046,7 +4046,7 @@ def is_subdirectly_reducible(self, certificate=False):
4046
4046
4047
4047
TESTS::
4048
4048
4049
- sage: [posets.ChainPoset(i).is_subdirectly_reducible() for i in range(5)]
4049
+ sage: [posets.ChainPoset(i).is_subdirectly_reducible() for i in range(5)] # needs sage.combinat
4050
4050
[False, False, False, True, True]
4051
4051
"""
4052
4052
H = self ._hasse_diagram
@@ -4256,7 +4256,7 @@ def is_constructible_by_doublings(self, type) -> bool:
4256
4256
sage: L = L.day_doubling([(3,0), (1,1), (2,1)]) # An upper pseudo-interval
4257
4257
sage: L.is_constructible_by_doublings('upper')
4258
4258
False
4259
- sage: L.is_constructible_by_doublings('convex')
4259
+ sage: L.is_constructible_by_doublings('convex') # needs sage.combinat
4260
4260
True
4261
4261
4262
4262
An example of a lattice that can be constructed by doublings
@@ -4378,18 +4378,20 @@ def is_isoform(self, certificate=False):
4378
4378
4379
4379
EXAMPLES::
4380
4380
4381
- sage: L = LatticePoset({1:[2, 3, 4], 2: [5, 6], 3: [6, 7], 4: [7], 5: [8], 6: [8], 7: [8]})
4382
- sage: L.is_isoform()
4381
+ sage: L = LatticePoset({1: [2, 3, 4], 2: [5, 6], 3: [6, 7],
4382
+ ....: 4: [7], 5: [8], 6: [8], 7: [8]})
4383
+ sage: L.is_isoform() # needs sage.combinat
4383
4384
True
4384
4385
4385
4386
Every isoform lattice is (trivially) uniform, but the converse is
4386
4387
not true::
4387
4388
4388
- sage: L = LatticePoset({1: [2, 3, 6], 2: [4, 5], 3: [5], 4: [9, 8], 5: [7, 8], 6: [9], 7: [10], 8: [10], 9: [10]})
4389
- sage: L.is_isoform(), L.is_uniform()
4389
+ sage: L = LatticePoset({1: [2, 3, 6], 2: [4, 5], 3: [5], 4: [9, 8],
4390
+ ....: 5: [7, 8], 6: [9], 7: [10], 8: [10], 9: [10]})
4391
+ sage: L.is_isoform(), L.is_uniform() # needs sage.combinat
4390
4392
(False, True)
4391
4393
4392
- sage: L.is_isoform(certificate=True)
4394
+ sage: L.is_isoform(certificate=True) # needs sage.combinat
4393
4395
(False, {{1, 2, 4, 6, 9}, {3, 5, 7, 8, 10}})
4394
4396
4395
4397
.. SEEALSO::
@@ -4404,7 +4406,7 @@ def is_isoform(self, certificate=False):
4404
4406
sage: [posets.ChainPoset(i).is_isoform() for i in range(5)]
4405
4407
[True, True, True, False, False]
4406
4408
4407
- sage: posets.DiamondPoset(5).is_isoform() # Simple, so trivially isoform
4409
+ sage: posets.DiamondPoset(5).is_isoform() # Simple, so trivially isoform # needs sage.combinat
4408
4410
True
4409
4411
"""
4410
4412
ok = (True , None ) if certificate else True
@@ -4451,8 +4453,9 @@ def is_uniform(self, certificate=False):
4451
4453
4452
4454
EXAMPLES::
4453
4455
4454
- sage: L = LatticePoset({1: [2, 3, 4], 2: [6, 7], 3: [5], 4: [5], 5: [9, 8], 6: [9], 7: [10], 8: [10], 9: [10]})
4455
- sage: L.is_uniform()
4456
+ sage: L = LatticePoset({1: [2, 3, 4], 2: [6, 7], 3: [5], 4: [5],
4457
+ ....: 5: [9, 8], 6: [9], 7: [10], 8: [10], 9: [10]})
4458
+ sage: L.is_uniform() # needs sage.combinat
4456
4459
True
4457
4460
4458
4461
Every uniform lattice is regular, but the converse is not true::
@@ -4461,7 +4464,7 @@ def is_uniform(self, certificate=False):
4461
4464
sage: N6.is_uniform(), N6.is_regular()
4462
4465
(False, True)
4463
4466
4464
- sage: N6.is_uniform(certificate=True)
4467
+ sage: N6.is_uniform(certificate=True) # needs sage.combinat
4465
4468
(False, {{1, 2, 3, 4}, {5, 6}})
4466
4469
4467
4470
.. SEEALSO::
@@ -4475,7 +4478,7 @@ def is_uniform(self, certificate=False):
4475
4478
sage: [posets.ChainPoset(i).is_uniform() for i in range(5)]
4476
4479
[True, True, True, False, False]
4477
4480
4478
- sage: posets.DiamondPoset(5).is_uniform() # Simple, so trivially uniform
4481
+ sage: posets.DiamondPoset(5).is_uniform() # Simple, so trivially uniform # needs sage.combinat
4479
4482
True
4480
4483
"""
4481
4484
ok = (True , None ) if certificate else True
@@ -4532,14 +4535,15 @@ def is_regular(self, certificate=False):
4532
4535
4533
4536
EXAMPLES::
4534
4537
4535
- sage: L = LatticePoset({1: [2, 3, 4], 2: [5, 6], 3: [8, 7], 4: [6, 7], 5: [8], 6: [9], 7: [9], 8: [9]})
4536
- sage: L.is_regular()
4538
+ sage: L = LatticePoset({1: [2, 3, 4], 2: [5, 6], 3: [8, 7], 4: [6, 7],
4539
+ ....: 5: [8], 6: [9], 7: [9], 8: [9]})
4540
+ sage: L.is_regular() # needs sage.combinat
4537
4541
True
4538
4542
4539
4543
sage: N5 = posets.PentagonPoset()
4540
- sage: N5.is_regular()
4544
+ sage: N5.is_regular() # needs sage.combinat
4541
4545
False
4542
- sage: N5.is_regular(certificate=True)
4546
+ sage: N5.is_regular(certificate=True) # needs sage.combinat
4543
4547
(False, ({{0}, {1}, {2, 3}, {4}}, [0]))
4544
4548
4545
4549
.. SEEALSO::
@@ -4552,7 +4556,7 @@ def is_regular(self, certificate=False):
4552
4556
4553
4557
TESTS::
4554
4558
4555
- sage: [posets.ChainPoset(i).is_regular() for i in range(5)]
4559
+ sage: [posets.ChainPoset(i).is_regular() for i in range(5)] # needs sage.combinat
4556
4560
[True, True, True, False, False]
4557
4561
"""
4558
4562
ok = (True , None ) if certificate else True
@@ -4598,6 +4602,7 @@ def is_simple(self, certificate=False):
4598
4602
4599
4603
EXAMPLES::
4600
4604
4605
+ sage: # needs sage.combinat
4601
4606
sage: posets.DiamondPoset(5).is_simple() # Smallest nontrivial example
4602
4607
True
4603
4608
sage: L = LatticePoset({1: [2, 3], 2: [4, 5], 3: [6], 4: [6], 5: [6]})
@@ -4611,11 +4616,11 @@ def is_simple(self, certificate=False):
4611
4616
4612
4617
sage: L = LatticePoset({1: [2, 3, 4], 2: [5], 3: [5], 4: [6, 7],
4613
4618
....: 5: [8], 6: [8], 7: [8]})
4614
- sage: L.is_simple()
4619
+ sage: L.is_simple() # needs sage.combinat
4615
4620
False
4616
4621
sage: L = LatticePoset({1: [2, 3], 2: [4, 5], 3: [6, 7], 4: [8],
4617
4622
....: 5: [8], 6: [8], 7: [8]})
4618
- sage: L.is_simple()
4623
+ sage: L.is_simple() # needs sage.combinat
4619
4624
True
4620
4625
4621
4626
.. SEEALSO::
@@ -4652,9 +4657,10 @@ def subdirect_decomposition(self):
4652
4657
4653
4658
EXAMPLES::
4654
4659
4655
- sage: posets.ChainPoset(3).subdirect_decomposition()
4660
+ sage: posets.ChainPoset(3).subdirect_decomposition() # needs sage.combinat
4656
4661
[Finite lattice containing 2 elements, Finite lattice containing 2 elements]
4657
4662
4663
+ sage: # needs sage.combinat
4658
4664
sage: L = LatticePoset({1: [2, 4], 2: [3], 3: [6, 7], 4: [5, 7],
4659
4665
....: 5: [9, 8], 6: [9], 7: [9], 8: [10], 9: [10]})
4660
4666
sage: Ldecomp = L.subdirect_decomposition()
@@ -4665,6 +4671,7 @@ def subdirect_decomposition(self):
4665
4671
4666
4672
TESTS::
4667
4673
4674
+ sage: # needs sage.combinat
4668
4675
sage: posets.ChainPoset(0).subdirect_decomposition()
4669
4676
[Finite lattice containing 0 elements]
4670
4677
sage: posets.ChainPoset(1).subdirect_decomposition()
@@ -4676,7 +4683,7 @@ def subdirect_decomposition(self):
4676
4683
has only one element::
4677
4684
4678
4685
sage: N5 = posets.PentagonPoset()
4679
- sage: N5.subdirect_decomposition()
4686
+ sage: N5.subdirect_decomposition() # needs sage.combinat
4680
4687
[Finite lattice containing 5 elements]
4681
4688
"""
4682
4689
H = self ._hasse_diagram
@@ -4737,6 +4744,7 @@ def congruence(self, S):
4737
4744
4738
4745
EXAMPLES::
4739
4746
4747
+ sage: # needs sage.combinat
4740
4748
sage: L = posets.DivisorLattice(12)
4741
4749
sage: cong = L.congruence([[1, 3]])
4742
4750
sage: sorted(sorted(c) for c in cong)
@@ -4745,19 +4753,20 @@ def congruence(self, S):
4745
4753
{{1, 2, 4}, {3, 6, 12}}
4746
4754
4747
4755
sage: L = LatticePoset({1: [2, 3], 2: [4], 3: [4], 4: [5]})
4748
- sage: L.congruence([[1, 2]])
4756
+ sage: L.congruence([[1, 2]]) # needs sage.combinat
4749
4757
{{1, 2}, {3, 4}, {5}}
4750
4758
4751
4759
sage: L = LatticePoset({1: [2, 3], 2: [4, 5, 6], 4: [5], 5: [7, 8],
4752
4760
....: 6: [8], 3: [9], 7: [10], 8: [10], 9:[10]})
4753
- sage: cong = L.congruence([[1, 2]])
4754
- sage: cong[0]
4761
+ sage: cong = L.congruence([[1, 2]]) # needs sage.combinat
4762
+ sage: cong[0] # needs sage.combinat
4755
4763
frozenset({1, 2, 3, 4, 5, 6, 7, 8, 9, 10})
4756
4764
4757
4765
.. SEEALSO:: :meth:`quotient`
4758
4766
4759
4767
TESTS::
4760
4768
4769
+ sage: # needs sage.combinat
4761
4770
sage: P = posets.PentagonPoset()
4762
4771
sage: P.congruence([])
4763
4772
{{0}, {1}, {2}, {3}, {4}}
@@ -4774,13 +4783,13 @@ def congruence(self, S):
4774
4783
works::
4775
4784
4776
4785
sage: L = LatticePoset(DiGraph('P^??@_?@??B_?@??B??@_?@??B_?@??B??@??A??C??G??O???'))
4777
- sage: sorted(sorted(p) for p in L.congruence([[1,6]]))
4786
+ sage: sorted(sorted(p) for p in L.congruence([[1,6]])) # needs sage.combinat
4778
4787
[[0], [1, 6], [2], [3, 8], [4], [5, 10], [7, 12], [9, 14], [11], [13], [15], [16]]
4779
4788
4780
4789
Simple lattice, i.e. a lattice without any nontrivial congruence::
4781
4790
4782
4791
sage: L = LatticePoset(DiGraph('GPb_@?OC@?O?'))
4783
- sage: L.congruence([[1,2]])
4792
+ sage: L.congruence([[1,2]]) # needs sage.combinat
4784
4793
{{0, 1, 2, 3, 4, 5, 6, 7}}
4785
4794
"""
4786
4795
from sage .combinat .set_partition import SetPartition
@@ -4821,6 +4830,7 @@ def quotient(self, congruence, labels='tuple'):
4821
4830
4822
4831
EXAMPLES::
4823
4832
4833
+ sage: # needs sage.combinat
4824
4834
sage: L = posets.PentagonPoset()
4825
4835
sage: c = L.congruence([[0, 1]])
4826
4836
sage: I = L.quotient(c); I
@@ -4831,6 +4841,7 @@ def quotient(self, congruence, labels='tuple'):
4831
4841
sage: I.top()
4832
4842
Finite lattice containing 3 elements
4833
4843
4844
+ sage: # needs sage.combinat
4834
4845
sage: B3 = posets.BooleanLattice(3)
4835
4846
sage: c = B3.congruence([[0,1]])
4836
4847
sage: B2 = B3.quotient(c, labels='integer')
@@ -4846,7 +4857,7 @@ def quotient(self, congruence, labels='tuple'):
4846
4857
Finite lattice containing 0 elements
4847
4858
4848
4859
sage: L = posets.PentagonPoset()
4849
- sage: L.quotient(L.congruence([[1]])).is_isomorphic(L)
4860
+ sage: L.quotient(L.congruence([[1]])).is_isomorphic(L) # needs sage.combinat
4850
4861
True
4851
4862
"""
4852
4863
if labels not in ['lattice' , 'tuple' , 'integer' ]:
@@ -4894,6 +4905,7 @@ def congruences_lattice(self, labels='congruence'):
4894
4905
4895
4906
EXAMPLES::
4896
4907
4908
+ sage: # needs sage.combinat
4897
4909
sage: N5 = posets.PentagonPoset()
4898
4910
sage: CL = N5.congruences_lattice(); CL
4899
4911
Finite lattice containing 5 elements
@@ -4903,12 +4915,13 @@ def congruences_lattice(self, labels='congruence'):
4903
4915
[{{0, 1}, {2, 3, 4}}, {{0, 2, 3}, {1, 4}}]
4904
4916
4905
4917
sage: C4 = posets.ChainPoset(4)
4906
- sage: CL = C4.congruences_lattice(labels='integer')
4907
- sage: CL.is_isomorphic(posets.BooleanLattice(3))
4918
+ sage: CL = C4.congruences_lattice(labels='integer') # needs sage.combinat
4919
+ sage: CL.is_isomorphic(posets.BooleanLattice(3)) # needs sage.combinat
4908
4920
True
4909
4921
4910
4922
TESTS::
4911
4923
4924
+ sage: # needs sage.combinat
4912
4925
sage: posets.ChainPoset(0).congruences_lattice()
4913
4926
Finite lattice containing 1 elements
4914
4927
sage: posets.ChainPoset(1).congruences_lattice()
@@ -5002,6 +5015,7 @@ def feichtner_yuzvinsky_ring(self, G, use_defining=False, base_ring=None):
5002
5015
5003
5016
We reproduce the example from Section 5 of [Coron2023]_::
5004
5017
5018
+ sage: # needs sage.geometry.polyhedron
5005
5019
sage: H.<a,b,c,d> = HyperplaneArrangements(QQ)
5006
5020
sage: Arr = H(a-b, b-c, c-d, d-a)
5007
5021
sage: P = LatticePoset(Arr.intersection_poset())
0 commit comments