Database of small combinatorial designs

This module implements known constructions combinatorial designs, and in particular of Orthogonal Arrays. Most of them come from the chapter on Mutually Orthogonal Latin Squares from the Handbook of Combinatorial Designs.

Most of this would only be a dream without the mathematical knowledge and help of Julian R. Abel.

All the designs returned by these functions can be obtained through the designs.<tab> functions.

Implemented constructions :

Dictionaries

The functions defined here are used by orthogonal_array(). Thus, the functions are indexed by dictionary which associates to every integer n a pair (k,f) where f is a function such that f() is a OA(k,n). This dictionary is defined right after the constructions of OA in the file.

The same goes for the constructions of MOLS, used by mutually_orthogonal_latin_squares().

REFERENCES:

[DesignHandbook](1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46) Handbook of Combinatorial Designs (2ed) Charles Colbourn, Jeffrey Dinitz Chapman & Hall/CRC 2012

Functions

sage.combinat.designs.database.ADF_5x5_4_1()

An Abelian difference family on (\ZZ / 5 \ZZ)^2.

This is the example 7.26 of [Stinson2004].

EXAMPLES:

sage: from sage.combinat.designs.database import ADF_5x5_4_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G,D = ADF_5x5_4_1()
sage: is_difference_family(G,D,25,4,1)
True
sage.combinat.designs.database.CDF_121_5_1()

A cyclic (121,5,1)-difference family.

