Killer Sudoku in Essence'.
   http://en.wikipedia.org/wiki/Killer_Sudoku
$"""$   Killer sudoku (also killer su doku, sumdoku, sum doku, addoku, or
$samunamupure) is a puzzle that combines elements of sudoku and kakuro.$   Despite the name, the simpler killer sudokus can be easier to solve
$than regular sudokus, depending on the solver's skill at mental arithmetic;$   the hardest ones, however, can take hours to crack.
   ...
   The objective is to fill the grid with numbers from 1 to 9 in a way that
$the following conditions are met:$
$* Each row, column, and nonet contains each number exactly once.$     * The sum of all numbers in a cage must match the small number printed
$in its corner.$     * No number appears more than once in a cage. (This is the standard rule
$for killer sudokus, and implies that no cage can include more$       than 9 cells.)
   In 'Killer X', an additional rule is that each of the long diagonals
$contains each number once.$   """
   Here we solve the problem from the Wikipedia page, also shown here
$http://en.wikipedia.org/wiki/File:Killersudoku_color.svg$
$The output is:$     2 1 5 6 4 7 3 9 8
$3 6 8 9 5 2 1 7 4$     7 9 4 3 8 1 6 5 2
$5 8 6 2 7 4 9 3 1$     1 4 2 5 9 3 8 6 7
$9 7 3 8 1 6 4 2 5$     8 2 1 7 3 9 5 4 6
$6 5 9 4 2 8 7 1 3$     4 3 7 1 6 5 2 8 9

$Model created by Hakan Kjellerstrand, hakank@gmail.com$ See also my Essence'/Savile Row page: http://www.hakank.org/savile_row/
 Licenced under CC-BY-4.0 : http://creativecommons.org/licenses/by/4.0/

language ESSENCE' 1.0

letting n be 9
letting range be domain int(1..9)

$For a better view of the problem, see$  http://en.wikipedia.org/wiki/File:Killersudoku_color.svg
letting num_p be 29     $number of segments letting num_hints be 4$ number of hints per segments (that's max number of hints)
letting P =
[
[1,1,  1,2, 0,0, 0,0,   3],
[1,3,  1,4, 1,5, 0,0,  15],
[1,6,  2,5, 2,6, 3,5,  22],
[1,7,  2,7, 0,0, 0,0,   4],
[1,8,  2,8, 0,0, 0,0,  16],
[1,9,  2,9, 3,9, 4,9,  15],
[2,1,  2,2, 3,1, 3,2,  25],
[2,3,  2,4, 0,0, 0,0,  17],
[3,3,  3,4, 4,4, 0,0,   9],
[3,6,  4,6, 5,6, 0,0,   8],
[3,7,  3,8, 4,7, 0,0,  20],
[4,1,  5,1, 0,0, 0,0,   6],
[4,2,  4,3, 0,0, 0,0,  14],
[4,5,  5,5, 6,5, 0,0,  17],
[4,8,  5,7, 5,8, 0,0,  17],
[5,2,  5,3, 6,2, 0,0,  13],
[5,4,  6,4, 7,4, 0,0,  20],
[5,9,  6,9, 0,0, 0,0,  12],
[6,1,  7,1, 8,1, 9,1,  27],
[6,3,  7,2, 7,3, 0,0,   6],
[6,6,  7,6, 7,7, 0,0,  20],
[6,7,  6,8, 0,0, 0,0,   6],
[7,5,  8,4, 8,5, 9,4,  10],
[7,8,  7,9, 8,8, 8,9,  14],
[8,2,  9,2, 0,0, 0,0,   8],
[8,3,  9,3, 0,0, 0,0,  16],
[8,6,  8,7, 0,0, 0,0,  15],
[9,5,  9,6, 9,7, 0,0,  13],
[9,8,  9,9, 0,0, 0,0,  17]
]

$decision variables find x: matrix indexed by [range, range] of range such that$ forAll i: range .
$allDiff([x[i,j] | j: range]) /\$       allDiff([x[j,i] | j: range])
$,$ this is neater:
forAll i: range .  allDiff(x[..,i]) /\ allDiff(x[i,..]),
forAll i,j: int(0..2) .  allDiff([x[r,c] | r: int(i*3+1..i*3+3), c: int(j*3+1..j*3+3)] ),

\$ calculate the hints
forAll p: int(1..num_p) .
(sum([x[  P[p, 2*(i-1)+1], P[p,2*(i-1)+2] ] | i: int(1..num_hints), P[p,2*(i-1)+1] > 0]))  = P[p, 2*num_hints+1]