Download
language Essence 1.3
$ Equidistant Frequency Permutation Arrays.
$ Details available from CP paper.
given numChars : int(1..) $ aka q, the number of symbols.
given lam : int(1..) $ aka lambda, the number of each symbol in a word.
given numCodeWords : int(1..) $ aka v
given dist : int(1..) $ aka d, the hamming distance between all pairs of words.
letting Character be domain int(1..numChars)
letting wordLength be lam*numChars
letting Index be domain int(1..wordLength)
letting String be domain function (total) Index --> Character
find c : set (size numCodeWords) of String
$ each codeword must contain each symbol lambda times.
such that
forAll s in c . forAll a : Character .
( (sum i : Index . toInt(s(i)=a) )=lam)
$ each pair of codewords must differ in exactly d places.
such that
forAll s1, s2 in c .
s1 != s2 -> (sum i : Index . toInt(s1(i)!=s2(i))) = dist