Database of small combinatorial designs¶
This module implements combinatorial designs that cannot be obtained by more general constructions. Most of them come from the Handbook of Combinatorial Designs [DesignHandbook].
All this would only be a dream without the mathematical knowledge and help of Julian R. Abel.
These functions can all be obtained through the designs.<tab> functions.
This module implements:
- CA(11,2,5,3),- CA(12,2,7,3),- CA(13,2,9,3),- CA(14,2,10,3),- CA(15,2,20,3),- CA(19,2,6,4),- CA(21,2,7,4),- CA(29,2,7,5),- CA(37,2,4,6),- CA(39,2,5,6),- CA(41,2,6,6)
- OA(7,18),- OA(9,40),- OA(7,66),- OA(7,68),- OA(8,69),- OA(7,74),- OA(8,76),- OA(11,80),- OA(15,112),- OA(9,120),- OA(9,135),- OA(11,160),- OA(16,176),- OA(11,185),- OA(10,205),- OA(16,208),- OA(15,224),- OA(11,254),- OA(20,352),- OA(20,416),- OA(10,469),- OA(10,520),- OA(12,522),- OA(14,524),- OA(20,544),- OA(17,560),- OA(11,640),- OA(10,796),- OA(15,896),- OA(9,1078),- OA(25,1262),- OA(9,1612),- OA(10,1620)
- 2 MOLS of order 10,- 5 MOLS of order 12,- 4 MOLS of order 14,- 4 MOLS of order 15,- 3 MOLS of order 18
- \(V(m,t)\) vectors:
- \(m=3\) and \(t=\) \(2\), \(4\), \(6\), \(10\), \(12\), \(14\), \(20\), \(24\), \(26\), \(32\), \(34\) 
- \(m=4\) and \(t=\) \(3\), \(7\), \(9\), \(13\), \(15\), \(25\) 
- \(m=5\) and \(t=\) \(6\), \(8\), \(12\), \(14\), \(20\), \(26\) 
- \(m=6\) and \(t=\) \(5\), \(7\), \(11\), \(13\), \(17\), \(21\) 
- \(m=7\) and \(t=\) \(6\), \(10\), \(16\), \(18\) 
- \(m=8\) and \(t=\) \(9\), \(11\), \(17\), \(29\), \(57\) 
- \(m=9\) and \(t=\) \(12\), \(14\), \(18\), \(20\), \(22\), \(30\), \(34\), \(42\), \(44\) 
- \(m=10\) and \(t=\) \(13\), \(15\), \(19\), \(21\), \(25\), \(27\), \(31\), \(33\), \(43\), \(49\), \(81\), \(97\), \(103\), \(181\), \(187\), \(259\), \(273\), \(319\), \(391\), \(409\) 
- \(m=11\) and \(t=\) \(30\), \(32\), \(36\), \(38\), \(42\), \(56\), \(60\), \(62\), \(66\), \(78\), \(80\), \(86\), \(90\), \(92\), \(102\), \(116\), \(120\), \(128\), \(132\), \(146\), \(162\), \(170\), \(182\), \(188\), \(192\), \(198\), \(206\), \(210\), \(212\), \(216\), \(218\), \(230\), \(242\), \(246\), \(248\), \(260\), \(266\), \(270\), \(276\), \(288\), \(290\), \(296\), \(300\), \(302\), \(308\), \(312\), \(318\), \(330\), \(336\), \(338\), \(350\), \(356\), \(366\), \(368\), \(372\), \(378\), \(396\), \(402\), \(420\), \(422\), \(450\), \(452\) 
- \(m=12\) and \(t=\) \(33\), \(35\), \(45\), \(51\), \(55\), \(59\), \(61\), \(63\), \(69\), \(71\), \(73\), \(83\), \(85\), \(89\), \(91\), \(93\), \(101\), \(103\), \(115\), \(119\), \(121\), \(129\), \(133\), \(135\), \(139\), \(141\), \(145\), \(149\), \(155\), \(161\), \(169\), \(171\), \(185\), \(189\), \(191\), \(195\), \(199\), \(203\), \(213\), \(223\), \(229\), \(233\), \(243\), \(253\), \(255\), \(259\), \(265\), \(269\), \(271\), \(275\), \(281\), \(289\), \(293\), \(295\), \(301\), \(303\), \(309\), \(311\), \(321\), \(323\), \(335\), \(341\), \(355\), \(363\), \(379\), \(383\), \(385\), \(399\), \(401\), \(405\), \(409\), \(411\), \(413\) 
 
 
- \((v,k,\lambda)\)-BIBD:
- \(\lambda=1\):n \((66,6,1)\), \((76,6,1)\), \((96,6,1)\), \((106,6,1)\), \((111,6,1)\), \((120,8,1)\), \((126,6,1)\), \((136,6,1)\), \((141,6,1)\), \((171,6,1)\), \((196,6,1)\), \((201,6,1)\) 
- \(\lambda=2\):n \((56,11,2)\), \((79,13,2)\) 
- \(\lambda=8\):n \((45,9,8)\) 
- \(\lambda=14\):n \((176,50,14)\) 
 
 
- \((v,k,\lambda)\)-difference families:
- \(\lambda=1\):n \((15,3,1)\), \((21,3,1)\), \((21,5,1)\), \((25,3,1)\), \((25,4,1)\), \((27,3,1)\), \((33,3,1)\), \((37,4,1)\), \((39,3,1)\), \((40,4,1)\), \((45,3,1)\), \((45,5,1)\), \((49,3,1)\), \((49,4,1)\), \((51,3,1)\), \((52,4,1)\), \((55,3,1)\), \((57,3,1)\), \((63,3,1)\), \((64,4,1)\), \((65,5,1)\), \((69,3,1)\), \((75,3,1)\), \((76,4,1)\), \((81,3,1)\), \((81,5,1)\), \((85,4,1)\), \((91,6,1)\), \((91,7,1)\), \((121,5,1)\), \((121,6,1)\), \((141,5,1)\), \((161,5,1)\), \((175,7,1)\), \((201,5,1)\), \((217,7,1)\), \((221,5,1)\), \((259,7,1)\) 
- \(\lambda=2\):n \((16,3,2)\), \((19,4,2)\), \((22,4,2)\), \((28,3,2)\), \((31,4,2)\), \((31,5,2)\), \((34,4,2)\), \((35,5,2)\), \((40,3,2)\), \((43,4,2)\), \((43,7,2)\), \((46,4,2)\), \((46,6,2)\), \((51,5,2)\), \((61,6,2)\), \((64,7,2)\), \((71,5,2)\), \((75,5,2)\), \((85,7,2)\), \((85,8,2)\), \((153,9,2)\), \((181,10,2)\) 
- \(\lambda=3\):n \((21,4,3)\), \((21,6,3)\), \((29,7,3)\), \((41,6,3)\), \((43,7,3)\), \((45,12,3)\), \((49,9,3)\), \((51,6,3)\), \((57,7,3)\), \((61,6,3)\), \((61,10,3)\), \((71,7,3)\), \((85,7,3)\), \((97,9,3)\), \((121,10,3)\) 
- \(\lambda=4\):n \((22,7,4)\), \((29,8,4)\), \((43,8,4)\), \((46,10,4)\), \((55,9,4)\), \((67,12,4)\), \((71,8,4)\) 
- \(\lambda=5\):n \((13,5,5)\), \((17,5,5)\), \((21,6,5)\), \((22,6,5)\), \((28,6,5)\), \((33,5,5)\), \((33,6,5)\), \((37,10,5)\), \((39,6,5)\), \((45,11,5)\), \((46,10,5)\), \((55,10,5)\), \((67,11,5)\), \((73,10,5)\) 
- \(\lambda=6\):n \((11,4,6)\), \((15,4,6)\), \((15,5,6)\), \((29,8,6)\), \((46,10,6)\), \((53,13,6)\), \((67,12,6)\) 
- \(\lambda=7\):n \((25,7,7)\), \((53,14,7)\), \((61,15,7)\) 
- \(\lambda=8\):n \((22,8,8)\), \((34,12,8)\), \((133,33,8)\) 
- \(\lambda=9\):n \((21,10,9)\) 
- \(\lambda=10\):n \((34,12,10)\), \((43,15,10)\), \((49,21,10)\) 
- \(\lambda=12\):n \((22,8,12)\) 
- \(\lambda=14\):n \((21,8,14)\) 
- \(\lambda=24\):n \((320,88,24)\) 
- \(\lambda=30\):n \((144,66,30)\) 
- \(\lambda=56\):n \((901,225,56)\) 
 
 
- \((v,k,\lambda)\)-difference matrices:
- \(\lambda=1\):n \((12,6,1)\), \((21,6,1)\), \((24,8,1)\), \((28,6,1)\), \((33,6,1)\), \((35,6,1)\), \((36,9,1)\), \((39,6,1)\), \((44,6,1)\), \((45,7,1)\), \((48,9,1)\), \((51,6,1)\), \((52,6,1)\), \((55,7,1)\), \((56,8,1)\), \((57,8,1)\), \((60,6,1)\), \((75,8,1)\), \((273,17,1)\), \((993,32,1)\) 
 
 
- \((n,k;\lambda,\mu;u)\)-quasi-difference matrices:
- \((19,6;1,1;1)\), \((21,5;1,1;1)\), \((21,6;1,1;5)\), \((25,6;1,1;5)\), \((33,6;1,1;1)\), \((35,7;1,1;7)\), \((37,6;1,1;1)\), \((45,7;1,1;9)\), \((54,7;1,1;8)\), \((57,9;1,1;8)\) 
 
