Download
language Essence 1.3
$ prob028.essence: Balanced Incomplete Block Design
$ Problem details available at http://www.csplib.org/Problems/prob028/

given v, b, r, k, lambda : int(1..)

where v = b
where r = k

letting Obj   be new type of size v,
        Block be new type of size b

find bibd : relation of (Obj * Block)

such that
    forAll o  : Obj   . |toSet(bibd(o,_ ))| = r,
    forAll bl : Block . |toSet(bibd(_,bl))| = k,
    forAll o1, o2 : Obj
        , o1 != o2 
        . |toSet(bibd(o1,_)) intersect toSet(bibd(o2,_))| = lambda