Skip to content

Commit

Permalink
sagemathgh-38973: is_t_design needs to verify that every t-tuple is i…
Browse files Browse the repository at this point in the history
…n at least one block

    
<!-- ^ Please provide a concise and informative title. -->
<!-- ^ Don't put issue numbers in the title, do this in the PR
description below. -->
<!-- ^ For example, instead of "Fixes sagemath#12345" use "Introduce new method
to calculate 1 + 2". -->
<!-- v Describe your changes below in detail. -->
<!-- v Why is this change required? What problem does it solve? -->
<!-- v If this PR resolves an open issue, please link to it here. For
example, "Fixes sagemath#12345". -->

Fixes sagemath#38454.

In a t-design, every t-tuple needs to be contained in the same number of
blocks. The code for `is_t_design` did not verify this correctly,
because it only checked the t-tuples that are contained in at least one
block. We fix this by verifying that the number of t-tuples that appear
in at least one block is equal to the total number of t-tuples.

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->

- [x] The title is concise and informative.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] I have updated the documentation and checked the documentation
preview.

### ⌛ Dependencies

<!-- List all open PRs that this PR logically depends on. For example,
-->
<!-- - sagemath#12345: short description why this is a dependency -->
<!-- - sagemath#34567: ... -->
    
URL: sagemath#38973
Reported by: DaveWitteMorris
Reviewer(s): David Coudert
  • Loading branch information
Release Manager committed Dec 13, 2024
2 parents a8a6485 + da21ad7 commit 83d7435
Showing 1 changed file with 8 additions and 1 deletion.
9 changes: 8 additions & 1 deletion src/sage/combinat/designs/incidence_structures.py
Original file line number Diff line number Diff line change
Expand Up @@ -1592,6 +1592,13 @@ def is_t_design(self, t=None, v=None, k=None, l=None, return_parameters=False):
sage: I = IncidenceStructure(2, [[0],[0,1]])
sage: I.is_t_design(return_parameters=True)
(False, (0, 0, 0, 0))
Verify that :issue:`38454` is fixed::
sage: I = IncidenceStructure(points=[0,1,2,3,4,5],
....: blocks=[[0,1], [1,2], [0,2]])
sage: I.is_t_design(return_parameters=True)
(True, (0, 6, 2, 3))
"""
from sage.arith.misc import binomial

Expand Down Expand Up @@ -1653,7 +1660,7 @@ def is_t_design(self, t=None, v=None, k=None, l=None, return_parameters=False):
for i in combinations(block, tt):
s[i] = s.get(i, 0) + 1

if len(set(s.values())) != 1:
if (len(s) != binomial(v, tt)) or (len(set(s.values())) != 1):
tt -= 1
break

Expand Down

0 comments on commit 83d7435

Please sign in to comment.