- \((q,k)\) evenly distributed sets
- \(k = 4\): \(13\), \(25\), \(37\), \(49\), \(61\), \(73\), \(97\), \(109\), \(121\), \(157\), \(169\), \(181\), \(193\), \(229\), \(241\), \(277\), \(289\), \(313\), \(337\), \(349\), \(361\), \(373\), \(397\), \(409\), \(421\), \(433\), \(457\), \(529\), \(541\), \(577\), \(601\), \(613\), \(625\), \(661\), \(673\), \(709\), \(733\), \(757\), \(769\), \(829\), \(841\), \(853\), \(877\), \(937\), \(961\), \(997\), \(1009\), \(1021\), \(1033\), \(1069\), \(1093\), \(1117\), \(1129\), \(1153\), \(1201\), \(1213\), \(1237\), \(1249\), \(1297\), \(1321\), \(1369\), \(1381\), \(1429\), \(1453\), \(1489\), \(1549\), \(1597\), \(1609\), \(1621\), \(1657\), \(1669\), \(1681\), \(1693\), \(1741\), \(1753\), \(1777\), \(1789\), \(1801\), \(1849\), \(1861\), \(1873\), \(1933\), \(1993\), \(2017\), \(2029\), \(2053\), \(2089\), \(2113\), \(2137\), \(2161\), \(2197\), \(2209\), \(2221\), \(2269\), \(2281\), \(2293\), \(2341\), \(2377\), \(2389\), \(2401\), \(2437\), \(2473\), \(2521\), \(2557\), \(2593\), \(2617\), \(2677\), \(2689\), \(2713\), \(2749\), \(2797\), \(2809\) 
- \(k = 5\): \(41\), \(61\), \(101\), \(121\), \(181\), \(241\), \(281\), \(361\), \(401\), \(421\), \(461\), \(521\), \(541\), \(601\), \(641\), \(661\), \(701\), \(761\), \(821\), \(841\), \(881\), \(941\), \(961\), \(1021\), \(1061\), \(1181\), \(1201\), \(1301\), \(1321\), \(1361\), \(1381\), \(1481\), \(1601\), \(1621\), \(1681\), \(1721\), \(1741\), \(1801\), \(1861\), \(1901\) 
- \(k = 6\): \(31\), \(151\), \(181\), \(211\), \(241\), \(271\), \(331\), \(361\), \(421\), \(541\), \(571\), \(601\), \(631\), \(661\), \(691\), \(751\), \(811\), \(841\), \(961\), \(991\), \(1021\), \(1051\), \(1171\), \(1201\), \(1231\), \(1291\), \(1321\), \(1381\), \(1471\), \(1531\), \(1621\), \(1681\), \(1741\), \(1801\), \(1831\), \(1861\), \(1951\) 
- \(k = 7\): \(169\), \(337\), \(379\), \(421\), \(463\), \(547\), \(631\), \(673\), \(757\), \(841\), \(883\), \(967\), \(1009\), \(1051\), \(1093\), \(1303\), \(1429\), \(1471\), \(1597\), \(1681\), \(1723\), \(1849\), \(1933\) 
- \(k = 8\): \(449\), \(617\), \(673\), \(729\), \(841\), \(953\), \(1009\), \(1289\), \(1681\), \(1849\) 
- \(k = 9\): \(73\), \(433\), \(937\), \(1009\), \(1153\), \(1297\), \(1369\), \(1657\), \(1801\), \(1873\) 
- \(k = 10\): \(1171\), \(1531\), \(1621\), \(1801\) 
 
 
REFERENCES:
Handbook of Combinatorial Designs (2ed) Charles Colbourn, Jeffrey Dinitz Chapman & Hall/CRC 2012
M. Aschbacher, On collineation groups of symmetric block designs. J. Combinatorial Theory Ser. A 11 (1971), pp. 272–281.
Functions¶
- sage.combinat.designs.database.BIBD_106_6_1()[source]¶
- Return a (106,6,1)-BIBD. - This constructions appears in II.3.32 from [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_106_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(106, BIBD_106_6_1()) (106,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_106_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(106), BIBD_106_6_1()) (106,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_111_6_1()[source]¶
- Return a (111,6,1)-BIBD. - This constructions appears in II.3.32 from [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_111_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(111, BIBD_111_6_1()) (111,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_111_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(111), BIBD_111_6_1()) (111,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_126_6_1()[source]¶
- Return a (126,6,1)-BIBD. - This constructions appears in VI.16.92 from [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_126_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(126, BIBD_126_6_1()) (126,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_126_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(126), BIBD_126_6_1()) (126,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_136_6_1()[source]¶
- Return a (136,6,1)-BIBD. - This constructions appears in II.3.32 from [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_136_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(136, BIBD_136_6_1()) (136,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_136_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(136), BIBD_136_6_1()) (136,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_141_6_1()[source]¶
- Return a (141,6,1)-BIBD. - This constructions appears in II.3.32 from [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_141_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(141, BIBD_141_6_1()) (141,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_141_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(141), BIBD_141_6_1()) (141,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_171_6_1()[source]¶
- Return a (171,6,1)-BIBD. - This constructions appears in II.3.32 from [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_171_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(171, BIBD_171_6_1()) (171,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_171_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(171), BIBD_171_6_1()) (171,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_196_6_1()[source]¶
- Return a (196,6,1)-BIBD. - This constructions appears in II.3.32 from [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_196_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(196, BIBD_196_6_1()) (196,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_196_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(196), BIBD_196_6_1()) (196,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_201_6_1()[source]¶
- Return a (201,6,1)-BIBD. - This constructions appears in II.3.32 from [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_201_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(201, BIBD_201_6_1()) (201,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_201_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(201), BIBD_201_6_1()) (201,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_45_9_8(from_code=False)[source]¶
- Return a \((45,9,1)\)-BIBD. - This BIBD is obtained from the codewords of minimal weight in the - ExtendedQuadraticResidueCode()of length 48. This construction appears in VII.11.2 from [DesignHandbook], which cites [HT95].- INPUT: - from_code– boolean; whether to build the design from hardcoded data (default) or from the code object (much longer)
 - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_45_9_8 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: B = BalancedIncompleteBlockDesign(45, BIBD_45_9_8(), lambd=8); B (45,9,8)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_45_9_8 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> B = BalancedIncompleteBlockDesign(Integer(45), BIBD_45_9_8(), lambd=Integer(8)); B (45,9,8)-Balanced Incomplete Block Design - REFERENCE: [HT95]- W. Huffman and V. Tonchev, The existence of extremal self-dual \([50, 25, 10]\) codes and quasi-symmetric \(2-(49, 9, 6)\) designs, Designs, Codes and Cryptography September 1995, Volume 6, Issue 2, pp 97-106 
- sage.combinat.designs.database.BIBD_56_11_2()[source]¶
- Return a symmetric \((56,11,2)\)-BIBD. - The construction implemented is given in [Hall71]. - Note - A symmetric \((v,k,\lambda)\) BIBD is a \((v,k,\lambda)\) BIBD with \(v\) blocks. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_56_11_2 sage: D = IncidenceStructure(BIBD_56_11_2()) # needs sage.libs.gap sage: D.is_t_design(t=2, v=56, k=11, l=2) # needs sage.libs.gap True 
- sage.combinat.designs.database.BIBD_66_6_1()[source]¶
- Return a (66,6,1)-BIBD. - This BIBD was obtained from La Jolla covering repository (https://dmgordon.org/cover) where it is attributed to Colin Barker. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_66_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(66, BIBD_66_6_1()) (66,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_66_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(66), BIBD_66_6_1()) (66,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_76_6_1()[source]¶
- Return a (76,6,1)-BIBD. - This BIBD was obtained from La Jolla covering repository (https://dmgordon.org/cover) where it is attributed to Colin Barker. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_76_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(76, BIBD_76_6_1()) (76,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_76_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(76), BIBD_76_6_1()) (76,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.BIBD_79_13_2()[source]¶
- Return a symmetric \((79,13,2)\)-BIBD. - The construction implemented is the one described in [Aschbacher71]. A typo in that paper was corrected in [Hall71]. - Note - A symmetric \((v,k,\lambda)\) BIBD is a \((v,k,\lambda)\) BIBD with \(v\) blocks. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_79_13_2 sage: D = IncidenceStructure(BIBD_79_13_2()) # needs sage.libs.gap sage: D.is_t_design(t=2, v=79, k=13, l=2) # needs sage.libs.gap True 
- sage.combinat.designs.database.BIBD_96_6_1()[source]¶
- Return a (96,6,1)-BIBD. - This BIBD was obtained from La Jolla covering repository (https://dmgordon.org/cover) where it is attributed to Colin Barker. - EXAMPLES: - sage: from sage.combinat.designs.database import BIBD_96_6_1 sage: from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign sage: BalancedIncompleteBlockDesign(96, BIBD_96_6_1()) (96,6,1)-Balanced Incomplete Block Design - >>> from sage.all import * >>> from sage.combinat.designs.database import BIBD_96_6_1 >>> from sage.combinat.designs.bibd import BalancedIncompleteBlockDesign >>> BalancedIncompleteBlockDesign(Integer(96), BIBD_96_6_1()) (96,6,1)-Balanced Incomplete Block Design 
- sage.combinat.designs.database.DM_12_6_1()[source]¶
- Return a \((12,6,1)\)-difference matrix as built in [Hanani75]. - This design is Lemma 3.21 from [Hanani75]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_12_6_1 sage: G,M = DM_12_6_1() sage: is_difference_matrix(M,G,6,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_12_6_1 >>> G,M = DM_12_6_1() >>> is_difference_matrix(M,G,Integer(6),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(12,6) - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(12),Integer(6)) - REFERENCES: [Hanani75] (1,2)- Haim Hanani, Balanced incomplete block designs and related designs, doi:10.1016/0012-365X(75)90040-0, Discrete Mathematics, Volume 11, Issue 3, 1975, Pages 255-369. 
- sage.combinat.designs.database.DM_21_6_1()[source]¶
- Return a \((21,6,1)\)-difference matrix. - As explained in the Handbook III.3.50 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_21_6_1 sage: G,M = DM_21_6_1() sage: is_difference_matrix(M,G,6,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_21_6_1 >>> G,M = DM_21_6_1() >>> is_difference_matrix(M,G,Integer(6),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(21,6) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(21),Integer(6)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_24_8_1()[source]¶
- Return a \((24,8,1)\)-difference matrix. - As explained in the Handbook III.3.52 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_24_8_1 sage: G,M = DM_24_8_1() sage: is_difference_matrix(M,G,8,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_24_8_1 >>> G,M = DM_24_8_1() >>> is_difference_matrix(M,G,Integer(8),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(24,8) - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(24),Integer(8)) 
- sage.combinat.designs.database.DM_273_17_1()[source]¶
- Return a \((273,17,1)\)-difference matrix. - Given by Julian R. Abel. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_273_17_1 sage: G,M = DM_273_17_1() # needs sage.schemes sage: is_difference_matrix(M,G,17,1) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_273_17_1 >>> G,M = DM_273_17_1() # needs sage.schemes >>> is_difference_matrix(M,G,Integer(17),Integer(1)) # needs sage.schemes True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(273,17) # needs sage.schemes - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(273),Integer(17)) # needs sage.schemes 
- sage.combinat.designs.database.DM_28_6_1()[source]¶
- Return a \((28,6,1)\)-difference matrix. - As explained in the Handbook III.3.54 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_28_6_1 sage: G,M = DM_28_6_1() # needs sage.modules sage: is_difference_matrix(M,G,6,1) # needs sage.modules True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_28_6_1 >>> G,M = DM_28_6_1() # needs sage.modules >>> is_difference_matrix(M,G,Integer(6),Integer(1)) # needs sage.modules True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(28,6) # needs sage.modules - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(28),Integer(6)) # needs sage.modules 
- sage.combinat.designs.database.DM_33_6_1()[source]¶
- Return a \((33,6,1)\)-difference matrix. - As explained in the Handbook III.3.56 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_33_6_1 sage: G,M = DM_33_6_1() sage: is_difference_matrix(M,G,6,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_33_6_1 >>> G,M = DM_33_6_1() >>> is_difference_matrix(M,G,Integer(6),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(33,6) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(33),Integer(6)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_35_6_1()[source]¶
- Return a \((35,6,1)\)-difference matrix. - As explained in the Handbook III.3.58 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_35_6_1 sage: G,M = DM_35_6_1() sage: is_difference_matrix(M,G,6,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_35_6_1 >>> G,M = DM_35_6_1() >>> is_difference_matrix(M,G,Integer(6),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(35,6) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(35),Integer(6)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_36_9_1()[source]¶
- Return a \((36,9,1)\)-difference matrix. - As explained in the Handbook III.3.59 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_36_9_1 sage: G,M = DM_36_9_1() # needs sage.modules sage: is_difference_matrix(M,G,9,1) # needs sage.modules True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_36_9_1 >>> G,M = DM_36_9_1() # needs sage.modules >>> is_difference_matrix(M,G,Integer(9),Integer(1)) # needs sage.modules True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(36,9) # needs sage.modules - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(36),Integer(9)) # needs sage.modules 
- sage.combinat.designs.database.DM_39_6_1()[source]¶
- Return a \((39,6,1)\)-difference matrix. - As explained in the Handbook III.3.61 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_39_6_1 sage: G,M = DM_39_6_1() sage: is_difference_matrix(M,G,6,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_39_6_1 >>> G,M = DM_39_6_1() >>> is_difference_matrix(M,G,Integer(6),Integer(1)) True - The design is available from the general constructor: - sage: designs.difference_matrix(39,6,existence=True) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> designs.difference_matrix(Integer(39),Integer(6),existence=True) # needs sage.rings.finite_rings True 
- sage.combinat.designs.database.DM_44_6_1()[source]¶
- Return a \((44,6,1)\)-difference matrix. - As explained in the Handbook III.3.64 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_44_6_1 sage: G,M = DM_44_6_1() sage: is_difference_matrix(M,G,6,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_44_6_1 >>> G,M = DM_44_6_1() >>> is_difference_matrix(M,G,Integer(6),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(44,6) - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(44),Integer(6)) 
- sage.combinat.designs.database.DM_45_7_1()[source]¶
- Return a \((45,7,1)\)-difference matrix. - As explained in the Handbook III.3.65 [DesignHandbook]. - … whose description contained a very deadly typo, kindly fixed by Julian R. Abel. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_45_7_1 sage: G,M = DM_45_7_1() sage: is_difference_matrix(M,G,7,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_45_7_1 >>> G,M = DM_45_7_1() >>> is_difference_matrix(M,G,Integer(7),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(45,7) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(45),Integer(7)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_48_9_1()[source]¶
- Return a \((48,9,1)\)-difference matrix. - As explained in the Handbook III.3.67 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_48_9_1 sage: G,M = DM_48_9_1() # needs sage.rings.finite_rings sage: is_difference_matrix(M,G,9,1) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_48_9_1 >>> G,M = DM_48_9_1() # needs sage.rings.finite_rings >>> is_difference_matrix(M,G,Integer(9),Integer(1)) # needs sage.rings.finite_rings True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(48,9) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(48),Integer(9)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_51_6_1()[source]¶
- Return a \((51,6,1)\)-difference matrix. - As explained in the Handbook III.3.69 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_51_6_1 sage: G,M = DM_51_6_1() sage: is_difference_matrix(M,G,6,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_51_6_1 >>> G,M = DM_51_6_1() >>> is_difference_matrix(M,G,Integer(6),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(51,6) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(51),Integer(6)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_52_6_1()[source]¶
- Return a \((52,6,1)\)-difference matrix. - As explained in the Handbook III.3.70 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_52_6_1 sage: G,M = DM_52_6_1() # needs sage.rings.finite_rings sage: is_difference_matrix(M,G,6,1) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_52_6_1 >>> G,M = DM_52_6_1() # needs sage.rings.finite_rings >>> is_difference_matrix(M,G,Integer(6),Integer(1)) # needs sage.rings.finite_rings True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(52,6) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(52),Integer(6)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_55_7_1()[source]¶
- Return a \((55,7,1)\)-difference matrix. - As explained in the Handbook III.3.72 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_55_7_1 sage: G,M = DM_55_7_1() sage: is_difference_matrix(M,G,7,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_55_7_1 >>> G,M = DM_55_7_1() >>> is_difference_matrix(M,G,Integer(7),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(55,7) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(55),Integer(7)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_56_8_1()[source]¶
- Return a \((56,8,1)\)-difference matrix. - As explained in the Handbook III.3.73 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_56_8_1 sage: G,M = DM_56_8_1() # needs sage.rings.finite_rings sage: is_difference_matrix(M,G,8,1) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_56_8_1 >>> G,M = DM_56_8_1() # needs sage.rings.finite_rings >>> is_difference_matrix(M,G,Integer(8),Integer(1)) # needs sage.rings.finite_rings True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(56,8) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(56),Integer(8)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_57_8_1()[source]¶
- Return a \((57,8,1)\)-difference matrix. - Given by Julian R. Abel. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_57_8_1 sage: G,M = DM_57_8_1() # needs sage.rings.finite_rings sage.schemes sage: is_difference_matrix(M,G,8,1) # needs sage.rings.finite_rings sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_57_8_1 >>> G,M = DM_57_8_1() # needs sage.rings.finite_rings sage.schemes >>> is_difference_matrix(M,G,Integer(8),Integer(1)) # needs sage.rings.finite_rings sage.schemes True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(57,8) # needs sage.rings.finite_rings sage.schemes - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(57),Integer(8)) # needs sage.rings.finite_rings sage.schemes 
- sage.combinat.designs.database.DM_60_6_1()[source]¶
- Return a \((60,6,1)\)-difference matrix. - As explained in [JulianAbel13]. - REFERENCES: - http://onlinelibrary.wiley.com/doi/10.1002/jcd.21384/abstract - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_60_6_1 sage: G,M = DM_60_6_1() sage: is_difference_matrix(M,G,6,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_60_6_1 >>> G,M = DM_60_6_1() >>> is_difference_matrix(M,G,Integer(6),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(60,6) - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(60),Integer(6)) 
- sage.combinat.designs.database.DM_75_8_1()[source]¶
- Return a \((75,8,1)\)-difference matrix. - As explained in the Handbook III.3.75 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_75_8_1 sage: G,M = DM_75_8_1() sage: is_difference_matrix(M,G,8,1) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_75_8_1 >>> G,M = DM_75_8_1() >>> is_difference_matrix(M,G,Integer(8),Integer(1)) True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(75,8) # needs sage.rings.finite_rings - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(75),Integer(8)) # needs sage.rings.finite_rings 
- sage.combinat.designs.database.DM_993_32_1()[source]¶
- Return a \((993,32,1)\)-difference matrix. - Given by Julian R. Abel. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_difference_matrix sage: from sage.combinat.designs.database import DM_993_32_1 sage: G,M = DM_993_32_1() # needs sage.schemes sage: is_difference_matrix(M,G,32,1) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_difference_matrix >>> from sage.combinat.designs.database import DM_993_32_1 >>> G,M = DM_993_32_1() # needs sage.schemes >>> is_difference_matrix(M,G,Integer(32),Integer(1)) # needs sage.schemes True - Can be obtained from the constructor: - sage: _ = designs.difference_matrix(993,32) # needs sage.schemes - >>> from sage.all import * >>> _ = designs.difference_matrix(Integer(993),Integer(32)) # needs sage.schemes 
- sage.combinat.designs.database.HigmanSimsDesign()[source]¶
- Return the Higman-Sims designs, which is a \((176, 50, 14)\)-BIBD. - This design is built from a from the - WittDesign\(W\) on 24 points. We define two points \(a,b\), and consider:- The collection \(W_a\) of all blocks of \(W\) containing \(a\) but not containing \(b\). 
- The collection \(W_b\) of all blocks of \(W\) containing \(b\) but not containing \(a\). 
 - The design is then obtained from the incidence structure produced by the blocks \(A\in W_a\) and \(B\in W_b\) whose intersection has cardinality 2. This construction, due to M.Smith, can be found in [KY04] or in 10.A.(v) of [BL1984]. - EXAMPLES: - sage: H = designs.HigmanSimsDesign(); H # optional - gap_package_design Incidence structure with 176 points and 176 blocks sage: H.is_t_design(return_parameters=1) # optional - gap_package_design (True, (2, 176, 50, 14)) - >>> from sage.all import * >>> H = designs.HigmanSimsDesign(); H # optional - gap_package_design Incidence structure with 176 points and 176 blocks >>> H.is_t_design(return_parameters=Integer(1)) # optional - gap_package_design (True, (2, 176, 50, 14)) - Make sure that the automorphism group of this designs is isomorphic to the automorphism group of the - HigmanSimsGraph(). Note that the first of those permutation groups acts on 176 points, while the second acts on 100:- sage: gH = H.automorphism_group() # optional - gap_package_design sage: gG = graphs.HigmanSimsGraph().automorphism_group() # optional - gap_package_design sage: gG.is_isomorphic(gG) # long time, optional - gap_package_design True - >>> from sage.all import * >>> gH = H.automorphism_group() # optional - gap_package_design >>> gG = graphs.HigmanSimsGraph().automorphism_group() # optional - gap_package_design >>> gG.is_isomorphic(gG) # long time, optional - gap_package_design True - REFERENCE: [KY04]- S. Klee and L. Yates, Tight Subdesigns of the Higman-Sims Design, Rose-Hulman Undergraduate Math. J 5.2 (2004). https://www.rose-hulman.edu/mathjournal/archives/2004/vol5-n2/paper9/v5n2-9pd.pdf 
- sage.combinat.designs.database.MOLS_10_2()[source]¶
- Return a pair of MOLS of order 10. - Data obtained from http://www.cecm.sfu.ca/organics/papers/lam/paper/html/POLS10/POLS10.html - EXAMPLES: - sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_10_2 sage: MOLS = MOLS_10_2() # needs sage.modules sage: print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True - >>> from sage.all import * >>> from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares >>> from sage.combinat.designs.database import MOLS_10_2 >>> MOLS = MOLS_10_2() # needs sage.modules >>> print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(2,10) True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(2),Integer(10)) True 
- sage.combinat.designs.database.MOLS_12_5()[source]¶
- Return 5 MOLS of order 12. - These MOLS have been found by Brendan McKay. - EXAMPLES: - sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_12_5 sage: MOLS = MOLS_12_5() # needs sage.modules sage: print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True - >>> from sage.all import * >>> from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares >>> from sage.combinat.designs.database import MOLS_12_5 >>> MOLS = MOLS_12_5() # needs sage.modules >>> print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True 
- sage.combinat.designs.database.MOLS_14_4()[source]¶
- Return four MOLS of order 14. - These MOLS were shared by Ian Wanless. The first proof of existence was given in [Todorov12]. - EXAMPLES: - sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_14_4 sage: MOLS = MOLS_14_4() # needs sage.modules sage: print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True - >>> from sage.all import * >>> from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares >>> from sage.combinat.designs.database import MOLS_14_4 >>> MOLS = MOLS_14_4() # needs sage.modules >>> print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(4,14) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(4),Integer(14)) # needs sage.schemes True - REFERENCE: [Todorov12]- D.T. Todorov, Four mutually orthogonal Latin squares of order 14, Journal of Combinatorial Designs 2012, vol.20 n.8 pp.363-367 
- sage.combinat.designs.database.MOLS_15_4()[source]¶
- Return 4 MOLS of order 15. - These MOLS were shared by Ian Wanless. - EXAMPLES: - sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_15_4 sage: MOLS = MOLS_15_4() # needs sage.modules sage: print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True - >>> from sage.all import * >>> from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares >>> from sage.combinat.designs.database import MOLS_15_4 >>> MOLS = MOLS_15_4() # needs sage.modules >>> print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(4,15) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(4),Integer(15)) # needs sage.schemes True 
- sage.combinat.designs.database.MOLS_18_3()[source]¶
- Return 3 MOLS of order 18. - These MOLS were shared by Ian Wanless. - EXAMPLES: - sage: from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares sage: from sage.combinat.designs.database import MOLS_18_3 sage: MOLS = MOLS_18_3() # needs sage.modules sage: print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True - >>> from sage.all import * >>> from sage.combinat.designs.latin_squares import are_mutually_orthogonal_latin_squares >>> from sage.combinat.designs.database import MOLS_18_3 >>> MOLS = MOLS_18_3() # needs sage.modules >>> print(are_mutually_orthogonal_latin_squares(MOLS)) # needs sage.modules True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(3,18) True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(3),Integer(18)) True 
- sage.combinat.designs.database.OA_10_1620()[source]¶
- Return an OA(10,1620). - This is obtained through the generalized Brouwer-van Rees construction. Indeed, \(1620 = 144.11+(36=4.9)\) and there exists an \(OA(10,153) - OA(10,9)\). - Note - This function should be removed once - find_brouwer_van_rees_with_one_truncated_column()can handle all incomplete orthogonal arrays obtained through- incomplete_orthogonal_array().- EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_1620 sage: OA = OA_10_1620() # not tested -- ~7s sage: is_orthogonal_array(OA,10,1620,2) # not tested -- ~7s True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_10_1620 >>> OA = OA_10_1620() # not tested -- ~7s >>> is_orthogonal_array(OA,Integer(10),Integer(1620),Integer(2)) # not tested -- ~7s True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(10,1620) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(10),Integer(1620)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_10_205()[source]¶
- Return an \(OA(10,205)\). - Julian R. Abel shared the following construction, which originally appeared in Theorem 8.7 of [Greig99], and can in Lemmas 5.14-5.16 of [ColDin01]: - Consider a \(PG(2,4^2)\) containing a Baer subplane (i.e. a \(PG(2,4)\)) \(B\) and a point \(p\in B\). Among the \(4^2+1=17\) lines of \(PG(2,4^2)\) containing \(p\): - \(4+1=5\) lines intersect \(B\) on \(5\) points 
- \(4^2-4=12\) lines intersect \(B\) on \(1\) point 
 - As those lines are disjoint outside of \(B\) we can use them as groups to build a GDD on \(16^2+16+1-(4^4+4+1)=252\) points. By keeping only 9 lines of the second kind, however, we obtain a \((204,\{9,13,17\})\)-GDD of type 12^5.16^9. - We complete it into a PBD by adding a block \(g\cup \{204\}\) for each group \(g\). We then build an OA from this PBD using the fact that all blocks of size 9 are disjoint. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_205 sage: OA = OA_10_205() # needs sage.schemes sage: is_orthogonal_array(OA,10,205,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_10_205 >>> OA = OA_10_205() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(10),Integer(205),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(10,205) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(10),Integer(205)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_10_469()[source]¶
- Return an OA(10,469). - This construction appears in [Brouwer80]. It is based on the same technique used in - brouwer_separable_design().- Julian R. Abel’s instructions: - Brouwer notes that a cyclic \(PG(2,37)\) (or \((1407,38,1)\)-BIBD) can be obtained with a base block containing \(13,9,\) and \(16\) points in each residue class mod 3. Thus, by reducing the \(PG(2,37)\) to its points congruent to \(0 \pmod 3\) one obtains a \((469,\{9,13,16\})\)-PBD which consists in 3 symmetric designs, i.e. 469 blocks of size 9, 469 blocks of size 13, and 469 blocks of size 16. - For each block size \(s\), one can build a matrix with size \(s\times 469\) in which each block is a row, and such that each point of the PBD appears once per column. By multiplying a row of an \(OA(9,s)-s.OA(9,1)\) with the rows of the matrix one obtains a parallel class of a resolvable \(OA(9,469)\). - Add to this the parallel class of all blocks \((0,0,...),(1,1,...),...\) to obtain a resolvable \(OA(9,469)\) equivalent to an \(OA(10,469)\). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_469 sage: OA = OA_10_469() # long time # needs sage.schemes sage: is_orthogonal_array(OA,10,469,2) # long time # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_10_469 >>> OA = OA_10_469() # long time # needs sage.schemes >>> is_orthogonal_array(OA,Integer(10),Integer(469),Integer(2)) # long time # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(10,469) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(10),Integer(469)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_10_520()[source]¶
- Return an OA(10,520). - This design is built by the slightly more general construction - OA_520_plus_x().- EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_520 sage: OA = OA_10_520() # needs sage.schemes sage: is_orthogonal_array(OA,10,520,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_10_520 >>> OA = OA_10_520() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(10),Integer(520),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(10,520) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(10),Integer(520)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_10_796()[source]¶
- Return an OA(10,796). - Construction shared by Julian R. Abel, from [AC07]: - Truncate one block of a \(TD(17,47)\) to size \(13\), then add an extra point. Form a block on each group plus the extra point: we obtain a \((796, \{13,16,17,47,48\})\)-PBD in which only the extra point lies in more than one block of size \(48\) (and each other point lies in exactly 1 such block). - For each block \(B\) (of size \(k\) say) not containing the extra point, construct a \(TD(10, k) - k.TD(k,1)\) on \(I(10) X B\). For each block \(B\) (of size \(k=47\) or \(48\)) containing the extra point, construct a \(TD(10,k) - TD(k,1)\) on \(I(10) X B\), the size \(1\) hole being on \(I(10) X P\) where \(P\) is the extra point. Finally form \(1\) extra block of size \(10\) on \(I(10) X P\). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_10_796 sage: OA = OA_10_796() # needs sage.schemes sage: is_orthogonal_array(OA,10,796,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_10_796 >>> OA = OA_10_796() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(10),Integer(796),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(10,796) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(10),Integer(796)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_11_160()[source]¶
- Return an OA(11,160). - Published by Julian R. Abel in [Ab1995]. Uses the fact that \(160 = 2^5 \times 5\) is a product of a power of \(2\) and a prime number. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_160 sage: OA = OA_11_160() # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,11,160,2) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_11_160 >>> OA = OA_11_160() # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(11),Integer(160),Integer(2)) # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(11,160) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(11),Integer(160)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_11_185()[source]¶
- Return an OA(11,185). - The construction is given in [Greig99]. In Julian R. Abel’s words: - Start with a \(PG(2,16)\) with a \(7\) points Fano subplane; outside this plane there are \(7(17-3) = 98\) points on a line of the subplane and \(273-98-7 = 168\) other points. Greig notes that the subdesign consisting of these \(168\) points is a \((168, \{10,12\})-PBD\). Now add the \(17\) points of a line disjoint from this subdesign (e.g. a line of the Fano subplane). This line will intersect every line of the \(168\) point subdesign in \(1\) point. Thus the new line sizes are \(11\) and \(13\), plus a unique line of size \(17\), giving a \((185,\{11,13,17\}\)-PBD and an \(OA(11,185)\). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_185 sage: OA = OA_11_185() # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,11,185,2) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_11_185 >>> OA = OA_11_185() # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(11),Integer(185),Integer(2)) # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(11,185) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(11),Integer(185)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_11_254()[source]¶
- Return an OA(11,254). - This constructions appears in [Greig99]. - From a cyclic \(PG(2,19)\) whose base blocks contains 7,9, and 4 points in the congruence classes mod 3, build a \((254,{11,13,16})-PBD\) by ignoring the points of a congruence class. There exist \(OA(12,11),OA(12,13),OA(12,16)\), which gives the \(OA(11,254)\). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_254 sage: OA = OA_11_254() # needs sage.schemes sage: is_orthogonal_array(OA,11,254,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_11_254 >>> OA = OA_11_254() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(11),Integer(254),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(11,254) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(11),Integer(254)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_11_640()[source]¶
- Return an OA(11,640). - Published by Julian R. Abel in [Ab1995] (uses the fact that \(640=2^7 \times 5\) is the product of a power of \(2\) and a prime number). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_640 sage: OA = OA_11_640() # not tested (too long) # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,11,640,2) # not tested (too long) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_11_640 >>> OA = OA_11_640() # not tested (too long) # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(11),Integer(640),Integer(2)) # not tested (too long) # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(11,640) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(11),Integer(640)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_11_80()[source]¶
- Return an OA(11,80). - As explained in the Handbook III.3.76 [DesignHandbook]. Uses the fact that \(80 = 2^4 \times 5\) and that \(5\) is prime. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_11_80 sage: OA = OA_11_80() # needs sage.rings.finite_rings sage.schemes sage: is_orthogonal_array(OA,11,80,2) # needs sage.rings.finite_rings sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_11_80 >>> OA = OA_11_80() # needs sage.rings.finite_rings sage.schemes >>> is_orthogonal_array(OA,Integer(11),Integer(80),Integer(2)) # needs sage.rings.finite_rings sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(11,80) # needs sage.rings.finite_rings sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(11),Integer(80)) # needs sage.rings.finite_rings sage.schemes True 
- sage.combinat.designs.database.OA_12_522()[source]¶
- Return an OA(12,522). - This design is built by the slightly more general construction - OA_520_plus_x().- EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_12_522 sage: OA = OA_12_522() # needs sage.schemes sage: is_orthogonal_array(OA,12,522,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_12_522 >>> OA = OA_12_522() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(12),Integer(522),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(12,522) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(12),Integer(522)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_14_524()[source]¶
- Return an OA(14,524). - This design is built by the slightly more general construction - OA_520_plus_x().- EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_14_524 sage: OA = OA_14_524() # needs sage.schemes sage: is_orthogonal_array(OA,14,524,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_14_524 >>> OA = OA_14_524() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(14),Integer(524),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(14,524) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(14),Integer(524)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_15_112()[source]¶
- Return an OA(15,112). - Published by Julian R. Abel in [Ab1995]. Uses the fact that 112 = \(2^4 \times 7\) and that \(7\) is prime. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_15_112 sage: OA = OA_15_112() # needs sage.rings.finite_rings sage.schemes sage: is_orthogonal_array(OA,15,112,2) # needs sage.rings.finite_rings sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_15_112 >>> OA = OA_15_112() # needs sage.rings.finite_rings sage.schemes >>> is_orthogonal_array(OA,Integer(15),Integer(112),Integer(2)) # needs sage.rings.finite_rings sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(15,112) # needs sage.rings.finite_rings sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(15),Integer(112)) # needs sage.rings.finite_rings sage.schemes True 
- sage.combinat.designs.database.OA_15_224()[source]¶
- Return an OA(15,224). - Published by Julian R. Abel in [Ab1995] (uses the fact that \(224=2^5 \times 7\) is a product of a power of \(2\) and a prime number). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_15_224 sage: OA = OA_15_224() # not tested (too long) # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,15,224,2) # not tested (too long) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_15_224 >>> OA = OA_15_224() # not tested (too long) # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(15),Integer(224),Integer(2)) # not tested (too long) # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(15,224) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(15),Integer(224)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_15_896()[source]¶
- Return an OA(15,896). - Uses the fact that \(896 = 2^7 \times 7\) is the product of a power of \(2\) and a prime number. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_15_896 sage: OA = OA_15_896() # not tested (too long, ~2min) # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,15,896,2) # not tested (too long) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_15_896 >>> OA = OA_15_896() # not tested (too long, ~2min) # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(15),Integer(896),Integer(2)) # not tested (too long) # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(15,896) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(15),Integer(896)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_16_176()[source]¶
- Return an OA(16,176). - Published by Julian R. Abel in [Ab1995]. Uses the fact that \(176 = 2^4 \times 11\) is a product of a power of \(2\) and a prime number. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_16_176 sage: OA = OA_16_176() # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,16,176,2) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_16_176 >>> OA = OA_16_176() # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(16),Integer(176),Integer(2)) # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(16,176) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(16),Integer(176)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_16_208()[source]¶
- Return an OA(16,208). - Published by Julian R. Abel in [Ab1995]. Uses the fact that \(208 = 2^4 \times 13\) is a product of \(2\) and a prime number. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_16_208 sage: OA = OA_16_208() # not tested (too long) # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,16,208,2) # not tested (too long) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_16_208 >>> OA = OA_16_208() # not tested (too long) # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(16),Integer(208),Integer(2)) # not tested (too long) # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(16,208) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(16),Integer(208)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_17_560()[source]¶
- Return an OA(17,560). - This OA is built in Corollary 2.2 of [Thwarts]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_17_560 sage: OA = OA_17_560() # needs sage.rings.finite_rings sage.schemes sage: is_orthogonal_array(OA,17,560,2) # needs sage.rings.finite_rings sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_17_560 >>> OA = OA_17_560() # needs sage.rings.finite_rings sage.schemes >>> is_orthogonal_array(OA,Integer(17),Integer(560),Integer(2)) # needs sage.rings.finite_rings sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(17,560) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(17),Integer(560)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_20_352()[source]¶
- Return an OA(20,352). - Published by Julian R. Abel in [Ab1995] (uses the fact that \(352=2^5 \times 11\) is the product of a power of \(2\) and a prime number). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_20_352 sage: OA = OA_20_352() # not tested (~25s) # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,20,352,2) # not tested (~25s) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_20_352 >>> OA = OA_20_352() # not tested (~25s) # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(20),Integer(352),Integer(2)) # not tested (~25s) # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(20,352) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(20),Integer(352)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_20_416()[source]¶
- Return an OA(20,416). - Published by Julian R. Abel in [Ab1995] (uses the fact that \(416=2^5 \times 13\) is the product of a power of \(2\) and a prime number). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_20_416 sage: OA = OA_20_416() # not tested (~35s) # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,20,416,2) # not tested # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_20_416 >>> OA = OA_20_416() # not tested (~35s) # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(20),Integer(416),Integer(2)) # not tested # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(20,416) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(20),Integer(416)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_20_544()[source]¶
- Return an OA(20,544). - Published by Julian R. Abel in [Ab1995] (uses the fact that \(544=2^5 \times 17\) is the product of a power of \(2\) and a prime number). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_20_544 sage: OA = OA_20_544() # not tested (too long ~1mn) # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,20,544,2) # not tested # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_20_544 >>> OA = OA_20_544() # not tested (too long ~1mn) # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(20),Integer(544),Integer(2)) # not tested # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(20,544) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(20),Integer(544)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_25_1262()[source]¶
- Return an OA(25,1262). - The construction is given in [Greig99]. In Julian R. Abel’s words: - Start with a cyclic \(PG(2,43)\) or \((1893,44,1)\)-BIBD whose base block contains respectively \(12,13\) and \(19\) point in the residue classes mod 3. In the resulting BIBD, remove one of the three classes: the result is a \((1262, \{25, 31,32\})\)-PBD, from which the \(OA(25,1262)\) is obtained. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_25_1262 sage: OA = OA_25_1262() # not tested -- too long sage: is_orthogonal_array(OA,25,1262,2) # not tested -- too long True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_25_1262 >>> OA = OA_25_1262() # not tested -- too long >>> is_orthogonal_array(OA,Integer(25),Integer(1262),Integer(2)) # not tested -- too long True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(25,1262) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(25),Integer(1262)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_520_plus_x(x)[source]¶
- Return an \(OA(10+x,520+x)\). - The construction shared by Julian R. Abel works for - OA(10,520),- OA(12,522), and- OA(14,524).- Let \(n=520+x\) and \(k=10+x\). Build a \(TD(17,31)\). Remove \(8-x\) points contained in a common block, add a new point \(p\) and create a block \(g_i\cup \{p\}\) for every (possibly truncated) group \(g_i\). The result is a \((520+x,{9+x,16,17,31,32})-PBD\). Note that all blocks of size \(\geq 30\) only intersect on \(p\), and that the unique block \(B_9\) of size \(9\) intersects all blocks of size \(32\) on one point. Now: - Build an \(OA(k,16)-16.OA(k,16)\) for each block of size 16 
- Build an \(OA(k,17)-17.OA(k,17)\) for each block of size 17 
- Build an \(OA(k,31)-OA(k,1)\) for each block of size 31 (with the hole on \(p\)). 
- Build an \(OA(k,32)-2.OA(k,1)\) for each block \(B\) of size 32 (with the holes on \(p\) and \(B\cap B_9\)). 
- Build an \(OA(k,9)\) on \(B_9\). 
 - Only a row \([p,p,...]\) is missing from the \(OA(10+x,520+x)\) - This construction is used in - OA(10,520),- OA(12,522), and- OA(14,524).- EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_520_plus_x sage: OA = OA_520_plus_x(0) # not tested (already tested in OA_10_520) sage: is_orthogonal_array(OA,10,520,2) # not tested (already tested in OA_10_520) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_520_plus_x >>> OA = OA_520_plus_x(Integer(0)) # not tested (already tested in OA_10_520) >>> is_orthogonal_array(OA,Integer(10),Integer(520),Integer(2)) # not tested (already tested in OA_10_520) True 
- sage.combinat.designs.database.OA_7_18()[source]¶
- Return an OA(7,18). - Proved in [JulianAbel13]. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_7_18 sage: OA = OA_7_18() sage: is_orthogonal_array(OA,7,18,2) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_7_18 >>> OA = OA_7_18() >>> is_orthogonal_array(OA,Integer(7),Integer(18),Integer(2)) True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(7,18) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(7),Integer(18)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_7_66()[source]¶
- Return an OA(7,66). - Construction shared by Julian R. Abel. - EXAMPLES: - sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_7_66 sage: OA = OA_7_66() # needs sage.schemes sage: is_orthogonal_array(OA,7,66,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array >>> from sage.combinat.designs.database import OA_7_66 >>> OA = OA_7_66() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(7),Integer(66),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(7,66) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(7),Integer(66)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_7_68()[source]¶
- Return an OA(7,68). - Construction shared by Julian R. Abel. - EXAMPLES: - sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_7_68 sage: OA = OA_7_68() # needs sage.schemes sage: is_orthogonal_array(OA,7,68,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array >>> from sage.combinat.designs.database import OA_7_68 >>> OA = OA_7_68() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(7),Integer(68),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(7,68) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(7),Integer(68)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_7_74()[source]¶
- Return an OA(7,74). - Construction shared by Julian R. Abel. - EXAMPLES: - sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_7_74 sage: OA = OA_7_74() # needs sage.schemes sage: is_orthogonal_array(OA,7,74,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array >>> from sage.combinat.designs.database import OA_7_74 >>> OA = OA_7_74() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(7),Integer(74),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(7,74) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(7),Integer(74)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_8_69()[source]¶
- Return an OA(8,69). - Construction shared by Julian R. Abel. - EXAMPLES: - sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_8_69 sage: OA = OA_8_69() # needs sage.schemes sage: is_orthogonal_array(OA,8,69,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array >>> from sage.combinat.designs.database import OA_8_69 >>> OA = OA_8_69() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(8),Integer(69),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(8,69) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(8),Integer(69)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_8_76()[source]¶
- Return an OA(8,76). - Construction shared by Julian R. Abel. - EXAMPLES: - sage: from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array sage: from sage.combinat.designs.database import OA_8_76 sage: OA = OA_8_76() # needs sage.schemes sage: is_orthogonal_array(OA,8,76,2) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.orthogonal_arrays import is_orthogonal_array >>> from sage.combinat.designs.database import OA_8_76 >>> OA = OA_8_76() # needs sage.schemes >>> is_orthogonal_array(OA,Integer(8),Integer(76),Integer(2)) # needs sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(8,76) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(8),Integer(76)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_9_1078()[source]¶
- Return an OA(9,1078). - This is obtained through the generalized Brouwer-van Rees construction. Indeed, \(1078 = 89.11 + (99=9.11)\) and there exists an \(OA(9,100) - OA(9,11)\). - Note - This function should be removed once - find_brouwer_van_rees_with_one_truncated_column()can handle all incomplete orthogonal arrays obtained through- incomplete_orthogonal_array().- EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_1078 sage: OA = OA_9_1078() # not tested -- ~3s sage: is_orthogonal_array(OA,9,1078,2) # not tested -- ~3s True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_9_1078 >>> OA = OA_9_1078() # not tested -- ~3s >>> is_orthogonal_array(OA,Integer(9),Integer(1078),Integer(2)) # not tested -- ~3s True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(9,1078) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(9),Integer(1078)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_9_120()[source]¶
- Return an OA(9,120). - Construction shared by Julian R. Abel: - From a resolvable \((120,8,1)-BIBD\), one can obtain 7 \(MOLS(120)\) or a resolvable \(TD(8,120)\) by forming a resolvable \(TD(8,8) - 8.TD(8,1)\) on \(I_8 \times B\) for each block \(B\) in the BIBD. This gives a \(TD(8,120) - 120 TD(8,1)\) (which is resolvable as the BIBD is resolvable). - See also - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_120 sage: OA = OA_9_120() # needs sage.modules sage.schemes sage: is_orthogonal_array(OA,9,120,2) # needs sage.modules sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_9_120 >>> OA = OA_9_120() # needs sage.modules sage.schemes >>> is_orthogonal_array(OA,Integer(9),Integer(120),Integer(2)) # needs sage.modules sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(9,120) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(9),Integer(120)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_9_135()[source]¶
- Return an OA(9,135). - Construction shared by Julian R. Abel: - This design can be built by Wilson’s method (\(135 = 8.16 + 7\)) applied to an Orthogonal Array \(OA(9+7,16)\) with 7 groups truncated to size 1 in such a way that a block contain 0, 1 or 3 points of the truncated groups. - This is possible, because \(PG(2,2)\) (the projective plane over \(GF(2)\)) is a subdesign in \(PG(2,16)\) (the projective plane over \(GF(16)\)); in a cyclic \(PG(2,16)\) or \(BIBD(273,17,1)\) the points \(\equiv 0 \pmod{39}\) form such a subdesign (note that \(273=16^2 + 16 +1\) and \(273 = 39 \times 7\) and \(7 = 2^2 + 2 + 1\)). - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_135 sage: OA = OA_9_135() # needs sage.rings.finite_rings sage.schemes sage: is_orthogonal_array(OA,9,135,2) # needs sage.rings.finite_rings sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_9_135 >>> OA = OA_9_135() # needs sage.rings.finite_rings sage.schemes >>> is_orthogonal_array(OA,Integer(9),Integer(135),Integer(2)) # needs sage.rings.finite_rings sage.schemes True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(9,135) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(9),Integer(135)) # needs sage.schemes True - As this orthogonal array requires a \((273,17,1)\) cyclic difference set, we check that it is available: - sage: G,D = designs.difference_family(273,17,1); G # needs sage.libs.pari Ring of integers modulo 273 - >>> from sage.all import * >>> G,D = designs.difference_family(Integer(273),Integer(17),Integer(1)); G # needs sage.libs.pari Ring of integers modulo 273 
- sage.combinat.designs.database.OA_9_1612()[source]¶
- Return an OA(9,1612). - This is obtained through the generalized Brouwer-van Rees construction. Indeed, \(1612 = 89.17 + (99=9.11)\) and there exists an \(OA(9,100) - OA(9,11)\). - Note - This function should be removed once - find_brouwer_van_rees_with_one_truncated_column()can handle all incomplete orthogonal arrays obtained through- incomplete_orthogonal_array().- EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_1612 sage: OA = OA_9_1612() # not tested -- ~6s sage: is_orthogonal_array(OA,9,1612,2) # not tested -- ~6s True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_9_1612 >>> OA = OA_9_1612() # not tested -- ~6s >>> is_orthogonal_array(OA,Integer(9),Integer(1612),Integer(2)) # not tested -- ~6s True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(9,1612) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(9),Integer(1612)) # needs sage.schemes True 
- sage.combinat.designs.database.OA_9_40()[source]¶
- Return an OA(9,40). - As explained in the Handbook III.3.62 [DesignHandbook]. Uses the fact that \(40 = 2^3 \times 5\) and that \(5\) is prime. - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array sage: from sage.combinat.designs.database import OA_9_40 sage: OA = OA_9_40() # needs sage.rings.finite_rings sage: is_orthogonal_array(OA,9,40,2) # needs sage.rings.finite_rings True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_orthogonal_array >>> from sage.combinat.designs.database import OA_9_40 >>> OA = OA_9_40() # needs sage.rings.finite_rings >>> is_orthogonal_array(OA,Integer(9),Integer(40),Integer(2)) # needs sage.rings.finite_rings True - The design is available from the general constructor: - sage: designs.orthogonal_arrays.is_available(9,40) # needs sage.schemes True - >>> from sage.all import * >>> designs.orthogonal_arrays.is_available(Integer(9),Integer(40)) # needs sage.schemes True 
- sage.combinat.designs.database.QDM_19_6_1_1_1()[source]¶
- Return a \((19,6;1,1;1)\)-quasi-difference matrix. - Used to build an \(OA(6,20)\) - Given in the Handbook III.3.49 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_19_6_1_1_1 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_19_6_1_1_1() sage: is_quasi_difference_matrix(M,G,6,1,1,1) True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_19_6_1_1_1 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_19_6_1_1_1() >>> is_quasi_difference_matrix(M,G,Integer(6),Integer(1),Integer(1),Integer(1)) True 
- sage.combinat.designs.database.QDM_21_5_1_1_1()[source]¶
- Return a \((21,5;1,1;1)\)-quasi-difference matrix. - Used to build an \(OA(5,22)\) - Given in the Handbook III.3.51 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_21_5_1_1_1 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_21_5_1_1_1() sage: is_quasi_difference_matrix(M,G,5,1,1,1) True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_21_5_1_1_1 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_21_5_1_1_1() >>> is_quasi_difference_matrix(M,G,Integer(5),Integer(1),Integer(1),Integer(1)) True 
- sage.combinat.designs.database.QDM_21_6_1_1_5()[source]¶
- Return a \((21,6;1,1;5)\)-quasi-difference matrix. - Used to build an \(OA(6,26)\) - Given in the Handbook III.3.53 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_21_6_1_1_5 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_21_6_1_1_5() sage: is_quasi_difference_matrix(M,G,6,1,1,5) True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_21_6_1_1_5 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_21_6_1_1_5() >>> is_quasi_difference_matrix(M,G,Integer(6),Integer(1),Integer(1),Integer(5)) True 
- sage.combinat.designs.database.QDM_25_6_1_1_5()[source]¶
- Return a \((25,6;1,1;5)\)-quasi-difference matrix. - Used to build an \(OA(6,30)\) - Given in the Handbook III.3.55 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_25_6_1_1_5 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_25_6_1_1_5() # needs sage.modules sage: is_quasi_difference_matrix(M,G,6,1,1,5) # needs sage.modules True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_25_6_1_1_5 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_25_6_1_1_5() # needs sage.modules >>> is_quasi_difference_matrix(M,G,Integer(6),Integer(1),Integer(1),Integer(5)) # needs sage.modules True 
- sage.combinat.designs.database.QDM_33_6_1_1_1()[source]¶
- Return a \((33,6;1,1;1)\)-quasi-difference matrix. - Used to build an \(OA(6,34)\) - Given in the Handbook III.3.57 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_33_6_1_1_1 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_33_6_1_1_1() sage: is_quasi_difference_matrix(M,G,6,1,1,1) True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_33_6_1_1_1 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_33_6_1_1_1() >>> is_quasi_difference_matrix(M,G,Integer(6),Integer(1),Integer(1),Integer(1)) True 
- sage.combinat.designs.database.QDM_35_7_1_1_7()[source]¶
- Return a \((35,7;1,1;7)\)-quasi-difference matrix. - Used to build an \(OA(7,42)\) - As explained in the Handbook III.3.63 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_35_7_1_1_7 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_35_7_1_1_7() sage: is_quasi_difference_matrix(M,G,7,1,1,7) True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_35_7_1_1_7 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_35_7_1_1_7() >>> is_quasi_difference_matrix(M,G,Integer(7),Integer(1),Integer(1),Integer(7)) True 
- sage.combinat.designs.database.QDM_37_6_1_1_1()[source]¶
- Return a \((37,6;1,1;1)\)-quasi-difference matrix. - Used to build an \(OA(6,38)\) - Given in the Handbook III.3.60 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_37_6_1_1_1 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_37_6_1_1_1() sage: is_quasi_difference_matrix(M,G,6,1,1,1) True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_37_6_1_1_1 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_37_6_1_1_1() >>> is_quasi_difference_matrix(M,G,Integer(6),Integer(1),Integer(1),Integer(1)) True 
- sage.combinat.designs.database.QDM_45_7_1_1_9()[source]¶
- Return a \((45,7;1,1;9)\)-quasi-difference matrix. - Used to build an \(OA(7,54)\) - As explained in the Handbook III.3.71 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_45_7_1_1_9 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_45_7_1_1_9() sage: is_quasi_difference_matrix(M,G,7,1,1,9) True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_45_7_1_1_9 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_45_7_1_1_9() >>> is_quasi_difference_matrix(M,G,Integer(7),Integer(1),Integer(1),Integer(9)) True 
- sage.combinat.designs.database.QDM_54_7_1_1_8()[source]¶
- Return a \((54,7;1,1;8)\)-quasi-difference matrix. - Used to build an \(OA(7,62)\) - As explained in the Handbook III.3.74 [DesignHandbook]. - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_54_7_1_1_8 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_54_7_1_1_8() sage: is_quasi_difference_matrix(M,G,7,1,1,8) True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_54_7_1_1_8 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_54_7_1_1_8() >>> is_quasi_difference_matrix(M,G,Integer(7),Integer(1),Integer(1),Integer(8)) True 
- sage.combinat.designs.database.QDM_57_9_1_1_8()[source]¶
- Return a \((57,9;1,1;8)\)-quasi-difference matrix. - Used to build an \(OA(9,65)\) - Construction shared by Julian R. Abel - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_57_9_1_1_8 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_57_9_1_1_8() # needs sage.schemes sage: is_quasi_difference_matrix(M,G,9,1,1,8) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_57_9_1_1_8 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_57_9_1_1_8() # needs sage.schemes >>> is_quasi_difference_matrix(M,G,Integer(9),Integer(1),Integer(1),Integer(8)) # needs sage.schemes True 
- sage.combinat.designs.database.RBIBD_120_8_1()[source]¶
- Return a resolvable \(BIBD(120,8,1)\). - This function output a list - Lof \(17\times 15\) blocks such that- L[i*15:(i+1)*15]is a partition of \(120\).- Construction shared by Julian R. Abel: - Seiden’s method: Start with a cyclic \((273,17,1)-BIBD\) and let \(B\) be an hyperoval, i.e. a set of 18 points which intersects any block of the BIBD in either 0 points (153 blocks) or 2 points (120 blocks). Dualise this design and take these last 120 blocks as points in the design; blocks in the design will correspond to the \(273-18=255\) non-hyperoval points. - The design is also resolvable. In the original \(PG(2,16)\) take any point \(T\) in the hyperoval and consider a block \(B1\) containing \(T\). The \(15\) points in \(B1\) that do not belong to the hyperoval correspond to \(15\) blocks forming a parallel class in the dualised design. The other \(16\) parallel classes come in a similar way, by using point \(T\) and the other \(16\) blocks containing \(T\). - See also - EXAMPLES: - sage: from sage.combinat.designs.database import RBIBD_120_8_1 sage: from sage.combinat.designs.bibd import is_pairwise_balanced_design sage: RBIBD = RBIBD_120_8_1() # needs sage.modules sage: is_pairwise_balanced_design(RBIBD,120,[8]) # needs sage.modules True - >>> from sage.all import * >>> from sage.combinat.designs.database import RBIBD_120_8_1 >>> from sage.combinat.designs.bibd import is_pairwise_balanced_design >>> RBIBD = RBIBD_120_8_1() # needs sage.modules >>> is_pairwise_balanced_design(RBIBD,Integer(120),[Integer(8)]) # needs sage.modules True - It is indeed resolvable, and the parallel classes are given by 17 slices of consecutive 15 blocks: - sage: for i in range(17): # needs sage.modules ....: assert len(set(sum(RBIBD[i*15:(i+1)*15],[]))) == 120 - >>> from sage.all import * >>> for i in range(Integer(17)): # needs sage.modules ... assert len(set(sum(RBIBD[i*Integer(15):(i+Integer(1))*Integer(15)],[]))) == Integer(120) - The BIBD is available from the constructor: - sage: _ = designs.balanced_incomplete_block_design(120,8) # needs sage.modules - >>> from sage.all import * >>> _ = designs.balanced_incomplete_block_design(Integer(120),Integer(8)) # needs sage.modules 
- sage.combinat.designs.database.ca_11_2_5_3()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_11_2_5_3 sage: C = ca_11_2_5_3() sage: is_covering_array(C,2,3) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_11_2_5_3 >>> C = ca_11_2_5_3() >>> is_covering_array(C,Integer(2),Integer(3)) True 
- sage.combinat.designs.database.ca_12_2_7_3()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_12_2_7_3 sage: C = ca_12_2_7_3() sage: is_covering_array(C,2,3) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_12_2_7_3 >>> C = ca_12_2_7_3() >>> is_covering_array(C,Integer(2),Integer(3)) True 
- sage.combinat.designs.database.ca_13_2_9_3()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_13_2_9_3 sage: C = ca_13_2_9_3() sage: is_covering_array(C,2,3) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_13_2_9_3 >>> C = ca_13_2_9_3() >>> is_covering_array(C,Integer(2),Integer(3)) True 
- sage.combinat.designs.database.ca_14_2_10_3()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_14_2_10_3 sage: C = ca_14_2_10_3() sage: is_covering_array(C,2,3) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_14_2_10_3 >>> C = ca_14_2_10_3() >>> is_covering_array(C,Integer(2),Integer(3)) True 
- sage.combinat.designs.database.ca_15_2_20_3()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. - Data obtained from [Nur2004] - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_15_2_20_3 sage: C = ca_15_2_20_3() sage: is_covering_array(C,2,3) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_15_2_20_3 >>> C = ca_15_2_20_3() >>> is_covering_array(C,Integer(2),Integer(3)) True 
- sage.combinat.designs.database.ca_19_2_6_4()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_19_2_6_4 sage: C = ca_19_2_6_4() sage: is_covering_array(C,2,4) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_19_2_6_4 >>> C = ca_19_2_6_4() >>> is_covering_array(C,Integer(2),Integer(4)) True 
- sage.combinat.designs.database.ca_21_2_7_4()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. This CA is also uniform. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_21_2_7_4 sage: C = ca_21_2_7_4() sage: is_covering_array(C,2,4) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_21_2_7_4 >>> C = ca_21_2_7_4() >>> is_covering_array(C,Integer(2),Integer(4)) True 
- sage.combinat.designs.database.ca_29_2_7_5()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_29_2_7_5 sage: C = ca_29_2_7_5() sage: is_covering_array(C,2,5) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_29_2_7_5 >>> C = ca_29_2_7_5() >>> is_covering_array(C,Integer(2),Integer(5)) True 
- sage.combinat.designs.database.ca_37_2_4_6()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_37_2_4_6 sage: C = ca_37_2_4_6() sage: is_covering_array(C,2,6) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_37_2_4_6 >>> C = ca_37_2_4_6() >>> is_covering_array(C,Integer(2),Integer(6)) True 
- sage.combinat.designs.database.ca_39_2_5_6()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_39_2_5_6 sage: C = ca_39_2_5_6() sage: is_covering_array(C,2,6) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_39_2_5_6 >>> C = ca_39_2_5_6() >>> is_covering_array(C,Integer(2),Integer(6)) True 
- sage.combinat.designs.database.ca_41_2_6_6()[source]¶
- Return a CA with the given parameters. This CA is proven to be optimal. This CA is also uniform. - Data obtained from https://zenodo.org/records/1476059 - EXAMPLES: - sage: from sage.combinat.designs.designs_pyx import is_covering_array sage: from sage.combinat.designs.database import ca_41_2_6_6 sage: C = ca_41_2_6_6() sage: is_covering_array(C,2,6) True - >>> from sage.all import * >>> from sage.combinat.designs.designs_pyx import is_covering_array >>> from sage.combinat.designs.database import ca_41_2_6_6 >>> C = ca_41_2_6_6() >>> is_covering_array(C,Integer(2),Integer(6)) True 
- sage.combinat.designs.database.f()[source]¶
- Return a \((57,9;1,1;8)\)-quasi-difference matrix. - Used to build an \(OA(9,65)\) - Construction shared by Julian R. Abel - EXAMPLES: - sage: from sage.combinat.designs.database import QDM_57_9_1_1_8 sage: from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix sage: G,M = QDM_57_9_1_1_8() # needs sage.schemes sage: is_quasi_difference_matrix(M,G,9,1,1,8) # needs sage.schemes True - >>> from sage.all import * >>> from sage.combinat.designs.database import QDM_57_9_1_1_8 >>> from sage.combinat.designs.designs_pyx import is_quasi_difference_matrix >>> G,M = QDM_57_9_1_1_8() # needs sage.schemes >>> is_quasi_difference_matrix(M,G,Integer(9),Integer(1),Integer(1),Integer(8)) # needs sage.schemes True