From the examples VI.16.16 of [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.database import CDF_121_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_121_5_1()
sage: is_difference_family(G,D,121,5,1)
True

The difference family is available from the constructor:

sage: _ = designs.difference_family(121,5,1)
sage.combinat.designs.database.CDF_141_5_1()

A cyclic (141,5,1)-difference family.

From the examples VI.16.16 of [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.database import CDF_141_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_141_5_1()
sage: is_difference_family(G,D,141,5,1)
True

The difference family is available from the constructor:

sage: _ = designs.difference_family(141,5,1)
sage.combinat.designs.database.CDF_161_5_1()

A cyclic (161,5,1)-difference family.

From the examples VI.16.16 of [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.database import CDF_161_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_161_5_1()
sage: is_difference_family(G,D,161,5,1)
True

The difference family is available from the constructor:

sage: _ = designs.difference_family(161,5,1)
sage.combinat.designs.database.CDF_201_5_1()

A cyclic (201,5,1)-difference family.

From the examples VI.16.16 of [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.database import CDF_201_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_201_5_1()
sage: is_difference_family(G,D,201,5,1)
True

The difference family is available from the constructor:

sage: _ = designs.difference_family(201,5,1)
sage.combinat.designs.database.CDF_21_5_1()

A cyclic (21,5,1)-difference family.

From the examples VI.16.16 of [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.database import CDF_21_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_21_5_1()
sage: is_difference_family(G,D,21,5,1)
True

The difference family is available from the constructor:

sage: _ = designs.difference_family(21,5,1)
sage.combinat.designs.database.CDF_221_5_1()

A cyclic (221,5,1)-difference family.

From the examples VI.16.16 of [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.database import CDF_221_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_221_5_1()
sage: is_difference_family(G,D,221,5,1)
True

The difference family is available from the constructor:

sage: _ = designs.difference_family(221,5,1)
sage.combinat.designs.database.CDF_37_4_1()

A cyclic (37,4,1)-difference family.

It appears as example 7.28 in [Stinson2004] and in the examples VI.16.14 of [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.database import CDF_37_4_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_37_4_1()
sage: is_difference_family(G,D,37,4,1)
True

The difference family is available from the constructor:

sage: _ = designs.difference_family(37,4,1)
sage.combinat.designs.database.CDF_81_5_1()

A cyclic (81,5,1)-difference family.

From the examples VI.16.16 of [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.database import CDF_81_5_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_81_5_1()
sage: is_difference_family(G,D,81,5,1)
True

The difference family is available from the constructor:

sage: _ = designs.difference_family(81,5,1)
sage.combinat.designs.database.CDF_91_6_1()

A cyclic (91,6,1)-difference family.

From the examples VI.16.18 of [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.database import CDF_91_6_1
sage: from sage.combinat.designs.difference_family import is_difference_family
sage: G, D = CDF_91_6_1()
sage: is_difference_family(G,D,91,6,1)
True

The difference family is available from the constructor:

sage: _ = designs.difference_family(91,6,1)
sage.combinat.designs.database.MOLS_10_2()

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()
sage: print are_mutually_orthogonal_latin_squares(MOLS)
True

The design is available from the general constructor:

sage: designs.mutually_orthogonal_latin_squares(2,10,existence=True)
True
sage.combinat.designs.database.MOLS_12_5()

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()
sage: print are_mutually_orthogonal_latin_squares(MOLS)
True
sage.combinat.designs.database.MOLS_14_4()

Return four MOLS of order 14

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_14_4
sage: MOLS = MOLS_14_4()
sage: print are_mutually_orthogonal_latin_squares(MOLS)
True

The design is available from the general constructor:

sage: designs.mutually_orthogonal_latin_squares(4,14,existence=True)
True
sage.combinat.designs.database.MOLS_15_4()

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()
sage: print are_mutually_orthogonal_latin_squares(MOLS)
True

The design is available from the general constructor:

sage: designs.mutually_orthogonal_latin_squares(4,15,existence=True)
True
sage.combinat.designs.database.MOLS_18_3()

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()
sage: print are_mutually_orthogonal_latin_squares(MOLS)
True

The design is available from the general constructor:

sage: designs.mutually_orthogonal_latin_squares(3,18,existence=True)
True
sage.combinat.designs.database.OA_10_100()

Return an OA(10,100)

Given by Julian R. Abel, using a V(m,t) from the Handbook [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_100
sage: OA = OA_10_100()
sage: print is_orthogonal_array(OA,10,100,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(10,100,existence=True)
True
sage.combinat.designs.database.OA_10_154()

Return an OA(10,154)

Given by Julian R. Abel, using a V(m,t) from the Handbook [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_154
sage: OA = OA_10_154()
sage: print is_orthogonal_array(OA,10,154,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(10,154,existence=True)
True
sage.combinat.designs.database.OA_10_36()

Return an OA(10,36)

As explained in the Handbook III.3.59 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_36
sage: OA = OA_10_36()
sage: print is_orthogonal_array(OA,10,36,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(10,36,existence=True)
True
sage.combinat.designs.database.OA_10_48()

Return an OA(10,48)

As explained in the Handbook III.3.67 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_48
sage: OA = OA_10_48()
sage: print is_orthogonal_array(OA,10,48,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(10,48,existence=True)
True
sage.combinat.designs.database.OA_10_82()

Return an OA(10,82)

Given by Julian R. Abel, using a V(m,t) from the Handbook [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_10_82
sage: OA = OA_10_82()
sage: print is_orthogonal_array(OA,10,82,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(10,82,existence=True)
True
sage.combinat.designs.database.OA_11_80()

Return an OA(11,80)

As explained in the Handbook III.3.76 [DesignHandbook].

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()
sage: print is_orthogonal_array(OA,11,80,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(11,80,existence=True)
True
sage.combinat.designs.database.OA_12_144()

Return an OA(12,144)

Given by Julian R. Abel, using a V(m,t) from the Handbook [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_144
sage: OA = OA_12_144()
sage: print is_orthogonal_array(OA,12,144,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(12,144,existence=True)
True
sage.combinat.designs.database.OA_12_210()

Return an OA(12,210)

Given by Julian R. Abel, using a V(m,t) from the Handbook [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_210
sage: OA = OA_12_210()
sage: print is_orthogonal_array(OA,12,210,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(12,210,existence=True)
True
sage.combinat.designs.database.OA_12_276()

Return an OA(12,276)

Given by Julian R. Abel, using a V(m,t) from the Handbook [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_276
sage: OA = OA_12_276()
sage: print is_orthogonal_array(OA,12,276,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(12,276,existence=True)
True
sage.combinat.designs.database.OA_12_298()

Return an OA(12,298)

Given by Julian R. Abel, using a V(m,t) from the Handbook [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_298
sage: OA = OA_12_298()
sage: print is_orthogonal_array(OA,12,298,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(12,298,existence=True)
True
sage.combinat.designs.database.OA_12_342()

Return an OA(12,342)

Given by Julian R. Abel, using a V(m,t) from the Handbook [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_342
sage: OA = OA_12_342()
sage: print is_orthogonal_array(OA,12,342,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(12,342,existence=True)
True
sage.combinat.designs.database.OA_12_474()

Return an OA(12,474)

Given by Julian R. Abel, using a V(m,t) from the Handbook [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_12_474
sage: OA = OA_12_474()
sage: print is_orthogonal_array(OA,12,474,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(12,474,existence=True)
True
sage.combinat.designs.database.OA_18_273()

Return an OA(18,273)

Given by Julian R. Abel.

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_18_273
sage: OA = OA_18_273()
sage: print is_orthogonal_array(OA,18,273,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(18,273,existence=True)
True
sage.combinat.designs.database.OA_33_993()

Return an OA(33,993)

Given by Julian R. Abel.

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_33_993
sage: OA = OA_33_993()                          # not tested -- too long
sage: print is_orthogonal_array(OA,33,993,2)    # not tested -- too long
True

The design is available from the general constructor:

sage: designs.orthogonal_array(33,993,existence=True)
True
sage.combinat.designs.database.OA_5_22()

Return an OA(5,22)

As explained in the Handbook III.3.51 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_5_22
sage: OA = OA_5_22()
sage: print is_orthogonal_array(OA,5,22,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(5,22,existence=True)
True
sage.combinat.designs.database.OA_6_20()

Return an OA(6,20)

As explained in the Handbook III.3.49 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_20
sage: OA = OA_6_20()
sage: print is_orthogonal_array(OA,6,20,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(6,20,existence=True)
True
sage.combinat.designs.database.OA_6_26()

Return an OA(6,26)

As explained in the Handbook III.3.53 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_26
sage: OA = OA_6_26()
sage: print is_orthogonal_array(OA,6,26,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(6,26,existence=True)
True
sage.combinat.designs.database.OA_6_30()

Return an OA(6,30)

As explained in the Handbook III.3.55 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_30
sage: OA = OA_6_30()
sage: print is_orthogonal_array(OA,6,30,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(6,30,existence=True)
True
sage.combinat.designs.database.OA_6_34()

Return an OA(6,34)

As explained in the Handbook III.3.57 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_34
sage: OA = OA_6_34()
sage: print is_orthogonal_array(OA,6,34,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(6,34,existence=True)
True
sage.combinat.designs.database.OA_6_38()

Return an OA(6,38)

As explained in the Handbook III.3.60 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_38
sage: OA = OA_6_38()
sage: print is_orthogonal_array(OA,6,38,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(6,38,existence=True)
True
sage.combinat.designs.database.OA_6_46()

Return an OA(6,46)

As explained in the Handbook III.3.66 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_6_46
sage: OA = OA_6_46()
sage: print is_orthogonal_array(OA,6,46,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(6,46,existence=True)
True
sage.combinat.designs.database.OA_7_18()

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: print is_orthogonal_array(OA,7,18,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,18,existence=True)
True
sage.combinat.designs.database.OA_7_21()

Return an OA(7,21)

As explained in the Handbook III.3.50 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_21
sage: OA = OA_7_21()
sage: print is_orthogonal_array(OA,7,21,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,21,existence=True)
True
sage.combinat.designs.database.OA_7_28()

Return an OA(7,28)

As explained in the Handbook III.3.54 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_28
sage: OA = OA_7_28()
sage: print is_orthogonal_array(OA,7,28,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,28,existence=True)
True
sage.combinat.designs.database.OA_7_33()

Return an OA(7,33)

As explained in the Handbook III.3.56 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_33
sage: OA = OA_7_33()
sage: print is_orthogonal_array(OA,7,33,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,33,existence=True)
True
sage.combinat.designs.database.OA_7_35()

Return an OA(7,35)

As explained in the Handbook III.3.58 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_35
sage: OA = OA_7_35()
sage: print is_orthogonal_array(OA,7,35,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,35,existence=True)
True
sage.combinat.designs.database.OA_7_39()

Return an OA(7,39)

As explained in the Handbook III.3.61 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_39
sage: OA = OA_7_39()
sage: print is_orthogonal_array(OA,7,39,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,39,existence=True)
True
sage.combinat.designs.database.OA_7_42()

Return an OA(7,42)

As explained in the Handbook III.3.63 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_42
sage: OA = OA_7_42()
sage: print is_orthogonal_array(OA,7,42,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,42,existence=True)
True
sage.combinat.designs.database.OA_7_44()

Return an OA(7,44)

As explained in the Handbook III.3.64 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_44
sage: OA = OA_7_44()
sage: print is_orthogonal_array(OA,7,44,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,44,existence=True)
True
sage.combinat.designs.database.OA_7_51()

Return an OA(7,51)

As explained in the Handbook III.3.69 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_51
sage: OA = OA_7_51()
sage: print is_orthogonal_array(OA,7,51,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,51,existence=True)
True
sage.combinat.designs.database.OA_7_52()

Return an OA(7,52)

As explained in the Handbook III.3.70 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_52
sage: OA = OA_7_52()
sage: print is_orthogonal_array(OA,7,52,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,52,existence=True)
True
sage.combinat.designs.database.OA_7_54()

Return an OA(7,54)

As explained in the Handbook III.3.71 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_54
sage: OA = OA_7_54()
sage: print is_orthogonal_array(OA,7,54,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,54,existence=True)
True
sage.combinat.designs.database.OA_7_60()

Return an OA(7,60)

As explained in [JulianAbel13].

REFERENCES:

[JulianAbel13](1, 2) Existence of Five MOLS of Orders 18 and 60 R. Julian R. Abel Journal of Combinatorial Designs 2013

http://onlinelibrary.wiley.com/doi/10.1002/jcd.21384/abstract

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_60
sage: OA = OA_7_60()
sage: print is_orthogonal_array(OA,7,60,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,60,existence=True)
True
sage.combinat.designs.database.OA_7_62()

Return an OA(7,62)

As explained in the Handbook III.3.74 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_7_62
sage: OA = OA_7_62()
sage: print is_orthogonal_array(OA,7,62,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,62,existence=True)
True
sage.combinat.designs.database.OA_7_66()

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()
sage: print is_orthogonal_array(OA,7,66,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,66,existence=True)
True
sage.combinat.designs.database.OA_7_68()

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()
sage: print is_orthogonal_array(OA,7,68,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,68,existence=True)
True
sage.combinat.designs.database.OA_7_74()

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()
sage: print is_orthogonal_array(OA,7,74,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(7,74,existence=True)
True
sage.combinat.designs.database.OA_8_45()

Return an OA(8,45)

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_orthogonal_array
sage: from sage.combinat.designs.database import OA_8_45
sage: OA = OA_8_45()
sage: print is_orthogonal_array(OA,8,45,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(8,45,existence=True)
True
sage.combinat.designs.database.OA_8_50()

Return an OA(8,50)

As explained in the Handbook III.3.68 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_8_50
sage: OA = OA_8_50()
sage: print is_orthogonal_array(OA,8,50,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(8,50,existence=True)
True
sage.combinat.designs.database.OA_8_55()

Return an OA(8,55)

As explained in the Handbook III.3.72 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_8_55
sage: OA = OA_8_55()
sage: print is_orthogonal_array(OA,8,55,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(8,55,existence=True)
True
sage.combinat.designs.database.OA_8_69()

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()
sage: print is_orthogonal_array(OA,8,69,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(8,69,existence=True)
True
sage.combinat.designs.database.OA_8_76()

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()
sage: print is_orthogonal_array(OA,8,76,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(8,76,existence=True)
True
sage.combinat.designs.database.OA_9_120()

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

RBIBD_120_8_1()

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()
sage: print is_orthogonal_array(OA,9,120,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(9,120,existence=True)
True
sage.combinat.designs.database.OA_9_135()

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()
sage: print is_orthogonal_array(OA,9,135,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(9,135,existence=True)
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)
sage: G
Ring of integers modulo 273
sage.combinat.designs.database.OA_9_24()

Return an OA(9,24)

As explained in the Handbook III.3.52 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_24
sage: OA = OA_9_24()
sage: print is_orthogonal_array(OA,9,24,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(9,24,existence=True)
True
sage.combinat.designs.database.OA_9_40()

Return an OA(9,40)

As explained in the Handbook III.3.62 [DesignHandbook].

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()
sage: print is_orthogonal_array(OA,9,40,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(9,40,existence=True)
True
sage.combinat.designs.database.OA_9_56()

Return an OA(9,56)

As explained in the Handbook III.3.73 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_56
sage: OA = OA_9_56()
sage: print is_orthogonal_array(OA,9,56,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(9,56,existence=True)
True
sage.combinat.designs.database.OA_9_57()

Return an OA(9,57)

Given by Julian R. Abel.

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_57
sage: OA = OA_9_57()
sage: print is_orthogonal_array(OA,9,57,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(9,57,existence=True)
True
sage.combinat.designs.database.OA_9_65()

Return an OA(9,65)

Construction shared by Julian R. Abel

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_65
sage: OA = OA_9_65()
sage: print is_orthogonal_array(OA,9,65,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(9,65,existence=True)
True
sage.combinat.designs.database.OA_9_75()

Return an OA(9,75)

As explained in the Handbook III.3.75 [DesignHandbook].

EXAMPLES:

sage: from sage.combinat.designs.designs_pyx import is_orthogonal_array
sage: from sage.combinat.designs.database import OA_9_75
sage: OA = OA_9_75()
sage: print is_orthogonal_array(OA,9,75,2)
True

The design is available from the general constructor:

sage: designs.orthogonal_array(9,75,existence=True)
True
sage.combinat.designs.database.RBIBD_120_8_1()

Return a resolvable BIBD(120,8,1)

This function output a list L of 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 which intersects any block of the BIBD in either 0 (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

OA_9_120()

EXAMPLES:

sage: from sage.combinat.designs.database import RBIBD_120_8_1
sage: from sage.combinat.designs.bibd import _check_pbd
sage: RBIBD = RBIBD_120_8_1()
sage: _ = _check_pbd(RBIBD,120,[8])

It is indeed resolvable, and the parallel classes are given by 17 slices of consecutive 15 blocks:

sage: for i in range(17):
....:     assert len(set(sum(RBIBD[i*15:(i+1)*15],[]))) == 120

The BIBD is available from the constructor:

sage: _ = designs.balanced_incomplete_block_design(120,8)
sage.combinat.designs.database.TD_6_12()

Return a TD(6,12) as built in [Hanani75].

This design is Lemma 3.21 from [Hanani75].

EXAMPLE:

sage: from sage.combinat.designs.database import TD_6_12
sage: from sage.combinat.designs.orthogonal_arrays import is_transversal_design
sage: TD = TD_6_12()
sage: is_transversal_design(TD,6,12)
True

The design is available from the general constructor:

sage: designs.transversal_design(6,12,existence=True)
True

REFERENCES:

[Hanani75](1, 2) Haim Hanani, Balanced incomplete block designs and related designs, http://dx.doi.org/10.1016/0012-365X(75)90040-0, Discrete Mathematics, Volume 11, Issue 3, 1975, Pages 255-369.
sage.combinat.designs.database.cyclic_shift(l, i)

x.__init__(...) initializes x; see help(type(x)) for signature

Table Of Contents

Previous topic

Steiner Quadruple Systems

Next topic

External Representations of Block Designs

This Page