Download
language ESSENCE 1.2.0
$ prob019.essence: Magic Squares
$ Problem details available at http://www.csplib.org/Problems/prob019/
$ 05 September 2007
$

given n : int(1..)

letting Index be domain int(1..n),
        Value be domain int(1..n**2)

find square : matrix indexed by [Index,Index] of Value,
     s : int(1..sum i : int(n**2+1-n..n**2) . i)

such that
    allDiff(flatten(square)),
    forAll r : Index . (sum c : Index . square[r,c]) = s,
    forAll c : Index . (sum r : Index . square[r,c]) = s,
    (sum d : Index . square[d,d]) = s,
    (sum d : Index . square[d,n+1-d]) = s